audit: quarantine incompatible Validator contract pending owner decision - #13
audit: quarantine incompatible Validator contract pending owner decision#13skyrocket2026 wants to merge 2 commits into
Conversation
|
Assessment of the proposal at head cathedral-cli#13: quarantine incompatible Validator contract pending owner decisionArtifact / Question / Out of scope
What it actually changes
Decision needed
Premise check
Recommendation
FindingsF1. The policy-derived receipt tier makes whole-node verification depend on CLI code rather than on signed release data, so lifting the quarantine later breaks every existing install until reinstall.
F2. The PR frames the incompatibility as if it applied to the installed engine; the pinned engine matches the adapter.
Refuted
Observations
Questions for the author
|
|
Follow-up at The checked-in lock still pins Validator That leaves the actual owner decision exactly as the review frames it: retain a This follow-up only fixes avoidable proposal/test drift:
Validation: the exact ten previously regressed nodes now pass ( Formal Gate0 remains NO-GO: |
External audit proposal — owner decision required
This is a DRAFT, fail-closed quarantine proposal. It is not launch provenance,
does not supersede the owner-controlled PRD, and does not authorize any chain,
weight, wallet, mechanism, KBS, billing, or production-routing change.
Reviewed premise
The retained CLI adapter modeled the historical signed-feed relay, but the reviewed
Validator is a direct chain writer:
cathedralai/cathedral-validatord225e8758ca02627cced800b7de0c79464d89aeecathedral_thin.independent_runtime.direct_validator:mainac258f889192a88eb9269a48bb3de5f488419c8645bff59b7cb2e9aa335204ebpyproject.tomlSHA-256:acb8355a17c7011d4718805755c6dd70f5f42126fbb415ca294a1664fadad6dfThe CLI therefore must not turn a repin, retry, dry run, or argv edit into implied
chain-write authority.
Proposed behavior
before run state, publisher fences, argv construction, or child execution.
historical and non-operational; never reconcile or rewrite historical run state.
as static evidence only. Candidate wheels are installed offline, but no
post-install Validator interpreter/import/client/server probe intentionally runs.
runtime_checkedandstatic_quarantine.Static generations expose no executable interpreter or entrypoint.
manifest cannot self-promote static evidence to executable evidence.
including versions, environment markers, normalized/requested/transitive extras,
and direct-reference refusal, without loading candidate code.
malformed run/config handling, redaction, and historical follow/resume behavior.
Validation performed
python -m pytest -q tests/test_contract.py: 122 passed on the committed tree.python -m compileall -q cathedral_node tests: passed.git diff --check: passed.or P0/P1 code blocker to opening this draft.
These focused runs are deliberately not described as Gate 0 evidence.
Formal Gate 0 status: NOT RUN / NO-GO
The exact
./run-gate0.shcommand exits 4 at the manifest precheck and executeszero tests. The read-only manifest generator reports seven unmapped proposal
tests:
I intentionally did not regenerate
tests/gate0_manifest.json, edit the Gate 0generator, modify Gate 12 evidence, or change
cathedral.lock.json. Blindly mappingthe tests would be misleading because the current requirement map still calls for
operational Validator configuration/start behavior and says the legacy Validator is
not pinned, while this proposal deliberately retains it as static evidence.
Owner decisions required before merge or any readiness claim
owner-approved Gate 0 manifest change.
1.0.0, while its ownversioning rules classify these changed command/exit semantics as a major change.
intentionally insufficient; a future compatible Validator needs a newly
runtime-checked, higher signed release and explicit owner-approved migration.
cathedral.lock.jsoninstruction that recommendscathedral update --to <lockfile>even though unsigned lockfile switching isrefused, and approve the intended signed-release workflow/profile.
execution, Gate 0 acceptance, and subnet launch remain unauthorized.
Residual limitation
Stop/cancel re-probes the complete ownership tuple immediately before TERM and KILL
and serializes owner changes, but POSIX
killpgdoes not provide pidfd-atomic processgroup identity. This draft does not claim that the final check-to-signal reuse window
is cryptographically or kernel-atomically eliminated.
Please keep this PR in draft until the owner-controlled authority decisions above
are resolved. Do not merge it as launch readiness evidence.