Skip to content

feat(relay): persist solo fork provenance on creation - #9312

Draft
cameronhotchkies wants to merge 1 commit into
mainfrom
chotchkies/solo-fork-provenance
Draft

cameronhotchkies wants to merge 1 commit into
mainfrom
chotchkies/solo-fork-provenance

Conversation

@cameronhotchkies

Copy link
Copy Markdown
Collaborator

Why

A Solo fork needs an authoritative source/cutoff pointer before its first turn. Store that pointer with the create rather than leaving a partially initialized chat between two writes.

What

  • Accept one create-only forked_from tag on private buzz.solo streams. Authorize source access and the accepted cutoff inside the channel transaction; copy no source membership or authority.
  • Echo immutable ancestry in relay-signed metadata. Surface confirmation failures and repair metadata on an identical signed-create retry without replaying create notices.
  • Advertise buzz-solo-fork-v1 and document fleet rollout requirements. Client UI and Claude context seeding are separate work.

Testing

  • cargo test -p buzz-core -p buzz-db -p buzz-relay -- --test-threads=1 passed on the implementation working tree.
  • scripts/postgres-test-run.sh -p buzz-db -p buzz-relay --lib --tests: 1,386 passed, including live migration/desired-state catalog parity and the create/retry journey. A subsequent test-only edit adds a name to the rejected metadata command; all four create-with-members tests passed afterward.
  • The journey injects a real metadata INSERT failure after durable creation, then retries the exact command and checks signed readback, unchanged notices, immutable ancestry and cross-community rejection.
  • Pre-commit formatting/secret scan/sign-off and pre-push file-size, Rust tests and Tauri checks passed.
  • just ci did not complete within the local 10-minute command budget; it reached Tauri compilation after installing dependencies. No claim of a full local CI pass.
  • Standalone local-relay wire exercise, independent review and human testing remain outstanding. Keep draft; no review-completed attestation.

Schema and rollout

Expand/deploy: two nullable columns, a paired-pointer CHECK added NOT VALID then validated in a separate bounded migration, and matching desired-state convergence/catalog assertion. Old inserts omit both columns and satisfy the CHECK. No backfill, new trigger/function/procedure/rule, foreign key or index; lock timeout 5s, statement timeout 30s. Production-version binary compatibility has not been exercised.

Apply schema before code. Drain older serving instances before enabling fork writes: one NIP-11 response cannot prove fleet-wide support. Renumber migrations if upstream allocates these numbers first. Risk requiring review: source admission lock ordering and confirmation recovery after commit.

Commit the ancestry pointer with the channel and authorize the source within that transaction. Confirm signed metadata on exact-create retries without replaying create side effects.

Co-authored-by: Grumplestiltzkin <356f67c681884a0897b14e06d527317fc361dc746bb2fc0042906e6212e7dbd1@buzz.block.builderlab.xyz>
Signed-off-by: Cameron Hotchkies <[email protected]>
SanHsien added a commit to SanHsien/buzz that referenced this pull request Nov 10, 2026
Adopt 6582530 / block#9287 (rmcp 3.9.0, deny.toml 0459/0462 ignores), triage
the late-arriving block#9312, fix the trigger and conflict statements, and add
the skip-means-re-review note. Counts: 2 adopt commits, 2 adopt PRs.

Co-Authored-By: Claude Sonnet <[email protected]>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant