Luigit
repositories / smith

smith

There are many coding harnesses - but this one is fast

owned by admin

.system/issues/SMH-ISSUE-BEZTYIML-replace-uuid-dependency-with-smith-owned-proquin/index.md

Raw
Rendered preview

id: SMH-ISSUE-BEZTYIML type: issue title: "Replace UUID dependency with Smith-owned proquint IDs" specs: [SMH-SPEC-SPEC0001]

Replace UUID dependency with Smith-owned proquint IDs

Symptom

Smith-owned identities depend on UUIDv7 despite requiring no UUID interoperability. Message timestamps are extracted from identity bits. Requested change: remove the UUID dependency; use Smith-owned IDs with proquint text representation.

Evidence

  • Identity types: UUIDv7 generation, formatting, parsing, serialization, timestamp extraction, and 128-bit conversion.
  • Message construction: creation timestamps derived from message IDs.
  • Session inspection: session discovery orders ID filenames and checks filename identity against stored headers.

Current construction couples identity to time.

sequenceDiagram
  participant C as Caller
  participant M as Message construction
  participant I as Identity generation
  participant U as UUIDv7
  C->>M: Create message
  M->>I: Allocate message identity
  I->>U: Generate UUIDv7
  U-->>I: Timestamp-bearing identity
  I-->>M: Message ID
  M->>I: Extract Unix milliseconds
  I-->>M: Timestamp
  M-->>C: Message with identity and timestamp

Impact

Representation reaches session filenames, CLI/RPC output, exports, and serialized references. Replacing only formatting would retain the UUID dependency and timestamp coupling. Replacing UUID alone does not eliminate the getrandom duplicate-family warning; other dependency paths remain.

Requested outcome

  • Smith-owned session, branch, entry, message, and tool identities use canonical proquint text.
  • Typed identities, stable references, and call/result pairing remain intact.
  • Generation remains collision-safe across processes and forks; proquints provide encoding, not uniqueness.
  • Message timestamps remain explicit recorded data, independent of ID layout.
  • History ordering remains based on append order and parent links, not ID spelling.
  • Provider-issued identifiers remain separate from Smith identities.
  • No UUID dependency remains in Smith's identity implementation.

Decisions before implementation

Choose identity generation, bit width, canonical proquint parsing, and legacy textual-ID/file compatibility explicitly. Current durable IDs occupy 128 bits; changing text need not change binary identity width. Any binary format change requires deliberate versioning, not silent golden-corpus regeneration.

Acceptance

  • Proquint encode/decode roundtrips preserve identity bits; malformed input is rejected.
  • Generation and collision handling satisfy concurrent creation and fork safety.
  • Session creation, discovery, resume, inspection, export, fork, and replay retain correct references.
  • CLI/RPC and persistence tests cover the selected representation and compatibility policy.
  • Message timestamps no longer depend on UUID layout.
  • Audit, allocation bounds, and instruction budgets are reverified without suppressed warnings or silent repins.

Related contract

Smith Specification: stable identities, explicit timestamps, concurrent sessions, durable references, and deterministic replay.

---
id: SMH-ISSUE-BEZTYIML
type: issue
title: "Replace UUID dependency with Smith-owned proquint IDs"
specs: [SMH-SPEC-SPEC0001]
---

# Replace UUID dependency with Smith-owned proquint IDs

## Symptom

Smith-owned identities depend on UUIDv7 despite requiring no UUID interoperability.
Message timestamps are extracted from identity bits.
Requested change: remove the UUID dependency; use Smith-owned IDs with proquint text representation.

## Evidence

- [Identity types](../../../smith/src/id.rs): UUIDv7 generation, formatting, parsing, serialization, timestamp extraction, and 128-bit conversion.
- [Message construction](../../../smith/src/message.rs): creation timestamps derived from message IDs.
- [Session inspection](../../../smith-harness/src/inspection.rs): session discovery orders ID filenames and checks filename identity against stored headers.

Current construction couples identity to time.

```mermaid
sequenceDiagram
  participant C as Caller
  participant M as Message construction
  participant I as Identity generation
  participant U as UUIDv7
  C->>M: Create message
  M->>I: Allocate message identity
  I->>U: Generate UUIDv7
  U-->>I: Timestamp-bearing identity
  I-->>M: Message ID
  M->>I: Extract Unix milliseconds
  I-->>M: Timestamp
  M-->>C: Message with identity and timestamp
```

## Impact

Representation reaches session filenames, CLI/RPC output, exports, and serialized references.
Replacing only formatting would retain the UUID dependency and timestamp coupling.
Replacing UUID alone does not eliminate the getrandom duplicate-family warning; other dependency paths remain.

## Requested outcome

- Smith-owned session, branch, entry, message, and tool identities use canonical proquint text.
- Typed identities, stable references, and call/result pairing remain intact.
- Generation remains collision-safe across processes and forks; proquints provide encoding, not uniqueness.
- Message timestamps remain explicit recorded data, independent of ID layout.
- History ordering remains based on append order and parent links, not ID spelling.
- Provider-issued identifiers remain separate from Smith identities.
- No UUID dependency remains in Smith's identity implementation.

## Decisions before implementation

Choose identity generation, bit width, canonical proquint parsing, and legacy textual-ID/file compatibility explicitly.
Current durable IDs occupy 128 bits; changing text need not change binary identity width.
Any binary format change requires deliberate versioning, not silent golden-corpus regeneration.

## Acceptance

- [ ] Proquint encode/decode roundtrips preserve identity bits; malformed input is rejected.
- [ ] Generation and collision handling satisfy concurrent creation and fork safety.
- [ ] Session creation, discovery, resume, inspection, export, fork, and replay retain correct references.
- [ ] CLI/RPC and persistence tests cover the selected representation and compatibility policy.
- [ ] Message timestamps no longer depend on UUID layout.
- [ ] Audit, allocation bounds, and instruction budgets are reverified without suppressed warnings or silent repins.

## Related contract

[Smith Specification](../../specs/SMH-SPEC-SPEC0001-smith-specification/index.md): stable identities, explicit timestamps, concurrent sessions, durable references, and deterministic replay.