Repository navigation
[0.32][ProtocolBundle] Stabilize runtime-selected open cross-Script roles #29
Description
Completed — 2026-10-12
Implemented on branch 0.32; clean-source executable acceptance is bound to 16b9e58394aa182f071303e6b5ab15dc94d304f4. The acceptance mapping maps each required boundary to executable evidence. Its original pending-backend status is superseded by the passing clean replay recorded here; the final documentation-only refresh is prepared locally but awaits GPG unlock.
- Nominal ScriptHandle/VerifierHandle, independently recomputed receipts, immutable member policies, exact dependency/Script/network identities and Type-hash history binding are implemented.
- Lock and Type consumers admit selected Type-policy, single Type/Lock and parameterless SPAWN/WAIT verifier profiles. Unsupported public codecs fail closed; arbitrary child argv ABI and behavioral equivalence are not claimed.
- O0–O3 Lock/verifier transaction matrices cover identical native/CLI/generated-TypeScript/SDK bytes, actual Script-group execution, failing Lock predicates and spawned children, receipt/machine/role/dependency substitution, and signing boundaries.
- Full backend log SHA-256:
d768615c34b8054b907448347606b9e01fdfbbd7206101a8352ed2296b191269; strict backend report SHA-256:093138c609ab64847338683c6c34117a33fb6738e01bf6c480322eaee6fa12cf. Both report success. - Full
ci, clean-sourcebackend(including pinned CKB stateful scenarios andcounter_node_acceptance) and finalcommitgates passed. The CKB receipt binds source commit16b9e583withgit_dirty=false; its SHA-256 isa144be567c14c35702034370f7ccc1c76ded743441560528a45425829a36908c. - External human audit remains waived by the maintainer; no such audit is claimed. The frozen profile and resource limits in the design/acceptance record remain part of the admitted contract.
Maintainer decision — 2026-10-11: external audit requirement cancelled
The maintainer explicitly cancelled the external audit / independent human security review requirement for #29 as well as #28. This supersedes prior issue text and comments requiring external review before stable admission. No audit is claimed to have occurred.
Independent software artifact checking, the complete #28 dependency, all-group CKB-VM evidence, transaction/signing substitution rejection, generated-builder/adapter byte parity, bounded resources and applicable unified gates remain required. This waiver does not authorize release publication or deployment, and incomplete technical acceptance still prevents closure.
Accepted scope update — 2026-10-04
The maintainer promoted this issue into the 0.32 implementation scope. Earlier post-v1/deferred wording below records its original separation from 0.30; it is no longer the current version assignment. All required contracts and acceptance evidence remain applicable. The maintainer waived external human security review on 2026-10-11; all technical acceptance remains required. Implementation and technical acceptance are complete; see the completion record above.
Summary
Track runtime-selected/open cross-Script roles that are deliberately outside CellScript 0.30's closed artifact-known role contract in #10.
CKB Scripts do not call peer contracts, and observing a peer Cell does not prove peer authorization. Any open-role design must preserve the distinction between checks performed by the current Script, requirements enforced by ProtocolBundle, and whole-transaction acceptance supplied only when every CKB Script group succeeds.
Dependency
The dependency on #28's independently verified compatible-open Script/verifier handle and receipt model is satisfied. Closed exact roles remain owned by the completed bounded scope of #10.
Required contract
- Select participants only through a verified compatible-open handle/receipt policy; raw Script values and Registry names are insufficient.
- Preserve Lock/Type role, transaction-wide versus group-relative source, complete Script identity, data schema, cardinality, deployment, target/profile, and network identity.
- Distinguish local-owned lifecycle authority, foreign observation, required peer groups, dependency roles, and builder-only assumptions.
- Attribute every claim as
checked_by_current_script,required_peer_script_group,checked_by_bundle_dry_run, orguaranteed_only_by_ckb_consensus. - Bind the concrete participant selected in the final transaction before signing and reject post-build substitution.
- Define upgrade/yank/downgrade behavior through the accepted receipt model rather than implicit compatibility.
- Keep all runtime cardinalities and payloads fixed or explicitly bounded.
Acceptance evidence
- A versioned design record and threat model for open participant selection.
- Same-interface/wrong-artifact, wrong source, wrong role, missing peer group, unbound Registry record, wrong network/deployment, incompatible receipt, yanked version, and post-signing substitution negatives.
- ProtocolBundle all-group dry-run and materialization over byte-identical transactions.
- CKB-VM evidence for the current Script's own observations without claiming fictional peer calls.
- Generated-builder, checker, metadata, LSP/docs, and resource-budget parity.
Non-goals
- Reopening or weakening [Language design] Model typed cross-Script transaction roles without runtime linkage #10's exact closed-role v1 contract.
- Treating interface compatibility as behavioral equivalence.
- Giving observed foreign Cells local consume/create authority.
- Claiming that ProtocolBundle replaces CKB consensus validation.
Relationship
Split from #10 after the bounded 0.30 closed-role scope was implemented. This is post-v1/deferred work and is not a 0.30 release blocker unless a later accepted scope explicitly promotes it.
Activity
a19q3 commentedon Sep 23, 2026
Remaining-work review, 2026-09-23.
Implementation remains dependent on #28's verified selection/receipt contract. The existing closed-role ProtocolBundle path and the 0.31 cost work do not establish runtime-selected open roles.
Design work can proceed now: choose one bounded transaction involving an open participant and write down who owns each check. For every field/claim, use the issue's four explicit categories:
checked_by_current_script,required_peer_script_group,checked_by_bundle_dry_run, orguaranteed_only_by_ckb_consensus. Specify source/index scope, Lock versus Type role, cardinality, complete Script identity, deployment/network and output correspondence. An observed foreign Cell must not acquire local consume/create authority.Once #28's receipt semantics are accepted:
The next reviewable milestone is the worked transaction plus ownership/threat matrix, not new syntax. Full closure still needs the implemented #28 dependency, all-group execution evidence, consumer parity and independent security review. Keep this deferred from the cost release; it can follow #28 without blocking exact-handle ZK research in #22.
[-][Post-v1][ProtocolBundle] Stabilize runtime-selected open cross-Script roles[/-][+][0.32][ProtocolBundle] Stabilize runtime-selected open cross-Script roles[/+]a19q3 commentedon Oct 4, 2026
Promoted to the 0.32 milestone; this implementation remains dependent on #28.
The R1/R2 work plan fixes the required ownership and evidence matrix before open participant selection is admitted: complete Script/role/source/schema/cardinality/deployment identities, local lifecycle authority versus foreign observation, required peer groups and output correspondence. Each claim must identify its enforcing boundary.
Implementation will extend the existing ProtocolBundle materializer and bind the selected participant/receipt/dependency/witness mapping to final transaction bytes. Acceptance still requires byte-identical generated-builder/adapter output and complete-transaction execution of every required Script group, including a selected peer which actually rejects. Local observation or a bundle-only precheck is not evidence of peer acceptance.
No open-role source or runtime contract is claimed as implemented by this planning work. #28's receipt and authorization boundary, executable R1/R2 enforcement, adversarial substitution tests, editor/checker/builder parity and independent security review remain outstanding. Keeping this issue open; the exact ZK application in #42 does not depend on closing it.
feat(package): bind source versions into checked code policies
feat(checker): bind source policies to direct dependency snapshots
feat(checker): bind complete direct Type-group transaction snapshots