fix(carrier-binding): preserve root authority across recursive multi-hop delegation (#287) - #288
Merged
Merged
Conversation
added 2 commits
September 26, 2026 16:24
…hop delegation (#287) - Extend CarrierContract with bounded delegation depth (maxDepth, remainingDepth) - Allow intermediate worker carriers to delegate to subagents/workers with monotonic narrowing - Enforce recursive ancestry validation, root-controller requirement, and cross-stitching defense - Bind effect leases and reconciliation receipts to full delegation lineage and root authority - Enforce hostile controls including anti-widening, ancestor revocation fencing, and cross-chain conflicts - Add comprehensive test suite covering all 12 Mandatory Hostile Controls
James3014
force-pushed
the
codex/issue-287-multi-hop-delegation
branch
from
September 26, 2026 08:30
ce7d2d7 to
c9ce38b
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Related to #287 (NAB-E2). This PR intentionally does not close #287.
This implements the source-side recursive delegation carrier on top of the existing CarrierBinding authority owner. It preserves the invariant Authority(child) ⊆ Authority(parent) ⊆ Authority(root), permits bounded Worker -> Subagent delegation only when the parent carries remaining delegation depth, recursively validates ancestry/revocation/expiry, and binds effect/reconciliation identity to the delegation lineage and root authority.
During independent acceptance review the original candidate's hard-coded depth ceiling of 16 was removed. The implementation now reuses the existing carrier ancestry safety bound: MAX_DELEGATION_LINEAGE=32 and MAX_DELEGATION_DEPTH=31. This is a host safety ceiling, not a newly invented product default. A root without explicit delegation depth remains non-delegable.
The candidate retains the hostile controls for action/scope widening, controller/cutover authority, ancestor revocation/expiry, cross-root/repository/goal stitching, same-operation cross-chain conflict, chain truncation, one-hop compatibility, and no synthetic hops.
Verification on the repaired exact head:
Claim boundary: these tests prove the source/fixture contract. #287 explicitly requires a controlled physical Dev MCP witness with exact source/build/runtime identity for terminal acceptance. That live Main -> Worker -> Subagent -> consequential-effect canary has not yet been produced, so #287 must remain open after this PR merges.