{"id":"490ab0b2-c273-4bb9-bf07-3e2f12276068","org_id":"5b607c7a-3ba2-4077-b038-cdccd0ce7c34","project_id":"b18679c0-fffb-4308-82b6-9e91be23582f","parent_id":null,"identifier":"BEB-9281","number":9281,"title":"PASS CLAIMS NOTHING WHILE CLAIM-BY-NAME WORKS FIRST TRY — 508 passes, 0 claims, 997 queued, and lane_run claimed BEB-9278 on attempt 1","description":"Repo: alexrollin/abilifi-apps (abilifi-dispatcher)\nClass: CODE\nLane: part\nFEATURE NAME: **PASS CLAIMS**\n\n## The discriminating evidence, measured 2026-09-05T09:22Z\nZERO_CLAIM has been firing for ~25h: claimed=0, queued=997, 508 passes, max_concurrent=20. Every pass proposes 20 tickets and claims none.\n\nI claimed BEB-9278 BY NAME with lane_run and it succeeded on ATTEMPT 1, immediately: `claimed {attempt:1, target alexrollin/abilifi-apps, lease_until ...}`, lane state went queued -> claimed -> building.\n\nSo claiming works. The gate works. ticket_state on the same ticket returns dep/route/budget/contract/output_target all satisfied, only `spec` unsatisfied and marked fillable (\"the build gate calls spec_author in-gate\").\n\nThat rules out the explanations that have been assumed for 25 hours:\n- not the gate refusing (the same gate passed the same ticket a second later)\n- not missing budget (estimate 120 / ceiling 240 present)\n- not missing route or output target (both resolved)\n- not a lease or concurrency cap (0 of 20 in use)\n\nThe defect is in the PASS's claim step specifically, not in claimability.\n\n## Deliverable\n1. Find why the pass's claim step writes zero claim-success rows while claim-by-name succeeds on the same ticket in the same second. Compare the two code paths directly — they should be one path, and if they are two, that is the finding.\n2. Report the difference by name with the raw rows from both paths for the same ticket.\n3. If the pass path has its own preflight that the by-name path skips, that preflight is the defect — remove the way to wait, do not add a detector for it.\n\n## Acceptance\n- One pass claims at least one ticket, evidenced by a claim-success row written by the PASS, not by lane_run.\n- ZERO_CLAIM clears and stays clear across 10 consecutive passes.\n- The difference between the two claim paths is stated in one line on this ticket with both raw rows.\n\n## NOT in scope, with the reason\nAdding a watcher, a timeout red or an alert on ZERO_CLAIM (a fix removes a way to wait, it does not add a way to refuse — the red already fires and has fired 25h). Raising max_concurrent (0 of 20 are in use). Claiming tickets by hand as a workaround (proves nothing about the pass and does not scale past one).\n\nRefs: BEB-2716 (proposed-never-claimed fix, itself unmoved 24h+), BEB-8744 (pass_run dry run), BEB-8747 (lane_run, the path that WORKS), BEB-9278, BEB-9253.","status":"todo","priority":0,"assignee_id":null,"created_at":1788600313211,"updated_at":1788690506221,"completed_at":null,"due_date":null,"claimed_by":null,"claimed_until":null,"required_capabilities":null,"estimate":null,"cost_ceiling":null,"cancelled_at":null,"last_actor":"unverified:shared"}