@@ -677,8 +677,8 @@ Every link must make proof or readiness state visible.
677677
678678## staged Reading acceptance path
679679
680- V28 separates Reading into distinct reviewable stages so commercial buyers can
681- decide whether Bitcode understood the need before Bitcode exposes or settles
680+ V28 separates Reading into distinct reviewable stages so readers can decide
681+ whether Bitcode understood the need before Bitcode exposes or settles
682682source-bearing AssetPack material.
683683
684684The staged Reading path is:
@@ -695,21 +695,40 @@ The staged Reading path is:
695695 candidates, measures candidate fit against the Need measurement, synthesizes
696696 the candidate AssetPack, and returns ` worthy_fit ` , ` no_worthy_fit ` , or
697697 ` blocked_readiness ` with proof-bearing search/fit telemetry.
698- 3 . ** Preview and settlement.** A worthy synthesized AssetPack is previewed
699- without leaking the full source. Preview may show Need measurement, Fit
700- measurement, selected candidate ids, roots, score bands, proof posture,
701- settlement boundary, and price; it must not show protected source material
702- before payment/right settlement. Settlement then records the reader BTC fee,
703- mints or assigns the BTD range according to the standing supply law, writes
704- ownership and read-license rows, anchors/journals the event, and only then
705- unlocks the full AssetPack source/right surface to the buyer/reader.
706-
707- The commercial question therefore splits into two explicit operator questions:
698+ 3 . ** Source-safe preview.** A worthy synthesized AssetPack is previewed without
699+ leaking the full source. Preview may show Need measurement, Fit measurement,
700+ selected candidate ids, roots, score bands, proof posture, ownership
701+ boundary, settlement boundary, and price; it must not show protected source
702+ material before payment/right settlement.
703+ 4 . ** Settle and unlock.** Settlement records the reader BTC fee, mints or
704+ assigns the BTD range according to the standing supply law, writes ownership
705+ and read-license rows, anchors/journals the event, and only then unlocks the
706+ full AssetPack source/right surface to the buyer/reader.
707+
708+ The reader question therefore splits into two explicit operator questions:
708709
709710- Does Bitcode understand the Read's Need?
710711- Did Bitcode find and synthesize a match good enough to preview confidently
711712 and pay for in BTC without source-IP leakage?
712713
714+ These stages are separately addressable in Terminal and separately journaled in
715+ the database/ledger readback. A Need stage run cannot be reused as a Fit result
716+ unless the accepted Need id, Need measurement root, user review state, feedback
717+ history, and synthesis telemetry are present. A Need-Fit run cannot be promoted
718+ unless the input Need id and accepted Need measurement root match the latest
719+ accepted Need revision. Preview cannot unlock source-bearing payloads.
720+ Settlement cannot proceed unless the previewed AssetPack id, fee quote, BTD
721+ range projection, wallet authorization, BTC fee transaction, ownership boundary,
722+ journal entry, and ledger/database readback all agree.
723+
724+ The protocol demonstration carries only the minimal deterministic witness of
725+ this path: local Need synthesis, explicit Need acceptance, local Need-Fit
726+ ranking over fixture deposits, source-safe preview, and deterministic fee-quote
727+ shape. It must remain self-contained and must not import the product pipeline,
728+ registry, prompt, agent, Vercel, Supabase, UAPI, or package implementations.
729+ Product code may compare against the witness, but it must own its own runtime
730+ implementation.
731+
713732### Share-to-Fee measurement clarity
714733
715734V28 keeps the standing supply law intact while sharpening the initial
@@ -721,15 +740,18 @@ must be deterministic from recorded measurements:
721740 measurement vector;
722741- the priced measurement volume is the weighted admitted volume after fit,
723742 quality, proof, and settlement eligibility gates;
743+ - the initial deterministic shape is
744+ ` sum(measurement_weight * measurement_volume * admitted_fit_quality) ` before
745+ applying the configured BTC fee schedule;
724746- BTC price is derived from that priced measurement volume by the configured
725747 staging-testnet fee schedule and recorded as a reader fee quote;
726748- the quote is previewable before payment, but source contents and licensed
727749 read rights are not unlocked until settlement readback succeeds.
728750
729- This pricing path is a V28 commercial product acceptance target, but it must
730- remain fail-closed: if the Need measurement, Fit measurement, fee schedule,
731- wallet authorization, BTC fee, BTD range, or ledger readback is missing, the
732- Terminal shows blocked readiness rather than implying settlement.
751+ This pricing path is a V28 product acceptance target, but it must remain
752+ fail-closed: if the Need measurement, Fit measurement, fee schedule, wallet
753+ authorization, BTC fee, BTD range, or ledger readback is missing, the Terminal
754+ shows blocked readiness rather than implying settlement.
733755
734756### Long-running full-profile pipeline gate
735757
@@ -743,9 +765,18 @@ That later gate may run for dozens of minutes in Vercel Sandbox. The sandbox
743765execution itself must push finished result state, artifacts, and readback
744766signals to a server-side stream/socket handler or durable queue; the route that
745767starts the run must not be responsible for waiting synchronously for the final
746- result. Full-profile acceptance requires the same evidence as bounded profile
747- plus durable async completion delivery, resumable status readback, and Terminal
748- reattachment to the live execution stream.
768+ result. The push must be correlated by the pipeline run id, authenticated
769+ without exposing Vercel/OAI/Supabase/GitHub secrets inside routine telemetry,
770+ idempotent across retries, and durable before the sandbox stops. Terminal must
771+ be able to reattach by run id and stream both in-flight events and final
772+ artifact/readback state after the starter HTTP request has ended.
773+
774+ Full-profile acceptance requires the same evidence as bounded profile plus
775+ durable async completion delivery, resumable status readback, explicit timeout
776+ and retry accounting, and Terminal reattachment to the live execution stream.
777+ Until that gate exists, ` full ` is a preflight blocker on the deployed route and
778+ ` bounded ` remains the current staging-testnet profile for closing the
779+ source-bound Read/Fit -> AssetPack -> Finish -> ledger readback gate.
749780
750781## canonical subsystem surfaces
751782
0 commit comments