You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- settlement conservation checks: BTC debit/credit and fee/payment roots that must conserve before unlock;
358
360
- delivery evidence: post-settlement pull-request visibility and recovery posture.
359
361
@@ -363,24 +365,33 @@ Drift is classified before repair:
363
365
-`ledger_root_mismatch`: the database projection points at a different root than the ledger observation;
364
366
-`ledger_finality_mismatch`: the projected finality differs from the observed finality;
365
367
-`database_orphan_projection`: the database projects a fact that has no matching ledger observation;
368
+
-`missing_object_storage_artifact`: the ledger or projection expects an artifact root that is not durable yet;
369
+
-`object_storage_root_mismatch`: the database projection and object-storage artifact root disagree;
370
+
-`staging_testnet_readback_blocked`: staging-testnet Supabase readback cannot prove the expected rows without retry;
366
371
-`settlement_conservation_drift`: BTC debit/credit or fee/payment accounting does not conserve.
367
372
368
373
Repair actions are canonical and auditable:
369
374
370
375
-`retry_database_readback`;
376
+
-`retry_object_storage_write`;
377
+
-`retry_staging_testnet_readback`;
371
378
-`project_ledger_fact`;
372
379
-`update_finality_state`;
373
380
-`quarantine_database_projection`;
381
+
-`quarantine_object_storage_artifact`;
374
382
-`pause_settlement_unlock`;
375
383
-`recover_delivery`.
376
384
377
385
The reconciliation state is one of aligned, retryable, repairable, approval required, or blocked.
378
386
Confirmed ledger facts that are missing from the database require operator-approved projection repair.
379
387
Reorged or failed finality, database-only orphan projection, or settlement conservation drift blocks unlock and delivery.
388
+
Missing durable object-storage artifacts are retryable unlock blockers.
389
+
Object-storage root mismatches require quarantine until the artifact and projection agree.
380
390
Delivery recovery is allowed only when settlement is otherwise aligned and the full AssetPack delivery target is not visible.
381
391
382
-
Terminal must show drift classes, blockers, repair actions, proof roots, observed facts, projected facts, canonical facts, journal entries, and repair receipts before raw payloads.
392
+
Terminal must show drift classes, blockers, repair actions, proof roots, observed facts, projected facts, object-storage facts, canonical facts, journal entries, and repair receipts before raw payloads.
383
393
The Vercel Sandbox harness must store the reconciliation report as settlement evidence when it claims ledger readback.
394
+
Supabase staging-testnet readback receipts must never store service-role JWTs, `sb_secret__` keys, OpenAI keys, database passwords, or any raw secret in tracked code or persisted proof payloads; only host/project identifiers, credential presence state, and proof roots are admissible.
384
395
The API may persist schema-compatible repair receipts while richer repair actions and proof roots remain report evidence until the registry schema is formally expanded.
| Bridge-readiness research boundaries | Gate 7 | Protocol/BTD research notes, policy posture tests, docs | pending | Bridge paths are documented as research until admitted by explicit future proof and policy. |
| Object-storage and staging-testnet repair classes are deterministic |`packages/btd/__tests__/reconciliation.test.ts`, `packages/api/src/routes/__tests__/btd-crypto.test.ts`| drafted |
159
+
| Harness and Terminal consume the same report evidence |`packages/pipeline-hosts/src/asset-pack-harness.ts`, `packages/pipeline-hosts/src/__tests__/asset-pack-harness.test.ts`, `uapi/tests/terminalJournalReconciliation.test.ts`, `uapi/tests/terminalTransactionDetailSnapshot.test.ts`| drafted |
- Gate 4 does not require production-mainnet BTC settlement.
@@ -158,6 +167,14 @@ No `_legacy/` source is active source truth.
158
167
- Gate 4 does not harden all ledger/database/object-storage projection repair; Gate 5 owns that.
159
168
- Gate 4 does not finish source-to-shares contribution cleanup; Gate 6 owns that.
160
169
170
+
## Gate 5 accepted boundaries
171
+
172
+
- Gate 5 does not expand the physical reconciliation repair registry schema.
173
+
- Gate 5 does not store or print Supabase service-role JWTs, `sb_secret__` keys, OpenAI keys, database passwords, or Vercel tokens.
174
+
- Gate 5 does not make protected AssetPack source visible before paid unlock and delivery admission.
175
+
- Gate 5 does not implement source-to-shares contribution accounting; Gate 6 owns that.
176
+
- Gate 5 does not promote V30 or change the active canon pointer.
177
+
161
178
## completion condition
162
179
163
180
Gate 1 is complete when the V30 draft family validates, `check:v30-gate1` passes, workflow posture is V30-aware, README and roadmap reflect V30 initiation, V31-V37 scopes are current enough to guide future gates, diff hygiene passes, and the gate branch is committed and pushed for review into `version/v30`.
0 commit comments