loki-mode 10.5.9 → 10.5.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/SKILL.md +2 -2
  2. package/VERSION +1 -1
  3. package/dashboard/__init__.py +1 -1
  4. package/docs/INSTALLATION.md +1 -1
  5. package/docs/dev/release-checklist.md +2 -0
  6. package/docs/v10/ADOPTION-PLAN.md +375 -0
  7. package/docs/v10/BOARD.md +55 -21
  8. package/docs/v10/DEPS.md +10 -4
  9. package/docs/v10/FIRST-RUN-GATE.md +39 -0
  10. package/docs/v10/FOUNDER-QUEUE.md +6 -0
  11. package/docs/v10/PROGRESS.md +46 -0
  12. package/loki-ts/dist/loki.js +398 -392
  13. package/mcp/__init__.py +1 -1
  14. package/package.json +1 -1
  15. package/plugins/loki-mode/.claude-plugin/plugin.json +1 -1
  16. package/web-app/dist/assets/{AdminPage-DGuj7br0.js → AdminPage-bi-XcWhD.js} +1 -1
  17. package/web-app/dist/assets/{Avatar-Cdvgpba5.js → Avatar-CmeIKHo6.js} +1 -1
  18. package/web-app/dist/assets/{Badge-DJk8oc0R.js → Badge-Bc3RMd7Y.js} +1 -1
  19. package/web-app/dist/assets/{Button-C27QH-Dz.js → Button-Dc7yzWmJ.js} +1 -1
  20. package/web-app/dist/assets/{CockpitPage-C1_NrOGR.js → CockpitPage-C_aRTgNm.js} +1 -1
  21. package/web-app/dist/assets/{ComparePage-BDYsv1lI.js → ComparePage-B8eqE3GD.js} +1 -1
  22. package/web-app/dist/assets/{ErrorBoundary-BtmEe2jX.js → ErrorBoundary-BRVSyrME.js} +1 -1
  23. package/web-app/dist/assets/{EvidenceReceiptPanel-H4lTkLGL.js → EvidenceReceiptPanel-DBkXGSAF.js} +1 -1
  24. package/web-app/dist/assets/{GitHubIssuesPanel-BZpRTs0R.js → GitHubIssuesPanel-rRZ4rP-a.js} +1 -1
  25. package/web-app/dist/assets/{GitHubPRsPanel-mWeI_RUy.js → GitHubPRsPanel-NMj2a_-3.js} +1 -1
  26. package/web-app/dist/assets/{HomePage-Ca2_4J8P.js → HomePage-YGPKiV9F.js} +2 -2
  27. package/web-app/dist/assets/{LoginPage-BuHiEHdD.js → LoginPage-CVx7_jtD.js} +1 -1
  28. package/web-app/dist/assets/{MagicPage-DvoLcvE3.js → MagicPage-G9BuqW4T.js} +1 -1
  29. package/web-app/dist/assets/{MetricsPage-BCrWtOWC.js → MetricsPage-CrPo66D6.js} +1 -1
  30. package/web-app/dist/assets/{NotFoundPage-BqdiZUJ4.js → NotFoundPage-CbjchFXV.js} +1 -1
  31. package/web-app/dist/assets/{ProjectPage-C5Ccnd1f.js → ProjectPage-CmPoA170.js} +3 -3
  32. package/web-app/dist/assets/{ProjectsPage-B2B5nfJP.js → ProjectsPage-CfVMc4nw.js} +1 -1
  33. package/web-app/dist/assets/{SettingsPage-C0UtFrfO.js → SettingsPage-6nZ-vONY.js} +1 -1
  34. package/web-app/dist/assets/{ShowcasePage-BPaBrUbK.js → ShowcasePage-CxdZjDzY.js} +1 -1
  35. package/web-app/dist/assets/{SystemSettingsPage-BvieTPpD.js → SystemSettingsPage-Bu0kwwMe.js} +1 -1
  36. package/web-app/dist/assets/{TeamsPage-DLeJfrRc.js → TeamsPage-Ck6xWgOM.js} +1 -1
  37. package/web-app/dist/assets/{TemplatesPage-JminZlqP.js → TemplatesPage-BduvcCsH.js} +1 -1
  38. package/web-app/dist/assets/{TerminalOutput-DUXMRrku.js → TerminalOutput-BmleKz7Q.js} +1 -1
  39. package/web-app/dist/assets/{activity-Bk6IudiS.js → activity-xUOENXj1.js} +1 -1
  40. package/web-app/dist/assets/{bell-aPwkiiD-.js → bell-Do1DnngS.js} +1 -1
  41. package/web-app/dist/assets/{bot-BnBUDC1p.js → bot-Csus-lhk.js} +1 -1
  42. package/web-app/dist/assets/{check-De6ZtXP-.js → check-CDMuF2fW.js} +1 -1
  43. package/web-app/dist/assets/{chevron-left-8EnJBdER.js → chevron-left-1pxhei7a.js} +1 -1
  44. package/web-app/dist/assets/{circle-alert-TGaR5cBZ.js → circle-alert-HufOSfwc.js} +1 -1
  45. package/web-app/dist/assets/{clock-BTZjE2RX.js → clock-BoCMViPQ.js} +1 -1
  46. package/web-app/dist/assets/{cloud-CgCa6EIh.js → cloud-B7JfKA_r.js} +1 -1
  47. package/web-app/dist/assets/{code-xml-RXTcr-zM.js → code-xml-BduQ3MqM.js} +1 -1
  48. package/web-app/dist/assets/{database-BwIN4Cxo.js → database-CQ9s31cU.js} +1 -1
  49. package/web-app/dist/assets/{dollar-sign-XzlY0uOG.js → dollar-sign-CVJu5-A0.js} +1 -1
  50. package/web-app/dist/assets/{file-code-corner-CXejZOb7.js → file-code-corner-BPu1BX6Z.js} +1 -1
  51. package/web-app/dist/assets/{file-plus-pYhFeo4S.js → file-plus-CGa7y-QG.js} +1 -1
  52. package/web-app/dist/assets/{globe-CjO4yGJz.js → globe-ClS0c8Cw.js} +1 -1
  53. package/web-app/dist/assets/{hammer-BXBfEIuA.js → hammer-CeljzUTd.js} +1 -1
  54. package/web-app/dist/assets/{index-CFfJypVK.js → index-Dn35XhiL.js} +3 -3
  55. package/web-app/dist/assets/{layers-D3xS6bnJ.js → layers-CzGZ-NNL.js} +1 -1
  56. package/web-app/dist/assets/{loader-circle-UmuLyjjZ.js → loader-circle-Dy1j6q2e.js} +1 -1
  57. package/web-app/dist/assets/{lock-CoZpsC2Q.js → lock-pmDyRsWL.js} +1 -1
  58. package/web-app/dist/assets/{package-S61fPk28.js → package-C1dXDph_.js} +1 -1
  59. package/web-app/dist/assets/{plus-BC1ydTkW.js → plus-CKPSHefh.js} +1 -1
  60. package/web-app/dist/assets/{refresh-cw-BqOursdF.js → refresh-cw-CRmwRgDw.js} +1 -1
  61. package/web-app/dist/assets/{rotate-ccw-jj6Q0-TE.js → rotate-ccw-Br04gZR3.js} +1 -1
  62. package/web-app/dist/assets/{scroll-text-OXZfhCX_.js → scroll-text-BHjpthNc.js} +1 -1
  63. package/web-app/dist/assets/{server-FOSZTk_O.js → server-Db3IfTpl.js} +1 -1
  64. package/web-app/dist/assets/{shield-alert-BPLAVV5-.js → shield-alert-jJXWKLDZ.js} +1 -1
  65. package/web-app/dist/assets/{thumbs-up-BBolkaLF.js → thumbs-up-BksBTkqT.js} +1 -1
  66. package/web-app/dist/assets/{trash-2-CgDkTHUS.js → trash-2-CzXuGa-4.js} +1 -1
  67. package/web-app/dist/assets/{trending-down-C328B6b6.js → trending-down-c_JXJq0s.js} +1 -1
  68. package/web-app/dist/assets/{trending-up-CPkF-hNs.js → trending-up-DtvURYKn.js} +1 -1
  69. package/web-app/dist/assets/{upload-C69LjzUb.js → upload-BSsOPrmR.js} +1 -1
  70. package/web-app/dist/assets/{usePolling-DrDcAFqm.js → usePolling-CFWdgkmg.js} +1 -1
  71. package/web-app/dist/assets/{user-DFs91eZ8.js → user-CL-HjV4R.js} +1 -1
  72. package/web-app/dist/index.html +1 -1
package/docs/v10/BOARD.md CHANGED
@@ -366,7 +366,7 @@ set is declared to avoid overlap with those and with each other.
366
366
  | M-12 | Oracle seal, held-out split, 80% floor, up-front NOT PROVEN | loki-ts/src/engine10/modernize/oracle/seal.ts, loki-ts/tests/engine10/modernize/oracle_seal.test.ts | HIGH | cd loki-ts && bun test tests/engine10/modernize/oracle_seal.test.ts | released@2026-09-28T21:01Z | Source: MODERNIZE.md (D30). Depends on M-09. Opus REJECT (reproduced): delete-and-reseal defeats tamper evidence (hashes stored beside the data). Next: rework. r2 d9026ec6 Opus APPROVE (reseal refused via the append-only log); merged dc827b80 (on top of v10.2.2): full `cd loki-ts && bun test` 2277 pass 0 fail, `bash tests/test-engine10-dist.sh` 18 passed, `bash tests/test-v10-pulse.sh` 117 passed. Released in v10.5.0 (merge b71d80fa is an ancestor of v10.5.0). |
367
367
  | M-13 | Equivalence checker with sealed normalizers and contract output | loki-ts/src/engine10/modernize/equiv.ts, loki-ts/tests/engine10/modernize/equiv.test.ts, loki-ts/tests/engine10/modernize/fixtures/equiv/ | HIGH | cd loki-ts && bun test tests/engine10/modernize/equiv.test.ts | released@2026-09-28T22:26Z | Source: MODERNIZE.md (D30). Depends on M-12. Wave E27 (wf_bcacb1d1-e76). Wave E27 stopped 18:37Z (founder: over budget, load 50). REJECT (reproduced): a unit whose oracle seal is NOT_PROVEN still gets a clean equivalence pass. Branch slice-M-13-equiv kept. Dispatched 21:18Z sonnet (founder 17:10 staffing directive). r2 b379c171 REJECT (3 blockers), r3 89ea40ae REJECT on B3 (normalizers still caller-supplied: tolerance 1e9 after the new tree gives PROVEN). D42 (4): only fix (a), sealOracle hashes the normalizers; M-13 may edit the M-12 seal file for this only. r4 dispatched 21:42Z. r4 fe3cae28 opus APPROVE (normalizer hash in the oracle seal; tolerance 1e9 after seal gives NOT_PROVEN; hand-edited sealed.json refused; canonical hash over all 3 fields). Merged. Released in v10.5.3 (merge cb1ef386 is an ancestor of v10.5.3). |
368
368
  | M-14 | Wall pre-sealed mode: oracle plus conformance, green base is an error | loki-ts/src/engine10/stages/wall.ts (pre-sealed branch only), loki-ts/tests/engine10/modernize/wall_presealed.test.ts | HIGH | cd loki-ts && bun test tests/engine10/modernize/wall_presealed.test.ts | released@2026-09-28T23:18Z | Source: MODERNIZE.md (D30). Depends on M-12, E-54. D33: states its net core line delta; core must stay under 5,000 (92 lines of headroom shared by E-67, E-66, E-61, M-14, merge order E-67, E-66, E-61); offset any excess by deleting dead core code. Wave E27 (wf_bcacb1d1-e76). Wave E27 stopped 18:37Z (founder: over budget, load 50). REJECT: branch empty (no commits). Dispatched 21:51Z. r1 867cffab opus REJECT: crash/OOM/signal exits read as red; bare ImportError enum reads a missing third-party package as red; no file sha256 or verify; no binding to the oracle seal. r2 dispatched 21:57Z. r2 86d078eb (crash/signal exits not_run; inRepo on collection errors; file sha256 plus verify; oracle seal required; base_sha recorded); presealed 26/26, modernize 222/0; opus re-review 22:04Z. r2 86d078eb opus: B1, B3, B4 fixed; B2 still open (inRepo is a caller-supplied flag: name six with inRepo true gives red). r3 derives it from the repo tree. r3 ef4fa166 opus APPROVE (inRepo derived from the real tree via realpath; symlinks and .. names give not_run; verify re-runs verifySeal). Merged; modernize suite green. Released in v10.5.5 (merge c8f9a7d0 is an ancestor of v10.5.5). |
369
- | M-15 | Unit runner: card to v10 run with oracle Wall and equiv check | loki-ts/src/engine10/modernize/unit.ts, loki-ts/tests/engine10/modernize/unit.test.ts | HIGH | cd loki-ts && bun test tests/engine10/modernize/unit.test.ts | building@2026-09-30T18:49Z | Source: MODERNIZE.md (D30). Depends on M-13, M-14. Requirement from the M-13 review: call sealOracle with the card normalizers before implement, and test that ordering. From the M-14 review: derive the failing module from the traceback file path under the target runtime (site-packages can shadow a repo name); resolve the module part of an AttributeError so real reds are sealable; call verifyPreSealedWall and verifySeal before trusting a Wall. Dispatched 22:09Z (M-13, M-14 merged). WIND-DOWN 2026-09-28: opus r1 REJECT (B1 importer frame made a missing third-party package red; B2 PROVEN without conformance re-run or ablation) fixed at 03b35a69 on slice-M-15 (modernize plus budget 250/0, both red then green on real pytest 9.0.2). NEXT: opus r2 review of 03b35a69, then merge. Opus r3 REJECT (18:40Z): B1 added pytest.toml/.pytest.ini or test file bypasses conformance to PROVEN with u.py unmodernized; r4 widens drift rules, adds throwing-stub ablation test, re-syncs the collection rule to E-125 6fc6e950. M-17 must build the production runStub. |
369
+ | M-15 | Unit runner: card to v10 run with oracle Wall and equiv check | loki-ts/src/engine10/modernize/unit.ts, loki-ts/tests/engine10/modernize/unit.test.ts | HIGH | cd loki-ts && bun test tests/engine10/modernize/unit.test.ts | parked@2026-09-30T20:04Z | Source: MODERNIZE.md (D30). Depends on M-13, M-14. Requirement from the M-13 review: call sealOracle with the card normalizers before implement, and test that ordering. From the M-14 review: derive the failing module from the traceback file path under the target runtime (site-packages can shadow a repo name); resolve the module part of an AttributeError so real reds are sealable; call verifyPreSealedWall and verifySeal before trusting a Wall. Dispatched 22:09Z (M-13, M-14 merged). WIND-DOWN 2026-09-28: opus r1 REJECT (B1 importer frame made a missing third-party package red; B2 PROVEN without conformance re-run or ablation) fixed at 03b35a69 on slice-M-15 (modernize plus budget 250/0, both red then green on real pytest 9.0.2). NEXT: opus r2 review of 03b35a69, then merge. Opus r3 REJECT (18:40Z): B1 added pytest.toml/.pytest.ini or test file bypasses conformance to PROVEN with u.py unmodernized; r4 widens drift rules, adds throwing-stub ablation test, re-syncs the collection rule to E-125 6fc6e950. M-17 must build the production runStub. PARKED 20:05Z by the adoption directive (docs/v10/PROGRESS.md 20:05Z); resumes after Tier 0 is green. |
370
370
  | M-16 | Deterministic codemods first (futurize, OpenRewrite) or skipped | loki-ts/src/engine10/modernize/codemod.ts, loki-ts/tests/engine10/modernize/codemod.test.ts | MEDIUM | cd loki-ts && bun test tests/engine10/modernize/codemod.test.ts | released@2026-09-28T16:03Z | Source: MODERNIZE.md (D30). Depends on M-02. Built 0a8bbe6c (branch slice-M-16-codemods); TL review died on the 04:48Z access outage. Wave E21 (wf_39ab3f7d-8f3). TL review. TL APPROVE of 0a8bbe6c; merged into train E22 (9042e964): `bun test tests/engine10/` 547 pass 0 fail, tsc 0, `bash tests/test-v10-pulse.sh` 107 passed, `bash eval/loki10/test-harness.sh` 108 passed. Released in v10.2.1 (npm publish 2026-09-28T16:03Z; every cited commit is an ancestor of the v10.2.1 tag; `git merge-base --is-ancestor`). |
371
371
  | M-17 | Scheduler: N workers, worktrees, cascade, best-of-2, budget stop | loki-ts/src/engine10/modernize/scheduler.ts, loki-ts/tests/engine10/modernize/scheduler.test.ts | HIGH | cd loki-ts && bun test tests/engine10/modernize/scheduler.test.ts | ready@2026-09-28T02:45Z | Source: MODERNIZE.md (D30). Depends on M-15. |
372
372
  | M-18 | Re-slice non-equivalent units to depth 2, then NOT PROVEN | loki-ts/src/engine10/modernize/reslice.ts, loki-ts/tests/engine10/modernize/reslice.test.ts | MEDIUM | cd loki-ts && bun test tests/engine10/modernize/reslice.test.ts | released@2026-09-28T23:18Z | Source: MODERNIZE.md (D30). Depends on M-05, M-13. Merged 20c51512 after TL r2 APPROVE (f41e7e70; reslice 13/0, modernize 241/0 on main). Released in v10.5.5 (merge 20c51512 is an ancestor of v10.5.5). |
@@ -410,7 +410,7 @@ set is declared to avoid overlap with those and with each other.
410
410
  | E-84 | Pulse TRAIN_LATE reads the last train push from the reflog of refs/remotes/origin/main (moves on every push and on fetches of others' pushes), then push-*.log, then UNKNOWN | scripts/v10-pulse.sh (last_train_push_epoch only), tests/test-v10-pulse.sh | MEDIUM | bash tests/test-v10-pulse.sh; fixture: temp repo plus bare remote, a real `git push` makes the check read under 1 min with no push-*.log present; no reflog and no logs reads UNKNOWN | released@2026-09-28T16:03Z | Source: founder 15:09Z; TRAIN_LATE read 681.9 min while trains were pushed at 14:42Z and later, because plain `git push` writes no push-*.log. TL APPROVE (sonnet) on eeace3f6: `bash tests/test-v10-pulse.sh` 109 passed 0 failed; against the old pulse 106 passed 3 failed; live pulse after merge reads "Minutes since last train push: 12.1". Released in v10.2.1 (npm publish 2026-09-28T16:03Z; every cited commit is an ancestor of the v10.2.1 tag; `git merge-base --is-ancestor`). |
411
411
  | E-85 | Security Audit: a narrowly scoped gitleaks allow rule for 40-hex commit pins in eval task.json (repo.ref, merge_sha) so pinned upstream SHAs stop tripping sourcegraph-access-token; CTO approval required (posture: no blanket suppressions) | .gitleaks.toml (or the workflow config), .github/workflows/security-audit.yml | HIGH | a fixture task.json with a 40-hex ref passes; the same string in any other file or key still fails | parked@2026-09-28T21:14Z | Source: v10.2.0 Release 36440534050 blocked by a pinned werkzeug SHA; EV-11b and EV-12A/B/C add more pins. Wave E27 (wf_bcacb1d1-e76). CTO-level opus review. Wave E27 stopped 18:37Z (founder: over budget, load 50). Build 1 commit on slice-E-85-gitleaks-pins, never reviewed. Parked 21:14Z: a regex allow rule for commit-pin shapes conflicts with the exact-fingerprint-only allowlist policy (security rule: no path or rule suppression). Pins are allowlisted per fingerprint with a reason, as done for werkzeug (82e39c29) and E-101 (6358e0a6). |
412
412
  | DEP-01 | Dependency inventory (D35): docs/v10/DEPS.md lists every manifest (all package.json incl. @anthropic-ai/sdk and claude-agent-sdk; every requirements*.txt and pyproject.toml; every uses: in .github/workflows and .github/actions; Node, Python, Bun matrices; Docker bases, Helm images, Terraform providers, Homebrew formula) with current and latest stable, patch/minor/MAJOR, and runtime EOL; no upgrades | docs/v10/DEPS.md, scripts/dep-inventory.py | LOW | python3 scripts/dep-inventory.py regenerates DEPS.md byte-identically on a second run (network results cached); every manifest found by `git ls-files` appears | released@2026-09-28T17:16Z | Source: founder directive 15:20Z (D35). DEP workstream: max 3 builders, never ahead of E/EV/M. Round 3 2794574b TL APPROVE (sonnet) after two REJECT rounds (bump column mismatch, Node 20 claim, 0.x class, Helm drift; then a missing helm/loki-mode chart and unverified floating tags); `bash tests/test-dep-inventory.sh` 5/5, `--self-test` 23/23. Released in v10.2.2 (npm gitHead 9a59750d). |
413
- | E-87 | Release dispatch path: required-ci also accepts a completed workflow_dispatch Security Audit run at the exact SHA (Tests and Bun Parity stay push-only), so a tree whose VERSION is already bumped can publish after an audit fix | .github/workflows/release.yml (required-ci only), a test that runs the extracted step against a fixture run list | HIGH | fixture: dispatched audit success at the SHA counts; a dispatched audit at another SHA does not; Tests via dispatch still does not | merged@2026-09-30T18:27Z | Source: v10.2.0 Release 36443541666 waited on an audit it could never count. CTO approval required (release gate). Wave E27 (wf_bcacb1d1-e76). CTO-level opus review. Wave E27 stopped 18:37Z (founder: over budget, load 50). REJECT (reproduced): tests pass with the completed-and-success condition removed from the dispatched-audit check. Branch kept. |
413
+ | E-87 | Release dispatch path: required-ci also accepts a completed workflow_dispatch Security Audit run at the exact SHA (Tests and Bun Parity stay push-only), so a tree whose VERSION is already bumped can publish after an audit fix | .github/workflows/release.yml (required-ci only), a test that runs the extracted step against a fixture run list | HIGH | fixture: dispatched audit success at the SHA counts; a dispatched audit at another SHA does not; Tests via dispatch still does not | released@2026-09-30T19:22Z | Source: v10.2.0 Release 36443541666 waited on an audit it could never count. CTO approval required (release gate). Wave E27 (wf_bcacb1d1-e76). CTO-level opus review. Wave E27 stopped 18:37Z (founder: over budget, load 50). REJECT (reproduced): tests pass with the completed-and-success condition removed from the dispatched-audit check. Branch kept. Released in v10.5.8 (merge b1be2085 is an ancestor of v10.5.8). |
414
414
  | E-88 | Release notes fully written (D36): scripts/release-notes.sh extracts the CHANGELOG section literally (dated headings), fails on a missing, empty, heading-only or placeholder section; release.yml fails instead of falling back and checks the published body; pre-push refuses a VERSION bump without a full section | scripts/release-notes.sh, .github/workflows/release.yml (extract step), .githooks/pre-push, docs/dev/release-checklist.md, tests/test-release-notes.sh | HIGH | bash tests/test-release-notes.sh; failing first against the old awk pattern | released@2026-09-28T21:01Z | Source: founder directive 16:05Z; six releases published with "Release vX.Y.Z" bodies (backfilled). Founder 17:22Z: stopped at 70 min and re-sliced as E-88a (auto-carry removed, explicit --include only). Wave E27 (wf_bcacb1d1-e76). Wave E27 stopped 18:37Z (founder: over budget, load 50). E-88a opus APPROVE (branch slice-E-88a); merge conflicts with E-86 in .githooks/pre-push; rebase after E-99 lands (same file). E-88a rebased onto E-99 as slice-E-88a-r2 62774912; opus APPROVE (pre-push diff purely additive, E-99 gitleaks steps byte-identical, stdin read once, gate main-only and fail-closed, release.yml exits 1 instead of a placeholder); merged 60ce7620; release-notes 41/0, pre-push-hook 13/0, pre-push-gitleaks 43/0. Non-blocking: gate runs the working tree release-notes.sh; _cl_tmp not in the EXIT trap. Released in v10.5.0 (merge 60ce7620 is an ancestor of v10.5.0). |
415
415
  | E-89 | Pulse RELEASE_CADENCE (D37): violation when more than 25 minutes pass with main green (Tests and Bun Parity success at HEAD) and at least one merged-unreleased slice commit (not an ancestor of the latest published tag, docs-only commits excluded) | scripts/v10-pulse.sh (one check), tests/test-v10-pulse.sh | MEDIUM | bash tests/test-v10-pulse.sh; fixtures: green plus unreleased slice commit 26 min old fires; red main does not; docs-only commits do not; 24 min does not | released@2026-09-28T22:02Z | Source: founder directive 16:20Z. Founder 17:22Z: stopped at 58 min; salvaged commit cce8f48a re-sliced as its own slice plus UNDERSTAFFED. Wave E27 (wf_bcacb1d1-e76). Wave E27 stopped 18:37Z (founder: over budget, load 50). TL APPROVE (sonnet) on the salvaged cce8f48a plus UNDERSTAFFED; merged locally; `bash tests/test-v10-pulse.sh` 129 passed 0 failed. Released in v10.5.2 (merge bd7d75f7 is an ancestor of v10.5.2). |
416
416
  | E-90 | Release Manager marks BOARD rows released after publish: scripts/board-mark-released.sh <tag> flips every merged row whose merge commit is an ancestor of <tag> to released@ with the tag and the ancestry evidence; pulse MERGED_NOT_RELEASED_STALE when a merged row is already in a published tag | scripts/board-mark-released.sh, scripts/v10-pulse.sh (one check), tests/test-board-mark-released.sh | MEDIUM | bash tests/test-board-mark-released.sh; a merged row in the tag flips, one not in it stays; BOARD line count unchanged | released@2026-09-28T22:02Z | Source: 16:20Z the BOARD showed 20 merged slices that had all shipped in v10.1.0 to v10.2.1, which read as a 20-slice release backlog. Founder 17:22Z: stopped; salvaged commit 1d9dfae7 re-sliced after E-89. Wave E27 (wf_bcacb1d1-e76). Wave E27 stopped 18:37Z (founder: over budget, load 50). Build on slice-E-90-r2 (5 commits) never reviewed; re-review as its own slice. Dispatched 21:14Z sonnet (fresh; the E27 branch was never reviewed). Tech Lead APPROVE bd7d75f7 (anchored slice grep, ancestry-only flips, atomic write); merged 7b1f7e3d; run for v10.5.0 flipped 42 rows (c62f3cb0). Released in v10.5.2 (merge 7b1f7e3d is an ancestor of v10.5.2). |
@@ -420,9 +420,9 @@ set is declared to avoid overlap with those and with each other.
420
420
  | E-91 | Pulse UNEVIDENCED_CLAIM and every row parser accept any slice id prefix ([A-Z]+-\d+, e.g. DEP-02, GF-1, PF-3), not a hardcoded S/E/EV/M list | scripts/v10-pulse.sh (row-id regexes only), tests/test-v10-pulse.sh | LOW | bash tests/test-v10-pulse.sh; a DEP row with "green" only in its Wall cell is not flagged, its notes cell still is | released@2026-09-28T21:01Z | Source: pulse flagged DEP-03/DEP-04 Wall cells (df7dc134), the E-71 bug class again. Serialize after E-89/E-90 and E-79..81 (same file). Wave E27 (wf_bcacb1d1-e76). After E-90 (same file). Wave E27 stopped 18:37Z (founder: over budget, load 50). Not started. Tech Lead APPROVE e311b47e; merged 039f8af2; test-v10-pulse.sh 131/0. Revealed DEP-02..04 stale building rows (parked). Released in v10.5.0 (merge 039f8af2 is an ancestor of v10.5.0). |
421
421
  | E-92 | P0 fix-forward: dep-inventory --self-test reached the real gh floating-tag resolver (actions/setup-node@v4), so CI without gh auth read bump unknown (Tests red since df7dc134, run 36451439320) | scripts/dep-inventory.py (self-test fixture) | HIGH | `env -u GH_TOKEN -u GITHUB_TOKEN PATH=/usr/bin:/bin python3 scripts/dep-inventory.py --self-test` rc=0; rc=1 on the previous version | released@2026-09-28T17:16Z | TL APPROVE (sonnet) on 81cdba4d: stripped-env self-test 23/23 rc=0, origin/main rc=1, fixture mutation goes red, no second network path in self_test(); merged 4f7f1487. Guard: E-93. Released in v10.2.2 (npm gitHead 9a59750d, Release run 36455687013). |
422
422
  | E-93 | Guard (D37 same-class-never-twice): tests/test-dep-inventory.sh runs --self-test under a stripped environment (no GH_TOKEN/GITHUB_TOKEN, PATH=/usr/bin:/bin, empty HOME) so a network-dependent self-test fails locally, not only in CI; GUARDS.md entry | tests/test-dep-inventory.sh, docs/v10/GUARDS.md | LOW | a self-test that calls an unstubbed fetcher fails the leg locally | released@2026-09-28T21:01Z | Source: E-92 incident. Wave E25 (wf_46137a6b-367). TL APPROVE (sonnet); merged on main 18:00Z; `bash tests/test-dep-inventory.sh` 6 passed 0 failed. Released in v10.5.0 (merge 76086e8f is an ancestor of v10.5.0). |
423
- | EV-12E | Upstream-first hidden-test enforcement (D38 criteria 1, 3, 4, 7, 9): validate requires hidden.provenance, hidden.sha256 and requirements[] on lg-* tasks; measure-size excludes typing-examples/, examples/, docs/; a test-harness leg applies every tasks/lg-*/shortcuts/*.patch and asserts not completed, and RED at ref is not collection-only; run.sh rows gain hidden_subset | eval/loki10/harness.py (validate only), eval/loki10/measure-size.py, eval/loki10/test-harness.sh (new section) | HIGH | fixture with a wrong sha256 fails validate rc=1; a passing shortcut fixture fails the leg; an attrs-602-shaped fixture reads medium | review@2026-09-30T18:49Z | Source: D38. Needs EV-12S merged first (measure-size). Wave E27 (wf_bcacb1d1-e76). Wave E27 stopped 18:37Z (founder: over budget, load 50). REJECT (reproduced): RED at ref must be by assertion (criterion 7) is untested. Branch slice-EV-12E kept (4 commits). |
424
- | EV-12F | Retrofit lg-werkzeug-1513, 1680, 1769 and lg-httpx-1522 to D38 criteria 1-9 (requirements map, upstream-later tests first, authored public-API tests, sha256 freeze, saved shortcuts as must-fail fixtures from ~/loki-ci-logs/ev12-shortcuts/) | eval/loki10/tasks/lg-werkzeug-{1513,1680,1769}/, lg-httpx-1522/, their refdiffs | HIGH | per task: RED by assertion, GREEN at merge, every Ri-omission mutant fails, every shortcut fails, regression files pass, validate rc=0; independent opus 45-minute shortcut attempt passes nothing | ready@2026-09-28T18:00Z | Source: D38. Two engineers (task pairs). Wave E25 (wf_46137a6b-367). Two engineers (task pairs). Wave E25 opus REJECT on every retrofitted task (requirements not covering the sized refdiff, -k deselecting the only Ri test, deprecation requirements untested, shortcuts that omit stated requirements still passing). Deprioritized at 18:00Z behind EV-15 and E-98: the flip is blocked by the medium-tier result regardless of the large tier. |
425
- | EV-12G | Retrofit lg-httpx-1550, lg-httpx-3319, lg-attrs-660 to D38, then new upstream PRs (with later upstream tests first) until the large tier holds 10 | eval/loki10/tasks/lg-httpx-{1550,3319}/, lg-attrs-660/, new lg-* dirs, their refdiffs | HIGH | as EV-12F; at least 5 passing on main before the EV-14 large runs | ready@2026-09-28T18:00Z | Source: D38. Wave E25 (wf_46137a6b-367). Wave E25 opus REJECT on every retrofitted task (requirements not covering the sized refdiff, -k deselecting the only Ri test, deprecation requirements untested, shortcuts that omit stated requirements still passing). Deprioritized at 18:00Z behind EV-15 and E-98: the flip is blocked by the medium-tier result regardless of the large tier. |
423
+ | EV-12E | Upstream-first hidden-test enforcement (D38 criteria 1, 3, 4, 7, 9): validate requires hidden.provenance, hidden.sha256 and requirements[] on lg-* tasks; measure-size excludes typing-examples/, examples/, docs/; a test-harness leg applies every tasks/lg-*/shortcuts/*.patch and asserts not completed, and RED at ref is not collection-only; run.sh rows gain hidden_subset | eval/loki10/harness.py (validate only), eval/loki10/measure-size.py, eval/loki10/test-harness.sh (new section) | HIGH | fixture with a wrong sha256 fails validate rc=1; a passing shortcut fixture fails the leg; an attrs-602-shaped fixture reads medium | released@2026-09-30T20:08Z | Source: D38. Needs EV-12S merged first (measure-size). Wave E27 (wf_bcacb1d1-e76). Wave E27 stopped 18:37Z (founder: over budget, load 50). REJECT (reproduced): RED at ref must be by assertion (criterion 7) is untested. Branch slice-EV-12E kept (4 commits). Released in v10.5.10 (merge 3162d655 is an ancestor of v10.5.10). |
424
+ | EV-12F | Retrofit lg-werkzeug-1513, 1680, 1769 and lg-httpx-1522 to D38 criteria 1-9 (requirements map, upstream-later tests first, authored public-API tests, sha256 freeze, saved shortcuts as must-fail fixtures from ~/loki-ci-logs/ev12-shortcuts/) | eval/loki10/tasks/lg-werkzeug-{1513,1680,1769}/, lg-httpx-1522/, their refdiffs | HIGH | per task: RED by assertion, GREEN at merge, every Ri-omission mutant fails, every shortcut fails, regression files pass, validate rc=0; independent opus 45-minute shortcut attempt passes nothing | parked@2026-09-30T20:04Z | Source: D38. Two engineers (task pairs). Wave E25 (wf_46137a6b-367). Two engineers (task pairs). Wave E25 opus REJECT on every retrofitted task (requirements not covering the sized refdiff, -k deselecting the only Ri test, deprecation requirements untested, shortcuts that omit stated requirements still passing). Deprioritized at 18:00Z behind EV-15 and E-98: the flip is blocked by the medium-tier result regardless of the large tier. BLOCKED 19:50Z on the D34 size rule (decision in PROGRESS 19:45Z): slice-EV-12F-a2 9ec3ac0b retrofits lg-werkzeug-1513/1680/1769 (validate ok, 4 shortcuts fail at ref, 1513 omission mutants R1-R3 rc=1) but measures below pub-faker-2206 (1032 added lines, declared medium). Also carries an emoji-scan exclusion for tasks/*/hidden/** (needs TL review). PARKED 20:05Z by the adoption directive (docs/v10/PROGRESS.md 20:05Z); resumes after Tier 0 is green. |
425
+ | EV-12G | Retrofit lg-httpx-1550, lg-httpx-3319, lg-attrs-660 to D38, then new upstream PRs (with later upstream tests first) until the large tier holds 10 | eval/loki10/tasks/lg-httpx-{1550,3319}/, lg-attrs-660/, new lg-* dirs, their refdiffs | HIGH | as EV-12F; at least 5 passing on main before the EV-14 large runs | parked@2026-09-30T20:04Z | Source: D38. Wave E25 (wf_46137a6b-367). Wave E25 opus REJECT on every retrofitted task (requirements not covering the sized refdiff, -k deselecting the only Ri test, deprecation requirements untested, shortcuts that omit stated requirements still passing). Deprioritized at 18:00Z behind EV-15 and E-98: the flip is blocked by the medium-tier result regardless of the large tier. BLOCKED 19:50Z on the same D34 rule: slice-EV-12G 91884218 retrofits lg-httpx-1550, lg-httpx-3319, lg-attrs-660 (validate ok; mutants 20/20, 13/13, 11/11; 9 shortcut patches fail at ref). Growing the large tier to 10 not started. PARKED 20:05Z by the adoption directive (docs/v10/PROGRESS.md 20:05Z); resumes after Tier 0 is green. |
426
426
  | E-94 | Guard for red main df7dc134 (a test passed locally only because gh was authenticated): local-ci fast tier re-runs every changed test file under a stripped environment (no GH_TOKEN, gh or network credentials) and fails on a difference | scripts/local-ci.sh (one check), tests/test-local-ci-hermetic.sh, docs/v10/GUARDS.md | MEDIUM | a fixture test that calls gh fails the check; the pre-E-92 dep-inventory.py is caught | released@2026-09-28T21:01Z | Source: founder 17:22Z (each red main becomes a pre-merge guard). Wave E27 (wf_bcacb1d1-e76). Wave E27 stopped 18:37Z (founder: over budget, load 50). TL APPROVE; merged locally; `bash tests/test-local-ci-hermetic.sh` 18 passed 0 failed. Released in v10.5.0 (merge 82c22684 is an ancestor of v10.5.0). |
427
427
  | E-95 | Guard for red main 8f2179cd (App Runner Watchdog Health fixture server never came up; rerun 36453069628 passed): free port by binding 0, readiness poll up to 10s with a clear message; 20/20 under parallel load | tests/test-app-runner-watchdog-health.sh, docs/v10/GUARDS.md | LOW | 20 consecutive passes while 4 parallel pulse suites run | released@2026-09-28T21:01Z | Source: founder 17:22Z. Wave E27 (wf_bcacb1d1-e76). Wave E27 stopped 18:37Z (founder: over budget, load 50). TL APPROVE; merged locally; `bash tests/test-app-runner-watchdog-health.sh` 12 passed 0 failed. Released in v10.5.0 (merge 08dd38f4 is an ancestor of v10.5.0). |
428
428
  | E-86 | Pre-push gitleaks for eval task fixtures (founder 15:16Z): pinned v8.30.0 with hardcoded checksums, every pushed commit scanned in dir mode from the pushed commit (not the working tree), refusal names file, line and rule, never the secret | .githooks/pre-push, scripts/install-gitleaks.sh, tests/test-pre-push-gitleaks.sh, .gitleaksignore | HIGH | real-push fixtures: a sourcegraph URL plus 40-hex pin is refused; opus security review | released@2026-09-28T21:01Z | Source: v10.2.0 blocked by gitleaks. Rounds 1-3 opus REJECT with reproduced fail-opens (non-ASCII dirs, unfetched force-push, working-tree scan, checksum bypass; intermediate commits; root commits, history leak, case collisions). Round 4 building as one squashed commit off main. Round 4 8f9baace opus APPROVE (every earlier reproduction refuses; fresh-clone Security Audit gitleaks rc=0 with the branch merged); merged on main; `bash tests/test-pre-push-gitleaks.sh` 40 passed 0 failed. Follow-ups in E-99. Released in v10.5.0 (merge d7ce074b is an ancestor of v10.5.0). |
@@ -452,7 +452,7 @@ set is declared to avoid overlap with those and with each other.
452
452
  | E-122 | Scorecard headline pair (loki on sonnet vs raw opus) is green on cost only at 0.5x raw or less, per D41; add the rule and a test | eval/loki10/scorecard, eval/loki10/test-scorecard.sh | LOW | fixture at 0.6x raw cost is red on the headline pair, 0.5x is green (red first) | released@2026-09-28T23:18Z | Source: S41-02 Tech Lead review note 5. Depends on S41-02. Dispatched 22:01Z. Built a4bc79b9 (0.6x headline red on the old script); Tech Lead APPROVE (label-matched pair, inclusive 0.5x, null stays red); merged; test-scorecard 27/0. Released in v10.5.5 (merge 901466ef is an ancestor of v10.5.5). |
453
453
  | E-123 | tests/test-security-scan-coverage.sh runs only in local-ci.sh, never in CI, so its .gitleaksignore baseline drifted unnoticed (6358e0a6); register it in tests/run-all-tests.sh and shard-durations so CI Tests run it | tests/run-all-tests.sh, tests/shard-durations.tsv | LOW | test-shard-coverage.sh lists it; the suite passes on main (31/0) | released@2026-09-28T23:18Z | Source: E-114 opus review item 4. Depends on E-114. Dispatched 22:01Z. Built fc3e17b1; Tech Lead APPROVE (self-contained text checks, rows match format); merged; scan-coverage 31/0, shard coverage 19/0. Released in v10.5.5 (merge a553be40 is an ancestor of v10.5.5). |
454
454
  | E-124 | verifyPreSealedWall cross-checks the carried oracle_normalizers_sha256 against the current oracle seal (today only cases and coverage hashes are checked) | loki-ts/src/engine10/modernize/presealed_wall.ts, its test | LOW | a Wall sealed against one normalizer hash fails verify after the oracle normalizers change (red first) | released@2026-09-28T23:18Z | Source: M-14 r3 opus review advisory. Dispatched 22:09Z. Released in v10.5.5 (merge 8a99554c is an ancestor of v10.5.5). |
455
- | E-125 | Wall red classification: real pytest prints collection-time AttributeError/NameError frames as "path.py:N: in <module>", not "File ...", so wall.ts never classifies them red (always not_run, fail-safe but the D42 red class cannot fire); parse both frame shapes and replace the B3 test fixtures with real pytest output | loki-ts/src/engine10/stages/wall.ts, loki-ts/tests/engine10/wall.test.ts | MEDIUM | a real pytest run (captured fixture) with an in-repo AttributeError classifies red; third-party frame stays not_run; core stays under 5000 | building@2026-09-30T18:49Z | Source: S41-16 r2 opus review (ran real pytest 9.0.2). WIND-DOWN 2026-09-28: opus r1 REJECT (B1 owner of missing attribute, B2 space in frame path, B3 captured-stdout injection, B4 chained exception) fixed at 845c9231 on slice-E-125: classifies on the pytest short-summary ERROR line, requires module '<name>' has no attribute with <name> under the repo; wall.test.ts 26/0, r3-B1 to B4 red on e6d2ddec then green. Core 4,998 (cap 4,999). Full engine10 suite not re-run after r3. NEXT: run tests/engine10 plus seal and budget, then opus r2 review, then merge. |
455
+ | E-125 | Wall red classification: real pytest prints collection-time AttributeError/NameError frames as "path.py:N: in <module>", not "File ...", so wall.ts never classifies them red (always not_run, fail-safe but the D42 red class cannot fire); parse both frame shapes and replace the B3 test fixtures with real pytest output | loki-ts/src/engine10/stages/wall.ts, loki-ts/tests/engine10/wall.test.ts | MEDIUM | a real pytest run (captured fixture) with an in-repo AttributeError classifies red; third-party frame stays not_run; core stays under 5000 | merged@2026-09-30T20:39Z | Source: S41-16 r2 opus review (ran real pytest 9.0.2). WIND-DOWN 2026-09-28: opus r1 REJECT (B1 owner of missing attribute, B2 space in frame path, B3 captured-stdout injection, B4 chained exception) fixed at 845c9231 on slice-E-125: classifies on the pytest short-summary ERROR line, requires module '<name>' has no attribute with <name> under the repo; wall.test.ts 26/0, r3-B1 to B4 red on e6d2ddec then green. Core 4,998 (cap 4,999). Full engine10 suite not re-run after r3. NEXT: run tests/engine10 plus seal and budget, then opus r2 review, then merge. |
456
456
  | E-126 | D41 item 3: repo memory, record the verified build and test command, flaky list and failure causes per repo, cold vs warm | loki-ts/src/e10ext/repomemory.ts, loki-ts/tests/e10ext/repomemory.test.ts | MEDIUM | cd loki-ts and bun test tests/e10ext/repomemory.test.ts | released@2026-09-30T18:50Z | Source: D41 item 3, SCORECARD-PLAN section 7. Evidence: engine10/cache.ts:87 recordFlaky and :108 topFailures exist, the verified command is not captured. Data only per D42. Released in v10.5.7 (merge fab5d59e is an ancestor of v10.5.7). |
457
457
  | E-127 | D41 item 5 (backlog throughput): fetch N issues for a label or milestone as pure data | loki-ts/src/e10ext/issues.ts, loki-ts/tests/e10ext/issues.test.ts | MEDIUM | cd loki-ts and bun test tests/e10ext/issues.test.ts | released@2026-09-30T18:50Z | Source: D41 item 5. Evidence: engine10/fetch_issue.ts:35 takes one ref only. Released in v10.5.7 (merge 0c6fa258 is an ancestor of v10.5.7). |
458
458
  | E-128 | BACKLOG 147: P7 scanner misses a useMemo factory that calls an already-registered fabricator instead of returning a literal | tests/moat/p7-no-fabricated-data.sh | HIGH | bash tests/moat/p7-no-fabricated-data.sh | released@2026-09-30T18:50Z | Source: BACKLOG 147; the file's own comment at p7-no-fabricated-data.sh:987 names the gap. Same file as E-131: one engineer takes both. Released in v10.5.7 (merge 8a4e1510 is an ancestor of v10.5.7). |
@@ -464,24 +464,29 @@ set is declared to avoid overlap with those and with each other.
464
464
  | E-134 | spawn_env_fsmonitor.test.ts positive control fails on Bun 1.4.2 (Nightly red 2026-09-29 and 09-30, both OSes): Bun no longer inherits the START env for a spawn with no env option, so the bare control call stops leaking the canary and the test proves nothing there. Keep the product assertions unconditional; add a control that passes the canary explicitly so the hook is proven to record env on any Bun; report which inheritance mode the running Bun has | loki-ts/tests/runner/spawn_env_fsmonitor.test.ts | HIGH | cd loki-ts and bun test tests/runner/spawn_env_fsmonitor.test.ts on Bun 1.3.13 and on latest | released@2026-09-30T18:50Z | Source: Nightly run 36719756873 job 109901555421 (bun-v1.4.2): control record held the withheld sentinel, not the canary. Product calls still did not leak. Security guard, opus review. Released in v10.5.7 (merge f0ba0d4d is an ancestor of v10.5.7). |
465
465
  | E-135 | Post-Release Smoke PyPI install gives up after about 10.5 min (6 attempts, 30s steps) while the published version is still propagating; v10.5.5 failed this way though PyPI now has it. Add --no-cache-dir and widen the window | .github/workflows/post-release-smoke.yml | LOW | bash -n on the step script; a rerun of the smoke on the next release | released@2026-09-30T18:50Z | Source: Post-Release Smoke run 36497082408 job 109179083720 (FATAL loki-mode-sdk==10.5.5 not installable after retries); PyPI shows 10.5.5 on 2026-09-30. Rerun of the failed jobs requested. Released in v10.5.7 (merge 1d4975a1 is an ancestor of v10.5.7). |
466
466
  | E-136 | measure-size.py counts any touched non-test .py file, so a docstring-only or typing-only second file makes a one-file fix read as medium (click-3449 utils.py, marshmallow-2170, pluggy-442); count only files whose change alters code, not comments or docstrings | eval/loki10/measure-size.py, its test | MEDIUM | the measure-size self test plus a fixture diff with a docstring-only second file reading small | released@2026-09-30T18:50Z | Source: S41-20a opus review 2026-09-30 (criterion 7 cannot stand in for criterion 1). Use the Python ast module to compare function bodies with docstrings stripped. Released in v10.5.7 (merge d116c91b is an ancestor of v10.5.7). |
467
- | E-137 | S41-18 interrupt test (legA in eval/loki10/test-scorecard-run.sh) leaks an orphaned run.sh plus harness.py (tasks rt1,rt2) when the run is torn down: two groups found reparented to PID 1 after 18 and 32 min on 2026-09-30, from a removed worktree and a reviewer probe dir | eval/loki10/test-scorecard-run.sh | MEDIUM | bash eval/loki10/test-scorecard-run.sh twice, then no run.sh or harness.py with --tasks rt1,rt2 remains | merged@2026-09-30T18:27Z | Source: pulse Orphan worktree/run.sh processes 2 at 17:30Z; PIDs 56770/56781 and 96302/96310 stopped by literal PID after inspection (the python harness ignored SIGTERM). Fix: trap EXIT in the test that stops the recorded group, and assert no survivors. |
468
- | E-138 | P7 scanner misses optional-call sinks and one-hop aliasing: setRows?.([...]), window[k]?.(rows), const s = setRows; s(rows), and a memo or local that forwards a fabricator result; accept an optional ?. before the call in the three sink heads and follow one alias hop | tests/moat/p7-no-fabricated-data.sh | HIGH | bash tests/moat/p7-no-fabricated-data.sh with red and green fixtures per form | review@2026-09-30T18:27Z | Source: E-128/E-131 opus review 2026-09-30 (lines 776, 1067, 1172 use a (?=[(<]) or \s*\( lookahead); pre-existing at base, not opened by E-131. |
467
+ | E-137 | S41-18 interrupt test (legA in eval/loki10/test-scorecard-run.sh) leaks an orphaned run.sh plus harness.py (tasks rt1,rt2) when the run is torn down: two groups found reparented to PID 1 after 18 and 32 min on 2026-09-30, from a removed worktree and a reviewer probe dir | eval/loki10/test-scorecard-run.sh | MEDIUM | bash eval/loki10/test-scorecard-run.sh twice, then no run.sh or harness.py with --tasks rt1,rt2 remains | released@2026-09-30T19:22Z | Source: pulse Orphan worktree/run.sh processes 2 at 17:30Z; PIDs 56770/56781 and 96302/96310 stopped by literal PID after inspection (the python harness ignored SIGTERM). Fix: trap EXIT in the test that stops the recorded group, and assert no survivors. Released in v10.5.8 (merge 030cd521 is an ancestor of v10.5.8). |
468
+ | E-138 | P7 scanner misses optional-call sinks and one-hop aliasing: setRows?.([...]), window[k]?.(rows), const s = setRows; s(rows), and a memo or local that forwards a fabricator result; accept an optional ?. before the call in the three sink heads and follow one alias hop | tests/moat/p7-no-fabricated-data.sh | HIGH | bash tests/moat/p7-no-fabricated-data.sh with red and green fixtures per form | parked@2026-09-30T20:04Z | Source: E-128/E-131 opus review 2026-09-30 (lines 776, 1067, 1172 use a (?=[(<]) or \s*\( lookahead); pre-existing at base, not opened by E-131. PARKED 20:05Z by the adoption directive (docs/v10/PROGRESS.md 20:05Z); resumes after Tier 0 is green. |
469
469
  | E-139 | spawn_env_fsmonitor.test.ts follow-ups from E-134 review: comments at lines 16-17 and 114 overstate Bun 1.4.2 (Bun.spawn and Bun.spawnSync with no env still inherit the START env; only node:child_process inherits current), name spawn_env_guard.test.ts as the guard for them; line 94 driver should run process.execPath, not the bun on PATH | loki-ts/tests/runner/spawn_env_fsmonitor.test.ts | LOW | cd loki-ts and bun test tests/runner/spawn_env_fsmonitor.test.ts | ready@2026-09-30T18:08Z | Source: E-134 opus review 2026-09-30 (probe: Bun.spawn on 1.4.2 printed START env). |
470
- | E-140 | Something deletes run-owned loki-run.* directories under TMPDIR while another agent is using them (an opus reviewer's dir and its Bun 1.4.2 binary vanished mid-review on 2026-09-30; unfamiliar dirs with e10ext subdirs appeared inside). Find the sweeper (a test cleanup, a trap, or a script removing loki-run.* by pattern) and make it remove only its own validated dir | the offending script or test (to locate), plus a guard test | HIGH | a guard that plants two run-owned dirs and runs the suspected cleanup, asserting the foreign one survives | merged@2026-09-30T18:27Z | Source: E-134 opus review cleanup note 2026-09-30. CLAUDE.md forbids sweeping TMPDIR by pattern. |
470
+ | E-140 | Something deletes run-owned loki-run.* directories under TMPDIR while another agent is using them (an opus reviewer's dir and its Bun 1.4.2 binary vanished mid-review on 2026-09-30; unfamiliar dirs with e10ext subdirs appeared inside). Find the sweeper (a test cleanup, a trap, or a script removing loki-run.* by pattern) and make it remove only its own validated dir | the offending script or test (to locate), plus a guard test | HIGH | a guard that plants two run-owned dirs and runs the suspected cleanup, asserting the foreign one survives | released@2026-09-30T19:22Z | Source: E-134 opus review cleanup note 2026-09-30. CLAUDE.md forbids sweeping TMPDIR by pattern. Released in v10.5.8 (merge 98eadf90 is an ancestor of v10.5.8). |
471
471
  | E-141 | treeswap passes an explicit env to its git spawns (spawn_env_guard, BACKLOG 149) | loki-ts/src/e10ext/treeswap.ts and its test | MEDIUM | bun test tests/e10ext | released@2026-09-30T18:50Z | Merged c2305c99 via 0bf98fd0. S41-13 binding note records the scrubbed-env requirement. Released in v10.5.7 (merge 0bf98fd0 is an ancestor of v10.5.7). |
472
472
  | E-142 | D44-C follow-ups: structural-checks changed_chars diffs against the merge-base (committed dashes/emoji caught), typecheck prints SKIP without node_modules, register test-v10-ops.sh and fix the IGNORE comment (slow, not hanging) | scripts/structural-checks.sh, tests/test-structural-checks.sh, tests/test-registration-coverage.sh, tests/run-all-tests.sh, tests/shard-durations.tsv | LOW | bash tests/test-structural-checks.sh; each check under 10s | merged@2026-09-30T18:49Z | Source: D44-C TL review (APPROVE with notes). |
473
- | E-143 | Follow-ups from E-87/E-140 reviews: pin audit_verdict created_at tie-to-failure with a test; test-no-tmp-sweep static scan also flags find -delete and find -exec rm shapes; move hardcoded /tmp fixtures (test-stop-process-group, test-audit-chain-cross-file, test-memory-cli, test-lsp-diagnostics-regression, test-watch-command, test-provider-source-cli, test-issue-providers) under loki_run_tmp_create | tests/test_release_required_ci.py, tests/test-no-tmp-sweep.sh, the listed tests | LOW | each named suite passes; a tie fixture expects rc 1 | building@2026-09-30T18:40Z | Source: E-87 and E-140 TL reviews (both APPROVE). |
474
- | E-144 | tests/test-v10-ops.sh hardcodes the live docs/v10/BOARD.md path (line ~589) and md5-checks it, so a concurrent board edit fails it and it breaks the no-home-path rule; point it at a fixture copy under a run-owned temp dir | tests/test-v10-ops.sh | LOW | bash tests/test-v10-ops.sh rc=0 while BOARD.md is edited concurrently; tests/test-no-hardcoded-paths.sh | ready@2026-09-30T18:49Z | Source: E-142 TL review (v10-ops failed 2 checks once on a live board edit, passed on rerun). |
475
- | E-145 | tests/test-watch-command.sh leaves an orphaned run.sh (bash /tmp/loki-run-*.sh .../test-once/prd.md, reparented to launchd, sleep 300 loop) when the suite is killed by a timeout; two found and stopped by literal PID at 18:44Z (40 and 30 min old). Trap EXIT/TERM in the suite to stop its own recorded child PIDs, and move its /tmp paths under loki_run_tmp_create | tests/test-watch-command.sh | LOW | kill the suite with timeout 20; no orphan survives (check by recorded PID) | ready@2026-09-30T18:49Z | Source: pulse ORPHAN_WORKTREE twice. Coordinate with E-143 (same file, /tmp fixture move). |
476
- | E-146 | structural-checks follow-ups from E-142 review: print a stderr warning when no base ref resolves (today it silently scans only the working tree, so committed violations pass); the added-line pattern ^\+[^+] skips an added line whose content starts with +; drop the unused SC variable in tests/test-structural-checks.sh:9 (SC2034) | scripts/structural-checks.sh, tests/test-structural-checks.sh | LOW | test cases for no-base-ref warning and a ++ added line, red first | ready@2026-09-30T18:49Z | Source: E-142 TL review (APPROVE with notes). |
477
- | E-147 | tests/test-trust-core-probe-isolation.sh:37 wraps tests/test-trust-core-tests-detect.sh in `timeout 50`; on a loaded CI runner it hit rc=124 after all 9 visible cases passed (main Tests run 36760845105, shard 3/8, SHA 2b0d2e4d; the same SHA passed on train/4 run 36760063079). Measure the inner suite on CI, set the budget from the measurement with margin, and report the case that was running at the kill so a real hang still fails loudly | tests/test-trust-core-probe-isolation.sh, tests/shard-durations.tsv if its row changes | LOW | inner suite under a 3x load stressor passes; a planted hang still fails with the case name | ready@2026-09-30T19:03Z | Source: D44 MAIN_RED on 2b0d2e4d (timeout flake). Rerun of the failed job in flight. |
478
- | S41-10b | Static-first fixed-rules block for the implement and fix briefs (S41-10 card remainder): a byte-identical rules block in the cache-stable prefix, per-task context after it; drive-letter and ~ plan paths filtered like absolute ones | loki-ts/src/engine10/stages/implement.ts, fix.ts (prefix only), loki-ts/src/e10ext/context.ts and tests | MEDIUM | red first: two different tasks produce byte-identical prefix bytes; core net-zero lines | ready@2026-09-30T18:49Z | Source: S41-10 reviews (APPROVE r2, remainder). |
479
- | S41-20h | Medium-task MINING pass (no task building): shortlist 12 candidate merged PRs whose shape survives the one-file probe (a semantic or signature change in file A that an independently tested caller in file B must match; not helper extraction, parameter threading, moved classes or typing-only files), each with a written one-file-fix attempt run against the upstream tests and its result | eval/loki10/tasks/CANDIDATES.md (new) | MEDIUM | every shortlisted PR has a failing one-file attempt recorded with command and rc | ready@2026-09-30T18:49Z | Source: S41-20b/c/d/e/f: 11 of 16 candidates fell to a reviewer one-file fix; S41-20f built 0. |
480
- | D44-A | Green main by construction: scripts/train-promote.sh fast-forwards main only to a train SHA with green Tests, Bun Parity and Coverage; pre-push refuses a push to main unless it is Tier B green, a VERSION-only bump on a green parent, or docs-only (LOKI_D44_EMERGENCY override logged) | scripts/train-promote.sh, .githooks/pre-push, tests/test-train-promote.sh, docs/v10/TRAINS.md | HIGH | bash tests/test-train-promote.sh | building@2026-09-30T18:49Z | Source: D44 item 1. |
473
+ | E-143 | Follow-ups from E-87/E-140 reviews: pin audit_verdict created_at tie-to-failure with a test; test-no-tmp-sweep static scan also flags find -delete and find -exec rm shapes; move hardcoded /tmp fixtures (test-stop-process-group, test-audit-chain-cross-file, test-memory-cli, test-lsp-diagnostics-regression, test-watch-command, test-provider-source-cli, test-issue-providers) under loki_run_tmp_create | tests/test_release_required_ci.py, tests/test-no-tmp-sweep.sh, the listed tests | LOW | each named suite passes; a tie fixture expects rc 1 | merged@2026-09-30T19:19Z | Source: E-87 and E-140 TL reviews (both APPROVE). |
474
+ | E-144 | tests/test-v10-ops.sh hardcodes the live docs/v10/BOARD.md path (line ~589) and md5-checks it, so a concurrent board edit fails it and it breaks the no-home-path rule; point it at a fixture copy under a run-owned temp dir | tests/test-v10-ops.sh | LOW | bash tests/test-v10-ops.sh rc=0 while BOARD.md is edited concurrently; tests/test-no-hardcoded-paths.sh | released@2026-09-30T19:46Z | Source: E-142 TL review (v10-ops failed 2 checks once on a live board edit, passed on rerun). Released in v10.5.9 (merge 86e11caf is an ancestor of v10.5.9). |
475
+ | E-145 | tests/test-watch-command.sh leaves an orphaned run.sh (bash /tmp/loki-run-*.sh .../test-once/prd.md, reparented to launchd, sleep 300 loop) when the suite is killed by a timeout; two found and stopped by literal PID at 18:44Z (40 and 30 min old). Trap EXIT/TERM in the suite to stop its own recorded child PIDs, and move its /tmp paths under loki_run_tmp_create | tests/test-watch-command.sh | LOW | kill the suite with timeout 20; no orphan survives (check by recorded PID) | merged@2026-09-30T19:53Z | Source: pulse ORPHAN_WORKTREE twice. Coordinate with E-143 (same file, /tmp fixture move). |
476
+ | E-146 | structural-checks follow-ups from E-142 review: print a stderr warning when no base ref resolves (today it silently scans only the working tree, so committed violations pass); the added-line pattern ^\+[^+] skips an added line whose content starts with +; drop the unused SC variable in tests/test-structural-checks.sh:9 (SC2034) | scripts/structural-checks.sh, tests/test-structural-checks.sh | LOW | test cases for no-base-ref warning and a ++ added line, red first | merged@2026-09-30T19:19Z | Source: E-142 TL review (APPROVE with notes). |
477
+ | E-147 | tests/test-trust-core-probe-isolation.sh:37 wraps tests/test-trust-core-tests-detect.sh in `timeout 50`; on a loaded CI runner it hit rc=124 after all 9 visible cases passed (main Tests run 36760845105, shard 3/8, SHA 2b0d2e4d; the same SHA passed on train/4 run 36760063079). Measure the inner suite on CI, set the budget from the measurement with margin, and report the case that was running at the kill so a real hang still fails loudly | tests/test-trust-core-probe-isolation.sh, tests/shard-durations.tsv if its row changes | LOW | inner suite under a 3x load stressor passes; a planted hang still fails with the case name | released@2026-09-30T19:22Z | Source: D44 MAIN_RED on 2b0d2e4d (timeout flake). Rerun of the failed job in flight. Released in v10.5.8 (merge 2b0d2e4d is an ancestor of v10.5.8). |
478
+ | E-148 | Review follow-ups: test-stop-process-group.sh still kills by `pkill -f "loki-$PGTEST_TAG"` (pattern kill, forbidden by CLAUDE.md): replace with recorded PIDs or a process-group kill; test-audit-chain-cross-file.sh test 1 reads the real ~/.loki/dashboard/audit (fails on hosts with old tampered data): make it hermetic; E-147 timeout message says "after all cases passed" when there was zero output: say "no PASS output (possible hang before the first case)" | tests/test-stop-process-group.sh, tests/test-audit-chain-cross-file.sh, tests/test-trust-core-probe-isolation.sh | LOW | each suite passes on a host with a tampered ~/.loki audit file; no pkill -f remains | merged@2026-09-30T19:53Z | Source: E-143 and E-147 TL reviews (APPROVE with notes). |
479
+ | E-149 | loki-ts/tests/engine10/modernize/java_capture.test.ts "unitClassesFromGraph (M-04 integration)" times out at bun's 5s default under CI load (5169ms, Coverage run 36764748814 on train/5 1cd5feac; also failed on train/2 and in a local full run): measure, make it cheaper or set an explicit measured timeout; sweep modernize tests over 2.5s | loki-ts/tests/engine10/modernize/*.test.ts | LOW | before/after durations under 3x load; bun test tests/engine10/modernize 0 fail | released@2026-09-30T20:08Z | Source: D44 train/5 red (Coverage). Rerun of the failed job in flight. Released in v10.5.10 (merge 2394dc4a is an ancestor of v10.5.10). |
480
+ | E-151 | Release blocker guard: v10.5.10 (69ebc03e) shipped loki-ts/dist/loki.js.map stale because the bump changed it (version literal 10.5.9 to 10.5.10 changed length, shifting mappings) and the release commit staged a fixed file list. scripts/release.sh --bump-only should print every file it changed (including dist maps), and a check (in release.sh or a pre-push rule for "release: v*" commits) should refuse a release commit that leaves a stamped tracked file modified in the worktree | scripts/release.sh, tests/test-release-dist-guard.sh | LOW | fixture: a bump that changes the map, commit without it, check refuses; with it, passes | merged@2026-09-30T19:57Z | Source: v10.5.10 release; interim procedure: assert `git status --porcelain` is empty after the release commit before pushing. Map corrected on the next train. |
481
+ | E-152 | release.sh --bump-only "stage these files:" list must print a copy-paste command that works: loki-ts/dist is gitignored, so `git add loki-ts/dist/loki.js` refuses (seen 19:58Z on train/7); print `git add -f` for paths under an ignored directory (git check-ignore) and plain `git add` otherwise | scripts/release.sh, tests/test-release-dist-guard.sh | LOW | fixture with an ignored-but-tracked dist file: the printed command stages it | ready@2026-09-30T19:58Z | Source: first live use of E-151 --check-clean caught the unstaged dist (rc=1). |
482
+ | E-153 | Incident 20:16Z: a reviewer's fixture setup ran `git commit` with the MAIN CHECKOUT as cwd, committing author `t <t@t>` "init" that replaced the real package.json with a fixture and added sum.js/sum.test.js (local only, never pushed; undone with `git reset --keep 1c96ab16`). Guard: a pre-commit hook in .githooks refusing any commit in this repository whose author email is not the repo-local identity (git config user.email) unless LOKI_ALLOW_FOREIGN_AUTHOR=1, so fixture commits made in the wrong cwd fail loudly; fixture commits in real temp repos are unaffected | .githooks/pre-commit, tests/test-pre-commit-author-guard.sh | LOW | red first: in a scratch clone with the hook installed, `git -c user.email=t@t commit` is refused; the repo identity commits | ready@2026-09-30T20:17Z | Source: loki-seal r2 review fixture (agent stopped at 20:17Z). Reviewer prompts now require `git -C "$FIXTURE"` and a pwd check under LOKI_RUN_TMP. |
483
+ | S41-10b | Static-first fixed-rules block for the implement and fix briefs (S41-10 card remainder): a byte-identical rules block in the cache-stable prefix, per-task context after it; drive-letter and ~ plan paths filtered like absolute ones | loki-ts/src/engine10/stages/implement.ts, fix.ts (prefix only), loki-ts/src/e10ext/context.ts and tests | MEDIUM | red first: two different tasks produce byte-identical prefix bytes; core net-zero lines | merged@2026-09-30T19:19Z | Source: S41-10 reviews (APPROVE r2, remainder). |
484
+ | S41-20h | Medium-task MINING pass (no task building): shortlist 12 candidate merged PRs whose shape survives the one-file probe (a semantic or signature change in file A that an independently tested caller in file B must match; not helper extraction, parameter threading, moved classes or typing-only files), each with a written one-file-fix attempt run against the upstream tests and its result | eval/loki10/tasks/CANDIDATES.md (new) | MEDIUM | every shortlisted PR has a failing one-file attempt recorded with command and rc | merged@2026-09-30T19:19Z | Source: S41-20b/c/d/e/f: 11 of 16 candidates fell to a reviewer one-file fix; S41-20f built 0. |
485
+ | D44-A | Green main by construction: scripts/train-promote.sh fast-forwards main only to a train SHA with green Tests, Bun Parity and Coverage; pre-push refuses a push to main unless it is Tier B green, a VERSION-only bump on a green parent, or docs-only (LOKI_D44_EMERGENCY override logged) | scripts/train-promote.sh, .githooks/pre-push, tests/test-train-promote.sh, docs/v10/TRAINS.md | HIGH | bash tests/test-train-promote.sh | parked@2026-09-30T20:04Z | Source: D44 item 1. PARKED 20:05Z by the adoption directive (docs/v10/PROGRESS.md 20:05Z); resumes after Tier 0 is green. |
481
486
  | D44-B | Pulse RELEASE_CADENCE (green unreleased main commit older than 20 min) and MAIN_RED_BY_MERGE; hourly releases per hour into METRICS.md | scripts/v10-pulse.sh, scripts/metrics-releases-append.py, pulse tests | MEDIUM | the pulse test file plus the metrics script self-test | building@2026-09-30T18:11Z | Source: D44 items 5 and 6. |
482
487
  | D44-C | Structural checks under 10 s each (shard rows, hardcoded paths, registration, doc drift, line budgets) as scripts/structural-checks.sh, run first in Tier A (also on train/** push) and in the local-ci fast tier | scripts/structural-checks.sh, .github/workflows/tier-a.yml, scripts/local-ci.sh, tests/test-structural-checks.sh | MEDIUM | bash tests/test-structural-checks.sh | merged@2026-09-30T18:27Z | Source: D44 item 3; four red mains on 2026-09-30. |
483
488
  | S41-20d | Medium tier growth batch d: 4 new tasks from unused repos under the 2026-09-30 opus criteria (2 behavioral files, not fixed at ref, wrong-fix rejected, solvable from issue, refdiff, provenance) | eval/loki10/tasks/pub-* (new), refdiff, INDEX.md | HIGH | measure-size rc 0 and validate rc 0 on the new tasks | rejected@2026-09-30T18:49Z | Source: D43 item 2 (medium at 12 of 20). |
484
- | S41-20e | Medium tier growth batch e: 4 more tasks, repos disjoint from S41-20d | eval/loki10/tasks/pub-* (new), refdiff, INDEX.md | HIGH | as S41-20d | merged@2026-09-30T18:40Z | Source: D43 item 2. |
489
+ | S41-20e | Medium tier growth batch e: 4 more tasks, repos disjoint from S41-20d | eval/loki10/tasks/pub-* (new), refdiff, INDEX.md | HIGH | as S41-20d | released@2026-09-30T19:22Z | Source: D43 item 2. Released in v10.5.8 (merge 5cdbdc7b is an ancestor of v10.5.8). |
485
490
  | S41-16 | P0: Wall red-on-base is vacuous without python (launch error counted as failed on base) | see docs/v10/SCORECARD-PLAN.md | HIGH | per SCORECARD-PLAN.md card | released@2026-09-28T23:18Z | Source: D41, Architect plan 7f671f5c. Depends on D42. D42 (3) confirmed P0; merges before any wave-1 card touching wall, verify or Seal. Dispatched 21:42Z. r1 55e427ab opus REJECT: not_run never reaches seal (seal.ts:117 ignores not_run, so pass 1 fail 0 not_run 1 seals ALREADY_SATISFIED: a new false verdict); jest/vitest/bun non-zero exit without a parsed count read as red; AttributeError/NameError anywhere counted as repo red; system-interpreter results must be not_run. r2 dispatched 21:58Z. r2 d5bb05bd (seal refuses not_run; per-runner red rules; traceback path under repo; system interpreter not_run); core 4997; opus re-review 22:10Z. opus APPROVE r2 d5bb05bd (seal refuses not_run: real-seal test; receipts byte-stable when not_run 0; per-runner red rules; system interpreter not_run). Merged, dist rebuilt. Follow-up E-125. Released in v10.5.5 (merge 8788d54d is an ancestor of v10.5.5). |
486
491
  | S41-01 | Harness: accept partial-stream cost, allowlist LOKI_E10_CASCADE, new row fields | see docs/v10/SCORECARD-PLAN.md | HIGH | per SCORECARD-PLAN.md card | released@2026-09-30T18:50Z | Source: D41, Architect plan 7f671f5c. Depends on none. Dispatched 21:41Z. WIND-DOWN 2026-09-28: built at 68d1fc28 on slice-S41-01 (test-harness.sh 126/0; red vs its merge-base 0fe549a0 119/7, the 7 S41-01 legs; positive control provider_cost on e98f default-r1 pub-werkzeug-3121 gives 0.37101 with partial 0.0628). Sonnet TL APPROVE on content (af2109d7): partial-stream cost, never-silently-0, 7-knob allowlist, row fields, repriced files beside untouched originals. The 2 nocascade nulls are killed sessions with no partial-usage file and must stay null (E-98e engine gap). NOT MERGED: (1) rebase onto main conflicts in harness.py V10_ENGINE_ENV_ALLOWLIST (S41-09 and S41-11 added LOKI_E10_PREFIX and LOKI_E10_TRIM), keep one of each and rerun test-harness.sh; (2) SCORECARD-PLAN tags the card HIGH, so D12 needs an opus review before merge (this row said MEDIUM). WEDNESDAY STEP 1. Released in v10.5.7 (merge 9e815035 is an ancestor of v10.5.7). |
487
492
  | S41-02 | Scorecard tool: per-tier completion, cost per completed, p50, raw vs loki, into METRICS.md | see docs/v10/SCORECARD-PLAN.md | LOW | per SCORECARD-PLAN.md card | released@2026-09-28T22:26Z | Source: D41, Architect plan 7f671f5c. Depends on none. Dispatched 21:41Z. Built 42c0d88d (21/0; null-cost mutation flips n/a red to green, caught); replay reproduces E-98f exactly; EV-15 medium red on all 3 columns. Tech Lead review 21:51Z. Tech Lead APPROVE (definitions match section 2; replayed all 3 E-98f arms exactly). Merged. Released in v10.5.3 (merge a4cdb78f is an ancestor of v10.5.3). |
@@ -494,15 +499,15 @@ set is declared to avoid overlap with those and with each other.
494
499
  | S41-08 | Top model and deterministic-failure escalation | see docs/v10/SCORECARD-PLAN.md | HIGH | per SCORECARD-PLAN.md card | ready@2026-09-28T21:41Z | Source: D41, Architect plan 7f671f5c. Depends on S41-06. |
495
500
  | S41-09 | Lean stable prefix (flag) | see docs/v10/SCORECARD-PLAN.md | MEDIUM | per SCORECARD-PLAN.md card | released@2026-09-28T23:18Z | Source: D41, Architect plan 7f671f5c. Depends on S41-04. Dispatched 22:01Z. Released in v10.5.5 (merge ebb16a62 is an ancestor of v10.5.5). |
496
501
  | S41-14 | Wall in parallel with implement (item 4, target p50 not worse) | see docs/v10/SCORECARD-PLAN.md | HIGH | per SCORECARD-PLAN.md card | parked@2026-09-28T21:42Z | Source: D41, Architect plan 7f671f5c. Depends on D42, S41-16. D42 (2): deferred; E-98f shows no speed win (Wall-off p50 214s vs 209s) and it touches the moat. Reopen only if Wall is at least 15% of p50, with the Wall sealed and proven red on a clean base before any implement diff. |
497
- | S41-10 | Relevant context and a static-first brief | see docs/v10/SCORECARD-PLAN.md | MEDIUM | per SCORECARD-PLAN.md card | merged@2026-09-30T18:49Z | Source: D41, Architect plan 7f671f5c. Depends on S41-09. TL r1 REJECT: empty brief when plan has no relevant_files and selection matches nothing; rework adds a capped head fallback, drops absolute or .. plan paths, quotes test paths. |
502
+ | S41-10 | Relevant context and a static-first brief | see docs/v10/SCORECARD-PLAN.md | MEDIUM | per SCORECARD-PLAN.md card | released@2026-09-30T19:46Z | Source: D41, Architect plan 7f671f5c. Depends on S41-09. TL r1 REJECT: empty brief when plan has no relevant_files and selection matches nothing; rework adds a capped head fallback, drops absolute or .. plan paths, quotes test paths. Released in v10.5.9 (merge 635f5488 is an ancestor of v10.5.9). |
498
503
  | S41-11 | Rule-based trajectory trimming (flag) | see docs/v10/SCORECARD-PLAN.md | MEDIUM | per SCORECARD-PLAN.md card | released@2026-09-30T18:50Z | Source: D41, Architect plan 7f671f5c. Depends on S41-09. WIND-DOWN 2026-09-28: built at 8aafe341 on slice-S41-11 (trim.ts plus providers.ts wiring, 35/0; SDK exposes no Bash exit code to PostToolUse, sdk.d.ts:2677, so nonzero-exit uses a fail-safe heuristic). NEXT: TL review, then merge (rebase onto main: providers.ts and harness.py also changed). Released in v10.5.7 (merge 5e8c0eb2 is an ancestor of v10.5.7). |
499
504
  | S41-13 | Two parallel attempts for medium and large (flag) | see docs/v10/SCORECARD-PLAN.md | HIGH | per SCORECARD-PLAN.md card | ready@2026-09-28T21:41Z | Source: D41, Architect plan 7f671f5c. Depends on S41-05, S41-12. BINDING (E-141 opus review 2026-09-30): treeswap passes { ...process.env } to its git calls, so its caller must run where process.env is already scrubbed. engine10/supervisor.ts:200-201 scrubs only a workerEnv copy; if S41-13 calls treeswap from the supervisor it must pass the scrubbed env in as a parameter or run withholdGithubTokens on a copy inside treeswap, and its reviewer must check this. |
500
505
  | S41-15 | After-scorecard and defaults (flip only when green on small and medium) | see docs/v10/SCORECARD-PLAN.md | HIGH | per SCORECARD-PLAN.md card | ready@2026-09-28T21:41Z | Source: D41, Architect plan 7f671f5c. Depends on S41-13, S41-10, S41-11. |
501
506
  | S41-17 | Scorecard 95% intervals: bootstrap (seeded, 10000 resamples, per-task clustered over reps) CIs on completion, cost per completed and p50 for each arm and for the Loki minus raw difference; a mark is green or red only when the difference CI excludes 0, else inconclusive, and inconclusive blocks the tier verdict | eval/loki10/scorecard, eval/loki10/test-scorecard.sh | HIGH | bash eval/loki10/test-scorecard.sh | released@2026-09-30T18:50Z | Source: D43 item 2. Deterministic seed; a fixture where arms differ by noise only must read inconclusive, a clear gap must read green or red. Stdlib only. WIND-DOWN 2026-09-28: built at f3f1d985 on slice-S41-17 (test-scorecard.sh 43/43; new cases a to e are 27 pass 16 fail on the old scorecard). Seeded (41) 10000-resample percentile bootstrap clustered by task; marks need the difference CI strictly outside 0; headline cost uses the ratio against 0.5; over 2.5 percent undefined replicates downgrades to inconclusive. Not benchmarked at real-eval scale. NEXT: opus review (HIGH, flip gate), then merge. Released in v10.5.7 (merge 446a1c7f is an ancestor of v10.5.7). |
502
507
  | S41-18 | scorecard-run.sh resume: before each arm and rep, read that rep's --out file and pass the harness only tasks with no status ok row; a rerun after an interrupt or auth stop finishes the missing rows and never repeats done ones; auth_guard still runs before every rep | eval/loki10/scorecard-run.sh, eval/loki10/test-scorecard-run.sh | MEDIUM | bash eval/loki10/test-scorecard-run.sh | released@2026-09-30T18:50Z | Source: D43 item 4. Do not change auth_guard logic or harness.py (S41-01 owns it). Test with the stub arm: kill mid-rep, rerun, assert each task row appears exactly once per rep. WIND-DOWN 2026-09-28: built at 66cc1882 on slice-S41-18 (scorecard-run.sh resume; test-scorecard-run.sh 11/11, legs a to d red on the old script then green). LEFT: leg (a) seeds via a clean run, not a real SIGTERM mid-rep; no assertion for a capped (timeout) row; missing_tasks tier filter does not fail loud on an invalid tier; an empty tier now exits 0 instead of erroring. NEXT: close those 4, then TL review. Released in v10.5.7 (merge cad4615f is an ancestor of v10.5.7). |
503
508
  | S41-19 | Stage wall-clock profile: derive per-stage seconds (intake, plan, wall, implement, verify, fix, seal) per run from the preserved E-98f engine10 journals, publish a per-arm p50 and p90 table in METRICS.md and name the slowest stage | eval/loki10/stage-profile.py, docs/v10/METRICS.md | MEDIUM | python3 eval/loki10/stage-profile.py --self-test | released@2026-09-30T18:50Z | Source: D43 item 3. Read only on run data. If the journals lack stage timestamps, say so with evidence and propose the minimal event field instead of guessing. The cut slice is cut from its result. WIND-DOWN 2026-09-28: built at e06fa612 on slice-S41-19 (eval/loki10/stage-profile.py with --self-test, METRICS section over all 63 E-98f runs). Result: implement is 72.5 to 85.7 percent of wall-clock in every arm; wall is 23 to 29 percent and hits its own 90s timeout in 9/21 (default) and 11/21 (nocascade) runs, directly on the critical path, which clears D42 item 2's 15 percent revival bar for S41-14. NEXT: TL review and merge, then CTO call on reopening S41-14 (wall off the critical path) and an implement token/turn cut. Released in v10.5.7 (merge cf4360ed is an ancestor of v10.5.7). |
504
- | S41-20a | Medium tier growth, batch a: add 5 new pub-* medium tasks from pallets repos (click, flask, jinja, itsdangerous, markupsafe) meeting the D30 medium criteria in INDEX.md | eval/loki10/tasks/pub-* (new dirs only) | HIGH | measure-size.py and validate rc=0 on the new tasks; RED at base and GREEN with the merged upstream fix for each | merged@2026-09-30T18:27Z | Source: D43 item 2 (medium to 20). Return the INDEX.md lines in the report, do not edit INDEX.md (merge appends). No task whose issue is already present. WIND-DOWN 2026-09-28: 2 of 5 tasks built and self-verified at d8d8d41e on slice-S41-20a: pub-flask-6093 (fix flask#6096) and pub-click-3449 (fix click#3533), RED rc=1, GREEN rc=0, deletion mutant red, no-op baseline not completed; INDEX lines in the engineer report (not yet in INDEX.md). Stopped mid-screen: flask#5736 (asserts span 2 test files), flask#5526, itsdangerous#151. Rejected: click#2836 (emoji in issue body). NEXT: opus review of the 2 tasks, append INDEX lines, then resume the 3 candidates. |
505
- | S41-20b | Medium tier growth, batch b: add 5 new pub-* medium tasks from attrs, more-itertools, packaging, humanize, faker meeting D30 | eval/loki10/tasks/pub-* (new dirs only) | HIGH | as S41-20a | merged@2026-09-30T18:40Z | Source: D43 item 2. Same rules as S41-20a. WIND-DOWN 2026-09-28: 3 of 5 tasks built at 881126a0 on slice-S41-20b: pub-attrs-1327 (fix attrs#1328), pub-packaging-1162 (fix packaging#1163, hidden test trimmed, pins pytest<9), pub-humanize-103 (fix humanize#110), each RED rc=1, GREEN rc=0, deletion mutant red; D30 no-op baseline NOT run for any. INDEX lines in the engineer report. Stopped: faker#2206 (fix #2211) venv installed, RED/GREEN not run. more-itertools has no 2-source-file fixes (rejected). NEXT: run the no-op baseline on the 3, opus review, append INDEX lines, then finish faker#2206. |
509
+ | S41-20a | Medium tier growth, batch a: add 5 new pub-* medium tasks from pallets repos (click, flask, jinja, itsdangerous, markupsafe) meeting the D30 medium criteria in INDEX.md | eval/loki10/tasks/pub-* (new dirs only) | HIGH | measure-size.py and validate rc=0 on the new tasks; RED at base and GREEN with the merged upstream fix for each | released@2026-09-30T19:22Z | Source: D43 item 2 (medium to 20). Return the INDEX.md lines in the report, do not edit INDEX.md (merge appends). No task whose issue is already present. WIND-DOWN 2026-09-28: 2 of 5 tasks built and self-verified at d8d8d41e on slice-S41-20a: pub-flask-6093 (fix flask#6096) and pub-click-3449 (fix click#3533), RED rc=1, GREEN rc=0, deletion mutant red, no-op baseline not completed; INDEX lines in the engineer report (not yet in INDEX.md). Stopped mid-screen: flask#5736 (asserts span 2 test files), flask#5526, itsdangerous#151. Rejected: click#2836 (emoji in issue body). NEXT: opus review of the 2 tasks, append INDEX lines, then resume the 3 candidates. Released in v10.5.8 (merge 03db8ab4 is an ancestor of v10.5.8). |
510
+ | S41-20b | Medium tier growth, batch b: add 5 new pub-* medium tasks from attrs, more-itertools, packaging, humanize, faker meeting D30 | eval/loki10/tasks/pub-* (new dirs only) | HIGH | as S41-20a | released@2026-09-30T19:46Z | Source: D43 item 2. Same rules as S41-20a. WIND-DOWN 2026-09-28: 3 of 5 tasks built at 881126a0 on slice-S41-20b: pub-attrs-1327 (fix attrs#1328), pub-packaging-1162 (fix packaging#1163, hidden test trimmed, pins pytest<9), pub-humanize-103 (fix humanize#110), each RED rc=1, GREEN rc=0, deletion mutant red; D30 no-op baseline NOT run for any. INDEX lines in the engineer report. Stopped: faker#2206 (fix #2211) venv installed, RED/GREEN not run. more-itertools has no 2-source-file fixes (rejected). NEXT: run the no-op baseline on the 3, opus review, append INDEX lines, then finish faker#2206. Released in v10.5.9 (merge a11addb6 is an ancestor of v10.5.9). |
506
511
  | S41-20c | Medium tier growth, batch c: add 5 new pub-* medium tasks from werkzeug, jsonschema, and other pure-Python repos with pytest suites (for example marshmallow, httpx, pluggy) meeting D30 | eval/loki10/tasks/pub-* (new dirs only) | HIGH | as S41-20a | rejected@2026-09-30T18:27Z | Source: D43 item 2. Same rules as S41-20a. WIND-DOWN 2026-09-28: 1 of 5 tasks built at f6ea1d02 on slice-S41-20c: pub-httpx-2536 (fix httpx#2543; hidden test trimmed to test_url_query_encoding), RED 1 failed, GREEN 1 passed, deletion mutant red; D30 no-op baseline NOT run. Stopped: marshmallow#2170 (fix #2792, 3 source files) cloned only. jsonschema, pluggy, most httpx fixes are single-file (rejected); httpx#1850 needs Python below 3.13 (cgi). NEXT: no-op baseline, opus review, INDEX line, then marshmallow#2170. Medium tier after 20a/b/c: 7 plus 6 candidates = 13, still short of 20. |
507
512
  | E-98b | a spec_conflict implement exit still runs verify and fix; receipt keeps SPEC_CONFLICT | loki-ts/src/engine10/machine.ts, loki-ts/tests/engine10/machine*.test.ts | HIGH | fake-stage test red on main; core +3 max | released@2026-09-28T21:01Z | Source: MEDIUM-ANALYSIS.md. Dispatched 19:40Z sonnet; opus review. opus APPROVE 214b8dd2 (seal stays SPEC_CONFLICT through verify and fix; empty diff fails verify, no false pass); merged 97b80ca4; machine+budget 26/0. Released in v10.5.0 (merge 97b80ca4 is an ancestor of v10.5.0). |
508
513
  | E-98c | existing test files append-only in the implement brief; impactedTests falls back to named files when relevant_files is empty | loki-ts/src/engine10/stages/implement.ts, its test | MEDIUM | unit test red then green; core +2 max | released@2026-09-28T21:01Z | Source: MEDIUM-ANALYSIS.md. Dispatched 19:40Z sonnet. Tech Lead APPROVE b24f4da2; merged f4606246; implement+machine+budget 37/0. Released in v10.5.0 (merge f4606246 is an ancestor of v10.5.0). |
@@ -587,3 +592,32 @@ numeric rollup.
587
592
  | ID | Owner | Branch | File set | Tier | Status | Notes |
588
593
  |---|---|---|---|---|---|---|
589
594
  | PF-3 | kill-scan sweep | main @ b539391d | autonomy/loki, autonomy/verify.sh, .github, dashboard harness scripts, scripts/cleanup-test-processes.sh, tests/test-runtime-gate.sh, tests/test-backend-floor.sh, 8 new scoping tests | HIGH | released@2026-09-27T15:00Z | Round 6 fixed the port-overflow bug (narrowed range); unanimous 2/2 APPROVE. Merged to main via --no-ff (b539391d, 21 commits). All 9 new test files verified passing directly and registered in tests/run-all-tests.sh (6560ca95), pushed to origin (5b785b51..6560ca95). No version bump in this push; on main, not yet in a tagged release (latest tag is still v9.54.2 as of this correction). Shipped in v9.56.0 (merged before the 14:16:24Z release push of b651b98d; on npm 15:00:06Z). |
595
+
596
+
597
+ ## Adoption directive (2026-09-30, overrides the backlog above until Tier 0 is green)
598
+
599
+ Source: ~/git/autonomi-dev/research/2026-09-30-adoption/SWARM-PROMPT-ADOPTION.md. Tier 0 and Tier 1 run in parallel; unrelated rows are parked.
600
+
601
+ | ID | Goal | File set | Tier | Wall check | Status | Notes |
602
+ |---|---|---|---|---|---|---|
603
+ | A-01 | Release to `next`: both `npm publish` lines in release.yml get `--tag next`; a `promote` workflow (workflow_dispatch, exact version) runs the first-run gate against `loki-mode@<version>` installed from npm and only then runs `npm dist-tag add loki-mode@<version> latest`, moves Docker `:latest` and updates Homebrew; fix every check that assumes latest equals the newest release (E-135 post-release smoke, v10-pulse npm-latest comparison); fold in E-152 | .github/workflows/release.yml, .github/workflows/promote.yml (new), scripts/release.sh, scripts/v10-pulse.sh, tests for each | HIGH | fixture: release path publishes with --tag next; promote refuses without a gate pass on that exact version | merged@2026-09-30T20:28Z | Blocks every release until merged (releases held since 20:02Z). |
604
+ | A-02 | First-run gate: scripts/first-run-gate.sh (throwaway HOME, bugrepo from firstrun-repro/bugrepo-original, the README's default entry point, stub-provider mode for CI, real-provider mode for promotion) asserting: exit 0 only if npm test fully green; no new files outside the fix except .loki/; printed receipt digest equals what loki verify checks; loki verify OK exit 0; receipt signed; output 15 lines or fewer without --verbose; wall time recorded. Step 1: reproduce each defect from the directive on current main and classify code bug vs machine artifact | scripts/first-run-gate.sh, tests/test-first-run-gate.sh, docs/v10/FIRST-RUN-GATE.md (defect table) | HIGH | gate runs in stub mode in CI as a NON-required job; the defect table cites command and rc per defect | merged@2026-09-30T20:39Z | Gates `latest` (via A-01 promote). |
605
+ | A-03 | Tier 0 architecture split (opus Architect): slice items 1 Seal correctness, 2 clean first run, 3 signed by default, 5 honest outcomes into non-overlapping file sets with Wall checks, one writer per file, shrink-or-flat per D33; Seal correctness builds on slice-E-125 | docs/v10/ADOPTION-PLAN.md | HIGH | every slice card has a file set, a Wall check tied to a gate assertion, and a line budget | merged@2026-09-30T20:28Z | Item 4 (one engine) waits until 1 to 3 pass the gate. |
606
+ | A-04 | loki-seal: a Claude Code skill plus hook that runs the repo's real test suite on the current diff, refuses done on red or on deleted, skipped, xfailed or weakened tests or CI config (diff scan plus a tree hash of existing tests), prints a 5-line receipt; zero model cost, no dangerous flags; self-contained, no LICENSE file; SUBMIT.md drafts only; a 20-second vhs or asciinema script | packages/loki-seal/** | HIGH | fixture repos: deleting a failing test is blocked; a real fix passes; each weakening class caught | building@2026-09-30T20:28Z | Tier 1 wedge; answers issue #42. |
607
+ | A-101 | Receipt canonicalization and verify help (item 1) | see docs/v10/ADOPTION-PLAN.md A-101 | HIGH | first-run-gate assertion per plan card | merged@2026-09-30T20:39Z | Wave per plan section 5; one writer per file. |
608
+ | A-102 | Test-runner detection: node:test plus fixtures for all six runners (item 1) | see plan A-102 | HIGH | first-run-gate assertion per plan card | building@2026-09-30T20:28Z | Wave per plan section 5; one writer per file. |
609
+ | A-104 | Commit only the fix (items 1 and 2, v10) | see plan A-104 | HIGH | first-run-gate assertion per plan card | merged@2026-09-30T20:39Z | Wave per plan section 5; one writer per file. |
610
+ | A-104b | A-104 opus follow-ups: run the unstage reset as `git --literal-pathspecs reset` and check its rc (a path starting with `:(top)` was read as a pathspec and committed); match "manifest changed" per directory in monorepos (a stray lockfile in packages/b rode along with a packages/a manifest change); judge new lockfiles and Wall files against the run base, not HEAD, so files the agent commits during implement are also excluded | loki-ts/src/engine10/stages/seal.ts, loki-ts/tests/engine10/seal.test.ts | HIGH | fixtures for each case red first; seal-then-verify still matches | ready@2026-09-30T20:39Z | Source: A-104 opus review (APPROVE with notes). seal.ts writer order: after A-121. |
611
+ | A-120 | One signing key, auto-generated (item 3) | see plan A-120 | HIGH | first-run-gate assertion per plan card | building@2026-09-30T20:28Z | Wave per plan section 5; one writer per file. |
612
+ | A-132 | Legacy: no HANDOFF.md, USAGE.md or lockfile in a fix commit (item 2) | see plan A-132 | MEDIUM | first-run-gate assertion per plan card | building@2026-09-30T20:28Z | Wave per plan section 5; one writer per file. |
613
+ | A-133 | Legacy: skip Council evidence probes on a trivial diff (item 2) | see plan A-133 | HIGH | first-run-gate assertion per plan card | building@2026-09-30T20:28Z | Wave per plan section 5; one writer per file. |
614
+ | A-103 | Wall never leaves a test that fails for unrelated reasons (item 1) | see plan A-103 | HIGH | first-run-gate assertion per plan card | ready@2026-09-30T20:28Z | Wave per plan section 5; one writer per file. |
615
+ | A-111 | Empty, skipped or hung checks are NOT VERIFIED (item 5) | see plan A-111 | HIGH | first-run-gate assertion per plan card | ready@2026-09-30T20:28Z | Wave per plan section 5; one writer per file. |
616
+ | A-113 | Stop reasons: STALLED and the fatal classifier (item 5) | see plan A-113 | HIGH | first-run-gate assertion per plan card | ready@2026-09-30T20:28Z | Wave per plan section 5; one writer per file. |
617
+ | A-121 | v10 signs and verifies natively (item 3) | see plan A-121 | HIGH | first-run-gate assertion per plan card | ready@2026-09-30T20:28Z | Wave per plan section 5; one writer per file. |
618
+ | A-122 | Delete the GPG signing layer (item 3, deletion) | see plan A-122 | HIGH | first-run-gate assertion per plan card | ready@2026-09-30T20:28Z | Wave per plan section 5; one writer per file. |
619
+ | A-110 | One named outcome, fixed exit ladder, --json (items 1 and 5) | see plan A-110 | HIGH | first-run-gate assertion per plan card | ready@2026-09-30T20:28Z | Wave per plan section 5; one writer per file. |
620
+ | A-112 | Baseline subtract: judge only the delta (item 5) | see plan A-112 | HIGH | first-run-gate assertion per plan card | ready@2026-09-30T20:28Z | Wave per plan section 5; one writer per file. |
621
+ | A-123 | Doctor: only the selected provider blocks, one Ready line (item 3) | see plan A-123 | MEDIUM | first-run-gate assertion per plan card | ready@2026-09-30T20:28Z | Wave per plan section 5; one writer per file. |
622
+ | A-134 | Legacy: receipt after the final commit, chatter behind --verbose (item 2) | see plan A-134 | MEDIUM | first-run-gate assertion per plan card | ready@2026-09-30T20:28Z | Wave per plan section 5; one writer per file. |
623
+ | A-130 | v10 quiet by default (item 2) | see plan A-130 | MEDIUM | first-run-gate assertion per plan card | ready@2026-09-30T20:28Z | Wave per plan section 5; one writer per file. |
package/docs/v10/DEPS.md CHANGED
@@ -133,6 +133,9 @@ Inventory only. No dependency, lockfile, workflow or image was changed to produc
133
133
  | `.github/workflows/coverage.yml` | `actions/checkout@v4` | `v4 (resolves to v4.4.0)` | `v7.0.1` | MAJOR | tag-pinned (not SHA-pinned); floating tag v4 resolves to v4.4.0 (commit 11d5960a3267), behind latest release v7.0.1 (commit 3d3c42e5aac5); action.yml declares `using: node20` -- this action IS the deprecated Node 20 runtime |
134
134
  | `.github/workflows/coverage.yml` | `oven-sh/setup-bun@v2` | `v2 (resolves to v2.2.0)` | `v2.2.0` | up-to-date | tag-pinned (not SHA-pinned); floating tag v2 resolves to v2.2.0, which IS the latest release -- tracks latest within that major |
135
135
  | `.github/workflows/coverage.yml` | `actions/upload-artifact@v4` | `v4 (resolves to v4.6.2)` | `v7.0.1` | MAJOR | tag-pinned (not SHA-pinned); floating tag v4 resolves to v4.6.2 (commit ea165f8d65b6), behind latest release v7.0.1 (commit 043fb46d1a93); action.yml declares `using: node20` -- this action IS the deprecated Node 20 runtime |
136
+ | `.github/workflows/first-run-gate.yml` | `actions/checkout@v4` | `v4 (resolves to v4.4.0)` | `v7.0.1` | MAJOR | tag-pinned (not SHA-pinned); floating tag v4 resolves to v4.4.0 (commit 11d5960a3267), behind latest release v7.0.1 (commit 3d3c42e5aac5); action.yml declares `using: node20` -- this action IS the deprecated Node 20 runtime |
137
+ | `.github/workflows/first-run-gate.yml` | `oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6` | `0c5077e51419868618aeaa5fe8019c62421857d6 # v2` | `v2.2.0` | up-to-date | SHA-pinned |
138
+ | `.github/workflows/first-run-gate.yml` | `actions/upload-artifact@v4` | `v4 (resolves to v4.6.2)` | `v7.0.1` | MAJOR | tag-pinned (not SHA-pinned); floating tag v4 resolves to v4.6.2 (commit ea165f8d65b6), behind latest release v7.0.1 (commit 043fb46d1a93); action.yml declares `using: node20` -- this action IS the deprecated Node 20 runtime |
136
139
  | `.github/workflows/integrity-audit.yml` | `actions/checkout@v4` | `v4 (resolves to v4.4.0)` | `v7.0.1` | MAJOR | tag-pinned (not SHA-pinned); floating tag v4 resolves to v4.4.0 (commit 11d5960a3267), behind latest release v7.0.1 (commit 3d3c42e5aac5); action.yml declares `using: node20` -- this action IS the deprecated Node 20 runtime |
137
140
  | `.github/workflows/integrity-audit.yml` | `actions/setup-node@v4` | `v4 (resolves to v4.4.0)` | `v7.0.0` | MAJOR | tag-pinned (not SHA-pinned); floating tag v4 resolves to v4.4.0 (commit 49933ea5288c), behind latest release v7.0.0 (commit 820762786026); action.yml declares `using: node20` -- this action IS the deprecated Node 20 runtime |
138
141
  | `.github/workflows/integrity-audit.yml` | `actions/setup-python@v5` | `v5 (resolves to v5.6.0)` | `v7.0.0` | MAJOR | tag-pinned (not SHA-pinned); floating tag v5 resolves to v5.6.0 (commit a26af69be951), behind latest release v7.0.0 (commit 5fda3b95a4ea); action.yml declares `using: node20` -- this action IS the deprecated Node 20 runtime |
@@ -165,6 +168,9 @@ Inventory only. No dependency, lockfile, workflow or image was changed to produc
165
168
  | `.github/workflows/post-release-smoke.yml` | `actions/checkout@v4` | `v4 (resolves to v4.4.0)` | `v7.0.1` | MAJOR | tag-pinned (not SHA-pinned); floating tag v4 resolves to v4.4.0 (commit 11d5960a3267), behind latest release v7.0.1 (commit 3d3c42e5aac5); action.yml declares `using: node20` -- this action IS the deprecated Node 20 runtime |
166
169
  | `.github/workflows/post-release-smoke.yml` | `actions/setup-node@v4` | `v4 (resolves to v4.4.0)` | `v7.0.0` | MAJOR | tag-pinned (not SHA-pinned); floating tag v4 resolves to v4.4.0 (commit 49933ea5288c), behind latest release v7.0.0 (commit 820762786026); action.yml declares `using: node20` -- this action IS the deprecated Node 20 runtime |
167
170
  | `.github/workflows/post-release-smoke.yml` | `actions/setup-python@v5` | `v5 (resolves to v5.6.0)` | `v7.0.0` | MAJOR | tag-pinned (not SHA-pinned); floating tag v5 resolves to v5.6.0 (commit a26af69be951), behind latest release v7.0.0 (commit 5fda3b95a4ea); action.yml declares `using: node20` -- this action IS the deprecated Node 20 runtime |
171
+ | `.github/workflows/promote.yml` | `actions/checkout@v4` | `v4 (resolves to v4.4.0)` | `v7.0.1` | MAJOR | tag-pinned (not SHA-pinned); floating tag v4 resolves to v4.4.0 (commit 11d5960a3267), behind latest release v7.0.1 (commit 3d3c42e5aac5); action.yml declares `using: node20` -- this action IS the deprecated Node 20 runtime |
172
+ | `.github/workflows/promote.yml` | `actions/setup-node@v4` | `v4 (resolves to v4.4.0)` | `v7.0.0` | MAJOR | tag-pinned (not SHA-pinned); floating tag v4 resolves to v4.4.0 (commit 49933ea5288c), behind latest release v7.0.0 (commit 820762786026); action.yml declares `using: node20` -- this action IS the deprecated Node 20 runtime |
173
+ | `.github/workflows/promote.yml` | `docker/login-action@v3` | `v3 (resolves to v3.7.0)` | `v4.6.0` | MAJOR | tag-pinned (not SHA-pinned); floating tag v3 resolves to v3.7.0 (commit c94ce9fb4685), behind latest release v4.6.0 (commit dbcb813823bd); action.yml declares `using: node20` -- this action IS the deprecated Node 20 runtime |
168
174
  | `.github/workflows/provenance.yml` | `actions/checkout@v4` | `v4 (resolves to v4.4.0)` | `v7.0.1` | MAJOR | tag-pinned (not SHA-pinned); floating tag v4 resolves to v4.4.0 (commit 11d5960a3267), behind latest release v7.0.1 (commit 3d3c42e5aac5); action.yml declares `using: node20` -- this action IS the deprecated Node 20 runtime |
169
175
  | `.github/workflows/provenance.yml` | `actions/setup-node@v4` | `v4 (resolves to v4.4.0)` | `v7.0.0` | MAJOR | tag-pinned (not SHA-pinned); floating tag v4 resolves to v4.4.0 (commit 49933ea5288c), behind latest release v7.0.0 (commit 820762786026); action.yml declares `using: node20` -- this action IS the deprecated Node 20 runtime |
170
176
  | `.github/workflows/provenance.yml` | `oven-sh/setup-bun@v2` | `v2 (resolves to v2.2.0)` | `v2.2.0` | up-to-date | tag-pinned (not SHA-pinned); floating tag v2 resolves to v2.2.0, which IS the latest release -- tracks latest within that major |
@@ -402,14 +408,14 @@ Counts are all from the single `Bump` column (current line vs newest line in the
402
408
  - `websockets` -> `17.1` (MAJOR): dashboard/requirements.txt
403
409
  - **MEDIUM - one slice per Actions MAJOR**, deduped by action across workflows (bump to latest major AND SHA-pin with a `# vN` comment in the same slice, per D35):
404
410
  - `actions/cache` v4 (resolves to v4.3.0) -> `v6.1.0`: .github/workflows/test.yml
405
- - `actions/checkout` 11d5960a326750d5838078e36cf38b85af677262, v4 (resolves to v4.4.0) -> `v7.0.1`: .github/workflows/bun-parity.yml, .github/workflows/check-phase6-ready.yml, .github/workflows/claude-code-review.yml, .github/workflows/coverage.yml, .github/workflows/integrity-audit.yml, +16 more
411
+ - `actions/checkout` 11d5960a326750d5838078e36cf38b85af677262, v4 (resolves to v4.4.0) -> `v7.0.1`: .github/workflows/bun-parity.yml, .github/workflows/check-phase6-ready.yml, .github/workflows/claude-code-review.yml, .github/workflows/coverage.yml, .github/workflows/integrity-audit.yml, +18 more
406
412
  - `actions/download-artifact` v4 (resolves to v4.3.0) -> `v8.0.1`: .github/workflows/loki-enterprise.yml, .github/workflows/loki-issue-to-pr.yml, .github/workflows/release.yml
407
- - `actions/setup-node` v4 (resolves to v4.4.0) -> `v7.0.0`: .github/workflows/integrity-audit.yml, .github/workflows/loki-ci-example.yml, .github/workflows/loki-enterprise.yml, .github/workflows/loki-issue-to-pr.yml, .github/workflows/mutation-testing.yml, +10 more
413
+ - `actions/setup-node` v4 (resolves to v4.4.0) -> `v7.0.0`: .github/workflows/integrity-audit.yml, .github/workflows/loki-ci-example.yml, .github/workflows/loki-enterprise.yml, .github/workflows/loki-issue-to-pr.yml, .github/workflows/mutation-testing.yml, +11 more
408
414
  - `actions/setup-python` v5 (resolves to v5.6.0) -> `v7.0.0`: .github/workflows/bun-parity.yml, .github/workflows/integrity-audit.yml, .github/workflows/model-catalog-probe.yml, .github/workflows/nightly.yml, .github/workflows/parity-drift.yml, +5 more
409
- - `actions/upload-artifact` ea165f8d65b6e75b540449e92b4886f43607fa02, v4 (resolves to v4.6.2) -> `v7.0.1`: .github/workflows/check-phase6-ready.yml, .github/workflows/coverage.yml, .github/workflows/loki-ci-example.yml, .github/workflows/loki-enterprise.yml, .github/workflows/loki-issue-to-pr.yml, +8 more
415
+ - `actions/upload-artifact` ea165f8d65b6e75b540449e92b4886f43607fa02, v4 (resolves to v4.6.2) -> `v7.0.1`: .github/workflows/check-phase6-ready.yml, .github/workflows/coverage.yml, .github/workflows/loki-ci-example.yml, .github/workflows/loki-enterprise.yml, .github/workflows/loki-issue-to-pr.yml, +9 more
410
416
  - `azure/setup-helm` v4 (resolves to v4.3.1) -> `v5.0.1`: .github/workflows/integrity-audit.yml, .github/workflows/test.yml
411
417
  - `docker/build-push-action` v5 (resolves to v5.4.0) -> `v7.4.0`: .github/workflows/release.yml
412
- - `docker/login-action` v3 (resolves to v3.7.0) -> `v4.6.0`: .github/workflows/provenance.yml, .github/workflows/release.yml
418
+ - `docker/login-action` v3 (resolves to v3.7.0) -> `v4.6.0`: .github/workflows/promote.yml, .github/workflows/provenance.yml, .github/workflows/release.yml
413
419
  - `docker/setup-buildx-action` v3 (resolves to v3.12.0) -> `v4.4.1`: .github/workflows/release.yml
414
420
  - `docker/setup-qemu-action` v3 (resolves to v3.7.0) -> `v4.4.0`: .github/workflows/arm64-runtime.yml
415
421
  - `peter-evans/dockerhub-description` v4 (resolves to v4.0.2) -> `v5.0.0`: .github/workflows/release.yml
@@ -0,0 +1,39 @@
1
+ # First-run gate: defect reproduction (A-02, step 1)
2
+
3
+ Base: main at VERSION 10.5.10. Local CLI `bin/loki` from this worktree, never a global install.
4
+ Every run used a run-owned temp dir (`loki_run_tmp_create`), `HOME=<tmp>/home` (empty: no
5
+ `~/.claude` skills, no `~/.loki`, no dashboard), `LOKI_NO_BROWSER=1`, and the bugrepo from
6
+ `firstrun-repro/bugrepo-original/` (git repo, no remote, one commit).
7
+
8
+ Provider: a stub `claude` first on PATH (answers `--help` with `--settings`, exits 0, fixes
9
+ `sum.js` on the implement stage, signals completion; in the Wall stage it writes nothing).
10
+ `STUB_SPEC_CONFLICT` makes it print a `LOKI_SPEC_CONFLICT:` line. The v10 engine needs
11
+ `LOKI_E10_INVOKER=cli` to use the stub (its default SDK loop does not go through PATH).
12
+
13
+ Real provider: 2 attempts (`LOKI_ENGINE=v10`), both died in 1-3 s at cost $0 with
14
+ `Not logged in`. A throwaway HOME does not carry the Claude login (copying
15
+ `~/.claude/.credentials.json` was not enough). Real-provider reproduction of (a) and the
16
+ real-claude timing in (d) therefore rests on the recorded logs (`run1.log`, `run2.log`,
17
+ `raw.log`) plus the source reading below. The gate's `--real` mode must pass a token via
18
+ `ANTHROPIC_API_KEY` or `CLAUDE_CODE_OAUTH_TOKEN`, or run with the real HOME.
19
+
20
+ Entry point chosen for a new user (README.md "Use it"): `loki quickstart` is interactive and
21
+ asks for an idea, so it cannot fix a given repo; the README's one-shot task command is
22
+ `loki quick "<task>"`, which is what run1.log used and what the gate runs. The v10 engine
23
+ (`LOKI_ENGINE=v10 loki "<task>" --no-pr`) is tested as a second entry.
24
+
25
+ | # | Defect | Reproduced | Command and rc | Evidence line | Class | Source |
26
+ |---|--------|-----------|----------------|---------------|-------|--------|
27
+ | a | Wall commits Jest globals in a node:test repo | Not reproduced live (real provider unavailable in clean HOME); root cause confirmed in code | v10 stub run: intake event `"testmap":{"runners":["npm"],"tests":[]...}` | Wall brief is paths only ("framework named in repomap.txt"); the testmap reports `tests: []` and runner `npm` for a node:test repo, so nothing names node:test; `guessRunner` returns null for npm so the generated file is never run or checked | CODE BUG | `loki-ts/src/engine10/stages/wall.ts:76-86` (brief), `:110-117` (guessRunner), `loki-ts/src/engine10/testmap.ts:37` (npm coarse, no node:test detection) |
28
+ | b | npm test red (2 of 3) but the run exits 0 | Yes | v10 stub run, implement makes no diff, tests still red: rc=0, `seal ... SPEC_CONFLICT`; also `PARTIAL` rc=0 | `Verdict: SPEC_CONFLICT` then `rc=0` with the failing test untouched | CODE BUG | `loki-ts/src/engine10/supervisor.ts:387` (`res.verdict === "FAILED" ? 1 : 0`, so PARTIAL and SPEC_CONFLICT exit 0) |
29
+ | c | `loki verify` calls an untouched sealed receipt TAMPERED | Yes | `LOKI_ENGINE=v10 loki verify` after a sealed run whose receipt holds a non-ASCII char: rc=1 | `verdict: TAMPERED / receipt_sha256 mismatch: recorded "40b8a0ef..." computed 4a572bdf...` (receipt untouched; ASCII-only receipts verify UNSIGNED rc=0) | CODE BUG | `loki-ts/src/engine10/verify_cmd.ts:21-28` private `canonicalJson` does not `\uXXXX`-escape chars U+0080 and above; the sealer does at `stages/seal.ts:39-50` |
30
+ | d | `loki quick` slow, noisy, commits extra files | Yes for noise and commits; time partly (stub) | `loki quick "fix ..."` stub provider: rc=0, 111 s wall with a zero-latency stub (real: 97 s vs 10 s raw per run1.log/raw.log), 269 output lines | commit `Loki Mode session changes` adds `HANDOFF.md` and `package-lock.json` (+77 -1 for a 1-line fix); USAGE.md is also committed when the provider returns Markdown (run1.log) | CODE BUG | `autonomy/run.sh:11065-11233` (`commit_session_changes` stages everything), HANDOFF writer `autonomy/run.sh:29334-29344`, docs gate `autonomy/run.sh:14835-14853`, banner/gate logging throughout |
31
+ | e | Printed receipt digest differs from what proof verify checks | Yes | `loki quick` stub, then `loki proof verify <run>` rc=0 | Printed block: `Files changed | 2`, `Diff sha256 af01b739...`; `proof verify` recorded/current diff `25b61f73...` over 3 files (the printed block predates the session commit that adds HANDOFF.md and the lockfile) | CODE BUG | receipt generated before `commit_session_changes` (`autonomy/run.sh:11233`, proof call near `:8815-8935`); printer at `:4948-4964` |
32
+ | f | v10 prints UNSIGNED; two engines use different signing env vars | Yes (UNSIGNED); partially (env vars) | any v10 run: rc per verdict | `receipts will be UNSIGNED (no signing key configured; set LOKI_RECEIPT_SIGNING_KEY or LOKI_RECEIPT_SIGNING_KEY_FILE)` | CODE BUG (first-run default) | both honor `LOKI_RECEIPT_SIGNING_KEY[_FILE]` (`seal.ts:69`, `autonomy/lib/proof-generator.py:2185-2186`), but the legacy engine also has `LOKI_PROOF_GPG_KEY` (`proof-generator.py:2158`); with no key neither signs, so a new user always gets an unsigned receipt |
33
+ | g | doctor FAILs for Cline and Aider | No | `loki doctor` in clean HOME: rc=1 | `WARN Cline CLI - not found (optional)`, `PASS Aider CLI (v0.86.2)`; the only FAIL is `Claude login has EXPIRED` (stub claude / empty HOME) | MACHINE ARTIFACT | founder machine broken symlinks; not a code path (Cline and Aider are WARN when absent) |
34
+
35
+ Notes
36
+ - (c) needs a non-ASCII character anywhere in the receipt (task-derived reasons, repo paths,
37
+ check messages); real runs with a spec-conflict reason or unicode in a path hit it.
38
+ - (b) shows the exit code is wrong independent of (a): any non-FAILED verdict exits 0.
39
+ - Cost of all runs in this table: $0.00 (stub runs; both real attempts failed on login).
@@ -11,3 +11,9 @@ this file; each item says what the loop does meanwhile.
11
11
  | 4 | 2026-09-25 | Expected founder items for v10: SOC 2 audit, sales motion, Claude Marketplace partner application, GitHub and GitLab partnerships, pricing. | Contracts, money, legal. | Engineering ships readiness docs only, never a certification claim. |
12
12
  | 5 | 2026-09-25 | Five older stashes predate v10 (`stash@{1}`..`stash@{5}`, v9.22.10 era and three `autonomi/*` branches). Keep or drop. | Not created by the loop. | Leaves them alone. |
13
13
  | 6 | 2026-09-25 | On this Mac (macOS 27.0), `/usr/bin/python3` stops at "You have not agreed to the Xcode license agreements". Run `sudo xcodebuild -license accept` once. It may be why the seatbelt test in `tests/dashboard/test_build_supervisor.py` fails locally and blocks the pre-push hook (D5); not proven. | Needs sudo. | Investigates the seatbelt test separately (BACKLOG). |
14
+ | 7 | 2026-09-30 | License for `loki-seal` and the core: MIT/Apache, FSL-1.1-Apache, or keep BUSL. Also remove the "independent reimplementation" IP notice, and replace the CLA with DCO. | License and legal. | Builds `loki-seal` license-neutral with no LICENSE file. |
15
+ | 8 | 2026-09-30 | Create a public repo for `loki-seal`, and submit to the Anthropic plugin directory, awesome-claude-code, the e2b list (the CLA signature is pending on PR #1106) and skills registries. | Outward posting and new public repos. | Prepares the manifests and entry text in `packages/loki-seal/SUBMIT.md`. |
16
+ | 9 | 2026-09-30 | GitHub About text and topics (claude-code, claude-code-plugin, agent-skills, claude-skills, mcp). | Public repo settings. | Keeps a draft in `packages/loki-seal/SUBMIT.md`. |
17
+ | 10 | 2026-09-30 | Tagline veto: "Your agent says done. Loki proves it." | Brand. | Uses it as README line 1 by default. |
18
+ | 11 | 2026-09-30 | Opt-in first-run telemetry (install, first verified run, day-7 return). | Privacy and data. | Collects nothing. |
19
+ | 12 | 2026-09-30 | One relaunch after the first-run gate passes, ideally posted by an outside user. | Outward posting. | Drafts a Show HN and an r/ClaudeAI post in `packages/loki-seal/SUBMIT.md`, led by the GIF and the harness table, with no agent counts and no percentages. |
@@ -1530,3 +1530,49 @@ The swarm is stopped: .loki/V10-STOP exists, the loop has no wake-ups, and the c
1530
1530
  - train/5 staging (S41-20b-r2, E-115, E-142, S41-10, dist rebuild): local bun test 2581 pass 0 fail; blocked only by an E-142 false positive (dash/emoji scan flagged a byte-exact upstream refdiff and dist sourcesContent); exclusion fix 2e541b6a in TL review.
1531
1531
  - Rejections this hour, each with a reproduced attack: M-15 r3 and r4 (conformance bypass via pytest.toml, then via stdlib-shadowing modules), E-125 r4 (-ra -q addopts false not_run; forgeable exit via pytest.exit), D44-A r2 (hook refused a replay of the real v10.5.7 bump; flaky fixture), EV-12E (lg- task could omit tier), S41-10 r1 (empty brief). Reworks committed: M-15 8097d44a, E-125 018a6e06, D44-A d956294f; opus re-reviews held while opus share is 38 percent (D13 cap 30).
1532
1532
  - Medium tier: 12 on local main. S41-20d 0/4 and S41-20f 0 kept; S41-20g markdown-1390 needs one authored test; S41-20h mining shortlisted 2 (platformdirs#540, flask#5736), being built as S41-20i.
1533
+
1534
+ ## 2026-09-30T19:20Z (Chief of Staff and Release Manager)
1535
+ - v10.5.8 released at 346577f9 from 2b0d2e4d after main's own Tests rerun passed (run 36760845105 completed success 19:07:16Z; Bun Parity and Coverage success); Release run in flight, watcher armed.
1536
+ - train/5 pushed at 1cd5feac (S41-20b-r2, E-115, E-142, S41-10, S41-20g markdown-1390, E-144/E-146, mining notes, v10.5.8 merged): shellcheck rc=0, structural all passed, test-structural-checks 11/0, harness 130/0, scorecard 67/0, typecheck rc=0. Tier B watcher armed.
1537
+ - train/6 staging on local main: E-147, E-143, S41-10b, EV-12E, S41-20j notes (validate rc=0, structural all passed).
1538
+ - Medium tier: 13 of 20 on local main (counts line and disk agree, 13 task.json with tier medium). Three mining passes (S41-20h, S41-20i, S41-20j) screened about 30 PRs and kept 0: independent reviewers keep writing one-file fixes. Kept rule: a route that works only by import-time patching or injecting another module is contrived and does not fail criterion (b) (packaging-1162, markdown-1390). The D43 decision run stays blocked on the 20-task floor; mining continues with one engineer.
1539
+ - Opus share 40 to 50 percent this hour (D13 cap 30) from the HIGH review rounds on M-15, E-125 and D44-A; their next opus re-reviews are held until the share falls.
1540
+
1541
+ ## 2026-09-30T19:45Z (Chief of Staff and Release Manager)
1542
+ - Releases this hour: v10.5.8 (346577f9, verified: npm 10.5.8 gitHead 346577f9) and v10.5.9 (2c7685b7 from green train/5 1cd5feac; Release run finishing). train/5 Coverage went red once on a timing flake (java_capture M-04 test 5169ms against bun's 5s default; rerun success 19:29:17Z); guard E-149 merged (explicit 20s timeout on the five real-JVM tests, proven by a 1 ms mutation).
1543
+ - train/6 staging on local main (E-143, E-144/146, E-145, E-147, E-148, E-149, S41-10b, EV-12E, pub-dotenv-661, dist rebuilt): local gate so far shellcheck rc=0, structural all passed, harness 150/0, scorecard 67/0, changed suites rc=0, typecheck rc=0; full bun test running.
1544
+ - DECISION NEEDED (founder or CTO) 1, medium tier: 14 of 20. Six mining passes screened about 90 merged PRs and kept 2. In small Python libraries a bug fix is almost always one source file; two-file PRs are refactors or new APIs whose tests name the new symbol. Options: (a) run a D43 pilot now on the 14 medium tasks (not decision-grade, surfaces harness cost and failures), keep mining at one engineer; (b) allow authored issue-stated tests more broadly to close natural one-file routes; (c) widen the pool beyond small Python libraries (larger apps, other languages the harness can run). Default if no answer: (a) is NOT started (it spends provider budget with an uncalibrated governor); mining continues at one engineer.
1545
+ - DECISION NEEDED 2, D34 large-over-medium rule: EV-12F-a's three werkzeug large tasks (267, 468, 509 added lines) measure below pub-faker-2206 (declared medium, 1032 added lines, mostly word-list data), so the D34 gate "large must measure above the largest medium" fails. Options: count data-only lines (string literal lists) out of measure-size, re-tier pub-faker-2206, or change the rule. EV-12F-a held until decided. Its builder also excluded eval/loki10/tasks/*/hidden/** from the emoji scan because verbatim upstream tests contain emoji and editing them breaks the sha256 freeze; that exclusion needs a TL review.
1546
+ - Opus share 57 percent over the last hour (D13 cap 30): HIGH re-reviews held: E-138 (77 min), E-125 r5, D44-A r3, M-15 r5, plus EV-12F-a when unblocked.
1547
+
1548
+ ## 2026-09-30T20:05Z ADOPTION DIRECTIVE IN FORCE (Chief of Staff and Release Manager)
1549
+ - Source: ~/git/autonomi-dev/research/2026-09-30-adoption/SWARM-PROMPT-ADOPTION.md (founder, overrides BOARD priorities; operating model, D13, governor, trains, verified-tree releases and the git exception stay in force).
1550
+ - Releases: v10.5.10 (69ebc03e) was pushed at 19:53Z, before the directive, and reaches npm `latest`; it is left in place (reverting `latest` would itself move `latest` without a gate pass). From now on every release publishes to `next`; `latest` moves only through a promote step after scripts/first-run-gate.sh passes on that exact version. Release cron b33e6870 deleted at 20:02Z; releases HELD until A-01 (`--tag next` plus promote) merges, then the cron is recreated with a next-only prompt.
1551
+ - Board: adoption rows A-01 (release to next, promote), A-02 (first-run gate plus defect repro table), A-03 (opus Architect Tier 0 split), A-04 (packages/loki-seal) staffed; M-15, E-138, D44-A, EV-12F, EV-12G parked; medium-tier mining stopped. The two 19:45Z decisions (medium yield, D34 tiering) are SUPERSEDED: Tier 2's head-to-head needs 10 or more public tasks and the eval set has 28.
1552
+ - Founder queue rows 7 to 12 appended (license, public repo and submissions, About text, tagline veto, telemetry, relaunch); none acted on.
1553
+ - train/7 (E-150, E-151, dist rebuild correcting the v10.5.10 map) is gated locally; it may land on main, but no release is cut from it until A-01 merges.
1554
+ - Gate status per defect: not yet reproduced (A-02 step 1). next releases shipped: 0. latest promoted: no. loki-seal: building. Head-to-head: not run.
1555
+
1556
+ ## 2026-09-30T20:35Z hourly report (adoption directive)
1557
+ - Gate status per defect (docs/v10/FIRST-RUN-GATE.md on slice-A-02 f2e054f1; stub mode, current main 10.5.10):
1558
+ - (a) Wall commits Jest globals in a node:test repo: CODE BUG, root cause in code (wall.ts:76-86, testmap.ts:37); fix cards A-102, A-103, A-104.
1559
+ - (b) red suite exits 0: CODE BUG, reproduced rc=0 with SPEC_CONFLICT (supervisor.ts:387); cards A-110, A-111.
1560
+ - (c) verify TAMPERED on a fresh receipt: CODE BUG, reproduced rc=1 (verify_cmd.ts:21-28 vs seal.ts:39-50 non-ASCII escaping); card A-101.
1561
+ - (d) default path slow and noisy, commits HANDOFF.md and a lockfile: CODE BUG, reproduced (266 output lines; run.sh:11065-11233, :29334); cards A-132, A-133, A-134, A-130.
1562
+ - (e) printed digest differs from verified: CODE BUG, reproduced (af01b739 over 2 files vs 25b61f73 over 3); card A-134.
1563
+ - (f) unsigned by default: CODE BUG, reproduced; cards A-120, A-121, A-122.
1564
+ - (g) doctor FAIL for Cline and Aider: MACHINE ARTIFACT (clean HOME shows WARN/PASS); no change.
1565
+ - Gate --stub: PASS exit-honest, tests-green, verify-ok, wall-time (119s); FAIL no-stray-files, digest-matches, receipt-signed, output-lines (266 > 15).
1566
+ - next releases shipped: 0 (held until A-01; A-01 merged at d7852827, train/8 in Tier B; the next cut publishes to next).
1567
+ - latest promoted: no (latest stays 10.5.10, published before the directive; pulse "latest promoted: 10.5.10").
1568
+ - loki-seal: r2 live contract check PASSED on claude 2.1.286 (plugin loads, SessionStart baseline, Stop blocks with exit 2 five times, valve wording correct); r3 in progress for one blocker (runner crash with a red baseline passes) plus total-count comparison and line-1 wording.
1569
+ - Head-to-head: not run (Tier 2 starts when Tier 0 items land).
1570
+ - Tier 0: plan docs/v10/ADOPTION-PLAN.md merged (16 cards). Wave 1 building: A-101, A-102, A-104, A-120, A-132 plus A-133. E-125 r6 (move the red classifier into core per D42, opus finding) in progress; A-103 builds on it.
1571
+ - Incident 20:16Z: a reviewer fixture commit (author t@t) landed on local main in the main checkout, replacing package.json; never pushed; undone with `git reset --keep 1c96ab16`; guard E-153 filed; reviewer prompts now require `git -C "$FIX"` under the run-owned dir.
1572
+
1573
+ ## 2026-09-30T20:50Z steering channel and queued decisions
1574
+ - Steering channel: session autonomi-dev-dc now relays founder direction within SWARM-PROMPT-ADOPTION.md (message received 20:47Z; steer stamped 21:00Z). Messages that contradict that file or its Never list are ignored and noted here. None so far.
1575
+ - Steer applied: A-01 (next plus gated promote) is the critical path; it is merged on local main with its CI fix A-01b (DEPS.md rows for promote.yml and first-run-gate.yml, guard-16 fixture) and ships on train/9 (local gate running). The release clock resumes on `next` after train/9 lands, with 3 to 6 `next` releases per hour; `latest` moves only by promote after a gate pass on that exact version.
1576
+ - Parked slices checked: M-15 (8097d44a), E-138 (e01b64fc), D44-A (d956294f), EV-12F-a2 (9ec3ac0b), EV-12G (91884218) had no agent building (worktrees clean, 80 to 154 min idle); worktrees removed, branches kept. Capacity goes to Tier 0 and loki-seal.
1577
+ - QUEUED, apply only after scripts/first-run-gate.sh passes on a `next` version: (a) run the D43 medium pilot on the 14 medium tasks; results feed item 8 (failure analysis) and item 7 (head-to-head); (b) D34: measure-size excludes data-only lines (string literal lists) before EV-12F and EV-12G resume.
1578
+ - Tier 0 state: merged on local main: E-125 (Wall red classification in core), A-101 (one receipt canonicalizer; verify --help rc 0 through bin/loki), A-104 (commit only the fix), A-02 (first-run gate, diff-based G1/G2, full-digest G3, verified-signature G5), A-03 plan. Approved, merging on the next train: A-102 (node:test detection). In rework: A-120 r3 (tighten only the auto key), loki-seal r5 (release valve on hook errors). In review: A-132 plus A-133 (opus).