loki-mode 10.6.14 → 10.7.1

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 (123) hide show
  1. package/README.md +9 -5
  2. package/SKILL.md +2 -2
  3. package/VERSION +1 -1
  4. package/autonomy/acp-agent.py +128 -0
  5. package/autonomy/docker-run.sh +8 -0
  6. package/autonomy/issue-parser.sh +7 -7
  7. package/autonomy/issue-providers.sh +159 -1
  8. package/autonomy/lib/engine10-push.sh +4 -1
  9. package/autonomy/lib/review_risk.py +91 -0
  10. package/autonomy/loki +209 -19
  11. package/autonomy/mobile-verify.sh +66 -0
  12. package/autonomy/run.sh +44 -2
  13. package/completions/_loki +2 -0
  14. package/completions/loki.bash +1 -1
  15. package/dashboard/__init__.py +1 -1
  16. package/dashboard/api_runs_v1.py +80 -0
  17. package/dashboard/server.py +2 -0
  18. package/docs/INSTALLATION.md +5 -1
  19. package/docs/acp-editors.md +29 -0
  20. package/docs/api-runs-v1.md +12 -0
  21. package/docs/dev/architecture-reference.md +4 -0
  22. package/docs/merge-queue.md +13 -0
  23. package/docs/mobile-verify.md +11 -0
  24. package/docs/sentry-intake.md +13 -0
  25. package/docs/v10/BOARD.md +31 -6
  26. package/docs/v10/CONTROL-PLANE.md +7 -0
  27. package/docs/v10/CP-ENTERPRISE-UI.md +276 -0
  28. package/docs/v10/D61-SPEED.md +4 -0
  29. package/docs/v10/DECISIONS.md +115 -0
  30. package/docs/v10/ENGINE-LAWS.md +155 -0
  31. package/docs/v10/FAILURE-CLASSES.md +145 -0
  32. package/docs/v10/FOUNDER-QUEUE.md +1 -0
  33. package/docs/v10/GAP-RESEARCH-1003.md +32 -0
  34. package/docs/v10/GUIDE.md +4 -2
  35. package/docs/v10/L0-WAVE1.md +81 -0
  36. package/docs/v10/MORNING-BRIEF-1003.md +25 -0
  37. package/docs/v10/OPERATING-MODEL.md +1 -0
  38. package/docs/v10/PROGRESS.md +99 -0
  39. package/docs/v10/SWARM.md +32 -0
  40. package/docs/visual-evidence.md +5 -0
  41. package/loki-ts/dist/loki.js +805 -777
  42. package/loki-ts/package.json +1 -0
  43. package/mcp/__init__.py +1 -1
  44. package/package.json +1 -1
  45. package/packages/control-plane/dist/server.js +549 -21
  46. package/packages/control-plane/drizzle/0002_tiresome_fixer.sql +7 -0
  47. package/packages/control-plane/drizzle/0003_integrity.sql +4 -0
  48. package/packages/control-plane/drizzle/meta/0002_snapshot.json +409 -0
  49. package/packages/control-plane/drizzle/meta/0003_snapshot.json +437 -0
  50. package/packages/control-plane/drizzle/meta/_journal.json +14 -0
  51. package/packages/control-plane/src/db/migrate.ts +6 -2
  52. package/packages/control-plane/src/db/prune.ts +91 -0
  53. package/packages/control-plane/src/db/schema.ts +13 -0
  54. package/packages/control-plane/src/server/actions.ts +60 -0
  55. package/packages/control-plane/src/server/app.ts +59 -4
  56. package/packages/control-plane/src/server/integrity.ts +147 -0
  57. package/packages/control-plane/src/server/runs.ts +46 -4
  58. package/packages/control-plane/src/shipper/discover.ts +32 -3
  59. package/packages/control-plane/src/shipper/ship.ts +15 -0
  60. package/packages/control-plane/src/shipper/watch.ts +66 -0
  61. package/packages/control-plane/ui/dist/assets/index-DHDI_dHM.css +1 -0
  62. package/packages/control-plane/ui/dist/assets/index-DaQr0MPS.js +129 -0
  63. package/packages/control-plane/ui/dist/index.html +3 -3
  64. package/plugins/loki-mode/.claude-plugin/plugin.json +1 -1
  65. package/web-app/dist/assets/{AdminPage-oAFMNfKH.js → AdminPage-BJSU5hY1.js} +1 -1
  66. package/web-app/dist/assets/{Avatar-BA2gnzyf.js → Avatar-CSOSpw9c.js} +1 -1
  67. package/web-app/dist/assets/{Badge-Dsluv8n1.js → Badge-COr7vj0D.js} +1 -1
  68. package/web-app/dist/assets/{Button-WmW8A-iG.js → Button-DGoWFERp.js} +1 -1
  69. package/web-app/dist/assets/{CockpitPage-BR5o_RgL.js → CockpitPage-CBpWkNXY.js} +1 -1
  70. package/web-app/dist/assets/{ComparePage-3Eg-pKvO.js → ComparePage-BwT8vqrL.js} +1 -1
  71. package/web-app/dist/assets/{ErrorBoundary-DAfrnnsQ.js → ErrorBoundary-D7SicDDA.js} +1 -1
  72. package/web-app/dist/assets/{EvidenceReceiptPanel-wLZI4OTr.js → EvidenceReceiptPanel-bx-5liG2.js} +1 -1
  73. package/web-app/dist/assets/{GitHubIssuesPanel-BOuadisf.js → GitHubIssuesPanel-BAeeWLqY.js} +1 -1
  74. package/web-app/dist/assets/{GitHubPRsPanel-BTVoVpB3.js → GitHubPRsPanel-CssD8lGI.js} +1 -1
  75. package/web-app/dist/assets/{HomePage-s3GWdNEe.js → HomePage-SL5PT3m5.js} +2 -2
  76. package/web-app/dist/assets/{LoginPage-BfOZ566t.js → LoginPage-C8hFOZOM.js} +1 -1
  77. package/web-app/dist/assets/{MagicPage-9EZ83xOt.js → MagicPage-xHbHkrPf.js} +1 -1
  78. package/web-app/dist/assets/{MetricsPage-OJMOYhHP.js → MetricsPage-B_2CKFcC.js} +1 -1
  79. package/web-app/dist/assets/{NotFoundPage-_LoJ6KEv.js → NotFoundPage-CXwXMq35.js} +1 -1
  80. package/web-app/dist/assets/{ProjectPage-Duj5LSt6.js → ProjectPage-AaisMQI-.js} +3 -3
  81. package/web-app/dist/assets/{ProjectsPage-BBud3JrO.js → ProjectsPage-Cej5ResX.js} +1 -1
  82. package/web-app/dist/assets/{SettingsPage-C4zdgKno.js → SettingsPage-DKv4mn9H.js} +1 -1
  83. package/web-app/dist/assets/{ShowcasePage-Nb3ACjMR.js → ShowcasePage-Dkiyzne4.js} +1 -1
  84. package/web-app/dist/assets/{SystemSettingsPage-BDi49TDh.js → SystemSettingsPage-DaBLQ5dU.js} +1 -1
  85. package/web-app/dist/assets/{TeamsPage-HkcqkjLa.js → TeamsPage-B2yUr31k.js} +1 -1
  86. package/web-app/dist/assets/{TemplatesPage-CK796Y1F.js → TemplatesPage-CfYiANhU.js} +1 -1
  87. package/web-app/dist/assets/{TerminalOutput-BkvdNuT6.js → TerminalOutput-CMXoexLM.js} +1 -1
  88. package/web-app/dist/assets/{activity-DFgMgETR.js → activity-B0dzoZtY.js} +1 -1
  89. package/web-app/dist/assets/{bell-BInGGOMZ.js → bell-DFOTaSoo.js} +1 -1
  90. package/web-app/dist/assets/{bot-D43Yjsj4.js → bot-Dz-WSQyP.js} +1 -1
  91. package/web-app/dist/assets/{check-DFAGTLM9.js → check-L1QIRueJ.js} +1 -1
  92. package/web-app/dist/assets/{chevron-left-Drwin7n1.js → chevron-left-1TrnIEZS.js} +1 -1
  93. package/web-app/dist/assets/{circle-alert-DLWdb7V9.js → circle-alert-8Bf6xEDx.js} +1 -1
  94. package/web-app/dist/assets/{clock-Dsbi59u5.js → clock-DB8NE6P5.js} +1 -1
  95. package/web-app/dist/assets/{cloud-CUU-dXTP.js → cloud-DUSL3wZS.js} +1 -1
  96. package/web-app/dist/assets/{code-xml-CqIh7Wui.js → code-xml-DbjryWNl.js} +1 -1
  97. package/web-app/dist/assets/{database-DASN5Bfh.js → database-DrezrMSs.js} +1 -1
  98. package/web-app/dist/assets/{dollar-sign-ZvXzAihc.js → dollar-sign-CGbaLMzR.js} +1 -1
  99. package/web-app/dist/assets/{file-code-corner-ED_gN-N8.js → file-code-corner-Dfypa-r4.js} +1 -1
  100. package/web-app/dist/assets/{file-plus-BmBHndXt.js → file-plus-CzV5L2Gd.js} +1 -1
  101. package/web-app/dist/assets/{globe-Ck_iEzO4.js → globe-BoYjTwPQ.js} +1 -1
  102. package/web-app/dist/assets/{hammer-B8YKMard.js → hammer-WO-HuiyJ.js} +1 -1
  103. package/web-app/dist/assets/{index-D7SxmjVQ.js → index-CjIOUjnd.js} +3 -3
  104. package/web-app/dist/assets/{layers-CGVsj3wB.js → layers-Bn6jtKNk.js} +1 -1
  105. package/web-app/dist/assets/{loader-circle-FIH7UJDF.js → loader-circle-gERWRnmW.js} +1 -1
  106. package/web-app/dist/assets/{lock-vR8HoAnK.js → lock-BIiMLJq8.js} +1 -1
  107. package/web-app/dist/assets/{package-mZ6LFwXp.js → package-dLvDSVys.js} +1 -1
  108. package/web-app/dist/assets/{plus-CtnSVu0w.js → plus-BHM3ZLhZ.js} +1 -1
  109. package/web-app/dist/assets/{refresh-cw-BIapF6Gj.js → refresh-cw-BAp_alv6.js} +1 -1
  110. package/web-app/dist/assets/{rotate-ccw-LMkSsm21.js → rotate-ccw-CBhwq_MG.js} +1 -1
  111. package/web-app/dist/assets/{scroll-text-DQVlIhr9.js → scroll-text-DoS-6dfU.js} +1 -1
  112. package/web-app/dist/assets/{server-GqyhQxmz.js → server-5JgdDWQO.js} +1 -1
  113. package/web-app/dist/assets/{shield-alert-BrFTNJ-I.js → shield-alert-DjmlLT34.js} +1 -1
  114. package/web-app/dist/assets/{thumbs-up-lgwAEJFW.js → thumbs-up-BtiEXl3p.js} +1 -1
  115. package/web-app/dist/assets/{trash-2-C1cNysK4.js → trash-2-ClsWU_Vg.js} +1 -1
  116. package/web-app/dist/assets/{trending-down-DQFZ6j5s.js → trending-down-DPS4M7_X.js} +1 -1
  117. package/web-app/dist/assets/{trending-up-BJG_Zo8V.js → trending-up-D6OJ38-V.js} +1 -1
  118. package/web-app/dist/assets/{upload-BOY1aTpA.js → upload-DOCzLUpF.js} +1 -1
  119. package/web-app/dist/assets/{usePolling-DoAmsTNy.js → usePolling-CljQTWj_.js} +1 -1
  120. package/web-app/dist/assets/{user-iOfCe0_v.js → user-C0G82Weu.js} +1 -1
  121. package/web-app/dist/index.html +1 -1
  122. package/packages/control-plane/ui/dist/assets/index-CFfrqCx2.css +0 -1
  123. package/packages/control-plane/ui/dist/assets/index-Jt31nrK-.js +0 -114
@@ -0,0 +1,145 @@
1
+ # Failure classes (D86)
2
+
3
+ Each row answers five things:
4
+ - what the user saw, compared with raw;
5
+ - the law broken (docs/v10/ENGINE-LAWS.md);
6
+ - a sibling sweep;
7
+ - the one shared mechanism;
8
+ - a regression fixture.
9
+
10
+ No fix slice starts until its row exists (OPERATING-MODEL.md, Engine Laws line). Slice ids refer to the EL plan (Architect, 2026-10-03).
11
+
12
+ L0 review rule (ENGINE-LAWS.md L0): a fix that adds an `if` or a regex about the user's repo shape, language, framework or task wording is rejected. The mechanism column names a model judgment (a prompt or schema) plus an execution check. Tamper checks, terminal I/O and Loki's own files are the only exceptions. Wave 1 slices: docs/v10/L0-WAVE1.md.
13
+
14
+ ## FC-01 Verify ran from the repo root in a multi-root monorepo (FireLater#17)
15
+ - User saw: "Failed Suites 1" three times on backend/tests/unit/validation.test.ts. Raw claude ran the suite from backend/ and passed 43/43 in about 2 min.
16
+ - Law: L4.
17
+ - Siblings:
18
+ - verify.ts:50/142;
19
+ - verify.ts:179 subtractBase;
20
+ - wall.ts:83 base run;
21
+ - verify.ts:224 tsconfig only at the root;
22
+ - visual_evidence.ts:155-168;
23
+ - deep.ts;
24
+ - the brief's impacted commands;
25
+ - deferred by the FC-01 stopgap (de12ad0cb): deep.ts:84 full suite at the repo root, verify.ts:228 tsconfig root-only, verify.ts:231 ESLINT_CONFIGS root-only.
26
+ - Mechanism: Project Model packageRootOf/commandFor (EL-W1-01, EL-W1-04a/b). Interim: EL-W0-03.
27
+ - Fixture: tests/fixtures/firelater-17 plus the shape fixtures in benchmarks/tasks/shapes.
28
+
29
+ ## FC-02 A runner load error was treated as a code failure; two fix rounds, then STALLED
30
+ - User saw: 11 min, $2.66 and a FAILED draft PR for a bug that did not exist. Raw: done in 2 min.
31
+ - Law: L5 (and L1 on time and cost).
32
+ - Siblings:
33
+ - verify.ts:141-148 (a null summary counts as fail);
34
+ - fix.ts:12-13;
35
+ - machine.ts:171 stall;
36
+ - wall.ts classify(), which already separates not_run (reuse it);
37
+ - deep.ts;
38
+ - vitest "No test files found, exiting with code 0" counts as a pass with n=0, when it should be not_run (EL-W1-06).
39
+ - Mechanism: a result classifier with an owner (EL-W1-05). Only a FAIL owned by code drives fix and stall. Interim: EL-W0-02.
40
+ - Fixture: tests/fixtures/runner-outputs/vitest/load-error.txt (from seq 56), plus siblings for each runner.
41
+ - Sibling (2026-10-03): a change-introduced load error is a code fault. Base reproduction is necessary but not sufficient. The base rerun must be hermetic (an inherited editable install imports head code), and a check the task targets is never env-owned (7ad4a18b6, blocked in round 2). Superseded by L0-WAVE1 EL-W1-06: the harness gathers evidence and a separate reviewer call assigns the owner.
42
+
43
+ ## FC-03 Scope control reverted in-scope route edits
44
+ - User saw: the PR without the fix (routes/applications.ts, assets.ts and attachments.ts reverted).
45
+ - Law: L2 (the work surface held destructive authority) and L3 (a heuristic beat executed evidence).
46
+ - Siblings:
47
+ - scope.ts:30;
48
+ - unit_mode unitFence;
49
+ - discard.ts;
50
+ - commit_filter dropSet;
51
+ - implement restoreReadOnly (trust: Wall tests, stays);
52
+ - stop_restore.ts.
53
+ - Mechanism: the destructive-call registry (EL-W1-08) plus advisory scope (EL-W0-01, shipped as d574c85c5 and a089aa9ab). Enforce as an opt-in comes back in EL-W1-10.
54
+ - Fixture: replay of the FireLater diff. Every route file is kept, and NOT PROVEN lists them.
55
+
56
+ ## FC-04 Loki gave less intelligence than raw
57
+ - User saw: every session on sonnet, a 124s Wall that sealed zero tests, and fix rounds that never escalated.
58
+ - Law: L1.
59
+ - Siblings:
60
+ - session.ts:27 defaults to sonnet;
61
+ - sizing.ts:57/63/65 cascade;
62
+ - fix.ts:63 escalation gate;
63
+ - implement.ts:56 limit;
64
+ - the plan stage on the "fast" tier;
65
+ - no effort field in SessionRunOptions.
66
+ - Mechanism: a catalog best_default plus a top tier for each provider (EL-W0-06, EL-W0-07), and a size gate on the artifact (EL-W0-05).
67
+ - Fixture: a unit test that the default run.started.model equals the catalog best_default, plus a parity replay row.
68
+
69
+ ## FC-05 PR body printed "not recorded" for data the run had
70
+ - User saw: "What the issue asked", "Why", "Files in scope" and "Tests" all empty.
71
+ - Law: L7.
72
+ - Siblings:
73
+ - supervisor.ts:354 passes only seal;
74
+ - receipt wall_s is 387s against about 654s of stages;
75
+ - the issue comment body;
76
+ - the Slack summary;
77
+ - the --json envelope.
78
+ - Mechanism: outputsFromEvents (EL-W0-08) plus output schemas (EL-W1-09).
79
+ - Fixture: a golden from ~/git/FireLater/.loki/runs/e10-20261003T150744Z-59b1.
80
+
81
+ ## FC-06 Control Plane showed "in progress" 5857s after run.completed
82
+ - User saw: a run shown as live after it had ended.
83
+ - Law: L6.
84
+ - Siblings:
85
+ - ship_hook.ts:27, an unref'd timer with no final flush;
86
+ - supervisor.ts:155, a signal exit with no terminal event;
87
+ - Slack finished;
88
+ - LiveLine.
89
+ - Mechanism: a flush on terminal events plus a dead-pid reconciler (EL-W0-04, EL-W0-09, EL-W1-07).
90
+ - Fixture: tests/test-e10-kill-each-stage.sh plus a CP ingest test with a dead pid.
91
+
92
+ ## FC-07 The test suite leaked fixture runs into the founder's real Control Plane
93
+ - User saw: acme/widget and e10-t1.. runs in the real CP.
94
+ - Law: none of L1 to L7 fits. Proposed L8, "Tests never touch real user state", is a founder decision. This is a recurrence of GUARDS.md 12 (~/.gitconfig).
95
+ - Siblings:
96
+ - discover.ts reads instance.json via $HOME;
97
+ - the control.db path (control.ts:46);
98
+ - ~/.loki keys;
99
+ - the Slack webhook config;
100
+ - the memory store.
101
+ - Mechanism: a hermetic HOME prelude for every test (extend tests/lib/isolated-git-home.sh), plus a shipper that refuses temp and fixture repos. Cleanup: `loki control prune` (203d38544).
102
+ - Fixture: a lint that fails any test reaching $HOME/.loki without the prelude.
103
+
104
+ ## FC-08 A tampered receipt could render as VERIFIED in the UI
105
+ - User saw: a VERIFIED badge on a run whose log failed integrity.
106
+ - Law: L2 (trust fails closed) and L7.
107
+ - Siblings:
108
+ - the CP run list and run page;
109
+ - the Slack summary;
110
+ - the PR status;
111
+ - `loki status`.
112
+ - Mechanism: one verdict-display function that returns TAMPERED whenever the run is tampered or its seal is invalid (CPE-27).
113
+ - Fixture: an ingested run with tamper.detected never shows VERIFIED in any surface.
114
+ - Sibling follow-up (EL-FC08b): redact at source in the engine before hashing. Today the shipper (redactEvent) and the server (redactSecrets) rewrite event data before the CP can hash it, so an honest signed run holding a token reads UNVERIFIED ("log redacted before ingest; seal not checkable"), never TAMPERED and never VERIFIED. Redacting before the engine hashes and signs would make such runs checkable end to end.
115
+ - Sibling follow-up (deferred, not built in EL-FC08b): the shipper should send the sha256 of each line before redaction (alongside the redacted line). The CP could then check the seal over the original hashes and tell a genuine redaction from a downgrade (a FAILED log edited to PARTIAL plus a planted [REDACTED]); today such a log can only read "<verdict> (unattested)" or UNVERIFIED. This is the lasting fix for placeholder downgrades.
116
+ - Sibling follow-up: the Slack summary, PR status and `loki status` do not yet read the CP effective_verdict.
117
+
118
+ ## FC-09 A test-config edit outside scope can make broken code VERIFIED
119
+ - User saw: nothing yet (reproduced by the D12 scope review with a stub provider). The agent broke `add`, edited bunfig.toml to preload a new setup.ts that mocks the module, and the verdict was VERIFIED. This happens at ffb58278b and at HEAD.
120
+ - Law: L2 (trust fails closed).
121
+ - Siblings:
122
+ - CFG_ALWAYS in verify.ts (A-115) leaves out bunfig.toml;
123
+ - new preload or setup files are never flagged (only edits to existing tests are);
124
+ - the equivalents for other runners: vitest.config setupFiles, jest setupFiles and moduleNameMapper, pytest conftest.py, and go test flags in Makefiles.
125
+ - Mechanism: one runner-config registry for each runner. Any added or changed file that it names (configs, preloads, setup files, conftest) caps the verdict below VERIFIED, with NOT PROVEN naming the file.
126
+ - Fixture: a stub-provider repro for each runner (bun preload, vitest setupFiles, jest moduleNameMapper, pytest conftest).
127
+
128
+ ## FC-11 Repo-wide structural guards went red after slices passed narrowed reviews
129
+ - User saw: nothing yet; the 10.7.1 train was blocked on main 51e02b229 (2 failures in the full loki-ts bun test).
130
+ - Law: L7 (the release is a contract), and the D44 gate.
131
+ - Siblings:
132
+ - spawn_env_guard (e10ext/ship_hook.ts:10 missing env);
133
+ - the e10ext line budget (1509 of 1500), plus budgets that add up across slices (FC-10 +1, EL-W0-06 moved helpers to stay under the 5000 engine10 cap);
134
+ - local-ci fast tier timing out at 600s while bun test alone takes about 434s.
135
+ - Mechanism: every builder and reviewer brief names the structural guard set, and the full bun test runs in main after each merge batch, before the train.
136
+ - Fixture: tests/engine10/budget.test.ts and tests/runner/spawn_env_guard.test.ts on the merged tree.
137
+
138
+ ## FC-12 loki-ts bundles sibling-package code whose dependencies CI never installs
139
+ - User saw: nothing yet; Bun Parity on train/104 (17ece536b) failed with `Could not resolve: "drizzle-orm/bun-sqlite"`. `loki control prune` (2c81d9603, 203d38544) imports packages/control-plane/src/db/migrate.ts, and Bun resolves a bare import from the importing file's directory, not from loki-ts/node_modules. The main checkout built cleanly only because packages/control-plane/node_modules happened to exist.
140
+ - Law: L7 (the release is a contract: the build must reproduce from a clean checkout).
141
+ - Siblings:
142
+ - every workflow that runs `bun install` in loki-ts (test.yml, bun-parity.yml, coverage.yml, tier-a.yml, security-audit.yml, release.yml including its Docker `--production` job, nightly, parity-drift and mutation-testing);
143
+ - the shipper imports in e10ext/ship_hook.ts and commands/control.ts, which have no external deps today but share the same path.
144
+ - Mechanism: one `postinstall` in loki-ts/package.json installs packages/control-plane from its frozen lockfile, so every loki-ts install (CI, Docker, local) gets the sibling's deps. No per-workflow steps.
145
+ - Fixture: a clean `git worktree add` at HEAD, then `bun install --frozen-lockfile && bun run build` in loki-ts, and again with `--production`. Both exit 0 and the dist is byte-identical to the committed one; without the postinstall the build exits 1 with the error above.
@@ -22,3 +22,4 @@ this file; each item says what the loop does meanwhile.
22
22
  | 15 | 2026-10-01 | Run the REAL-provider first-run gate on the published `next` build: `CLAUDE_CODE_OAUTH_TOKEN=<token from "claude setup-token"> bash scripts/first-run-gate.sh --real --installed loki-mode@10.5.13` (or ANTHROPIC_API_KEY). The swarm has no provider credential in its environment and does not read stored secrets; the gate's throwaway HOME cannot use the keychain login. Stub mode on the installed npm package runs meanwhile. | Credential only the founder holds. | The promote milestone (real gate pass on a `next` version) stays blocked; stub-mode evidence only. |
23
23
  | 16 | 2026-10-01 | A Slack incoming-webhook URL for testing D51 item 4 (notify.sh on the v10 path: PR opened, BLOCKED, backlog finished). Provide it as an env var (for example `LOKI_SLACK_WEBHOOK_URL`) in the Release Manager session, never in a file or chat. | Needs a credential only the founder holds. | Until then notify.sh is tested against a local mock webhook; the real end-to-end check runs once the env var is set. | open |
24
24
  | 17 | 2026-10-01 | Ship bun with the npm package so `npm install -g loki-mode` runs the Loki 10 default without a separate bun install (P0-nobun, architect option B): add `"bun": "1.4.2"` as an optionalDependency. Cost: each install grows from 26.6MB to about 90-110MB (platform binary 62MB darwin-arm64, 80MB linux-x64, 86MB win-x64); `--omit=optional` and unsupported platforms keep the legacy engine with a plain message. The alternative (rewrite engine10 to run under node) is about 14 files and 300-450 lines, breaks the engine10 line budget and needs a third Bun Parity runtime. | Install size and dependency policy. | Builds only the resolver and the plain cannot-run message (both useful either way); npm users without bun keep getting legacy, and promote stays paused until the two-leg gate (E-167) lands. DECIDED B 07:35Z by peer relay (autonomi-dev-dc, citing the founder's 03:30Z delegation): the Loki 10 default is the product; a bigger install costs less than an inert default for most npm users; same pattern as esbuild and biome. Conditions: per-platform optional packages only; measured delta reported and held if above about 60MB per platform (architect figures 62-86MB exceed it; 07:35Z follow-up relay: decided (i) accept about 62-86MB, or (iii) bun's baseline build if smaller and Bun Parity passes; not (ii), since a first-run consent step breaks the one-command bar; record measured deltas in the CHANGELOG; document --omit=optional as the slim legacy path); --version probe plus plain start line when bun cannot run; Docker and Homebrew use the same resolver; E-167 two-leg gate stays. Founder may reverse. |
25
+ | 18 | 2026-10-03 | Screenshot veto for the 10.8.0 Control Plane rebuild (D83): the ground colour #F1F2F6 from the legacy dashboard, and keeping the legacy mascot in the sidebar brand. Also: light-theme status text uses AA-safe companion ink tokens (darker than the legacy hex) because the legacy success, warning, info and muted text fail WCAG AA on #F1F2F6. | Brand and visual design. | Builds with the legacy ground and mascot plus the AA ink tokens (D83 point 6); screenshots go in PROGRESS when CPE-02 lands. | open |
@@ -0,0 +1,32 @@
1
+ # GAP RESEARCH 1003: Loki vs Competitors
2
+
3
+ Research date: Oct 3, 2026. Scope: public product docs, launch announcements, funded claims.
4
+
5
+ ## What Each Competitor Ships That Loki Lacks
6
+
7
+ **Devin AI (Cognition Labs):** Desktop app with computer-use capability ($500/mo), self-review gate (catches 30% more issues), no manual intervention for 15-task planning. Publicly claimed features from https://www.buildfastwithai.com/ai-tools/devin and https://singularitymoments.com/devin-ai-coding-agent-guide/.
8
+
9
+ **Factory AI:** IDE integrations (VS Code, JetBrains, Vim native), role-based API for droid swarm control, Linear/Jira issue-to-code pipeline, OpenTelemetry adoption analytics, background cloud/local agents. Cited from https://www.digitalapplied.com/blog/factory-ai-multi-agent-coding-platform-review and https://fritz.ai/factory-ai-review/.
10
+
11
+ **8090 Software Factory:** Requirements-Blueprint-Planner workflow for regulated enterprises, audit-trail-first governance, AI agent skill marketplace. For regulated orgs only. Cited from https://www.8090.ai/docs/general/introduction and https://rywalker.com/research/8090-software-factory.
12
+
13
+ **Vorflux:** Browser-based test recording with mergeable PR video proof, adversarial reviewer agents (planner vs reviewer), GitHub/Linear/Slack/AWS native bindings, $15M seed. Cited from https://vorflux.com/docs and https://www.thesaasnews.com/news/vorflux-raises-15m-seed/.
14
+
15
+ **Claude Code:** Scheduled task execution on Anthropic cloud (runs without laptop), computer-use desktop capability, TypeScript mod/plugin system, interactive visualizations, multi-threaded project coordination. Cited from https://www.builder.io/blog/claude-code-updates and https://releasebot.io/updates/anthropic/claude-code.
16
+
17
+ ## Top 10 Gaps Ranked by User Value (Slice Candidates)
18
+
19
+ 1. **IDE/editor integration (VSCode, JetBrains)** - 80% of developers code in editors; CLI-only cuts reach by half.
20
+ 2. **Issue tracker native binding (GitHub Issues, Linear)** - work originates there; native pipeline removes copy-paste.
21
+ 3. **Browser test execution with proof video** - video proof that code works earns trust; text pass/fail claims don't.
22
+ 4. **Scheduled/background agent task queue** - devs want builds while laptop is off; async job model unlocks 24/7.
23
+ 5. **Self-review quality gate before PR** - automated issue-catching before human review saves review cycles.
24
+ 6. **Droid/agent role-based SDK/API** - programmatic control lets orgs embed Loki into their CI/CD automation.
25
+ 7. **Desktop application (GUI + CLI)** - non-engineer stakeholders (PMs, execs) need GUI visibility into builds.
26
+ 8. **Enterprise audit trail & on-prem option** - regulated industries won't use SaaS without HIPAA/SOC2 provenance.
27
+ 9. **Cost analytics per agent/task** - enterprises need chargeback models; opaque token spend blocks budget approval.
28
+ 10. **Local-only execution mode** - IP-sensitive work (defense, finance) requires on-premises guarantees.
29
+
30
+ ---
31
+
32
+ Research validated via web sources: Devin, Factory, 8090, Vorflux, Claude Code press/docs (Oct 2026).
package/docs/v10/GUIDE.md CHANGED
@@ -39,8 +39,10 @@ loki "fix the login redirect loop" --no-pr
39
39
  `loki quick "<task>"` is the small-task entry. It runs the same engine
40
40
  without opening a pull request (the legacy quick never opened one), and the
41
41
  engine's own sizing picks the lean path for a small task: Plan and Wall are
42
- skipped and implement starts on sonnet, escalating to the top model only
43
- on a real test failure (E-64; `LOKI_E10_CASCADE=0` turns the cascade off).
42
+ skipped and implement runs on your run's own model, like a raw session.
43
+ `LOKI_E10_CASCADE=1` opts in to the cheaper sonnet start (it prints and
44
+ records the downgrade); a repeated test failure always escalates up, never
45
+ down (Engine Law L1).
44
46
  `loki quick --help` and a flag-first `loki quick -v "<task>"` stay on the
45
47
  legacy quick.
46
48
 
@@ -0,0 +1,81 @@
1
+ # L0 Wave 1: the model decides, the harness proves
2
+
3
+ Founder directive, relayed by Loki steering at about 18:00Z on 2026-10-03, permanent: "never hardcode in the harness, work from 100k ft, use the intelligence of the model". L0 sits above L1 to L7 (ENGINE-LAWS.md section 2). This file slices it into Wave 1. Every slice touches trust, so each one gets an opus D12 review (unanimous).
4
+
5
+ ## The split
6
+
7
+ The model owns repo and task knowledge:
8
+ - layout and package roots;
9
+ - runner, command and cwd;
10
+ - whether there is a UI, and how to boot it;
11
+ - which files are in scope and which tests are impacted;
12
+ - task size;
13
+ - who owns a failure;
14
+ - what the issue asks.
15
+
16
+ The harness owns mechanism:
17
+ - running the commands the model proposed, and recording cwd, exit code, output and test counts;
18
+ - sandboxing, budgets and process control;
19
+ - signing, receipts and integrity;
20
+ - terminal I/O;
21
+ - deterministic tamper checks, such as test or runner config edited or weakened.
22
+
23
+ When execution contradicts the model, the output goes back to the model once. The verdict comes from execution evidence plus a separate reviewer call, never from the author.
24
+
25
+ ## Inventory (grep on main 11685c822, loki-ts/src)
26
+
27
+ Manifest probes:
28
+ - engine10/testmap.ts
29
+ - features/visual_evidence.ts
30
+ - runner/repo_profile.ts
31
+ - runner/quality_gates.ts
32
+ - engine10/modernize/inventory.ts
33
+ - util/update_check.ts (this reads Loki's own package.json, so it is not repo knowledge)
34
+
35
+ Hardcoded runner commands:
36
+ - engine10/testmap.ts (COMMANDS)
37
+ - engine10/stages/verify.ts
38
+ - engine10/stages/wall.ts
39
+ - engine10/stages/deep.ts
40
+ - engine10/types.ts
41
+ - features/wall_manifest.ts
42
+ - runner/quality_gates.ts
43
+ - runner/repo_profile.ts
44
+ - engine10/modernize/inventory.ts
45
+ - engine10/modernize/presealed_wall.ts
46
+
47
+ Task-wording heuristics:
48
+ - e10ext/scope.ts (keyword regex)
49
+ - engine10/sizing.ts (character counts and the named-file regex)
50
+
51
+ The peer counted 10 manifest-probe files and 17 runner-command files. The grep above finds fewer, so EL-W1-00 re-measures the inventory before cutting.
52
+
53
+ ## Slices (sonnet builders, opus D12 review)
54
+
55
+ | ID | Goal | File set | Wall checks |
56
+ |----|------|----------|-------------|
57
+ | EL-W1-00 | Static guard (L0): a CI test that fails when a new file under loki-ts/src probes a manifest name or embeds a runner command outside an allowlist. The allowlist starts as today's inventory and may only shrink. | new tests/engine10/l0_guard.test.ts | the guard goes red on a planted probe; the allowlist equals the inventory |
58
+ | EL-W1-01 | Project Model discovery: one intake session reads loki.yaml, AGENTS.md, CLAUDE.md, CONTRIBUTING, README, CI workflows, manifests and configs. It returns a schema-checked Project Model (packages, roots, runner, cwd and test, lint, build and start commands, UI and boot, workspace kind), each answer citing its source files. Cached in .loki/project.json, keyed by manifest and lockfile hash. | new engine10/project_model.ts, plus its schema and intake wiring | schema rejects an answer with no citation; cache hit when hashes are unchanged; FireLater fixture yields backend/ and frontend/ roots |
59
+ | EL-W1-02 | Calibration: the harness runs each proposed test command once (the Wall base run) and records cwd, exit code and counts. On contradiction (a load error or 0 collected), it sends the output back to the model once, then reruns. | project_model.ts calibrate(), wall.ts | a wrong command is corrected in one round; the second contradiction is recorded as harness ERROR |
60
+ | EL-W1-03 | Consumers: testmap, verify, wall, deep and visual_evidence read commands and roots only through the Project Model API. COMMANDS and the manifest probes lose their authority and stay only as discovery hints. | testmap.ts, verify.ts, wall.ts, deep.ts, visual_evidence.ts | the L0 guard allowlist shrinks; the Repo Shape Matrix stays green |
61
+ | EL-W1-04 | Scope: in-scope judgment is a model call citing the issue and the plan, and the keyword regex is a hint only. Advisory remains (L2). | e10ext/scope.ts, plan stage | FireLater#17 routes edits ruled in scope with a citation |
62
+ | EL-W1-05 | Sizing: a model call returns a size plus its reasons, or the size folds into discovery. The character counts become a fallback only when the model call errors. | engine10/sizing.ts | the reasons are recorded in the receipt |
63
+ | EL-W1-06 | Failure ownership (supersedes the FC-02 regex classifier, 7ad4a18b6 blocked in round 2): the harness gathers evidence (a hermetic base rerun with PYTHONPATH, VIRTUAL_ENV and the user site scrubbed, and traceback paths checked against the base dir). A separate reviewer call assigns the owner. Checks the task targets are never env-owned. | util/runner_load_error.ts, verify.ts, seal | round-2 repros B1 and B2 both end as code-owned |
64
+ | EL-W1-07 | Visual evidence: whether there is a UI, and how to boot it, comes from the Project Model. | features/visual_evidence.ts | FireLater frontend/ is found; a no-UI repo gets an honest "no UI in Project Model" |
65
+
66
+ Order: 00 and 01 first, then 02 and 03. 04, 05 and 07 can run in parallel with 02 once 01 lands. 06 starts after 01 (it consumes the commands). The hardcoded tables are deleted only after the model path is green on the Repo Shape Matrix.
67
+
68
+ ## In-flight reconciliation
69
+
70
+ - **FC-01 monorepo, aac46dc26 (a446b394845a709ac):** a minimal stopgap hint only, superseded by EL-W1-01. The builder was told at 17:42Z.
71
+ - **FC-02 runner-load, 7ad4a18b6:** blocked in round 2, and folded into EL-W1-06 rather than patched as a regex classifier.
72
+ - **FC-09 runner-config registry, f4eccfeac:** a deterministic tamper check (mechanism, which L0 allows). Its re-review continues.
73
+ - **FC-10 terminalWidth:** terminal I/O, which L0 allows, so its TL review continues.
74
+ - **EL-W0-06 model default, 841065e46:** consistent with L1 and L0, so its re-review continues.
75
+
76
+ ## Review rule (binding for every D12 reviewer)
77
+
78
+ Reject any change that adds an `if` or a regex about the user's repo shape, language, framework or task wording. The fix is a prompt or schema change plus an execution check. Exceptions are only:
79
+ - tamper checks;
80
+ - terminal I/O;
81
+ - Loki's own files.
@@ -0,0 +1,25 @@
1
+ # Morning brief, 2026-10-03 (refreshed 16:29Z, next refresh 17:30Z)
2
+
3
+ ## Shipped today
4
+ - 8 releases in 24h. The newest is v10.6.14 (tag 7fbbefc30, 14:01Z). npm latest is still 10.6.14.
5
+
6
+ ## 10.7.0: one big train, minor bump (D82, D84, D85)
7
+ - train/102 (cf5be9026) went red: Tier A (shard-durations rows) and Tests (help and completion registration for acp and merge, `loki web --port` validation, a CP-INGEST type error, the gitleaks baseline count).
8
+ - All of them were fixed in place (D85) and rerun locally green. train/103 (d9704dfc4) was pushed at 16:28Z and CI is running. Release follows a green Tests run.
9
+ - In: the speed path on by default (with the fix for its 9 reds), quiet-mode live line, the cost cap, loopback-only default listeners, Playwright e2e with video, `loki merge`, `loki review --risk`, project memory, mobile emulator tests, the REST runs API, ACP, Sentry intake, and Control Plane zero-setup ingest, legacy entry points and live runs.
10
+ - Moved to 10.7.1: the empty-Wall seal (it failed the engine e2e done run), CP roles and OIDC, the liveline CP URL, the monorepo RealBaseTestRunner, and mobile-verify wiring.
11
+
12
+ ## 10.8.0: enterprise Control Plane rebuild (D83)
13
+ - On cpe-base: shell, home, runs, run thread, compose, cost, work, receipts, models, plans, merge queue and PR risk pages, a11y and contrast fixes. The suite is 235/0 and UI tsc is 0.
14
+ - Settings (loki.yaml write-back, CPE-14) has been blocked by opus three times, on YAML 1.1 parser differences. The shell-command lock now holds. A fixer is on the remaining quoting gaps.
15
+ - Opus security review is running on the merge-run endpoint.
16
+ - Next: CPE-19 workspaces, CPE-20 integrations, and CPE-24 deleting the legacy dashboard last.
17
+
18
+ ## Risks
19
+ - Host load makes the pulse git and ps probes time out, so many metrics read UNKNOWN.
20
+ - The weekly projection is over the pulse ceiling. Your D68 85% live /usage floor governs.
21
+
22
+ ## Needs you
23
+ - FOUNDER-QUEUE 18: a screenshot veto on the 10.8.0 look.
24
+ - Items 15 and 16 (real-provider gate, Slack webhook) still park the real-model E2E legs.
25
+ - Items 7 and 8 gate the external loki-seal launch.
@@ -42,6 +42,7 @@ The CEO is Lokesh Mure (Loki), the founder. Everyone else is an agent. The compa
42
42
 
43
43
  ## Discipline
44
44
  - Evidence or it did not happen: every claim cites a command plus its exit code or output line.
45
+ - Engine Laws (D86): docs/v10/ENGINE-LAWS.md binds every stage. No bug becomes a fix slice until its row is in docs/v10/FAILURE-CLASSES.md (user-visible vs raw, law broken, sibling sweep, one shared mechanism, regression fixture); reviewers reject stage-only patches when siblings exist.
45
46
  - Every incident becomes a guard with a test (docs/v10/GUARDS.md, D26).
46
47
  - The pulse block (scripts/v10-pulse.sh) is injected every turn. Act on the top VIOLATION first.
47
48
  - Never kill by name or pattern, force-push, git add -A, or bypass branch protection.
@@ -2091,3 +2091,102 @@ The swarm is stopped: .loki/V10-STOP exists, the loop has no wake-ups, and the c
2091
2091
  - G-04 built (0a90538a8, 25/0). Opus HIGH review is running.
2092
2092
  - W1-S3: TL BLOCK, because its wiring test survives a mutation. A test-only r2 fix was requested.
2093
2093
  - train/99 Tests: the full rerun failed on the same shards 3, 4 and 7, so the failure is real. P0-T99-ROUTING is open and building (sonnet). train/99's release and train/100 are held until it is green.
2094
+
2095
+ ## 2026-10-03T13:22Z (CoS)
2096
+ - P0-T99-ROUTING merged as ec5cc3398 after a sonnet TL APPROVE. Tier corrected HIGH to MEDIUM because it is a parser and test fix, not moat. The 5 suites are green on macOS and in ubuntu docker. Advisory carded: change sed `\s` to `[[:space:]]` at the root.
2097
+ - W1-S3 merged with dist f0ece075d. On main: engine10 1199/0, tsc 0, dist guard 13/0.
2098
+ - train/100 pushed at 4c39bb68f (13:22:12Z), superseding train/99. Waiting on Tests, Bun Parity, Coverage and Security.
2099
+ - Drift audit (turn 2226):
2100
+ - `git worktree list` reports 220 worktrees. Merged-slice worktrees will be removed in the end-of-window pass (D69, recorded paths only).
2101
+ - Opus share is 38% against its 30% budget. Builders and LOW/MEDIUM reviews stay on sonnet.
2102
+ - The pulse git probes are timing out under load, so its UNKNOWN metrics are not regressions.
2103
+ - In flight: SEAL r10 opus HIGH review (it also covers ratifying D80) and G-04 r2 build.
2104
+
2105
+ ## 2026-10-03T14:22Z (CoS)
2106
+ - G-04 cloud-dispatch merged after opus r3 APPROVE (42ce26e09). Advisories carded on its BOARD row.
2107
+ - train/100: the first Tests run failed P9.injection-cannot-reach-token in the [default] leg. The full rerun of run 37125941522 (attempt 2) was all green. train-cycle promoted it and tagged v10.6.14 at 7fbbefc30 (14:01:46Z). As of 2026-10-03T14:22Z, the Release job is waiting on required-ci (Security Audit), and npm latest and next are still 10.6.13.
2108
+ - Local main was rebased onto origin/main (7fbbefc30) after the usage-readings commit, with no conflicts.
2109
+ - SEAL-FORGED-LINES merged. r11 was blocked by opus F1 (the env-scrub mutant survived at 132/0). r12 added the childEnv unit and E2E tests, and the opus re-review APPROVED it (scrub mutant goes 132/2 red; M2a, M2b and M3 were caught). The 12 round commits were cherry-picked; the SEAL suite is 134/0 on main, and CHANGELOG keeps only the final entry (899d200a3).
2110
+ - Fast gate on main: rc=124 (590s timeout under load). There is one real failure: the structural emoji scan flags U+2713, U+2714 and U+2716 in the SEAL code, tests and README. The r13 escape-only fix is building. train/101 is held for it.
2111
+ - P0-P9-DEFAULT-PUSH: root cause found. The region guard in autonomy/lib/engine10-push.sh, `printf | grep -q` under pipefail, gets SIGPIPE 141 under load, so the post-session push is refused. The fix (b2eebc22f) uses a pipe-free bash match. Repro under docker load: 5/18 failed before the fix, 0/10 after. Opus HIGH review is running. The engineer also saw P2 and P7 moat FAILs in that worktree, with the cause unknown; the reviewer will bisect them.
2112
+ - Drift audit (turn 2244): BOARD has ready=18, 14 of them dependency-blocked. The pulse git and ps probes are still timing out, so UNKNOWN metrics there are not regressions. Opus share is 37% against its 30% budget, and opus is used for HIGH reviews only.
2113
+
2114
+ ## 2026-10-03T14:35Z (CoS)
2115
+ - v10.6.14 is on npm latest. `npm view loki-mode dist-tags` at 14:33Z returned latest=10.6.14 and next=10.6.14 (D49 auto-promote). The peer was messaged with the version and what users can now do.
2116
+ - train/101 (e14834e53): CI as of 14:34Z.
2117
+ - Passed: First-run gate, Bun Parity, Tier A and Security Audit.
2118
+ - In progress: Tests and Coverage (baseline).
2119
+ - ADV-PUSH-RC3 merged at 511937aec after sonnet TL APPROVE.
2120
+ - `/bin/bash tests/test-engine10-push.sh` gives 43/0 on main.
2121
+ - Both reviewer mutations go red at 41/2: the region check forced true, and the guard loop deleted.
2122
+ - ADV-T99-SED built at 41d9223a6, and TL review is in flight.
2123
+ - The builder also converted three section extractors to sed -E, because BSD sed lacks `\|` in BREs.
2124
+ - The reviewer must prove GNU output is unchanged.
2125
+ - ADV-SEAL-JEST-E2E is still building.
2126
+ - Drift audit (turn 2250):
2127
+ - Only the main checkout pushes.
2128
+ - BOARD and commit steps were run in separate calls.
2129
+ - Builders and TL reviewers are on sonnet.
2130
+ - No product code was written by the CoS.
2131
+ - The ready queue is still dependency-blocked: 14 of 18 rows.
2132
+ - The weekly projection of 141% is overridden by the D68 85% live floor.
2133
+
2134
+ ## 2026-10-03T14:48Z (CoS)
2135
+ - train/101 Tests (run 37129766523) was red on two deterministic failures, handled per D81 (fix forward, revert deadline about 15:05Z).
2136
+ - T101-G04-DUPROW merged at 8b314af87 after TL APPROVE.
2137
+ - It was a test bug: GNU grep refuses input == output.
2138
+ - Weakening the writer's check makes R2-3 go red on ubuntu and macOS (83/2). Green is 85/0 on both.
2139
+ - T101-SEAL-NODEFLAG built at 72aa6c4ba (test only).
2140
+ - Cause: CI Node 22 lacks --test-isolation.
2141
+ - TL review is in flight. The reviewer must explain the 7 non-pass results on node:22 and mutation-prove the r7 test still guards on Node 22.
2142
+ - ADV-SEAL-JEST-E2E (e0be2eb32) is in TL review and merges after NODEFLAG.
2143
+ - Drift audit (turn 2256):
2144
+ - The peer's train/101 report was verified independently from the CI job logs before acting.
2145
+ - No product code was written by the CoS.
2146
+ - BOARD and commit steps ran in separate calls.
2147
+ - Opus share has fallen to 26.5%, under its 30% budget.
2148
+
2149
+ ## 2026-10-03 15:21Z (CoS): 10.7.0 assembly, D83 opened
2150
+ - Merged on local main for 10.7.0 (unpushed, origin is v10.6.14): all D82 slices (COSTCAP, FLAGS, A..J, GAPS), DOCKER, LIVELINE, CP-INGEST, CP-LEGACY, CP-UI-LIVE; dist rebuilt (7223d72c0), test-release-dist-guard 13/0.
2151
+ - Opus HIGH reviews: D82-WALL0 BLOCKED (no-runner cut turned FAILED into PARTIAL), fixed in f27eba9c6, re-review running. CP-UI-SHELL start endpoint BLOCKED (Host-header-only loopback check, reproduced LAN spawn), fix running. Both miss 10.7.0 unless APPROVE by 15:45Z.
2152
+ - D83 recorded (e6d6c362f, addendum 29c367a91): enterprise Control Plane UI on the legacy design, lean conversation layout, full CLI parity; opus architect writing docs/v10/CP-ENTERPRISE-UI.md for 10.8.0.
2153
+ - D82-FIXREDS (9 loki-ts reds after the speed flip) still running; if a red is a real speed regression, the flip is reverted for 10.7.0.
2154
+ - Drift audit (turn 2280): reviews were D12 opus for HIGH; no product code by CoS; BOARD not yet written this window (due at the freeze, separate call); opus share 9.3%.
2155
+
2156
+ ## 2026-10-03 16:14Z (CoS): 10.7.0 re-cut, CPE integration
2157
+ - 10.7.0 missed the 15:55Z cut. Re-cut per D68/D82 "drop failing slices":
2158
+ - Kept the speed flip with the D82-FIXREDS fix (ee6b62383 as 0110fe76f).
2159
+ - Moved LiveLine to e10ext (94bec912f) so the D29 core budget holds.
2160
+ - Reverted D82-WALL0 (280566464): it fails the engine e2e done run with the stub; moves to 10.7.1.
2161
+ - loki-ts `bun test` 3317 pass / 0 fail; test-release-dist-guard 13/0.
2162
+ - train/102 (cf5be9026): first push blocked by pre-push gitleaks on a fake Sentry fixture token, allowlisted by fingerprint (cf5be9026). Tier A red on shard-durations drift (5 new suites); rows added (9bbfcf920), drift 6/0, structural 11/0. train/103 queued behind train/102 Tests.
2163
+ - cpe-base: CPE-16 fix (opus r2 APPROVE), CPE-17 plans plus honesty follow-up, CPE-23 Playwright a11y and parity (33/33), plans wiring; suite 214/0, tsc 0. CPE-14 fixes (b568de7c9) in opus r2 review. CPE-27 (receipts tone test, real-envelope test, AA contrast fixes) building.
2164
+ - Drift audit (turn 2322): HIGH reviews opus D12; CoS edits limited to integration wiring, a test-budget refactor move, a revert and CI registration rows; BOARD and commit in separate calls; no main-checkout edits while train-cycle ran.
2165
+
2166
+ ## 2026-10-03 16:37Z (CoS): train/103, CPE reviews
2167
+ - train/102 Tests reds (acp/merge help and completion registration, `loki web --port` validation, CP-INGEST env typing, gitleaks baseline 74 -> 75) fixed in place per D85 (d9704dfc4); five suites plus security-scan-coverage 31/0 and dist guard 13/0 rerun locally rc 0.
2168
+ - train/103 (d9704dfc4) pushed 16:28Z: Tier A, Bun Parity, First-run gate, Security Audit, Coverage green; Tests pending. 10.7.0 releases on a green Tests run.
2169
+ - cpe-base: CPE-25/26 merge queue and PR risk pages wired (28fc28647); suite 235/0, tsc 0.
2170
+ - Opus BLOCK on CPE-25: route timeout orphans the merge process group and drops merged lines (B1); symlinked registry entry bypasses the per-repo lock (B2). Sonnet fixer dispatched with both plus the GET-origin, exit-code and files-null advisories.
2171
+ - CPE-14 settings write-back in opus round 4 (unicode, comments, block scalars after the global line-separator escape).
2172
+
2173
+ ## 2026-10-03 17:08Z (CoS): 10.7.0 releasing, D86 Wave 0 slices
2174
+ - 10.7.0 (ffb58278b): Tests, Bun Parity, Coverage, Security Audit, SBOM success; Release job in progress; npm latest still 10.6.14 at 17:05Z.
2175
+ - Local main (unpushed, 6d8bbf7ca): scope advisory (FC-03), `loki control prune`, fixture leak shipper refusal merged for 10.7.1; FAILURE-CLASSES.md FC-01..FC-09 seeded.
2176
+ - Built, in opus D12 review: FC-08 ingest integrity (f0b891d2a), FC-02 runner load error plus final ship flush (79a8bb818), FC-09 runner-config registry (3cb3a7216), monorepo cwd (aac46dc26), cascade off (5ca26c9e3).
2177
+ - Building: FC-07 hermetic HOME, EL-W0-06 model default, EL-W0-08 PR body golden.
2178
+ - Drift audit (turn 2376): every fix slice has an FC row; HIGH reviews opus; no push during the 10.7.0 window; BOARD and commit kept in separate calls.
2179
+
2180
+ ## 2026-10-03 17:40Z (CoS)
2181
+ - Merged cascade (Engine Law L1 never below raw) as 1b1fc67c6; CHANGELOG kept both bullet sets; dist rebuilt in main, dist guard 13/0.
2182
+ - 10.7.1 still blocked on guard fix-forward (ad368f08d5bd98594): spawn env guard (ship_hook.ts:10) and e10ext budget (1509/1500). Builder told to land at 1498 or fewer so FC-10 (+1 line) fits.
2183
+ - Governor: pulse shows weekly burn projected 528.5% and max engineers next hour 0 (D39). No new dispatch this hour; FC-10 TL review deferred. In-flight agents (FC-07, FC-09, monorepo, W0-06, FC-02 r2, FC-08 r3, guards) finish and are not replaced.
2184
+
2185
+ ## 2026-10-03 17:45Z (CoS)
2186
+ - FC-02 runner-load (7ad4a18b6) round 2 opus D12: BLOCK. Two reproduced findings: (B1) the base rerun inherits the head Python env (an editable install), so the agent's own top-level raise is base-confirmed as harness_error and opens a ready PR; (B2) a test already broken on base, which the task asks the agent to fix, is base-confirmed as harness_error. Fix needed: hermetic base env plus traceback-path check; never confirm checks in relevant, wallTests or changedTestFiles. Rework queued behind the governor hold.
2187
+ - FC-09 runner-config rework done (f4eccfeac): engine10 1214/0, features 3098/3100, dist guard 13/0. Re-review queued behind the governor hold.
2188
+
2189
+ ## 2026-10-03 17:44Z (CoS)
2190
+ - Usage reading relayed by Loki steering (`claude -p "/usage"`, peer-stamped about 18:10Z, recorded at 17:43Z local clock): session 28%, week 71%, resets Oct 7 12:59 ET. The pulse's 518% projection extrapolates today's burst rate; recalibrated from this reading.
2191
+ - Governor plan until Oct 7: ONE lane (sonnet builder, opus review only on trust paths), stop at 81% weekly (4% reserve below the 85% floor). Order: (1) 10.7.1 guard fix-forward and release, (2) EL-W1-01 Project Model, (3) EL-W1-06 failure ownership (absorbs FC-02), (4) EL-W1-00 static L0 guard. In-flight agents finish; no other dispatch. Pending reviews (FC-09, EL-W0-06, FC-10) wait for the reset.
2192
+ - Main 08bf593f2: L0 recorded (ENGINE-LAWS, L0-WAVE1.md, FC-11). Full bun test after merges: 3353 pass, 2 fail (the two known guards only).
package/docs/v10/SWARM.md CHANGED
@@ -204,6 +204,38 @@ queue. Never unpublishes or deletes a version.
204
204
  6. Flaky tests: rerun once, record it in `BACKLOG.md`, open a slice. Never
205
205
  pass a flake silently (BACKLOG 93).
206
206
 
207
+ ## Cloud dispatch (G-04)
208
+
209
+ `scripts/cloud-dispatch.sh SLICE-ID` fans one ready slice out to a Claude
210
+ Code cloud session that works on `cloud/<slice-id>` and opens its own PR; the
211
+ Release Manager still merges only PRs whose checks concluded success.
212
+
213
+ - Default is `--dry-run`: it prints the exact `claude --cloud "<description>"`
214
+ command and the exact BOARD row it would write (status `building`, a
215
+ dispatch note with the session id), and changes nothing. Only an explicit
216
+ `--live` dispatches. `--live` has never been run; the first live use is a
217
+ founder-run probe.
218
+ - Refusals, each non-zero with a message: not ready or dependency-blocked
219
+ (exit 12); file set overlaps a building, review or review-blocked row
220
+ (11); the G-01 governor max is reached, unknown or unreadable (10; same
221
+ `usage-governor.py --json` source as the pulse); `--live` with no
222
+ `--cloud` option in the installed CLI (13). Fail-safe rules: an in-flight
223
+ row that cannot be parsed, or has no concrete file set, refuses (11); a
224
+ ready slice with an elided or path-less file set refuses (12); a row with a
225
+ tab, escaped pipe or a row not starting with `| ID |` refuses (17, also in
226
+ dry-run); path-shaped tokens inside parentheses in a file set still count
227
+ toward overlap; `--live` needs a live `.loki/v10-leader` PID that is an
228
+ ancestor of the caller (16) and re-checks the row just before launching; the
229
+ BOARD write keeps the file's mode; the governor call is
230
+ capped at 180s and a timeout refuses; the dry-run governor runs with
231
+ `--no-cache`.
232
+ - Verified CLI surface (claude 2.1.288): only the top-level option
233
+ `--cloud [description|session_id|url]` exists. `--help` documents no repo,
234
+ branch, PR or non-interactive flag for it, so the branch and the PR
235
+ instruction travel in the description text, and `--live` refuses to write
236
+ the BOARD row unless the output contains a session id or claude.ai/code
237
+ URL (exit 14).
238
+
207
239
  ## Guardrails (restated; speed pressure erodes them first)
208
240
 
209
241
  - Priority when goals conflict: moat > Seal accuracy > delivered accuracy >
@@ -0,0 +1,5 @@
1
+ # Visual evidence
2
+
3
+ On by default (`LOKI_VISUAL_EVIDENCE=0` disables). For changed page files, Loki screenshots each route with the repo's Playwright CLI.
4
+
5
+ Playwright e2e media: when `@playwright/test` is installed in the repo, Loki also runs a short walkthrough of the same routes with `video` and `trace` on. The `.webm` video and trace `.zip` are sha256-hashed into the receipt (`evidence_screens`), rechecked by `loki verify`, and listed as `video:` and `trace:` lines in the PR body Evidence section. Nothing is downloaded. When Playwright is absent the run records "playwright e2e video and trace skipped: ..." under NOT PROVEN and continues.