@@ -6,9 +6,10 @@ surfaces described here are checked in on the current release line.
66
77The source-package production slice is deployed. Generic artifact,
88reproduction, deployment, and chain-index code is implemented, but a public
9- ` on_chain_attested ` claim additionally requires operators to deploy and pin the
10- canonical mainnet Registry Type Script, its CellDep, and the attestor Lock.
11- Until all three identities are configured, commitment construction fails
9+ ` on_chain_committed ` claim additionally requires operators to deploy and pin
10+ the canonical mainnet Registry Type Script, commitment custody Lock, and both
11+ code CellDeps. Until all four configuration values are present and their Cells
12+ are live with the required confirmation depth, commitment construction fails
1213closed and scheduled chain reconciliation remains disabled.
1314
1415The Registry indexes CKB ecosystem artifacts. A coordinate is
@@ -67,9 +68,12 @@ binary may be verified but have no deployment concept. A CKB executable may be
6768verified and still undeployed. A previously chain-verified release may later be
6869deprecated without rewriting its evidence.
6970
70- ` on_chain_attested ` is a current-state claim, not a permanent badge. Scheduled
71+ ` on_chain_committed ` is a current-state claim, not a permanent badge. Scheduled
7172maintenance returns a spent commitment to ` deployed ` and a stale deployment to
72- ` verified_build ` , while retaining every accepted evidence record for audit.
73+ ` verification_status = verified ` plus ` deployment_status = undeployed `
74+ (projected as ` verified_build ` ), while retaining every accepted evidence record
75+ for audit. Disabling the Registry Script configuration also clears current
76+ commitment pointers because the service can no longer re-observe them.
7377
7478## Artifact Identity
7579
@@ -228,17 +232,40 @@ environment and emit bounded reports:
228232
229233``` json
230234{
231- "schema" : " cellscript-reproduction-report-v1 " ,
235+ "schema" : " cellscript-reproduction-report-v2 " ,
232236 "builder_id" : " builder-a" ,
237+ "trust_domain" : " independent-org-a" ,
238+ "builder_public_key" : " p256-spki:<base64-der>" ,
233239 "environment" : " <exact signed environment>" ,
234240 "source_hash" : " <CKB Blake2b-256>" ,
235241 "build_recipe_hash" : " <CKB Blake2b-256>" ,
236242 "artifact_hash" : " <CKB Blake2b-256>" ,
237243 "build_log_hash" : " <CKB Blake2b-256>" ,
238- "generated_at" : " 2026-08-02T00:00:00Z"
244+ "generated_at" : " 2026-08-02T00:00:00Z" ,
245+ "signature" : {
246+ "algorithm" : " p256-sha256" ,
247+ "signature" : " <base64url-fixed-signature>"
248+ }
239249}
240250```
241251
252+ Generate each report next to the reproduced artifact and bounded build log:
253+
254+ ``` bash
255+ cellc artifact reproduction-report acme/vault-lock@1.0.0 \
256+ --artifact target/vault-lock \
257+ --build-log reports/builder-a.log \
258+ --builder-id builder-a \
259+ --trust-domain independent-org-a \
260+ --builder-key-id cap_< sha256-prefix> \
261+ --builder-public-key ' p256-spki:<base64url-der>' \
262+ --output reports/builder-a.json
263+ ```
264+
265+ The corresponding private key must be isolated per builder. Load it from that
266+ builder's OS keychain entry, or set
267+ ` CELLSCRIPT_REPRODUCER_PRIVATE_KEY_PKCS8_B64 ` only in its CI environment.
268+
242269Create the operator promotion payload locally:
243270
244271``` bash
@@ -248,9 +275,14 @@ cellc artifact reproduction-evidence acme/vault-lock@1.0.0 \
248275 --output reproduced-build-promotion.json
249276```
250277
251- The CLI and API require two to sixteen distinct builder IDs and exact matches
252- for the signed environment, source, recipe, and executable. The promotion also
253- references the accepted ` verified_build ` evidence. A reproducible artifact
278+ The CLI verifies every report signature and requires distinct builder IDs,
279+ public keys, and trust domains. The API additionally requires each builder to
280+ match ` REGISTRY_REPRODUCER_POLICY_JSON ` and enforces its configured minimum
281+ trust-domain count. Both layers require exact matches for the signed environment,
282+ source, recipe, executable, and build log. The promotion also references the
283+ accepted ` verified_build ` evidence. Accepted evidence records the canonical
284+ policy SHA-256 and the threshold used for that decision, so later policy
285+ rotation cannot rewrite the historical trust boundary. A reproducible artifact
254286stays ` evidence_required ` , and deployment admission fails, until
255287` reproduced_build ` evidence is accepted.
256288
@@ -299,9 +331,10 @@ Type/Lock hashes, and a wallet-ready mainnet transaction intent. The wallet,
299331not the Registry or CLI, completes capacity, inputs, change, fee, witnesses,
300332signatures, and broadcast.
301333
302- The Registry accepts an on-chain attestation only after reading the live
303- mainnet Cell and matching its exact data, configured attestor Lock, and
304- configured Registry Type Script. Scheduled maintenance uses an exact Type
334+ The Registry accepts an on-chain commitment only after reading a sufficiently
335+ confirmed live mainnet Cell and matching its exact data, configured commitment
336+ Lock, and configured Registry Type Script. Readiness separately resolves and
337+ checks the Type and Lock code CellDeps. Scheduled maintenance uses an exact Type
305338Script indexer query plus the ` CSREGv1 ` prefix to discover commitments and
306339reconcile their live lifecycle.
307340
@@ -313,8 +346,10 @@ application's own Lock/Type Scripts, schemas, and replacement transactions.
313346
314347The website presents a single “Connect CKB wallet” entry. Its modal separates
315348CCC-detected browser signers, which can connect immediately, from wallet
316- directory entries, which open an official site and continue through the manual
317- payload/signature path. A directory entry is never reported as connected.
349+ directory entries, which only open an external site and then require a
350+ compatible manually produced ` wallet-signature.json ` . A directory entry is a
351+ reference/import route, not proof that the wallet exposes a compatible message
352+ signing UI, and is never reported as connected.
318353Network selection is not exposed because authorisation and deployment are
319354mainnet-only.
320355
@@ -324,8 +359,10 @@ never leave the wallet. Namespace ownership, capability scope, expiry,
324359revocation, nonce consumption, idempotency, quotas, and audit events are
325360enforced by the API.
326361
327- The submit form remains hidden until a wallet principal is connected or the
328- publisher explicitly confirms that an active capability already exists.
362+ The submit form remains hidden until a direct signer is connected, a manual
363+ signature-import route is explicitly selected, or the publisher confirms that
364+ an active capability already exists. Manual payloads remain untrusted until
365+ the API verifies their principal binding and signature.
329366
330367## Public Reads
331368
@@ -378,8 +415,9 @@ that every artifact is installable.
378415 other mirror failures are audited and retried by verification sync, so an
379416 uncommitted release or deployment is never advertised as current.
380417- State transitions append evidence; they do not mutate hash identity.
381- - An unconfigured or partially configured Registry Type/Lock Script set cannot
382- produce a wallet transaction intent or current attestation.
418+ - An unconfigured, partially configured, spent, or insufficiently confirmed
419+ Registry Type/Lock Script and CellDep set cannot produce a wallet transaction
420+ intent or current commitment.
383421
384422## Validation
385423
0 commit comments