Skip to content

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

Draft
MattJackson wants to merge 1 commit into
lane-proof-ticket-prpfrom
lane-proof-call-binding
Draft

MattJackson wants to merge 1 commit into
lane-proof-ticket-prpfrom
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.

This branch has not been deployed

No deployments
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