From 60099753b0701e5d2bb74f1b5499074e810cbad3 Mon Sep 17 00:00:00 2001 From: Chris0Jeky Date: Sat, 5 Sep 2026 16:16:26 +0100 Subject: [PATCH 1/2] docs: record the D-12 ruling and the Codex PR sweep; re-measure the readiness view at 42d3007f0 OUTSTANDING_TASKS.md: D-12 ticked with the in-session ruling (2026-09-05) and the outcome (31 PRs reviewed, 5 fixed in-PR, all merged as merge commits by 14:32Z; per-issue disposition comments; #2691 seeded); section K intro no longer calls D-12 an open observation; SC-11 re-measured (553 remote branches, 539 without an open PR, delete_branch_on_merge still false). docs/releases/V0_3_0_READINESS.md: measured at 42d3007f0 15:15Z; clause 2 still 44 open with the split now 10 dogfooding / 21 ci / 13 other (#1961 closed on #2681, #2691 seeded), 21 gated / 23 un-gated; clause 4 in progress at the tip after the wave's last-merge run was cancelled by the next merge; #2691 joins the clause-4 noise list and the earlier 'two shapes' sentence is corrected. docs/STATUS.md: coordination-lane subsection on the fifteenth block recording the sweep, the shipped production changes, the attributed CI noise, SC-10 unchanged, the board moves and the re-measure. --- OUTSTANDING_TASKS.md | 6 ++--- docs/STATUS.md | 10 ++++++++ docs/releases/V0_3_0_READINESS.md | 42 ++++++++++++++++--------------- 3 files changed, 35 insertions(+), 23 deletions(-) diff --git a/OUTSTANDING_TASKS.md b/OUTSTANDING_TASKS.md index 76cc5635f..46e4c60b5 100644 --- a/OUTSTANDING_TASKS.md +++ b/OUTSTANDING_TASKS.md @@ -163,13 +163,13 @@ The maintainer directed (2026-08-30) that the repository goes **private for the - [x] **SC-8 — public-asset and launch-kit decision (`#2337` A; `#2242`).** GitHub Pages keeps publishing from a private repository on Pro (the site stays public); the launch kit and the REVIVAL public-source messaging assumed a public repository — decide keep / move / reword and record it on `#2337`. *(**Ruled 2026-09-03, maintainer decision packet SC8: private development repository + public release/source mirror.** Releases, checksums/provenance and the GPL source stay public through a mirror; development, CI and issues go private; GitHub Pages keeps publishing. Mechanics — which repository, what syncs on a tag, how the launch kit and `awesome-selfhosted` wording point at the mirror — are seeded as CI-16 `#2439` and recorded on `#2337`.)* - [ ] **SC-9 — Codex review credits are exhausted (maintainer billing).** On 2026-09-03 at 22:34Z the Codex connector answered PR `#2462`'s second and third pushes with "You have reached your Codex usage limits for code reviews" (it still reviewed the first and the fourth head). Until credits are added at the Codex usage dashboard, the documentation-only review gate falls back to one fresh-context agent review per PR (global law 2), which is what `#2462` used. Decide: top up, or accept the fallback and record that on `#2337` A (review-integration billing). - [ ] **SC-10 — control-plane PRs awaiting the maintainer's review (ADR-0066 amendment 2026-09-03).** The amendment says control-plane (T0/T2) and runner changes merge only after the maintainer's review plus the fresh-context review. Queued by the 2026-09-04 overnight orchestrator, each already reviewed clean by a fresh-context agent and proven hosted at its head **against the base as of that PR's last hosted run, not against today's `main`** (measured 2026-09-04 21:40Z: `#2502` is 138 commits behind `main`, `#2506` 102, `#2532` 72, `#2550` 46; branch protection is not strict, so GitHub reports them `CLEAN` regardless, and a base change counts as a head change under the global laws). Each therefore needs `gh pr update-branch` plus a fresh hosted run and a re-check of its review against the moved base immediately before merge, `#2502` above all because it rewrites `uses:` refs across 34 workflow files; the update-branch runs were deliberately not spent in advance because `main` will move again before the maintainer arrives: `#2502` (CI-11 slice 1: 152 external actions pinned to full SHAs, guard enforced in `smart-ci-self-test.yml`; SC-5 command in the body), `#2506` (Smart CI planner: accept a merge ref regenerated against the live base tip — closes the shadow false-red shape seen on `#2485`, `#2496`, `#2500`; its last review round, 03:55:47Z, predates the current head `e1e80d579`, which is a 04:07:34Z merge of `main` touching none of the PR's own six files, so the review still covers the content and only the record is ambiguous), `#2532` (release-cache scanner comment handling, CI-09), and `#2550` (register the Paper colour-audit scanner test in `reusable-paper-color-audit.yml`; `#2504`, fresh-context review posted on the PR). **`#2522` (dev-up port release, `#1898`) is queued and was conflicting for most of 2026-09-04** after two dev-up commits landed on `main` (`8c0779fca`, `6c10850e6`); its head `18d214ba2` merged `main` and resolved that, and the hosted run at that head (`33922229492`) showed two Windows reds diagnosed on the PR as `#2378` (Frontend Unit launcher timeout) and `#2572` (a fixed-delay `WorkerResilienceTests` assertion, seeded from that run), neither in the PR's own files. It still needs `gh pr update-branch` and a fresh hosted run before a maintainer review of it means anything; the reconciliation session that carried it has closed, so the beta lane holds it behind its own queue. Two further open PRs touch control paths and were not in the queue above when it was written; both now carry a first fresh-context review (posted 2026-09-04 by the open-PR reconciliation session) but are not merge-ready: `#2531` (localized `netstat` state, `#2526` — stacked on `#2522` by design; review verdict FIX-FIRST because the fallback stopped discriminating on socket state; its advisory `Smart CI / Required Gate` is red on the stacked-base planner defect `#2562`, not on its code; retarget with `gh pr edit 2531 --base main` only after the parent lands, and note that its `Closes #2526` currently registers **no closing reference at all**, because GitHub links closing issues only from PRs targeting the default branch — merging it against the stacked base would land the delta on the parent branch and leave `#2526` open with no record why, so confirm `baseRefName == main` and a non-empty `closingIssuesReferences` before merging) and `#2535` (frontend telemetry build version, `#2182` — touches `release-container.yml`, `release-desktop.yml` and `scripts/ci/`; review verdict SHIP on the code, parked here as T2; its earlier `Frontend Unit (windows-latest)` red was the `#2378` / `#2161` timeout class, and at 21:48Z on 2026-09-04 its head `42c07fdb7` showed no failing check). Also decide the CI-07 `#2331` proposal (move the Windows launcher regression suite off the required hosted `windows-latest` leg per SC-3). **Post-hoc disclosure:** `#2479` (Paper colour-audit scanner, touches `reusable-paper-color-audit.yml`) was merged on 2026-09-04 at 03:58:46Z (merge `e99832f3c`) with the fresh-context review but without the maintainer's review — please review post hoc; revert is a one-liner if wanted. **Post-hoc disclosure (2):** `#2529` (merge `b461be49f`, docs-only, `docs/STATUS.md` alone) merged on 2026-09-04 at 06:33:08Z while its `ci-required.yml` run (`33842570671`, head `62f21d847`) had concluded `cancelled`, not success: the `Frontend Unit (windows-latest)` leg hit its 20-minute budget and was never re-run, and the merge landed 2 min 38 s after the run's final update at 06:30:30Z. Branch protection did not stop it and could not have: only the three security contexts are required, so the `ci-required` red is agent-enforced only. No revert appears warranted (a STATUS-only change cannot affect frontend tests, and `main` is green on that leg again at `#2559`, run `33886539482`), but a red required gate was treated as non-blocking, which global law 1 forbids; the call on any further action stays yours. The reconciliation sweep of the 40 PRs merged up to `#2559` found no other non-success `ci-required` run on a merged PR head (a separate red `main` push run of the same `#2378` shape at `17e48815e` is recorded in the eighth `docs/STATUS.md` block and back-referenced by the ninth). Belongs to the Windows-timeout cohort `#2378` / `#2161` / `#2159`. **Post-hoc disclosure (3):** `#2548` (merge `f094d090a`) and `#2556` (merge `b8878c922`), both `scripts/ci/dev-up.test.mjs`, and `#2549` (merge `e0516ca9d`, the Stryker v10 bump in `frontend/taskdeck-web/package.json` plus its lockfile) touch declared `ci/policy.v1.json` control paths and merged on 2026-09-04 on a fresh-context review alone, without the maintainer's review; `#2548` merged after its own review-gate comment had declared it parked for the maintainer, with no reversal on the thread, which is the exact behaviour the amendment exists to prevent. They are recorded in the tenth `docs/STATUS.md` block and are listed here so they sit in the same queue as `#2479`. All three are low blast radius (two test-only edits and a devDependency bump), so post-hoc review rather than revert is suggested; as with `#2479`, revert is yours to choose. Nothing was lost: measured 2026-09-04, all 80 head and merge SHAs of the 40 most recently merged PRs are ancestors of `origin/main`. Disclosures (2) and (3) were measured by the open-PR reconciliation session on 2026-09-04 and re-verified against the Actions API and the PR file lists before being recorded here. **Added 2026-09-05:** `#2587` (CI-10 slice 1, the Smart CI nightly coordinator `scripts/ci/smart-ci/nightly-coordinator.mjs` plus its tests, head `929331247`; two new files, no workflow, policy or doc edits; fresh-context review round 1 FIX-FIRST on a needs-closure HIGH, fixed, round 2 SHIP; seven non-blocking findings recorded on the PR and on `#2334`) is queued for your review and left unmerged by the beta lane. Two more joined on 2026-09-05: `#2608` (CI-07 slice under `#2331`, head `f74f590a0`: `if: runner.os == 'Linux'` on the launcher regression suite step in `reusable-frontend-unit.yml`, a placement contract test under `scripts/ci/smart-ci/`, a `TESTING_GUIDE.md` paragraph; fresh-context review SHIP, no fix round; **it is also `#2378`'s disposition**: the beta lane measured two hosted Windows launcher-suite logs on 2026-09-05 (p50 about 3 s, p90 13 to 15 s, slowest 26 to 31 s; the cases that hit `spawnSync ETIMEDOUT` take 1 to 8 s on a green run, so a 20 s clip means the runner is 3 to 5 times slower and the whole suite would land at 16 to 30 minutes against the job's 20 minute ceiling), so a larger per-spawn budget would only move the failure to a job cancellation, and every recorded `#2378` occurrence is on the Windows leg that `#2608` removes from hosted runs; three consistency points recorded on the PR for your ruling, because `ci/policy.v1.json`'s `launchers-windows` group, cutover checklist section E, `SMART_CI.md` section 5 and the `ci-required.yml` header map still state the pre-SC-3 two-leg target) and `#2610` (`#2582`, head `0fc8fb257`: `cancel-in-progress` becomes `github.ref != 'refs/heads/main'` in `ci-required.yml` with the group key unchanged, plus a four-assertion contract test in the Planner Self-Test glob; fresh-context review SHIP, no fix round; one precision point for your ruling, recorded on the PR and on `#2582`: GitHub keeps one in-progress plus one pending run per group, so this guarantees the in-flight `main` run completes and the tip runs after a wave, not a completed run per landed commit; a per-SHA group is the one-line alternative if CI-03's landed-commit verifier needs one run per merge). Both are parked unmerged by the beta lane. A fourth from the same lane joined at 11:19Z on 2026-09-05: `#2684` (`#2250` items 4 and 5, head `6150eb1a5`: fence-aware `UPGRADING.md` extraction that fails closed on an unterminated fence instead of publishing older versions' notes, bare anchors and relative links in the lifted section rewritten to `blob/` URLs, the 53-test composer suite wired into `ci-required.yml`'s release-workflow-contract job, the release trust doc's layout section updated; two fresh-context rounds, both SHIP; residuals on the PR and on `#2250`; parked unmerged). A fifth followed at 12:00Z: `#2687` (`#2250` items 1 to 3, head `64cd68f58`: a `preview_tag` workflow-dispatch input that renders the real stable page on a no-publish rehearsal and is refused before any build on a publishing dispatch; the page renderer runs from the workflow revision's own checkout so a pre-0.3 tag can be re-dispatched; the changelog base becomes the newest stable release strictly before the target by semver, via `scripts/ci/select-changelog-base.mjs` with 17 tests wired into `ci-required.yml`; two fresh-context rounds, both SHIP; hosted Workflow Lint and Release Workflow Contract green at `6b591ebed`; parked unmerged). Proving `#2687` end to end is yours: one rehearsal dispatch with `preview_tag` set and one re-dispatch of `v0.2.0`. With `#2684` and `#2687` parked, every `#2250` item sits in a parked PR. -- [ ] **SC-11 — enable `delete_branch_on_merge`, then batch-delete the merged-PR heads (repository setting; maintainer-only).** Measured 2026-09-04: the repository has `delete_branch_on_merge: false`, and 448 remote branches exist, of which (per the 2026-09-04 branch-hygiene sweep) about 399 are heads of already-merged PRs, 24 belong to closed-unmerged PRs and 11 never had a PR, the oldest from 2026-07-25. Parked work such as `origin/issue-1961/dedupe-board-fetch` (tip `08be057c5`, never a PR) is invisible in that noise, and the merge-then-fix cascades this week each left another head behind. Repository-settings mutations sit outside agent authority (`.agent-harness/tier.json`), so the flip is yours. The one-time sweep of existing branches is a separate decision: it is destructive, agents do not run it unasked (as with SC-2), and it needs its own recorded maintainer authorization. Under that authorization an agent may delete merged-PR heads only, and only a tip that is proven an ancestor of `origin/main` immediately before deletion (a merged branch that received a later commit is skipped and listed); it must exclude every open-PR head and every branch that is the base of any open PR (global law 4: deleting a stacked base cascade-closes its children unreopenably; `issue-1898/port-release-deadline` while `#2531` targets it is the current example); and it must list the closed-unmerged, no-PR and otherwise unclassified branches (the three counted classes sum to 434 of the 448) for a separate decision rather than deleting them. +- [ ] **SC-11 — enable `delete_branch_on_merge`, then batch-delete the merged-PR heads (repository setting; maintainer-only).** Measured 2026-09-04: the repository has `delete_branch_on_merge: false`, and 448 remote branches exist, of which (per the 2026-09-04 branch-hygiene sweep) about 399 are heads of already-merged PRs, 24 belong to closed-unmerged PRs and 11 never had a PR, the oldest from 2026-07-25. Parked work such as `origin/issue-1961/dedupe-board-fetch` (tip `08be057c5`, never a PR) is invisible in that noise, and the merge-then-fix cascades this week each left another head behind. Repository-settings mutations sit outside agent authority (`.agent-harness/tier.json`), so the flip is yours. The one-time sweep of existing branches is a separate decision: it is destructive, agents do not run it unasked (as with SC-2), and it needs its own recorded maintainer authorization. Under that authorization an agent may delete merged-PR heads only, and only a tip that is proven an ancestor of `origin/main` immediately before deletion (a merged branch that received a later commit is skipped and listed); it must exclude every open-PR head and every branch that is the base of any open PR (global law 4: deleting a stacked base cascade-closes its children unreopenably; `issue-1898/port-release-deadline` while `#2531` targets it is the current example); and it must list the closed-unmerged, no-PR and otherwise unclassified branches (the three counted classes sum to 434 of the 448) for a separate decision rather than deleting them. Re-measured 2026-09-05 15:15Z: 553 remote branches, 539 without an open PR; `delete_branch_on_merge` is still `false`, so the thirty-one Codex-session heads merged under D-12 all persist. --- ## K. v0.3 residual decision batch (2026-09-05, from the alpha lane's read-only audit of 15 milestone issues) — human actions -Source: the alpha lane audited 15 open v0.3 issues on 2026-09-04 against `main` `61e94f672` to `8c511205d`, each audit adversarially re-verified read-only, and handed the coordinator the gates that need a maintainer answer. Everything agent-decidable from the same audit is already queued on the lanes without a ruling (#2215, #2214, #1307 batch-approve parity, #2007 AC5+AC6, #1968 Legacy-truthful shortcut map, #2009 contrast-guard pins, #1284 view-level regression, #1961 board-store dedupe, #2501 MEDIUM-2). Answer by letter on the issue named in each item, or in one reply here; each audit item says what the answer unblocks and names a proposed default, which is the direction the agents would recommend, not authorization to act while the item is unanswered (D-12 is a coordinator observation and names none). Nothing below is built, closed, moved or re-titled until its letter is recorded here or on the issue. +Source: the alpha lane audited 15 open v0.3 issues on 2026-09-04 against `main` `61e94f672` to `8c511205d`, each audit adversarially re-verified read-only, and handed the coordinator the gates that need a maintainer answer. Everything agent-decidable from the same audit is already queued on the lanes without a ruling (#2215, #2214, #1307 batch-approve parity, #2007 AC5+AC6, #1968 Legacy-truthful shortcut map, #2009 contrast-guard pins, #1284 view-level regression, #1961 board-store dedupe, #2501 MEDIUM-2). Answer by letter on the issue named in each item, or in one reply here; each audit item says what the answer unblocks and names a proposed default, which is the direction the agents would recommend, not authorization to act while the item is unanswered (D-12 was ruled in-session on 2026-09-05 and is closed). Nothing below is built, closed, moved or re-titled until its letter is recorded here or on the issue. - [ ] **D-1 — `#1984` column contract for capture.** The truth-first slice (Paper Inbox stops asserting a column filter it does not apply) is authorized by the issue's AC and the 2026-08-27 reconciliation and is in flight. Open question: is a real column contract (column-scoped capture list, triage targeting the clicked column instead of `defaultColumn` at `CaptureTriageService.cs:249,383`) in scope for v0.3 at all? It adds a persisted column target to the capture contract. A = yes, seed it as a child of `#1984`; B = no, close `#1984` on the truth slice and let CF-20 `#2273` own capture targeting in v0.5. `#2589` (the orchestrator's `activeColumnId` has no producer after `#2580`) resolves the same way as this answer. Proposed default: B. - [ ] **D-2 — `#2499` provenance for pre-migration LLM rows, three sub-rulings.** (i) `#2583` (client-bindable `ProvenanceModelId`, verified) was seeded for the beta lane as ordinary hardening and landed the same night (PR `#2600`, merge `b504779d6`: all three producer-triple fields are now `[JsonIgnore]`; the sibling `ProvenanceTotalTokens` field follows in `#2604`), so no client can plant a model id any more. (ii) Option (b), a sentinel allow-list that renders a recorded model as the producer when `Provider` is unknown, is therefore a pure product-trust question: may Taskdeck show a model name for a row whose producer is genuinely unknown? A = decline (b), the endpoint stays fail-closed (the `#2494` reviewer's position); B = adopt (b) now that the binding is closed. (iii) Option (c), a backfill of `Provider` for pre-migration capture and transcript rows, is feasible after all: both workers stamp a `CaptureProvenanceV1` block with `ProposalId`, `Provider`, `Model` and `PromptVersion` into `LlmRequest.Payload` (`LlmQueueToProposalWorker.cs:544-556`, `TranscriptTriageWorker.cs:254-266`), so a deterministic join on `ProposalId` can set `Provider`, excluding blank and the literal `unknown`. A = go, as a forward-only idempotent migration with a count in the PR body; B = no backfill, docs-truth clause only. Proposed default: (ii) A, (iii) B. The docs-truth clauses (option a) need no ruling and the alpha lane is folding them in. @@ -182,7 +182,7 @@ Source: the alpha lane audited 15 open v0.3 issues on 2026-09-04 against `main` - [ ] **D-9 — `#1940` Review waves, three product questions.** (a) AC1's remaining half, "present the queue in waves": A = closed by the three shipped disclosures plus `#1307`'s risk-tiered ordering when it lands; B = a step-through verification flow is still owed. (b) Request edit (2026-09-02 dogfooding item 1): which task-facing fields are editable (title, destination, due date, labels, assumptions) and how a semantic edit maps back onto the proposal's operation set without weakening the revision and receipt guarantees; this needs a written ruling before any build. (c) Defer durations and where a snoozed list lives in the five-destination IA (`#2013` ruling): a Review sub-surface or a new destination. Proposed defaults: (a) A; (b) and (c) stay parked. - [ ] **D-10 — `#1961` lane and branch disposition.** The remaining slice was audited as a board-store dedupe with session-bound guards (`sessionStore.userId`, never the token) and a `boardCrud.reset()` on logout; the slice as built (see the ruling below) uses no identity key. A = alpha builds it from `main` and the parked branch `origin/issue-1961/dedupe-board-fetch` (tip `08be057c5`, 497 commits of drift, never a PR) is retired with a pointer comment, no delete; B = beta builds it because it touches the session boundary. Proposed default: A. *Coordinator lane ruling 2026-09-05 09:30Z (lane ownership is the coordinator's call): A, the alpha lane builds it store-side (an in-flight fetch dedupe plus a board-store `resetForLogout()` called from `AppShell.vue`'s existing unauthenticated transition beside the workspace and capture resets; no identity key, no session code edited, nothing fires on a token refresh; claim and worker on the issue) and the parked branch stays for the SC-11 sweep as recorded on `#1961`; a B from you still overrides.* - [ ] **D-11 — `#2193` acceptance text.** Closed on evidence 2026-09-04 with residuals on `#2210` (surface the honest note to the reviewer) and `#2211` (`llm-triage.v3` prompt-version bump). One question survives: must `#2211` land before the v0.3.0 tag, given that prompt derivation changed twice under an unchanged version string? A = yes, add `#2211` to the milestone; B = no, v0.3.x. Proposed default: A. -- [ ] **D-12 — a Codex session is running unclaimed work under the alpha lane name (2026-09-05).** Between 01:38Z and 03:45Z a session using your local git identity opened fourteen PRs that neither Claude lane runs: `#2594` (`#1227`), `#2595` (duplicate of the merged `#2592`, closed as superseded), `#2596` (`#2563`, superseded by the merged `#2609`, closed per the ruling on that issue), `#2607` (`#1266`), `#2613` (`#1665`), `#2618` (`#1133`), `#2620` (`#1452`), `#2622` (`#2578`), `#2623` (`#2579`), `#2624` (`#1140`), `#2625` (`#1871`), `#2626` (`#2045`), `#2627` (`#1991`) and `#2629` (`#2128`). Only the last carries a claim, posted at 03:35Z as `[Codex lane claim v2]` with `lane: alpha-product-trust`, the name the Claude alpha session (taskdeck-alpha-85) has been working under since 2026-09-04; the rest have no claim and use `Refs`, so none would close its issue. Both Claude lanes confirmed they did not open them, and the coordinator posted the lane rules to it on `#2128`. Interim rule in force: first recorded claim or open PR on an issue wins regardless of marker form, the Claude lanes treat its issues as taken and do not adopt or review its PRs, and its PRs are not merged by anyone without the fresh-context review the gate requires. A = it is a session you run (a Codex cloud or CLI lane): give it a distinct lane name and the claim-before-write rule from `.codex/memories/00_ACTIVE.md`, and say whether its open PRs are wanted (thirty-one at 07:05Z; each then needs a review and a `Closes` line); B = it is not yours: say so and the coordinator closes its open PRs with a pointer, branches kept. Nothing is merged or closed on the strength of this item until you answer. Update 07:05Z, recounted from the live PR list: the same session opened nineteen more between 04:08Z and 06:19Z (`#2633`, `#2637`, `#2641` to `#2657`, on `#2003`, `#2520`, `#2370`, `#1855`, `#2181`, `#1868`, `#1853`, `#1422`, `#1860`, `#1867` twice, `#2075`, `#2130`, `#1859`, `#1128` twice, `#1871`, `#1434` and `#2499`, the last a ruled-on D-2 issue), now with `[Codex lane claim]` and `[Codex lane release]` comments in the v1 form, still `Refs` only and still unreviewed; it did not answer the coordinator's note on `#2128`. Thirty-three PRs in total, thirty-one open, two closed as superseded; the A and B options below apply to all thirty-one open ones, not only the twelve first listed. +- [x] **D-12 — the Codex session's thirty-one open PRs (ruled 2026-09-05).** Between 01:38Z and 06:19Z on 2026-09-05 a session using your local git identity opened thirty-three PRs under the alpha lane name with `Refs`-only bodies and no fresh-context review (two were closed as superseded the same morning: `#2595` duplicate of `#2592`, `#2596` superseded by `#2609`). Both Claude lanes confirmed they did not open them; the interim rule (first recorded claim or open PR on an issue wins, whatever the marker form) held while the item was open. **Ruled by you in the coordinator session on 2026-09-05 (about 13:15Z): the PRs are wanted; check them, give the sensitive or fragile ones a further Opus 5 review pass, and merge them when ready.** Done the same afternoon: every PR got one fresh-context read-only Opus 5 review (record on the PR; ten in a full worktree of the head), 26 SHIP and 5 FIX-FIRST with the MEDIUMs fixed in-PR (`#2643` classifier literal shared with its producer plus the quick-start entry; `#2626` the code-side CSP default; `#2633` a bounded pre-mount locale wait, with a scoped round-2 pass; `#2620` the cooperative-stop assertion; `#2641` the Claude GitHub-path wording), all 31 merged as merge commits between 13:27Z and 14:32Z (last: `#2626` at `6cf9ef7a1`), three unrelated reds attributed and re-proven once (`#2378` twice, `#2588` once, and a new Windows Backend Unit shape seeded as `#2691`). No PR used `Closes`, so no issue auto-closed: each of the 28 issues carries a coordinator comment naming the merge SHA, what remains and the tracked LOWs; `#1140` row 3 and `#1991` L2 are ticked; the issues left with no open PR moved Review to Pending on the board. Which session it was is still unknown and no longer matters for this item; the claim-search rule (both marker forms plus the open PR list before claiming) stays in `.codex/memories/00_ACTIVE.md`. - [ ] **D-13 — `#1999` item 2, Paper triage edit on Triaged rows.** Paper gates Edit at `New | Failed` while the server and the Legacy inbox allow editing a `Triaged` row, and enabling the edit in Paper alone would create a dead write because re-triage answers 409 on a Completed queue row. A = keep Paper gated and record the skin divergence on the issue; B = allow the edit and add a backend re-triage path for Completed rows; C = allow the edit with no re-triage (the edit lands on the capture but never reaches the board). Proposed default: A. Items 1 and 4 are shipped (PR `#2426` for the stalled-load Close was never recorded in STATUS; the alpha lane records it in its next block); item 3 and the close/reopen race are agent-decidable and wait only on `PaperTriageTable.vue`, held by PR `#2654`. - [ ] **D-14 — `#2439` CI-16 public mirror: nine questions before the workflow PR.** The agent-preparable half shipped as `docs/ci/PUBLIC_MIRROR_OPTIONS.md` (PR `#2680`, merge `62d1bb42b`): it scores the three SC-8 options and recommends (a), a source snapshot per release tag plus the Release assets, with a fail-closed export allowlist, private-asset checksum verification before anything public is written, and the mirror publish done last. Its section "Open questions for the maintainer" lists nine, with the memo's proposed default where it states one: (1) mirror repository name (default `Chris0Jeky/taskdeck-release`); (2) confirm option (a) over (b) and (c); (3) the snapshot export allowlist (`ci/mirror-export.txt`); (4) a source tarball on every Release in addition to the pushed tree (default yes); (5) backfill of v0.1.0 through v0.2.x as snapshot commits and releases; (6) Issues and Discussions on the mirror (default both off, README pointing back); (7) credential shape and rotation (`MIRROR_PUBLISH_TOKEN`, fine-grained, Contents read and write); (8) GHCR image visibility; (9) whether `ci/` and `scripts/ci/` count as ADR-0050 corresponding source under GPLv3. Answer by number on `#2439`; the workflow PR is control-plane and parks under SC-10 once written, and the mirror repository itself is created by you (repository creation is outside agent authority). Nothing is built until the numbers are answered; the memo's defaults are proposals. - Section K additions from the 2026-09-05 alpha audits, no ruling needed, recorded for the file's completeness: `#1949` cannot close on evidence (AC4 route-walking has no mechanization; AC3's registry has no stated inventory; wrapper buttons are invisible to the button scan, claimed as a guards-only slice); `#2090` width and collapse shipped (PRs `#2158`, `#2165`), titles-only open and Paper-only; `#1940` honest-empty slice claimed in the keep-the-disclosures shape (surface the empty truth and the confidence source at card level) because removing the expander would break the held `PaperReviewView.spec.ts`; this does not touch D-9; new `#1940` residual: the right rail shows proposal A's confidence and similar-past under B's identity while B loads. diff --git a/docs/STATUS.md b/docs/STATUS.md index a7be134e7..4d6eeaf1f 100644 --- a/docs/STATUS.md +++ b/docs/STATUS.md @@ -321,6 +321,16 @@ Board frontend: - **Not shipped reality:** `#2689` stays open on item 5 (the direct `boardsApi.getBoards` callers outside the store, five at this block's assembly: `ArchiveView.vue`, `AutomationQueueView.vue`, `BoardAccessView.vue`, `useAutomationChat.ts`, `useReviewProposals.ts`; the issue's own count of four is corrected there) and on the round-2 verification residuals recorded as items 6 to 10 (an unconditional focus restore after a failed retry, a throttle docblock still narrower than the truth, the collapsed timeout and offline copy making the guarded clear's identical-message collision routine, `BoardListFetchOptions` not re-exported, one spec comment over-claiming); the detail read's success-path error clear needs an intent gate (recorded on `#2689`); `#2682` (route-walk doc precision) stays tracked; `#2214` item 2 (persistent disclosure of repeated non-transient poll failures on both legs, the malformed-link panel copy and the explicit-path toast asymmetry) is the lane's next slice now that PRs `#2629` and `#2654` released the Paper review and inbox files; the ruling-gated items and the non-ruling residuals listed in the fourteenth block (`#2090`, `#1949`, `#2638`, the `#2215` Paper residuals, the two `#1940` residuals, `#1999` item 3) are unchanged. Control-plane PRs stay parked under SC-10; the platform lane's 2026-09-05 12:35Z checkpoint on `#2351` lists its five, and the queue's last full measurement (ten at `1e234a011`, thirteenth block) is re-measured by the coordinator with the sweep record, since the sweep may have merged the older half. +Coordination lane (coordinator session; docs, issue topology and Project state only, no product code; the D-12 sweep): + +- **D-12 ruled and closed.** The maintainer ruled in the coordinator session (about 13:15Z) that the Codex session's thirty-one open PRs are wanted, to be checked, given a further Opus 5 review pass where sensitive or fragile, and merged when ready. All thirty-one were reviewed by one fresh-context read-only Opus 5 reviewer each (ten in a full worktree of the PR head), 26 SHIP and 5 FIX-FIRST; the MEDIUMs were fixed in-PR and every PR merged as a merge commit between 13:27Z and 14:32Z (the last, `#2626`, at `6cf9ef7a1`). Review records are on the PRs; the disposition of each of the 28 issues (merge SHA, what remains, tracked LOWs) is a coordinator comment on the issue, because every PR body used `Refs` and none closed its issue. `OUTSTANDING_TASKS.md` D-12 is ticked. +- **Shipped by that wave (production changes only; the rest are tests, docs and chores):** `#2626` the API CSP carries `manifest-src 'self'` in both the shipped `appsettings.json` and the code-side `SecurityHeadersSettings` default (the round-1 MEDIUM found the second copy unfixed); `#2629` the Paper Review `onDefer` receipt is guarded by the decision locus like `onApprove` (alpha closed the two remaining siblings in `#2692`); `#2633` locale switches are commit-after-load with pending and failed state in the picker, and startup waits for the persisted-locale restore for at most 1500 ms before mounting (the round-1 MEDIUM found the wait unbounded; ADR-0054 §7 updated); `#2643` the packaged desktop fatal output classifies a missing `Connectors:EncryptionKey` as `code=connector_encryption_key_missing` with a static secret-free message, the classifier and the producer sharing one constant, and `docs/releases/WINDOWS_QUICK_START.md` documents the code as unreleased; `#2646` the stuck-queue cutoff is normalized to UTC before binding (no shipped caller passes a non-UTC value; the remaining `#1422` audit sites are listed on the issue); `#2648` a DEV-only warning for an invalid `useVisualViewport` prefix; `#2649` archive actions wrap into two 44 px columns at phone widths; `#2651` the read-only inventory wrapper validates `gh` group and action tokens case-sensitively before launch; `#2654` the Inbox board-picker literals are localized in en, es and it; `#2655` the Legacy review card's terminal banner names the real content mode; `#2657` four dead viewport declarations removed from `TdDialog`; `#2627` static toast label keys; `#2624` three `.dockerignore` exclusions; `#2607` the selected-label ring offset uses the modal surface color. +- **CI noise during the wave, each attributed and re-proven once:** `#2378` on PR `#2654` (25-minute launcher-suite cancellation) and PR `#2626` (launcher-suite failure at 7 minutes); `#2588` on PR `#2641`; and a new shape, `ArtefactExtractionServiceTests.ExtractAsync_ShouldPropagateCallerCancellationWithoutRecording` failing after 5 s on `Backend Unit (windows-latest)` for the frontend-only PR `#2627`, seeded as `#2691` (v0.3, `ci`). Every intermediate `main` run of the wave was cancelled by the workflow's own concurrency group (the `#2582` shape); the wave's last-merge run at `6cf9ef7a1` (run `33972125374`) had 16 of 17 jobs green and was cancelled inside `E2E Smoke` when PR `#2693` merged, and the tip run at `42d3007f0` (run `33974150710`) was in progress at 15:15Z. +- **SC-10 unchanged by the sweep:** none of the twelve parked control-plane PRs (`#2502`, `#2506`, `#2522`, `#2531`, `#2532`, `#2535`, `#2550`, `#2587`, `#2608`, `#2610`, `#2684`, `#2687`) was reviewed, rebased or merged; they wait for the maintainer under the ADR-0066 amendment. +- **Project board:** the 27 issues whose Codex PRs all merged moved Review to Pending (none is lane-owned Now work; `#2128` instead went Now, then Review, then Done as the alpha lane claimed its siblings and closed it with `#2692`); `#1284`, `#1307` and `#2214` had sat in Review with no open PR and went to Pending; `#1949` left Now at the alpha lane's word (its AC4 walk merged, only parser LOWs remain); `#2689` returned to Pending on items 5 to 10 after `#2690`. At 15:15Z Now holds `#2214` alone (PR `#2694` in round 2), one of four. +- **Readiness view re-measured** at `42d3007f0` (15:15Z): 44 open, 10 `dogfooding` / 21 `ci` / 13 other (`#1961` closed on `#2681`, `#2691` seeded), 21 gated / 23 un-gated; clause 4 as recorded there; `#2691` joins the clause-4 noise list. +- **Not verified:** the Codex session's own local test claims in its PR bodies (hosted CI at each head and the reviewers' reading are the evidence); the 1500 ms startup budget is only observable in a browser with a stalled chunk request and has no test (tracked on `#2003`). + Corrections to earlier blocks in this file: the thirteenth block's coordination-lane sentence that the Codex session's `#2629` and `#2654` were unowned and "nothing of that session's has been reviewed or merged" is superseded as a present-tense claim: both landed in this range under the coordinator's D-12 sweep (`#2629` as `cf24dec01`, `#2654` as `221ed702d`), which the coordinator records; this block's `#2128` entry depends on the first and its `#2214` next-slice note on both. v0.3.0-rc.1 SHIPPED (2026-08-30, annotated tag `3fc9f6e8e` peels to `9d2ea3c7c`): diff --git a/docs/releases/V0_3_0_READINESS.md b/docs/releases/V0_3_0_READINESS.md index c1bccefe2..0163ed8a4 100644 --- a/docs/releases/V0_3_0_READINESS.md +++ b/docs/releases/V0_3_0_READINESS.md @@ -1,6 +1,6 @@ # v0.3.0 release readiness -Last Updated: 2026-09-05 (measured against `main` `e96523907` at 2026-09-05 08:50Z) +Last Updated: 2026-09-05 (measured against `main` `42d3007f0` at 2026-09-05 15:15Z) **What this file is.** A standing view of what actually stands between `main` and the final `v0.3.0` tag, so the open v0.3 milestone count is never mistaken for the blocker count. It classifies work into @@ -13,14 +13,14 @@ issue numbers below. ## 1. The gate -The five clauses are `docs/REVIVAL_PLAN.md` §3, the v0.3 row. Clauses 2 and 4 and the section 5 label split re-measured 2026-09-05 at 08:50Z against `main` `e96523907` (a dated snapshot; the lanes were still merging when it was taken); the section 3 human-gate table carries its 04:00Z measurement, re-checked at 08:50Z with no change; the section 2 clause-5 chain carries its earlier 2026-09-04 measurement and clauses 1 and 3 their 2026-09-03 one. +The five clauses are `docs/REVIVAL_PLAN.md` §3, the v0.3 row. Clauses 2 and 4 and the section 5 label split re-measured 2026-09-05 at 15:15Z against `main` `42d3007f0` (a dated snapshot; the lanes were still merging when it was taken); the section 3 human-gate table carries its 04:00Z measurement, re-checked at 08:50Z and again at 15:15Z with no change; the section 2 clause-5 chain carries its earlier 2026-09-04 measurement and clauses 1 and 3 their 2026-09-03 one. | # | Gate clause | State | What it waits on | |---|---|---|---| | 1 | RC checks green on the exact head | Not yet applicable | Measured at the final tag head, not before | -| 2 | Milestone closed or explicitly re-ruled | **Not met.** 44 open (re-measured 2026-09-05 08:50Z against `main` `e96523907`, unchanged in total and in every list since the 04:00Z measurement at `1e234a011`: since the 22:50Z count of 48, six closed on evidence (`#2460`, `#2501`, `#2524`, `#2563`, `#2570`, `#2572`), two seeded and still open (`#2582`, `#2588`), two seeded and closed the same night (`#2583`, `#2604`); §5 label split 11 `dogfooding` / 20 `ci` / 13 other). `#2639` entered and left the milestone between measurements: seeded at 04:19Z as Priority I security, re-read by the beta lane at 06:55Z on an unmodified build (the PR `#2416` activate-time sweep does fire, 3 of 3 lifecycle paths; the earlier red was an observation race inside the `#2475` test case, so the `#2411` re-poisoning window has been closed since that PR merged), and closed at 07:37Z on PR `#2660` (merge `58c5a3bfe`) as hardening. **Ruled 2026-09-03: nothing else is re-ruled out; the one exception is `#1972`, moved to v0.5 with CF-21** | Every open issue closing on evidence, sections 2 to 5 below | +| 2 | Milestone closed or explicitly re-ruled | **Not met.** 44 open (re-measured 2026-09-05 15:15Z against `main` `42d3007f0`; the total is unchanged since the 04:00Z measurement at `1e234a011` while two lists moved: `#1961` closed on PR `#2681` (merge `8d6e6355f`, 11:54Z) and `#2691` was seeded at 13:5xZ from PR `#2627`'s unrelated Windows Backend Unit red, so the §5 split is now 10 `dogfooding` / 21 `ci` / 13 other; the earlier history: since the 22:50Z count of 48, six closed on evidence (`#2460`, `#2501`, `#2524`, `#2563`, `#2570`, `#2572`), two seeded and still open (`#2582`, `#2588`), two seeded and closed the same night (`#2583`, `#2604`); at 08:50Z the split was 11 `dogfooding` / 20 `ci` / 13 other). `#2639` entered and left the milestone between measurements: seeded at 04:19Z as Priority I security, re-read by the beta lane at 06:55Z on an unmodified build (the PR `#2416` activate-time sweep does fire, 3 of 3 lifecycle paths; the earlier red was an observation race inside the `#2475` test case, so the `#2411` re-poisoning window has been closed since that PR merged), and closed at 07:37Z on PR `#2660` (merge `58c5a3bfe`) as hardening. **Ruled 2026-09-03: nothing else is re-ruled out; the one exception is `#1972`, moved to v0.5 with CF-21** | Every open issue closing on evidence, sections 2 to 5 below | | 3 | Launch kit drafted (`#2242`) | **Met.** `#2242` closed | Nothing | -| 4 | `main` green | **Green at `140213288`** (`ci-required` run `33954576258`, completed 2026-09-05 08:36Z: 16 of 17 jobs success, `Secret Scan` skipped by design). Between the previous green at `330ccb4de` (2026-09-04 23:19Z) and this one, ten `main` push runs were cancelled by the workflow's own concurrency group as the next merge landed (`bb59aa97a` through `540bc2abb`), and one of them (`1e234a011`, a docs-only merge, run `33942989127`) carried a real `#2378` launcher-suite timeout on `Frontend Unit (windows-latest)` before cancellation, recorded on `#2378`. The tip run at `e96523907` was in progress at 08:50Z. A green tip run still exists only when the queue drains: `#2582` (its PR `#2610` parked under SC-10) ends the cancellation and `#2378` the timeout | `#2378` and `#2610`, section 2 and SC-10 | +| 4 | `main` green | **In progress at `42d3007f0`** (`ci-required` run `33974150710`, started 15:14Z). The wave's last-merge run at `6cf9ef7a1` (run `33972125374`) had 16 of 17 jobs green and was cancelled inside `E2E Smoke` at 15:14Z when PR `#2693` merged. Before it, the previous green stood at `140213288` (run `33954576258`, 08:36Z); between the two, the D-12 merge wave landed thirty-one PRs in about fifty minutes and the workflow's own concurrency group cancelled every intermediate `main` run as the next merge landed (`794fef74f` through `5d9f3c1ca`), which is the `#2582` shape and the reason a green tip run exists only when the queue drains: `#2582` (its PR `#2610` parked under SC-10) ends the cancellation and `#2378` the timeout. Ten cancelled runs and the `1e234a011` `#2378` red sat between `330ccb4de` and `140213288` earlier the same day, recorded on `#2378` | `#2378` and `#2610`, section 2 and SC-10 | | 5 | CI-13 `#2337` cutover by the maintainer, private repository with `Smart CI / Required Gate` enforced | **Not met** | Section 3, and the section 2 chain below it | Clause 2 does not by itself require every open issue to close. "Explicitly re-ruled" means each one @@ -114,17 +114,18 @@ Linux hosted jobs only, and Windows (x2) or macOS (x10) legs run locally (the la `#2328`, agent-run proving checks until then) or carry a local fallback. That sizes CI-07 `#2331` and the section E Windows contract: the retained full Windows suite is local-runner work, not hosted. -**Clause-4 risks.** Three open intermittent reds can take `main` red without a code defect. None is -a product defect; all three are noise in clause 4 and in the SC-4 observation window. +**Clause-4 risks.** Four open intermittent reds can take `main` red without a code defect. None is +a product defect; all four are noise in clause 4 and in the SC-4 observation window. **`#2489` closed** 2026-09-04 on PR `#2566` (merge `ea3e39e7d`): the notification paging test now pins -the query shape instead of a 2 s wall-clock bound. Two shapes seeded from the night's reds take its -place, one of them since closed. (**`#2572`**, the fixed 300 ms `WorkerResilienceTests` delay, was one of them for three hours: +the query shape instead of a 2 s wall-clock bound. Three shapes were seeded from that night's reds in its +place (`#2588`, `#2561` and `#2572`, the last since closed), and a fourth, `#2691`, on 2026-09-05. (**`#2572`**, the fixed 300 ms `WorkerResilienceTests` delay, was one of them for three hours: seeded from PR `#2522`'s run and closed on PR `#2592`, merge `4bf4a2e55`, which waits on worker progress instead.) **`#2588`** is the Linux one: the dev-up `Node helper: TERM closes an active frontend connection` case reds ubuntu Frontend Unit (seen on the alpha lane's docs-only PR `#2586`). **`#2561`** is the Windows launcher one: dev-up `Stop-LoadedStack` retains PID state when the pre-kill identity probe reads Unknown, a 3 s assertion failure, not the `#2378` timeout class (seen once, PR `#2542` run `33850321779`). +**`#2691`** is the Windows backend one: `ArtefactExtractionServiceTests.ExtractAsync_ShouldPropagateCallerCancellationWithoutRecording` failed after 5 s on `Backend Unit (windows-latest)` for PR `#2627`, a one-file frontend change (run `33941869440`); it passed on one rerun and had no tracked issue until 2026-09-05. **`#2378`** (Priority I) is the Windows Frontend Unit launcher timeout. PR `#2427` (merge `7d8deef12`) removed that leg from the required E2E prerequisites, so its timeout can no longer leave `E2E Smoke` skipped; the launcher timeout itself is still open. It fired at least five more times on 2026-09-05 (PR `#2575` twice, PR `#2616`, PR `#2619`, and `main` itself at `1e234a011`; `spawnSync powershell.exe ETIMEDOUT` at about 20 s on four different cases, on diffs that could not have caused it), each recorded on the issue and, on PRs, re-proven with one rerun, never more. The earlier pair named here is closed: **`#2425`** (Windows worktree helper scenario 28, the forced 5s timeout landing in the checkout phase) closed 2026-09-04 on PR `#2447` (merge `550f195ce`), and @@ -180,20 +181,21 @@ Trackers do not close by doing work; they close when their children do, or by a Clause 2's content is deciding which of these ship inside v0.3.0 and which are re-ruled out, and that split is a maintainer ruling, not an agent decision. The useful thing this section does is separate the ones that already have a gate clause behind them from the ones that do not. Measured 2026-09-05 -08:50Z against `main` `e96523907` (unchanged since the 04:00Z measurement at `1e234a011`): +15:15Z against `main` `42d3007f0`: -- 11 carry `dogfooding`, the product-polish family seeded from real use: `#2141`, `#2090`, - `#2009`, `#2007`, `#2004`, `#1999`, `#1984`, `#1968`, `#1961`, `#1949`, `#1940`. Three of these +- 10 carry `dogfooding`, the product-polish family seeded from real use: `#2141`, `#2090`, + `#2009`, `#2007`, `#2004`, `#1999`, `#1984`, `#1968`, `#1949`, `#1940` (`#1961` closed on PR + `#2681`, 2026-09-05). Three of these are Priority I (`#2004`, `#1949`, `#1940`). None of them carries `decision`: `#1936` closed on 2026-09-03 and `#2004` no longer carries the label. The open v0.3 issues labelled `decision` are `#2324` and `#1772`, both accounted for below, and `#2240` (the A/B fork the 2026-09-03 ruling did not name; coordinator note on the issue, 2026-09-04). (`#1972` was on this list until the 2026-09-03 exception moved it to v0.5; `#2193` closed on evidence 2026-09-04.) -- 20 carry `ci`, and almost none of them are residuals; they split across this file: - - 14 are section 2: the clause-5 chain `#2327` and `#2326` with the CI-03 residual `#2508`, the +- 21 carry `ci`, and almost none of them are residuals; they split across this file: + - 15 are section 2: the clause-5 chain `#2327` and `#2326` with the CI-03 residual `#2508`, the stacked-base planner defect `#2562` and the `main` concurrency gap `#2582`, the cutover-checklist owners `#2333` (B), `#2329`, `#2331`, `#2332` (E), `#2335` (G) and `#2334` (H, moved in from v0.4 - on the Q1 ruling), plus the clause-4 intermittent reds `#2378`, `#2561` and `#2588`. (`#2401` was + on the Q1 ruling), plus the clause-4 intermittent reds `#2378`, `#2561`, `#2588` and `#2691`. (`#2401` was one of them until PR `#2440` closed it, `#2425` until PR `#2447` did, `#2489` until PR `#2566` did, and `#2572` until PR `#2592` did.) - 2 more are section 3 human gates in their own right: `#2337` and `#2328` (checklist F). @@ -209,7 +211,7 @@ the ones that already have a gate clause behind them from the ones that do not. gate clause behind them: `#2520`, `#2499`, `#2391`, `#2315`, `#2240`, `#2215`, `#2214`, `#1309`, `#1307`, `#1284`, `#1131`. -The three label sets are disjoint and closed: 11 + 20 + 13 = 44. If that arithmetic stops holding, +The three label sets are disjoint and closed: 10 + 21 + 13 = 44. If that arithmetic stops holding, this section is stale and the milestone should be re-counted before the file is trusted. It has already moved five times since this file was drafted: `#2230` closed on PR `#2421` and CI-16 `#2439` was seeded the same afternoon, `#2401` closed on PR `#2440`, `#2460`/`#2461` were seeded from PR @@ -225,11 +227,11 @@ and runs (`#2561`, `#2562`, `#2572` on the `ci` side; `#2563`, `#2570` on the pr total was 48. By 04:00Z on 2026-09-05 it moved again: six of the 48 closed on evidence (`#2460` on PR `#2576`, `#2501` on PR `#2584`, `#2524` at PR `#2565`'s merge, `#2563` on PR `#2609`, `#2570` on PR `#2614`, `#2572` on PR `#2592`), two were seeded and closed the same night (`#2583` on PR `#2600`, -`#2604` on PR `#2611`), and two were seeded and are open (`#2582`, `#2588`), so the total is 44. `#2639` was seeded at 04:19Z and closed at 07:37Z on PR `#2660`, so it appears in no measured list. +`#2604` on PR `#2611`), and two were seeded and are open (`#2582`, `#2588`), so the total was 44. `#2639` was seeded at 04:19Z and closed at 07:37Z on PR `#2660`, so it appears in no measured list. By 15:15Z it moved once more with the total unchanged: `#1961` closed on PR `#2681` and `#2691` was seeded, so the total is 44. -**The split that matters.** 20 of the 44 have a gate clause behind them and are not re-ruling -candidates at all: the 18 `ci` issues above other than `#2250` and `#2504`, plus `#2235` and `#1772`. -The other **24** have no gate clause: the 11 `dogfooding` issues, the 11 ordinary backlog issues, +**The split that matters.** 21 of the 44 have a gate clause behind them and are not re-ruling +candidates at all: the 19 `ci` issues above other than `#2250` and `#2504`, plus `#2235` and `#1772`. +The other **23** have no gate clause: the 10 `dogfooding` issues, the 11 ordinary backlog issues, `#2250` and `#2504`. The question this section put to the maintainer was one question about the then 35 un-gated issues, @@ -241,7 +243,7 @@ rest were gate-work-only (all 35 to v0.4), Priority I plus security-labelled onl `#1940`, `#1866`, `#1131`, `#1987`, `#1309` stay, 28 move), and dogfooding-only (16 stay, 19 move). After the exception the milestone held 51 on 2026-09-03 (15 `dogfooding`, 15 `ci`, 21 other; 34 un-gated); the morning 2026-09-04 re-measurement still totalled 51 with 34 un-gated, the 22:50Z -one totalled 48 with 29 un-gated, and the 2026-09-05 04:00Z one totals 44 with 24 un-gated. Agents keep finishing the un-gated set in dependency order; neither of the two that carried `decision` does now +one totalled 48 with 29 un-gated, the 2026-09-05 04:00Z one 44 with 24 un-gated, and the 15:15Z one 44 with 23 un-gated. Agents keep finishing the un-gated set in dependency order; neither of the two that carried `decision` does now (`#1936` closed 2026-09-03, `#2004` no longer carries the label), and the milestone count is the blocker count until it reaches zero. From 34a5469965d9342bb94be897721c984355bd9547 Mon Sep 17 00:00:00 2001 From: Chris0Jeky Date: Sat, 5 Sep 2026 16:33:34 +0100 Subject: [PATCH 2/2] docs: fix-round on the D-12 record (review round 1) Readiness: the human-gate table was not unchanged at 15:15Z, its SC-10 row now counts twelve (#2684 and #2687 named); the cancelled 6cf9ef7a1 run had 15 green, Secret Scan skipped, one cancelled; #2691's seeding time and its 03:26Z red are exact; the dropped clause-4 evidence (cancelled-run range, run ids, timestamps) is restored; #2378 and #2588 occurrence lists gain the sweep's sightings. STATUS: same job tally; range note that the sweep's last merge is one past the block's declared bound. OUTSTANDING_TASKS.md: the rule-3 Changelog entry for the D-12 tick and the section K exception sentence. --- OUTSTANDING_TASKS.md | 3 ++- docs/STATUS.md | 4 ++-- docs/releases/V0_3_0_READINESS.md | 12 ++++++------ 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/OUTSTANDING_TASKS.md b/OUTSTANDING_TASKS.md index 46e4c60b5..d70ac6cc2 100644 --- a/OUTSTANDING_TASKS.md +++ b/OUTSTANDING_TASKS.md @@ -169,7 +169,7 @@ The maintainer directed (2026-08-30) that the repository goes **private for the ## K. v0.3 residual decision batch (2026-09-05, from the alpha lane's read-only audit of 15 milestone issues) — human actions -Source: the alpha lane audited 15 open v0.3 issues on 2026-09-04 against `main` `61e94f672` to `8c511205d`, each audit adversarially re-verified read-only, and handed the coordinator the gates that need a maintainer answer. Everything agent-decidable from the same audit is already queued on the lanes without a ruling (#2215, #2214, #1307 batch-approve parity, #2007 AC5+AC6, #1968 Legacy-truthful shortcut map, #2009 contrast-guard pins, #1284 view-level regression, #1961 board-store dedupe, #2501 MEDIUM-2). Answer by letter on the issue named in each item, or in one reply here; each audit item says what the answer unblocks and names a proposed default, which is the direction the agents would recommend, not authorization to act while the item is unanswered (D-12 was ruled in-session on 2026-09-05 and is closed). Nothing below is built, closed, moved or re-titled until its letter is recorded here or on the issue. +Source: the alpha lane audited 15 open v0.3 issues on 2026-09-04 against `main` `61e94f672` to `8c511205d`, each audit adversarially re-verified read-only, and handed the coordinator the gates that need a maintainer answer. Everything agent-decidable from the same audit is already queued on the lanes without a ruling (#2215, #2214, #1307 batch-approve parity, #2007 AC5+AC6, #1968 Legacy-truthful shortcut map, #2009 contrast-guard pins, #1284 view-level regression, #1961 board-store dedupe, #2501 MEDIUM-2). Answer by letter on the issue named in each item, or in one reply here; each audit item says what the answer unblocks and names a proposed default, which is the direction the agents would recommend, not authorization to act while the item is unanswered (D-12 was ruled in-session on 2026-09-05 and is closed). Nothing below is built, closed, moved or re-titled until its letter is recorded here or on the issue (D-12 is the one exception: ruled in-session on 2026-09-05, in effect A on the PR question, with the lane-naming half of A moot; see the item). - [ ] **D-1 — `#1984` column contract for capture.** The truth-first slice (Paper Inbox stops asserting a column filter it does not apply) is authorized by the issue's AC and the 2026-08-27 reconciliation and is in flight. Open question: is a real column contract (column-scoped capture list, triage targeting the clicked column instead of `defaultColumn` at `CaptureTriageService.cs:249,383`) in scope for v0.3 at all? It adds a persisted column target to the capture contract. A = yes, seed it as a child of `#1984`; B = no, close `#1984` on the truth slice and let CF-20 `#2273` own capture targeting in v0.5. `#2589` (the orchestrator's `activeColumnId` has no producer after `#2580`) resolves the same way as this answer. Proposed default: B. - [ ] **D-2 — `#2499` provenance for pre-migration LLM rows, three sub-rulings.** (i) `#2583` (client-bindable `ProvenanceModelId`, verified) was seeded for the beta lane as ordinary hardening and landed the same night (PR `#2600`, merge `b504779d6`: all three producer-triple fields are now `[JsonIgnore]`; the sibling `ProvenanceTotalTokens` field follows in `#2604`), so no client can plant a model id any more. (ii) Option (b), a sentinel allow-list that renders a recorded model as the producer when `Provider` is unknown, is therefore a pure product-trust question: may Taskdeck show a model name for a row whose producer is genuinely unknown? A = decline (b), the endpoint stays fail-closed (the `#2494` reviewer's position); B = adopt (b) now that the binding is closed. (iii) Option (c), a backfill of `Provider` for pre-migration capture and transcript rows, is feasible after all: both workers stamp a `CaptureProvenanceV1` block with `ProposalId`, `Provider`, `Model` and `PromptVersion` into `LlmRequest.Payload` (`LlmQueueToProposalWorker.cs:544-556`, `TranscriptTriageWorker.cs:254-266`), so a deterministic join on `ProposalId` can set `Provider`, excluding blank and the literal `unknown`. A = go, as a forward-only idempotent migration with a count in the PR body; B = no backfill, docs-truth clause only. Proposed default: (ii) A, (iii) B. The docs-truth clauses (option a) need no ruling and the alpha lane is folding them in. @@ -189,6 +189,7 @@ Source: the alpha lane audited 15 open v0.3 issues on 2026-09-04 against `main` ## Changelog +- 2026-09-05 (D-12 ruled in-session, about 13:15Z): **One `[x]`: the §K D-12 row.** Rule-3 authorization is the maintainer's in-session directive to the coordinator (check the Codex session's thirty-one open PRs, review the sensitive ones again with Opus 5, merge when ready); 31 PRs reviewed and merged the same afternoon, the last `#2626` at `6cf9ef7a1` (14:32Z). No other item changed state; SC-11 re-measured (553 remote branches, 539 without an open PR). - 2026-09-03 (later, maintainer in-session rulings on the packet follow-ups): **no new `[x]`.** Q1 on `#2337` ruled **A** against the agent's B recommendation — checklist section H is a cutover prerequisite in full, so CI-10 `#2334` moves from v0.4 to v0.3 (Priority I) and becomes a release blocker; no split, no CI-10a child. §J SC-3 re-ruled: the packet's $10/month overage ceiling is **deferred** — GitHub Pro confirmed, the included 3,000 minutes/month fund Linux hosted CI only, Windows/macOS legs go local (laptop runner via CI-04, or agent-run proving checks) or carry a local fallback; the row stays open for the J.7 $0-limit read-back and the Codex/Copilot billing check. Clause 2 of the v0.3 gate ruled: **all 35 un-gated milestone issues stay in v0.3.0** (the gate-work-only, Priority-I-plus-security and dogfooding-only splits were declined), with **one exception ruled in the same reply: `#1972` moves to v0.5 with CF-21 `#2274`** (dropping the Agent selector now, and pulling CF-21 forward, were both declined); v0.3.0 tags only when the whole milestone (51 open after the exception) is closed on evidence, and `#2004`/`#1936` still need their own `decision` rulings to close. The three judgement calls flagged in the packet handoff (collaborator held privately; SC-1 amendment wording; CF-22 go with the evidence report kept as the acceptance bar) were not overturned and stand. - 2026-09-03 (maintainer decision packet — 22 rulings cross-referenced and applied): **Four `[x]`: the §E GEN-12 checkpoint row (stay one application; `#1326` closed), the §H `#2012` row (open-core + managed hosting/services; contributions stay paused pending a relicensing-capable CLA/grant — new ADR-0067; `#2012` closed), the §J SC-1 row (nine Smart CI rulings confirmed with the private-Pro approval-boundary amendment) and the §J SC-8 row (private development repository + public release/source mirror, CI-16 `#2439`).** **Five `[x]` in total: also the §J SC-2 row — the authorized bounded deletion ran: 1,498 PR-lane container-image artifacts, about 263.2 GB, deleted with zero failures and zero `main`/tag artifacts touched.** Rulings and values recorded without a check: RT-1 (legal owner deferred pending professional advice; Microsoft Artifact Signing now primary, SignPath fallback; dedicated Taskdeck domain; signing gates paid/mature distribution, not v0.3), CL-1 (one named collaborator held privately; £20 ceiling / £10 alert; 12 weekly copies), `#1276` (voice via CF-16, ink-bleed wired into real processing states, cohorts hidden behind internal/dev access, Ollama kept and marked experimental), SC-3 ($10/month hard ceiling — the setting itself is still the maintainer's), SC-4 (no pre-ruling), `#1504` (staging stays parked; redesign and rehearse first), `#1482` (legal review before paid/commercial distribution), CF-22 (maintainer go recorded; the ruling-6 evidence report becomes the acceptance bar for enabling real execution). The packet's local action notes (RT-2/RT-3/BEN-1/DIST-1/`#1770`/`#1821`/second machine/`#1271`/SC-5..7) changed no state. diff --git a/docs/STATUS.md b/docs/STATUS.md index 4d6eeaf1f..1a1ce1bdc 100644 --- a/docs/STATUS.md +++ b/docs/STATUS.md @@ -321,11 +321,11 @@ Board frontend: - **Not shipped reality:** `#2689` stays open on item 5 (the direct `boardsApi.getBoards` callers outside the store, five at this block's assembly: `ArchiveView.vue`, `AutomationQueueView.vue`, `BoardAccessView.vue`, `useAutomationChat.ts`, `useReviewProposals.ts`; the issue's own count of four is corrected there) and on the round-2 verification residuals recorded as items 6 to 10 (an unconditional focus restore after a failed retry, a throttle docblock still narrower than the truth, the collapsed timeout and offline copy making the guarded clear's identical-message collision routine, `BoardListFetchOptions` not re-exported, one spec comment over-claiming); the detail read's success-path error clear needs an intent gate (recorded on `#2689`); `#2682` (route-walk doc precision) stays tracked; `#2214` item 2 (persistent disclosure of repeated non-transient poll failures on both legs, the malformed-link panel copy and the explicit-path toast asymmetry) is the lane's next slice now that PRs `#2629` and `#2654` released the Paper review and inbox files; the ruling-gated items and the non-ruling residuals listed in the fourteenth block (`#2090`, `#1949`, `#2638`, the `#2215` Paper residuals, the two `#1940` residuals, `#1999` item 3) are unchanged. Control-plane PRs stay parked under SC-10; the platform lane's 2026-09-05 12:35Z checkpoint on `#2351` lists its five, and the queue's last full measurement (ten at `1e234a011`, thirteenth block) is re-measured by the coordinator with the sweep record, since the sweep may have merged the older half. -Coordination lane (coordinator session; docs, issue topology and Project state only, no product code; the D-12 sweep): +Coordination lane (coordinator session; docs, issue topology and Project state only, no product code; the D-12 sweep). Range note: the sweep's last merge, `#2626` at `6cf9ef7a1` (14:32Z), is one merge past this block's declared bound `a2fe24757` (`a2fe24757` is its parent), and the coordinator's own record PR `#2695` lands after `42d3007f0`; both are recorded here rather than split across a sixteenth-block subsection: - **D-12 ruled and closed.** The maintainer ruled in the coordinator session (about 13:15Z) that the Codex session's thirty-one open PRs are wanted, to be checked, given a further Opus 5 review pass where sensitive or fragile, and merged when ready. All thirty-one were reviewed by one fresh-context read-only Opus 5 reviewer each (ten in a full worktree of the PR head), 26 SHIP and 5 FIX-FIRST; the MEDIUMs were fixed in-PR and every PR merged as a merge commit between 13:27Z and 14:32Z (the last, `#2626`, at `6cf9ef7a1`). Review records are on the PRs; the disposition of each of the 28 issues (merge SHA, what remains, tracked LOWs) is a coordinator comment on the issue, because every PR body used `Refs` and none closed its issue. `OUTSTANDING_TASKS.md` D-12 is ticked. - **Shipped by that wave (production changes only; the rest are tests, docs and chores):** `#2626` the API CSP carries `manifest-src 'self'` in both the shipped `appsettings.json` and the code-side `SecurityHeadersSettings` default (the round-1 MEDIUM found the second copy unfixed); `#2629` the Paper Review `onDefer` receipt is guarded by the decision locus like `onApprove` (alpha closed the two remaining siblings in `#2692`); `#2633` locale switches are commit-after-load with pending and failed state in the picker, and startup waits for the persisted-locale restore for at most 1500 ms before mounting (the round-1 MEDIUM found the wait unbounded; ADR-0054 §7 updated); `#2643` the packaged desktop fatal output classifies a missing `Connectors:EncryptionKey` as `code=connector_encryption_key_missing` with a static secret-free message, the classifier and the producer sharing one constant, and `docs/releases/WINDOWS_QUICK_START.md` documents the code as unreleased; `#2646` the stuck-queue cutoff is normalized to UTC before binding (no shipped caller passes a non-UTC value; the remaining `#1422` audit sites are listed on the issue); `#2648` a DEV-only warning for an invalid `useVisualViewport` prefix; `#2649` archive actions wrap into two 44 px columns at phone widths; `#2651` the read-only inventory wrapper validates `gh` group and action tokens case-sensitively before launch; `#2654` the Inbox board-picker literals are localized in en, es and it; `#2655` the Legacy review card's terminal banner names the real content mode; `#2657` four dead viewport declarations removed from `TdDialog`; `#2627` static toast label keys; `#2624` three `.dockerignore` exclusions; `#2607` the selected-label ring offset uses the modal surface color. -- **CI noise during the wave, each attributed and re-proven once:** `#2378` on PR `#2654` (25-minute launcher-suite cancellation) and PR `#2626` (launcher-suite failure at 7 minutes); `#2588` on PR `#2641`; and a new shape, `ArtefactExtractionServiceTests.ExtractAsync_ShouldPropagateCallerCancellationWithoutRecording` failing after 5 s on `Backend Unit (windows-latest)` for the frontend-only PR `#2627`, seeded as `#2691` (v0.3, `ci`). Every intermediate `main` run of the wave was cancelled by the workflow's own concurrency group (the `#2582` shape); the wave's last-merge run at `6cf9ef7a1` (run `33972125374`) had 16 of 17 jobs green and was cancelled inside `E2E Smoke` when PR `#2693` merged, and the tip run at `42d3007f0` (run `33974150710`) was in progress at 15:15Z. +- **CI noise during the wave, each attributed and re-proven once:** `#2378` on PR `#2654` (25-minute launcher-suite cancellation) and PR `#2626` (launcher-suite failure at 7 minutes); `#2588` on PR `#2641`; and a new shape, `ArtefactExtractionServiceTests.ExtractAsync_ShouldPropagateCallerCancellationWithoutRecording` failing after 5 s on `Backend Unit (windows-latest)` for the frontend-only PR `#2627`, seeded as `#2691` (v0.3, `ci`) at 13:56Z; that red itself (run `33941869440`) dates from 03:26Z, before the wave. Every intermediate `main` run of the wave was cancelled by the workflow's own concurrency group (the `#2582` shape); the wave's last-merge run at `6cf9ef7a1` (run `33972125374`) had 15 of 17 jobs green, `Secret Scan` skipped by design, and was cancelled inside `E2E Smoke` when PR `#2693` merged, and the tip run at `42d3007f0` (run `33974150710`) was in progress at 15:15Z. - **SC-10 unchanged by the sweep:** none of the twelve parked control-plane PRs (`#2502`, `#2506`, `#2522`, `#2531`, `#2532`, `#2535`, `#2550`, `#2587`, `#2608`, `#2610`, `#2684`, `#2687`) was reviewed, rebased or merged; they wait for the maintainer under the ADR-0066 amendment. - **Project board:** the 27 issues whose Codex PRs all merged moved Review to Pending (none is lane-owned Now work; `#2128` instead went Now, then Review, then Done as the alpha lane claimed its siblings and closed it with `#2692`); `#1284`, `#1307` and `#2214` had sat in Review with no open PR and went to Pending; `#1949` left Now at the alpha lane's word (its AC4 walk merged, only parser LOWs remain); `#2689` returned to Pending on items 5 to 10 after `#2690`. At 15:15Z Now holds `#2214` alone (PR `#2694` in round 2), one of four. - **Readiness view re-measured** at `42d3007f0` (15:15Z): 44 open, 10 `dogfooding` / 21 `ci` / 13 other (`#1961` closed on `#2681`, `#2691` seeded), 21 gated / 23 un-gated; clause 4 as recorded there; `#2691` joins the clause-4 noise list. diff --git a/docs/releases/V0_3_0_READINESS.md b/docs/releases/V0_3_0_READINESS.md index 0163ed8a4..dfcef25b5 100644 --- a/docs/releases/V0_3_0_READINESS.md +++ b/docs/releases/V0_3_0_READINESS.md @@ -13,14 +13,14 @@ issue numbers below. ## 1. The gate -The five clauses are `docs/REVIVAL_PLAN.md` §3, the v0.3 row. Clauses 2 and 4 and the section 5 label split re-measured 2026-09-05 at 15:15Z against `main` `42d3007f0` (a dated snapshot; the lanes were still merging when it was taken); the section 3 human-gate table carries its 04:00Z measurement, re-checked at 08:50Z and again at 15:15Z with no change; the section 2 clause-5 chain carries its earlier 2026-09-04 measurement and clauses 1 and 3 their 2026-09-03 one. +The five clauses are `docs/REVIVAL_PLAN.md` §3, the v0.3 row. Clauses 2 and 4 and the section 5 label split re-measured 2026-09-05 at 15:15Z against `main` `42d3007f0` (a dated snapshot; the lanes were still merging when it was taken); the section 3 human-gate table carries its 04:00Z measurement, re-checked at 08:50Z with no change and at 15:15Z with one change, the SC-10 row now counts twelve; the section 2 clause-5 chain carries its earlier 2026-09-04 measurement and clauses 1 and 3 their 2026-09-03 one. | # | Gate clause | State | What it waits on | |---|---|---|---| | 1 | RC checks green on the exact head | Not yet applicable | Measured at the final tag head, not before | -| 2 | Milestone closed or explicitly re-ruled | **Not met.** 44 open (re-measured 2026-09-05 15:15Z against `main` `42d3007f0`; the total is unchanged since the 04:00Z measurement at `1e234a011` while two lists moved: `#1961` closed on PR `#2681` (merge `8d6e6355f`, 11:54Z) and `#2691` was seeded at 13:5xZ from PR `#2627`'s unrelated Windows Backend Unit red, so the §5 split is now 10 `dogfooding` / 21 `ci` / 13 other; the earlier history: since the 22:50Z count of 48, six closed on evidence (`#2460`, `#2501`, `#2524`, `#2563`, `#2570`, `#2572`), two seeded and still open (`#2582`, `#2588`), two seeded and closed the same night (`#2583`, `#2604`); at 08:50Z the split was 11 `dogfooding` / 20 `ci` / 13 other). `#2639` entered and left the milestone between measurements: seeded at 04:19Z as Priority I security, re-read by the beta lane at 06:55Z on an unmodified build (the PR `#2416` activate-time sweep does fire, 3 of 3 lifecycle paths; the earlier red was an observation race inside the `#2475` test case, so the `#2411` re-poisoning window has been closed since that PR merged), and closed at 07:37Z on PR `#2660` (merge `58c5a3bfe`) as hardening. **Ruled 2026-09-03: nothing else is re-ruled out; the one exception is `#1972`, moved to v0.5 with CF-21** | Every open issue closing on evidence, sections 2 to 5 below | +| 2 | Milestone closed or explicitly re-ruled | **Not met.** 44 open (re-measured 2026-09-05 15:15Z against `main` `42d3007f0`; the total is unchanged since the 04:00Z measurement at `1e234a011` while two lists moved: `#1961` closed on PR `#2681` (merge `8d6e6355f`, 11:54Z) and `#2691` was seeded at 13:56Z from PR `#2627`'s unrelated 03:26Z Windows Backend Unit red, so the §5 split is now 10 `dogfooding` / 21 `ci` / 13 other; the earlier history: since the 22:50Z count of 48, six closed on evidence (`#2460`, `#2501`, `#2524`, `#2563`, `#2570`, `#2572`), two seeded and still open (`#2582`, `#2588`), two seeded and closed the same night (`#2583`, `#2604`); at 08:50Z the split was 11 `dogfooding` / 20 `ci` / 13 other). `#2639` entered and left the milestone between measurements: seeded at 04:19Z as Priority I security, re-read by the beta lane at 06:55Z on an unmodified build (the PR `#2416` activate-time sweep does fire, 3 of 3 lifecycle paths; the earlier red was an observation race inside the `#2475` test case, so the `#2411` re-poisoning window has been closed since that PR merged), and closed at 07:37Z on PR `#2660` (merge `58c5a3bfe`) as hardening. **Ruled 2026-09-03: nothing else is re-ruled out; the one exception is `#1972`, moved to v0.5 with CF-21** | Every open issue closing on evidence, sections 2 to 5 below | | 3 | Launch kit drafted (`#2242`) | **Met.** `#2242` closed | Nothing | -| 4 | `main` green | **In progress at `42d3007f0`** (`ci-required` run `33974150710`, started 15:14Z). The wave's last-merge run at `6cf9ef7a1` (run `33972125374`) had 16 of 17 jobs green and was cancelled inside `E2E Smoke` at 15:14Z when PR `#2693` merged. Before it, the previous green stood at `140213288` (run `33954576258`, 08:36Z); between the two, the D-12 merge wave landed thirty-one PRs in about fifty minutes and the workflow's own concurrency group cancelled every intermediate `main` run as the next merge landed (`794fef74f` through `5d9f3c1ca`), which is the `#2582` shape and the reason a green tip run exists only when the queue drains: `#2582` (its PR `#2610` parked under SC-10) ends the cancellation and `#2378` the timeout. Ten cancelled runs and the `1e234a011` `#2378` red sat between `330ccb4de` and `140213288` earlier the same day, recorded on `#2378` | `#2378` and `#2610`, section 2 and SC-10 | +| 4 | `main` green | **In progress at `42d3007f0`** (`ci-required` run `33974150710`, started 15:14Z). The wave's last-merge run at `6cf9ef7a1` (run `33972125374`) had 15 of 17 jobs green, `Secret Scan` skipped by design, and was cancelled inside `E2E Smoke` at 15:14Z when PR `#2693` merged. Before it, the previous green stood at `140213288` (run `33954576258`, 08:36Z); between the two, the D-12 merge wave landed thirty-one PRs in about fifty minutes and the workflow's own concurrency group cancelled every intermediate `main` run as the next merge landed (`794fef74f` through `5d9f3c1ca`), which is the `#2582` shape and the reason a green tip run exists only when the queue drains: `#2582` (its PR `#2610` parked under SC-10) ends the cancellation and `#2378` the timeout. Ten cancelled runs (`bb59aa97a` through `540bc2abb`) and the `1e234a011` `#2378` red (a docs-only merge, run `33942989127`) sat between the `330ccb4de` green (2026-09-04 23:19Z) and the `140213288` green (16 of 17 jobs success, `Secret Scan` skipped by design) earlier the same day, recorded on `#2378` | `#2378` and `#2610`, section 2 and SC-10 | | 5 | CI-13 `#2337` cutover by the maintainer, private repository with `Smart CI / Required Gate` enforced | **Not met** | Section 3, and the section 2 chain below it | Clause 2 does not by itself require every open issue to close. "Explicitly re-ruled" means each one @@ -121,12 +121,12 @@ the query shape instead of a 2 s wall-clock bound. Three shapes were seeded from place (`#2588`, `#2561` and `#2572`, the last since closed), and a fourth, `#2691`, on 2026-09-05. (**`#2572`**, the fixed 300 ms `WorkerResilienceTests` delay, was one of them for three hours: seeded from PR `#2522`'s run and closed on PR `#2592`, merge `4bf4a2e55`, which waits on worker progress instead.) **`#2588`** is the Linux one: the dev-up `Node helper: TERM closes an active frontend -connection` case reds ubuntu Frontend Unit (seen on the alpha lane's docs-only PR `#2586`). +connection` case reds ubuntu Frontend Unit (seen on the alpha lane's docs-only PR `#2586`, and on 2026-09-05 on the docs-only PR `#2641`, run `33944370096`; both re-proven green on one rerun). **`#2561`** is the Windows launcher one: dev-up `Stop-LoadedStack` retains PID state when the pre-kill identity probe reads Unknown, a 3 s assertion failure, not the `#2378` timeout class (seen once, PR `#2542` run `33850321779`). **`#2691`** is the Windows backend one: `ArtefactExtractionServiceTests.ExtractAsync_ShouldPropagateCallerCancellationWithoutRecording` failed after 5 s on `Backend Unit (windows-latest)` for PR `#2627`, a one-file frontend change (run `33941869440`); it passed on one rerun and had no tracked issue until 2026-09-05. -**`#2378`** (Priority I) is the Windows Frontend Unit launcher timeout. PR `#2427` (merge `7d8deef12`) removed that leg from the required E2E prerequisites, so its timeout can no longer leave `E2E Smoke` skipped; the launcher timeout itself is still open. It fired at least five more times on 2026-09-05 (PR `#2575` twice, PR `#2616`, PR `#2619`, and `main` itself at `1e234a011`; `spawnSync powershell.exe ETIMEDOUT` at about 20 s on four different cases, on diffs that could not have caused it), each recorded on the issue and, on PRs, re-proven with one rerun, never more. +**`#2378`** (Priority I) is the Windows Frontend Unit launcher timeout. PR `#2427` (merge `7d8deef12`) removed that leg from the required E2E prerequisites, so its timeout can no longer leave `E2E Smoke` skipped; the launcher timeout itself is still open. It fired at least five more times on 2026-09-05 (PR `#2575` twice, PR `#2616`, PR `#2619`, and `main` itself at `1e234a011`; `spawnSync powershell.exe ETIMEDOUT` at about 20 s on four different cases, on diffs that could not have caused it), each recorded on the issue and, on PRs, re-proven with one rerun, never more. During the D-12 sweep the same afternoon it fired twice more: PR `#2654` (run `33948799223`, the launcher-suite step cancelled at the 25 minute job ceiling) and PR `#2626` (run `33969725867`, the launcher-suite step failing at 7 minutes), both re-proven green on one rerun. The earlier pair named here is closed: **`#2425`** (Windows worktree helper scenario 28, the forced 5s timeout landing in the checkout phase) closed 2026-09-04 on PR `#2447` (merge `550f195ce`), and **`#2399`** (Windows batch command-shape sample contamination) closed the same day on PR `#2454` @@ -147,7 +147,7 @@ Clause 5 is entirely human. The named items live in `OUTSTANDING_TASKS.md` and m | SC-7 register the isolated runners after cutover | `#2328`, `#2337` | Post-cutover | | SC-8 public-asset and launch-kit decision | `#2337`, `#2242` | **Ruled 2026-09-03**, see below | | SC-9 top up Codex review credits or accept the fresh-context fallback | `#2337` | Open. Maintainer billing; the credits were exhausted 2026-09-03 | -| SC-10 review the queued control-plane PRs (ADR-0066 amendment 2026-09-03) | `#2324`, `#2331` | Open. Ten control-plane PRs parked when measured 2026-09-05 04:00Z: `#2502`, `#2506`, `#2532`, `#2550` (reviewed clean; each needs `gh pr update-branch` and a fresh hosted run before merge), `#2522` (conflict resolved at head `18d214ba2`; its two Windows reds were `#2378` and `#2572`, neither from the PR; needs the same update-branch and fresh run), `#2531` (stacked on `#2522`, review verdict FIX-FIRST), `#2535` (review verdict SHIP, parked as T2), and three from the beta lane on 2026-09-05, each with a SHIP review: `#2587` (CI-10 slice 1, the nightly coordinator), `#2608` (CI-07 slice, launcher suite Linux-only) and `#2610` (`#2582`, `main` runs no longer cancel). Five post-hoc disclosures sit on the item: `#2479`, `#2529`, `#2548`, `#2549`, `#2556` | +| SC-10 review the queued control-plane PRs (ADR-0066 amendment 2026-09-03) | `#2324`, `#2331` | Open. Twelve parked at 15:15Z on 2026-09-05: the ten below plus `#2684` (release-composer fence-aware extraction and the composer suite in `ci-required.yml`, 11:19Z) and `#2687` (release rehearsal input, workflow-revision tooling for legacy tags, semver changelog base, 12:00Z), both with two SHIP rounds and parked unmerged; the D-12 sweep touched none of the twelve. Ten control-plane PRs parked when measured 2026-09-05 04:00Z: `#2502`, `#2506`, `#2532`, `#2550` (reviewed clean; each needs `gh pr update-branch` and a fresh hosted run before merge), `#2522` (conflict resolved at head `18d214ba2`; its two Windows reds were `#2378` and `#2572`, neither from the PR; needs the same update-branch and fresh run), `#2531` (stacked on `#2522`, review verdict FIX-FIRST), `#2535` (review verdict SHIP, parked as T2), and three from the beta lane on 2026-09-05, each with a SHIP review: `#2587` (CI-10 slice 1, the nightly coordinator), `#2608` (CI-07 slice, launcher suite Linux-only) and `#2610` (`#2582`, `main` runs no longer cancel). Five post-hoc disclosures sit on the item: `#2479`, `#2529`, `#2548`, `#2549`, `#2556` | | SC-11 enable `delete_branch_on_merge`, then decide the one-time merged-branch sweep | none | Open, seeded 2026-09-04 by PR `#2564` (merge `7155f1042`). Repository setting and a destructive sweep, both maintainer-only; not a v0.3.0 gate item | **SC-8 is answered.** The maintainer ruled on 2026-09-03: a **private development repository plus a