Skip to content

id(hosted_binding): closing lifecycle audit — transition table for every public method + module-header contract statement (Phase 4 of #5047) #5048

Closed

Description

@dezren39

id(hosted_binding): closing lifecycle audit — transition table for every public method + module-header contract statement (Phase 4 of #5047)

Phase 4 of design #5047 ("A name is claimed once — the hosted binding lifecycle contract", design doc files/designs/code-id-hosted-binding-lifecycle.md in the keep-the-four-repos-healthy goal workspace). Gated on Phases 1–3 (#4868, #4871, #4887).

Scope

Audit every public method of HostedBindingService (pkgs/id/src/hosted_binding.rs) against the lifecycle contract recorded on #5047 — a challenge, a pairing code, and a rebind target key are each claimed exactly once, by exactly one holder, for exactly their stated lifetime; every transition out of a live state (consumption, supersession, expiry, reservation, release) is named — and write the resulting transition table into the module header beside the §3.4 failure-semantics prose it completes. Close #4868/#4871/#4887 with evidence if their phases have not already closed them.

Required dispositions

(a) Expired pairing codes: pairing_codes entries whose challenge expired are swept only when presented to exchange_pairing_code. State whether mint/lookup sweeps them, or record that the leak is bounded by the challenge TTL (5 min) and why that is acceptable.
(b) consumed_challenges growth: consumed IDs accumulate for the life of this in-memory service. State the bound, or the reason none is needed at this slice (e.g. tied to challenge issuance rate limits), in the header table's notes.
(c) Reservation scan cost: the target-key reservation (Phase 3, #4887) is a predicate over pending requests. If the pending set can grow beyond a trivial scan, disposition the named alternative — an index keyed by target key — with the reason it is or is not taken (the design doc records why a second index loses by default: it is a second place for state to disagree).
(d) Old-key-side symmetry: confirm the delayed path's old key needs no symmetric reservation statement (it is already reserved via the binding's rebind_pending status) — confirm in the table, do not re-derive.

Acceptance criteria

Activity

  1. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    agent-note: filed by design-architect pass 45 (2026-11-03) as Phase 4 (closing audit) of design #5047, gated on Phases 1–3 (#4868, #4871, #4887) — status/blocked until they land. Triage packet → pilot task 8683 (queue repo-health-code-pilot, status queued, verified by dedupe re-read). Linked as a sub-issue of #5047. Triage: confirm scope against current main, record the gating, and enqueue the implementation follow-up with this issue's acceptance intact once Phases 1–3 land; do not start the audit early.

  2. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    agent-note:v1
    state: handed_off
    task: task 8683 (triage, repo-health-code-pilot, lane code-l)
    worker: repo-worker-code
    issue: #5048

    Execution lane assigned: opencode. Handed off to the laptop claimant, which launches the bound session to drive task 8683 to its terminal state.

  3. added
    queue/claimedQueue worker lifecycle state
    work/assignedQueue worker lifecycle state
    priority/normalOrdinary priority (the default)
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    on Nov 3, 2026
  4. 34 remaining items

  5. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

  6. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    agent-note:v1
    event: picked_up
    task: 9326 (small_fix, repo-health-code-pilot; worker repo-worker-code; OpenChamber scheduled lane 335a5d1f-bfc1-4831-99ea-850c8939a727)
    by: openchamber-scheduled-lane
    at: 2026-11-04T19:47:30Z

    Fresh revalidation: #5048 and epic #5047 are OPEN; #5048 has no hard-stop labels and already has queue/claimed, status/in-progress, and work/assigned. Searches found no open PR for either issue. Both issues are assigned to dezren39, but no PR is owned and the packet calls for an audit, not a Drew-only decision. I will resume the audit on the task branch and avoid unrelated behavior changes.

  7. added
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    status/parkedDeliberately paused with a recorded resume condition
    and removed
    queue/claimedQueue worker lifecycle state
    on Nov 4, 2026
  8. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    agent-note:v1
    event: parked
    task: 9326 (small_fix, repo-health-code-pilot; worker repo-worker-code; OpenChamber scheduled lane 335a5d1f-bfc1-4831-99ea-850c8939a727)
    by: openchamber-scheduled-lane
    at: 2026-11-04T20:06:15Z

    Parked for 20 minutes with PR #5646 open. Laptop test cargo test -p id --manifest-path pkgs/id/Cargo.toml --lib hosted_binding passed (31 passed, 0 failed). Fresh gh pr checks showed only CodeRabbit pending; no workflow runs appeared for the branch. I inspected .github/workflows/id-check.yml: its triggers are schedule and workflow_dispatch only, with no pull_request; there is no alternate pkgs/id PR workflow. This is a CI coverage gap, not a green CI result.

    labels: queue/parked and status/parked set; queue/claimed and status/in-progress removed; work/assigned retained.
    resume: re-fetch issue #5048 and PR #5646, inspect the CI-trigger gap, and continue only after fresh checks or a documented follow-up. Do not assume CI passed.

  9. added
    queue/claimedQueue worker lifecycle state
    and removed
    status/parkedDeliberately paused with a recorded resume condition
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    on Nov 4, 2026
  10. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

app/idPackage/app: id (pkgs/ or apps/ in this repo)effort/mMedium: expected under 1 day of workkind/enhancementmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedpriority/normalOrdinary priority (the default)queue/claimedQueue worker lifecycle statesource/design-architectFiled by the repo design architect jobsource/queue-workerFiled or worked by the queue/worker pilotstatus/in-progressQueue worker lifecycle statetask/triageQueue packet kind: verify, reproduce, and route this itemwork/assignedQueue worker lifecycle state

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions