# progress/queue.txt — executable queue consumed by scripts/orchestrate.sh
#
# Format: one spec reference per line, in execution order.
# Each line is a path with an anchor pointing to a task in docs/tasks/.
# Lines starting with "#" are comments and ignored.
# Lines starting with "# manual:" are skipped by the orchestrator
# (use for tasks that must be done by a human).
#
# State model (TASK-ORC-001; extended by STORY-005/T-HQA-005, STORY-212 and
# STORY-213) — this file is the single source of truth. Ten states:
#   <spec>                      pending — will be executed
#   # [DONE] <spec>             completed AND verified by the orchestrator
#   # [FAILED] <spec>           executed but failed verification (re-queueable)
#   # [SKIPPED-DEPS] <spec>     never executed — a dependency failed
#   # [SKIPPED-FILTER] <spec>   never executed — excluded by --phase
#   # [RUNNING] <spec>          in flight RIGHT NOW, owned by a live lease at
#                               harness/state/leases/<TASK-ID>/ (STORY-213).
#                               Never selected; treated as PENDING by the
#                               dependency check (a dependent defers, it is not
#                               blocked); NOT restored by --retry-failed — it is
#                               progress or a crash, not a failure, and the
#                               startup lease sweep is what reconciles it back
#                               to bare pending.
#   # [IMPL-DONE] <spec>        implemented, not yet QA-verified; NOT a
#                               satisfied dependency yet — dependents defer
#                               like pending (STORY-008 promotes it to [DONE])
#   # [QA-FAILED] <spec>        implemented but rejected by QA (re-queueable)
#   # [INVALIDATED] <spec>      superseded/withdrawn after impl (re-queueable)
#   # [MERGE-CONFLICT] <spec>   implemented AND fully gated, but its lane
#                               branch could not be landed on the integration
#                               branch — a rebase conflict, or a tree that is
#                               green alone and red once merged (STORY-212).
#                               The branch factory/task/<TASK-ID> is KEPT and
#                               the integration branch is unmoved. Blocked for
#                               dependents, exactly like [FAILED]; re-queueable.
# IMPL-DONE/QA-FAILED/INVALIDATED are the schema-only additions from
# T-HQA-005; STORY-008 wires the transitions that actually write them.
# MERGE-CONFLICT is written by STORY-212's serialized integrator; RUNNING by
# STORY-213's lease acquisition, and cleared by its sweep.
#   # [DEFERRED] <spec>         parked behind a named gate, written BY HAND.
#                               The one state the orchestrator never writes.
#                               Never selected; NOT restored by --retry-failed;
#                               survives --sync as its marker. A deferred
#                               task's dependents defer too. The gate is
#                               recorded in the comment block above the line;
#                               the only exit is a human removing the marker
#                               once that gate is met. Legal in story.yaml as
#                               `deferred` since 2026-09-16 (STORY-301..305).
# Only the orchestrator writes states. Restore FAILED / SKIPPED-DEPS /
# QA-FAILED / INVALIDATED / MERGE-CONFLICT lines with:
#   bash scripts/orchestrate.sh --retry-failed
# Dependency checks read the [DONE] markers here (fallback to [x] rows in
# docs/tasks/execution-queue.md only for work that predates this queue).
#
# ACTIVE QUEUE
# ==============================================================================
# ----- STORY-156 — Per-agent Override Rate aggregate (from gate decisions) (status: done) -----
# [DONE] harness/stories/STORY-156/tasks/T-BE-156.md#t-be-156
# [DONE] harness/stories/STORY-156/tasks/T-QA-156.md#t-qa-156 (live PASS 5/5)
#
# ----- STORY-157 — Surface Eval Score + Override Rate on the Agents screen (status: done) -----
# [DONE] harness/stories/STORY-157/tasks/T-BE-157.md#t-be-157
# [DONE] harness/stories/STORY-157/tasks/T-QA-157.md#t-qa-157 (live PASS 6/6)
#
# ----- STORY-158 — Autonomy-curve linkage: measured metrics -> earned gate level (capstone) (status: done) -----
# [DONE] harness/stories/STORY-158/tasks/T-BE-158.md#t-be-158
# [DONE] harness/stories/STORY-158/tasks/T-QA-158.md#t-qa-158 (live PASS 6/6)
# enqueue-bug: BUG-001 (P2) filed by QA — appended at end of active queue
# [DONE] harness/stories/STORY-150/bugs/BUG-001.md#bug-001 (live PASS: reject COMPLETED through a 500 DM)
# enqueue-bug: BUG-002 (P3) filed by QA — appended at end of active queue
# [DONE] harness/stories/STORY-150/bugs/BUG-002.md#bug-002 (deferral re-homed on the open gap tracker)
# enqueue-bug: BUG-003 (P3) filed by QA — appended at end of active queue
# [DONE] harness/stories/STORY-150/bugs/BUG-003.md#bug-003 (10 probe rows retracted; retrieval returns none; probes carry a teardown)
# enqueue-bug: BUG-001 (P2) filed by QA — appended at end of active queue
# [DONE] harness/stories/STORY-151/bugs/BUG-001.md#bug-001 (guard folds windows+posix path flavours; 7 regression assertions)
# enqueue-bug: BUG-002 (P3) filed by QA — appended at end of active queue
# [DONE] harness/stories/STORY-151/bugs/BUG-002.md#bug-002 (snapshot regenerated 44→91 paths; 4 query params declared)
# enqueue-bug: BUG-001 (P2) filed by QA — appended at end of active queue
# [DONE] harness/stories/STORY-153/bugs/BUG-001.md#bug-001 (over-broad AC-3 locator split per-section; merged links now guarded outbound-only)
# enqueue-bug: BUG-001 (P3) filed by QA — appended at end of active queue
# [DONE] harness/stories/STORY-152/bugs/BUG-001.md#bug-001 (stale "Same as openReviews" comment restated to stand alone; field untouched per AC-3)
# enqueue-bug: BUG-002 (P2) filed by QA — appended at end of active queue
# [DONE] harness/stories/STORY-152/bugs/BUG-002.md#bug-002 (duplicate of STORY-151 BUG-001, already fixed in 36cd9350; guard replay 12/12 PASS)
#
# ===== Audit 2026-08-07 findings — stories enqueued for the orchestrator =====
#
# ----- STORY-163 — Configurable coding budget cap per-tenant/per-run via cost-svc (operator ask) (status: planned) -----
# Specced 2026-08-07: requirements v2 renumbered the ACs and withdrew the v1 premise
# ("add a budget store") — core.budgets already exists and its CRUD shipped with the
# /governance budget-config path. The story is now about JOINING the configured budget
# to the coding guard, which never reads it. Tasks are strictly linear; T-BE-163b is
# gated on Q1 being answered as D-3 in design/decisions.md.
# [IMPL-DONE] harness/stories/STORY-163/tasks/T-BE-163.md#t-be-163
# [IMPL-DONE] harness/stories/STORY-163/tasks/T-BE-163b.md#t-be-163b (Q1 answered as D-7; guard enforces min(configured_remaining, override), tenant-vs-run reason + coding.budget.denied audit; agent-runtime pytest+ruff+mypy green)
# [IMPL-DONE] harness/stories/STORY-163/tasks/T-BE-163c.md#t-be-163c (Gate-2 fan-out derives per-ticket cap from configured budget via resolve_coding_budget activity; $100 demoted to logged fallback; concurrency choice D-8; patched() for in-flight histories; orchestrator 558 passed+ruff+mypy green)
# [SKIPPED-FILTER] harness/stories/STORY-163/tasks/T-QA-163.md#t-qa-163
#
