Problem and priority
Verifiable records of who did what are central to boop. Current action credentials contain unsigned JSON, individual and batch completion record different histories, and agent-key writes collapse attribution into the human owner. P1: the implementation does not yet meet its provenance claim.
Evidence
convex/items.ts:17 and convex/lists.ts:56 store JSON.stringify(fullVc) as proof rather than a signature. An in-memory inspection confirmed the generated credential has no signature.
convex/items.ts:332 appends a completion credential; convex/items.ts:653 updates batch completion without the corresponding record.
convex/lib/actor.ts:46 resolves API-key operations to ownerDid without preserving which key acted.
src/components/ProvenanceInfo.tsx:848 presents these records as Verifiable Credentials.
Required change
- Share one action-recording path across individual and batch transitions, including human and agent writes.
- Preserve authorizing-owner identity separately from authenticated actor/credential identity. Do not infer agent identity solely from an unverified caller-provided DID.
- Define the exact action payload and identity binding that a signature covers, then produce independently verifiable signed records using supported Originals facilities.
- Preserve historical placeholder data as explicitly unsigned records; never fabricate signatures or historical claims during migration.
- Retire duplicate placeholder constructors and misleading verification presentation after the replacement is ready. Keep genuine CEL/WebVH history intact.
What stays / compatibility
Keep durable historical attribution and real cryptographic evidence. Removing the placeholder wrappers loses no signature assurance, but external vcProof/vcProofs consumers may depend on their shape: confirm them before deleting fields or changing responses. Document signing custody and the scope of what verification proves.
Acceptance and verification
Coordination
Depends on the authenticated identity boundary in #236. Related to #206 (receipt export) and #229 (signature commitment semantics). The signing/anchoring assumptions in #206 are not evidence that these foundations already work; this issue establishes action-record foundations without implementing receipt export.
Implementation constraints
Implement this issue in a separate worktree. Keep changes within this issue's scope; other review recommendations require separate selection. Preserve security, existing signed evidence, and supported client/data compatibility. Run relevant tests and key user flows, and report anything still unverified. Do not remove legacy data or entry points until their dependencies are established.
Source references above are from the reviewed local checkout, commit b1810b7393a473d6c6c63e7f722a6807cfbf4040 (not currently published on GitHub). Re-check the target branch before implementation; do not assume these line numbers remain current.
Problem and priority
Verifiable records of who did what are central to boop. Current action credentials contain unsigned JSON, individual and batch completion record different histories, and agent-key writes collapse attribution into the human owner. P1: the implementation does not yet meet its provenance claim.
Evidence
convex/items.ts:17andconvex/lists.ts:56store JSON.stringify(fullVc) as proof rather than a signature. An in-memory inspection confirmed the generated credential has no signature.convex/items.ts:332appends a completion credential;convex/items.ts:653updates batch completion without the corresponding record.convex/lib/actor.ts:46resolves API-key operations to ownerDid without preserving which key acted.src/components/ProvenanceInfo.tsx:848presents these records as Verifiable Credentials.Required change
What stays / compatibility
Keep durable historical attribution and real cryptographic evidence. Removing the placeholder wrappers loses no signature assurance, but external vcProof/vcProofs consumers may depend on their shape: confirm them before deleting fields or changing responses. Document signing custody and the scope of what verification proves.
Acceptance and verification
Coordination
Depends on the authenticated identity boundary in #236. Related to #206 (receipt export) and #229 (signature commitment semantics). The signing/anchoring assumptions in #206 are not evidence that these foundations already work; this issue establishes action-record foundations without implementing receipt export.
Implementation constraints
Implement this issue in a separate worktree. Keep changes within this issue's scope; other review recommendations require separate selection. Preserve security, existing signed evidence, and supported client/data compatibility. Run relevant tests and key user flows, and report anything still unverified. Do not remove legacy data or entry points until their dependencies are established.
Source references above are from the reviewed local checkout, commit
b1810b7393a473d6c6c63e7f722a6807cfbf4040(not currently published on GitHub). Re-check the target branch before implementation; do not assume these line numbers remain current.