--- 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.