Skip to content

xtask gate call-binding: #74 per-call binding, blocking (row in-process RED until #1027) - #1029

Merged
MattJackson merged 1 commit into
predevfrom
lane-proof-call-binding
Oct 15, 2026
Merged

MattJackson merged 1 commit into
predevfrom
lane-proof-call-binding

Conversation

@MattJackson

Copy link
Copy Markdown
Collaborator

DRAFT, BLOCKING, stacked on #1018 (rule 19). This is the DoD gate-battery entry "Pass/Grant per-call binding (#74)" (BUSBAR-1.6.0.md l.2908).

cargo xtask gate call-binding reads three rows as lexed code:

row the claim
call-binding:in-process The unit loop never mints an unbound Pass/Grant; each one is reported by line. "The loop" means teller production code, minus its impl Kernel token vending, plus the plane driver's probe. The loop opens the call (next_call), a stage compares it (bound_to), and HoldCell::admit refuses another call's grant (CallMismatch).
call-binding:abi-handle No host entry (ticket, services, conn_services, io_slots) reads a plugin context as an address. Each resolves it through handle::resolve. resolve_in compares the tag in constant time, refuses a revoked entry, refuses another instance's entry inside a crossing, and counts a forgery.
call-binding:ticket Worker and inline generations are the keyed permutation of the slot counter. A mismatched wake is judged by the inverse and blamed on its supplier (judge_forgeries, Pool::wake, inline). A spent counter retires its slot (next_count).

State in this draft. On this branch (#1018, without the in-process binding), call-binding:in-process is RED by design: the teller's unbound mints are named by line. It goes green when the $ binding #1027 lands on predev and predev is merged in here. #1027 is not merged into this head (rule 15: money lands alone). For the same reason, selftest case (a) reports Impossible (its baseline is already red) until then. abi-handle and ticket are green on #1018.

Selftest:

  • (a) An unbound pass planted on the probe is RED and named plane_driver/probe.rs:1:.
  • (b) A host entry that reads ctx.ptr is RED.
  • (c) A wake judged without the permutation's inverse is RED, naming ever_minted.

Unit tests cover the mint finder (turbofish, bare, nested generics, mint_bound ignored), the impl Kernel exclusion, and the production-text cut.

No CI yet (ModernCI outage); no laptop builds.

- call-binding:in-process: the unit loop (teller, its impl Kernel token vending aside, and the
  plane driver's probe) mints no unbound Pass/Grant (named by line); the loop opens the call
  (next_call), a stage compares it (bound_to), the money cell refuses another call's grant
  (CallMismatch).
- call-binding:abi-handle: no host entry reads a plugin's context as an address; each resolves it
  through handle::resolve; resolve_in verifies in constant time, refuses revoked and (in a
  crossing) another instance's entry, and counts a forgery.
- call-binding:ticket: worker and inline generations are the keyed permutation of the slot's
  counter, a mismatched wake is judged by the inverse and blamed on its supplier (worker, inline,
  and a worker no one runs), a spent counter retires its slot.
- selftest: an unbound pass planted on the probe, a host entry reading ctx.ptr, a wake judged
  without the inverse; unit tests for the mint finder and the impl Kernel exclusion.
MattJackson added a commit that referenced this pull request Oct 15, 2026
…erialize; call-binding's mint finder iterates its tokens

- busbar-kernel ir/lane_caps.rs: MaxOutputKeyCfg and ModelCapabilities derive Serialize, as #957's
  ProviderCfg/ProviderDef/ProviderDeploy Serialize derives need (E0277 x6 on every cargo check). The
  config-schema fingerprint reads Deserialize shapes only.
- xtask call_binding (#1029): unbound_mints walks tokens.iter().enumerate().skip(3)
  (clippy needless_range_loop).
Base automatically changed from lane-proof-ticket-prp to predev October 15, 2026 13:54
@MattJackson
MattJackson merged commit 071dab7 into predev Oct 15, 2026
@MattJackson
MattJackson deleted the lane-proof-call-binding branch October 15, 2026 13:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant