loki-mode 9.77.0 → 9.80.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.
- package/SKILL.md +2 -2
- package/VERSION +1 -1
- package/autonomy/lib/engine10-legacy-notice.txt +3 -0
- package/autonomy/lib/engine10-push-gitlab.sh +96 -0
- package/autonomy/lib/engine10-push.sh +149 -0
- package/autonomy/run.sh +2 -2
- package/bin/loki +21 -0
- package/dashboard/__init__.py +1 -1
- package/docs/INSTALLATION.md +1 -1
- package/docs/dev/tmp-cleanup.md +3 -3
- package/docs/v10/BOARD.md +105 -35
- package/docs/v10/DECISIONS.md +10 -0
- package/docs/v10/ENGINE-MEASURE.md +69 -0
- package/docs/v10/ENGINE.md +272 -0
- package/docs/v10/METRICS.md +26 -0
- package/docs/v10/PROGRESS.md +45 -0
- package/loki-ts/dist/loki.js +562 -620
- package/loki-ts/package.json +1 -1
- package/mcp/__init__.py +1 -1
- package/package.json +1 -1
- package/plugins/loki-mode/.claude-plugin/plugin.json +1 -1
- package/web-app/dist/assets/{AdminPage-_YAgQxgp.js → AdminPage-Brg7_Lyr.js} +1 -1
- package/web-app/dist/assets/{Avatar-Bxbdwgz5.js → Avatar-7nY6uJxD.js} +1 -1
- package/web-app/dist/assets/{Badge-DFOiCwzh.js → Badge-Cbf2CTvW.js} +1 -1
- package/web-app/dist/assets/{Button-84KGqMJR.js → Button-CvKmf9hm.js} +1 -1
- package/web-app/dist/assets/{CockpitPage-Ck8i3mNd.js → CockpitPage-wLAuI5UQ.js} +1 -1
- package/web-app/dist/assets/{ComparePage-BpIdW5x8.js → ComparePage-CMdzzTeh.js} +1 -1
- package/web-app/dist/assets/{ErrorBoundary-Dcwg_4nU.js → ErrorBoundary-CAIYBXBt.js} +1 -1
- package/web-app/dist/assets/{EvidenceReceiptPanel-6II8hA4-.js → EvidenceReceiptPanel-BnrDrzRA.js} +1 -1
- package/web-app/dist/assets/{GitHubIssuesPanel-CCpJxUo5.js → GitHubIssuesPanel-CnWx9CiK.js} +1 -1
- package/web-app/dist/assets/{GitHubPRsPanel-BN7KtPRB.js → GitHubPRsPanel-y8gYUjnH.js} +1 -1
- package/web-app/dist/assets/{HomePage-Dmh8Ompu.js → HomePage-CqaADKqJ.js} +2 -2
- package/web-app/dist/assets/{LoginPage-e_wvWykS.js → LoginPage-C4-UpzUT.js} +1 -1
- package/web-app/dist/assets/{MagicPage-SkEbXneS.js → MagicPage-CQ7UMIwO.js} +1 -1
- package/web-app/dist/assets/{MetricsPage-Jr2E8O4h.js → MetricsPage-nGehSAp4.js} +1 -1
- package/web-app/dist/assets/{NotFoundPage-Bo-xIGHn.js → NotFoundPage-EkC6K3N-.js} +1 -1
- package/web-app/dist/assets/{ProjectPage--lRlzM8G.js → ProjectPage-Cdjs0beW.js} +3 -3
- package/web-app/dist/assets/{ProjectsPage-CG_L0UkM.js → ProjectsPage-CHcSeyxO.js} +1 -1
- package/web-app/dist/assets/{SettingsPage-DdZ4UAJM.js → SettingsPage-DDhw0s6W.js} +1 -1
- package/web-app/dist/assets/{ShowcasePage-CnV468WN.js → ShowcasePage-BBxQDg5j.js} +1 -1
- package/web-app/dist/assets/{SystemSettingsPage-CyvaTJ_t.js → SystemSettingsPage-Aj91V7Zy.js} +1 -1
- package/web-app/dist/assets/{TeamsPage-g5hHDx0X.js → TeamsPage-H10Qp1fu.js} +1 -1
- package/web-app/dist/assets/{TemplatesPage-CRcRm9ED.js → TemplatesPage-AcxgsKwZ.js} +1 -1
- package/web-app/dist/assets/{TerminalOutput-BDBfTY9s.js → TerminalOutput-O6dQA9Qa.js} +1 -1
- package/web-app/dist/assets/{activity-CpH9qoQP.js → activity-CMnBtTxM.js} +1 -1
- package/web-app/dist/assets/{bell-BtlnNdD8.js → bell-Dseaifqw.js} +1 -1
- package/web-app/dist/assets/{bot-BAH-qJ4B.js → bot-Bm_xcawB.js} +1 -1
- package/web-app/dist/assets/{check-D7ydqeHo.js → check-TXNSTOop.js} +1 -1
- package/web-app/dist/assets/{chevron-left-CJ48kXi_.js → chevron-left-D35Mb_-x.js} +1 -1
- package/web-app/dist/assets/{circle-alert-C3m8Jdum.js → circle-alert-Rt6AMJ2V.js} +1 -1
- package/web-app/dist/assets/{clock-CpVxJ_xL.js → clock-Dlc0SEVv.js} +1 -1
- package/web-app/dist/assets/{cloud-C5RpwJJ2.js → cloud-DPd4GLS2.js} +1 -1
- package/web-app/dist/assets/{code-xml-D8Ch_l6l.js → code-xml-B_scyMd5.js} +1 -1
- package/web-app/dist/assets/{database-Dc-r_JaX.js → database-DuPEBXUA.js} +1 -1
- package/web-app/dist/assets/{dollar-sign-CXOSNCEc.js → dollar-sign-C49nrBOI.js} +1 -1
- package/web-app/dist/assets/{file-code-corner-il9KkndN.js → file-code-corner-B3wt8I4V.js} +1 -1
- package/web-app/dist/assets/{file-plus-CduheFSQ.js → file-plus-CuHHSDVU.js} +1 -1
- package/web-app/dist/assets/{globe-C_H2CJ0N.js → globe-Kl77FTuJ.js} +1 -1
- package/web-app/dist/assets/{hammer-Dd0DZNve.js → hammer-D0LLVOf5.js} +1 -1
- package/web-app/dist/assets/{index-CnURGAFT.js → index-ufh2YvPO.js} +2 -2
- package/web-app/dist/assets/{layers-CofXpCI5.js → layers-C3vb5zor.js} +1 -1
- package/web-app/dist/assets/{loader-circle-Z2PHP1vi.js → loader-circle-BfFuGacT.js} +1 -1
- package/web-app/dist/assets/{lock-BKZcBfqE.js → lock-CicpAGtr.js} +1 -1
- package/web-app/dist/assets/{package-VeINyJLx.js → package-Bw8snKHr.js} +1 -1
- package/web-app/dist/assets/{plus-BdRdn_Ne.js → plus-KXZkO61K.js} +1 -1
- package/web-app/dist/assets/{refresh-cw-SQlfufGR.js → refresh-cw-CshUF54x.js} +1 -1
- package/web-app/dist/assets/{rotate-ccw-z7xY1hor.js → rotate-ccw-S9JJTBcV.js} +1 -1
- package/web-app/dist/assets/{scroll-text-D9DLjkO9.js → scroll-text-CLOq2Mvg.js} +1 -1
- package/web-app/dist/assets/{server-VlEVEIp_.js → server-ClM4a2Wx.js} +1 -1
- package/web-app/dist/assets/{shield-alert-D0ulDTaf.js → shield-alert-DXhyR0S_.js} +1 -1
- package/web-app/dist/assets/{thumbs-up-7_JKRnvS.js → thumbs-up-CYb6ycQ-.js} +1 -1
- package/web-app/dist/assets/{trash-2-DmRmNre3.js → trash-2-BcHIiT3v.js} +1 -1
- package/web-app/dist/assets/{trending-down-DZwkFd-S.js → trending-down-C5eAxnkt.js} +1 -1
- package/web-app/dist/assets/{trending-up-4ql9Pr4t.js → trending-up-m9XmNKav.js} +1 -1
- package/web-app/dist/assets/{upload-D2KPx9Uo.js → upload-ZYJCPyYM.js} +1 -1
- package/web-app/dist/assets/{usePolling-D6alWGU5.js → usePolling-uC-lirzx.js} +1 -1
- package/web-app/dist/assets/{user-Bo3EjryF.js → user-C1dyK-6p.js} +1 -1
- package/web-app/dist/index.html +1 -1
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
## 23:00Z cut (E-31..E-40)
|
|
4
|
+
|
|
5
|
+
Every claim below comes from reading main at 84c22568. I edited no files.
|
|
6
|
+
|
|
7
|
+
**What I found that shapes this cut**
|
|
8
|
+
|
|
9
|
+
1. **The engine cannot run from the npm package today.**
|
|
10
|
+
- Root `package.json` `files` ships `loki-ts/dist/` and no `loki-ts/src`. Every source-relative path is therefore dead in an install. These break:
|
|
11
|
+
- `machine.ts:44-55`: `optional()` checks whether `import.meta.dir/stages/<name>.ts` exists. In a bundle that file is never there, so every stage emits `stage.skipped` "module not present".
|
|
12
|
+
- `engine10/cli.ts:54`: the default loader uses a non-literal `import(spec)`.
|
|
13
|
+
- `output.ts:132`: dynamic import of the eta module.
|
|
14
|
+
- `session.ts:137`: spawns `[process.execPath, [import.meta.path, "--engine10-session-child"]]`. In a bundle, `import.meta.path` is `dist/loki.js`.
|
|
15
|
+
- `fetch_issue.ts:32` and `stages/pr.ts:49`: paths built with `new URL("../../../...", import.meta.url)`, which resolve above the package root from dist.
|
|
16
|
+
- `util/paths.ts` already finds `REPO_ROOT` by walking up to `VERSION` + `autonomy/run.sh`, and works from dist. The fix is to reuse it.
|
|
17
|
+
2. **The flip breaks two merged tests.**
|
|
18
|
+
- `tests/test-engine10-dispatch.sh` and `tests/test-engine10-legacy-contract.sh` both assert that an unset `LOKI_ENGINE` routes to legacy.
|
|
19
|
+
- The E-30 alias assertions switch from SKIP to live only when bin/loki matches `^[[:space:]]*legacy\)`.
|
|
20
|
+
3. **The gate chain has a hole.** No row runs the v10 arm over the 29 tasks. EV-4 is raw claude and EV-5 is legacy. E-38 closes this, and it runs the dist build so the gate measures what actually ships.
|
|
21
|
+
4. **Hard limits from existing code:**
|
|
22
|
+
- `loki-ts/src/runner/types.ts:8` has no opencode provider, and `providers.ts` is on the no-edit list. So the only honest opencode path is a clear refusal.
|
|
23
|
+
- `autonomy/loki` is also no-edit, so the deprecation note cannot live in legacy help text.
|
|
24
|
+
- `supervisor.ts` has no `main` yet. Its wiring arrives with E-14, so preflight wiring waits for E-14.
|
|
25
|
+
5. **E-TG's file set is not recorded anywhere.** PROGRESS.md:1255 names it only as a follow-up to E-07 and E-09. E-32 touches `session.ts`, so it depends on E-TG merging.
|
|
26
|
+
|
|
27
|
+
**How the file sets stay separate**
|
|
28
|
+
- **In-flight rows:** no file below appears in any ready, building or review row (E-14..E-29, EV-4, EV-5, EV-6, E-TG).
|
|
29
|
+
- **EV-6:** it keeps `eval/loki10/summarize` and `docs/v10/METRICS.md`. E-33 builds a new generator that EV-6 runs, so the two sets stay apart.
|
|
30
|
+
- **One planned exception:**
|
|
31
|
+
- E-31 changes one marked line in `README.md` and one in `docs/v10/GUIDE.md` (the opt-in line that E-34 writes).
|
|
32
|
+
- E-31 depends on E-34, so the two are never in flight together.
|
|
33
|
+
- The Captain applies that line change in the E-31 merge commit.
|
|
34
|
+
|
|
35
|
+
### E-31: Default flip to v10, with a `LOKI_ENGINE=legacy` override and the `loki legacy` alias
|
|
36
|
+
- **Files:**
|
|
37
|
+
- `bin/loki`
|
|
38
|
+
- `loki-ts/src/engine10/cli.ts` (USAGE text only)
|
|
39
|
+
- `tests/test-engine10-default.sh` (new)
|
|
40
|
+
- `tests/test-engine10-dispatch.sh`
|
|
41
|
+
- `tests/test-engine10-legacy-contract.sh`
|
|
42
|
+
- After E-34 merges: the one marked opt-in line in `README.md` and in `docs/v10/GUIDE.md`
|
|
43
|
+
- **Tier:** HIGH.
|
|
44
|
+
- **Gating:**
|
|
45
|
+
- Build on a branch now.
|
|
46
|
+
- After review, hold the row at `approved`. Merge only when the E-33 marker in `docs/v10/METRICS.md` reads `<!-- loki10-gate: met ... -->`.
|
|
47
|
+
- If the marker does not read met by 03:00Z, the row goes to `parked` and v10.0.0 ships with legacy as the default (D29).
|
|
48
|
+
- The test enforces the gate mechanically: the build goes red if the switch reads v10 while the marker does not read met.
|
|
49
|
+
- **Contents:**
|
|
50
|
+
- **One switch.** A single line in bin/loki, `_loki_engine_default="v10"`, and the v10 block tests `"${LOKI_ENGINE:-$_loki_engine_default}"`.
|
|
51
|
+
- **Override values.**
|
|
52
|
+
- `LOKI_ENGINE=legacy` runs today's route exactly.
|
|
53
|
+
- Any other non-empty value except `v10` exits 2 with a one-line message, so a typo such as `legasy` fails instead of silently picking an engine.
|
|
54
|
+
- **Alias.** A `case "${1:-}" in legacy) shift; export LOKI_ENGINE=legacy ;; esac` arm runs before the v10 block. The export keeps nested calls on legacy.
|
|
55
|
+
- For `loki legacy`, `loki legacy --help`, `-h` or `help`, the arm first prints `autonomy/lib/engine10-legacy-notice.txt` to stderr if that file exists (E-35 owns the text).
|
|
56
|
+
- **Precedence.** `LOKI_LEGACY_BASH=1` still wins over everything.
|
|
57
|
+
- **No bun.**
|
|
58
|
+
- A default v10 selection without bun prints one notice line ("v10 needs bun; running the legacy engine. Set LOKI_ENGINE=legacy to silence") and falls through to legacy.
|
|
59
|
+
- An explicit `LOKI_ENGINE=v10` without bun still exits 1, as today.
|
|
60
|
+
- **Help after the flip.** `loki`, `loki --help` and `loki -h` go to the engine10 USAGE. USAGE ends with `loki legacy <args> run the previous engine (deprecated)`. `--version` stays on the legacy route.
|
|
61
|
+
- **Commands that change meaning.** `status`, `verify` and `dashboard` now mean the v10 commands. The legacy ones are reached through `loki legacy status` and so on.
|
|
62
|
+
- **Wall:** `bash tests/test-engine10-default.sh && bash tests/test-engine10-legacy-contract.sh && bash tests/test-engine10-dispatch.sh`. The output must show 0 failed for all three, and "0 skipped" on the legacy-contract Results line.
|
|
63
|
+
- **Red:** the default test fails because nothing flips the default, and the legacy contract reports 20 SKIP lines.
|
|
64
|
+
- **Green:**
|
|
65
|
+
- With `LOKI_ENGINE` unset, a task routes to engine10.
|
|
66
|
+
- `LOKI_ENGINE=legacy` and `loki legacy <args>` each match all 20 golden routes.
|
|
67
|
+
- `LOKI_LEGACY_BASH` wins.
|
|
68
|
+
- With no bun, the default falls back with a notice and explicit v10 exits 1.
|
|
69
|
+
- `LOKI_ENGINE=legasy` exits 2.
|
|
70
|
+
- `grep -c '_loki_engine_default=' bin/loki` equals 1.
|
|
71
|
+
- Planting a METRICS.md without the met marker turns the default test red.
|
|
72
|
+
- **Deps:** E-30, E-32, E-33, E-34, E-35, E-38, EV-6.
|
|
73
|
+
|
|
74
|
+
### E-32: Packaging, so the engine runs from dist and the npm package
|
|
75
|
+
- **Files:**
|
|
76
|
+
- `loki-ts/src/engine10/registry.ts` (new)
|
|
77
|
+
- `loki-ts/src/cli.ts` (inside the existing engine10 arm only)
|
|
78
|
+
- `loki-ts/src/engine10/machine.ts`
|
|
79
|
+
- `loki-ts/src/engine10/session.ts`
|
|
80
|
+
- `loki-ts/src/engine10/output.ts`
|
|
81
|
+
- `loki-ts/src/engine10/fetch_issue.ts`
|
|
82
|
+
- `loki-ts/src/engine10/stages/pr.ts`
|
|
83
|
+
- `loki-ts/tests/engine10/registry.test.ts` (new)
|
|
84
|
+
- `tests/test-engine10-dist.sh` (new)
|
|
85
|
+
- **Tier:** HIGH. It changes how provider sessions spawn and the path to the credentialed push child.
|
|
86
|
+
- **Contents:**
|
|
87
|
+
- **Registry.** `registry.ts` maps each stage and route module name to a literal lazy import, for example `wall: () => import("./stages/wall.ts")`. Only modules present on disk at build time are listed. Bun bundles literal imports, and loading stays lazy.
|
|
88
|
+
- **Loaders.**
|
|
89
|
+
- `machine.ts` `defaultLoader` and `output.ts`'s eta load go through the registry.
|
|
90
|
+
- The `src/cli.ts` arm passes the registry loader to `runEngine10(rest, load)`. The string `engine10` stays inside that one arm, which `cli.test.ts` asserts.
|
|
91
|
+
- `optional()` stays as the source fallback.
|
|
92
|
+
- **Session child.** `session.ts` spawns the child as `[process.execPath, <bundle or src cli entry>, "engine10", "session"]`, using the `session` route that already exists in the TABLE, instead of `import.meta.path`.
|
|
93
|
+
- **Paths.** `fetch_issue.ts` and `pr.ts` resolve `autonomy/issue-providers.sh` and `autonomy/lib/engine10-push.sh` from `REPO_ROOT` (`util/paths.ts`).
|
|
94
|
+
- **Registration guard.** `registry.test.ts` fails when a module that the stage table or cli TABLE names exists on disk but is not registered. Slices that land after E-32 (wave 2 still building, E-24..E-29) are each one registry line, which the Captain adds at merge.
|
|
95
|
+
- **No writes to `loki-ts/dist/`** (section 14).
|
|
96
|
+
- **The dist test:**
|
|
97
|
+
1. `npm pack` into a temp dir and extract it. The result has no `loki-ts/src`.
|
|
98
|
+
2. `bun build` the current src into `<extract>/loki-ts/dist/loki.js`, simulating the Captain's rebuild.
|
|
99
|
+
3. Run `<extract>/bin/loki` with `LOKI_ENGINE=v10 LOKI_E10_INVOKER=cli LOKI_CLAUDE_CLI=<E-14 stub>` on a copy of the E-14 fixture with `--no-pr`.
|
|
100
|
+
4. Separately, `npm pack --dry-run --json` must list `autonomy/lib/engine10-push.sh`, `autonomy/receipt_jwt.py` and `loki-ts/dist/loki.js`.
|
|
101
|
+
- **Wall:** `bash tests/test-engine10-dist.sh && (cd loki-ts && bun test tests/engine10/registry.test.ts)`.
|
|
102
|
+
- **Red:** the same script on current main shows every stage `stage.skipped` with "module not present", and the session child never starts.
|
|
103
|
+
- **Green:**
|
|
104
|
+
- `events.jsonl` from the extracted package holds `stage.completed` for intake, implement, verify and seal.
|
|
105
|
+
- There are 0 "module not present" skips for landed modules.
|
|
106
|
+
- `receipt.json`, `.loki/engine.json` and an efficiency record exist.
|
|
107
|
+
- The dry-run list contains the three files.
|
|
108
|
+
- **Deps:** E-14, E-TG.
|
|
109
|
+
|
|
110
|
+
### E-33: EV-6 gate report generator
|
|
111
|
+
- **Files:** `eval/loki10/gate_report.py` (new), `eval/loki10/test-gate-report.sh` (new), `eval/loki10/fixtures/gate/` (new subdir).
|
|
112
|
+
- **Tier:** HIGH. Its marker controls E-31.
|
|
113
|
+
- **Contents:**
|
|
114
|
+
- **Invocation:** `gate_report.py <results.jsonl> --metrics <path> --changelog <path>`. It reuses `harness.summarize_rows`.
|
|
115
|
+
- **Output:**
|
|
116
|
+
- a per-arm table (completed/evaluated, rate, p50 and p90 time to PR, cost per completed task, runs with measured cost);
|
|
117
|
+
- four gate lines, each showing the measured number, the threshold and MET or MISSED;
|
|
118
|
+
- every miss, as task id plus status or reason;
|
|
119
|
+
- null cost rendered as "not measured".
|
|
120
|
+
- **`met` requires all of:**
|
|
121
|
+
- at least 25 evaluated tasks on each arm;
|
|
122
|
+
- the same `model` on every row;
|
|
123
|
+
- v10 completion at or above raw-claude;
|
|
124
|
+
- v10 p50 of 300s or less and p90 of 600s or less;
|
|
125
|
+
- measured cost on both arms, with v10 cost per completed task at or below raw-claude. Null cost counts as MISSED.
|
|
126
|
+
- **Markers:** it writes `<!-- loki10-gate: met|missed n=<N> results_sha256=<sha> -->` and replaces the block between `<!-- loki10-gate:begin -->` and `<!-- loki10-gate:end -->` in both target files, so rerunning is idempotent.
|
|
127
|
+
- **Who writes the real files:** EV-6 runs this on real results and commits METRICS.md and the CHANGELOG block. This slice never touches `summarize` or METRICS.md.
|
|
128
|
+
- **Wall:** `bash eval/loki10/test-gate-report.sh`.
|
|
129
|
+
- **Red:** the file is missing.
|
|
130
|
+
- **Green:**
|
|
131
|
+
- An all-met fixture writes the met marker.
|
|
132
|
+
- A v10 p90 of 660s gives MISSED and lists the slow tasks.
|
|
133
|
+
- Null v10 cost gives MISSED with "not measured".
|
|
134
|
+
- 24 evaluated tasks gives MISSED with "fewer than 25".
|
|
135
|
+
- A model mismatch gives MISSED.
|
|
136
|
+
- A second run leaves exactly one block.
|
|
137
|
+
- **Deps:** EV-1.
|
|
138
|
+
|
|
139
|
+
### E-34: v10 user docs, marked opt-in until the flip
|
|
140
|
+
- **Files:** `README.md` (new quickstart section), `docs/v10/GUIDE.md` (new), `tests/test-engine10-docs.sh` (new).
|
|
141
|
+
- **Tier:** LOW.
|
|
142
|
+
- **Contents:**
|
|
143
|
+
- **Quickstart:** `LOKI_ENGINE=v10 loki "<task>"`, issue refs, and `--no-pr`, `--deep`, `--provider`, `--resume`.
|
|
144
|
+
- **The 5-line summary,** explained line by line.
|
|
145
|
+
- **NOT PROVEN:** what it means, including the deep checks that are always listed and "not measured" cost.
|
|
146
|
+
- **Receipts:** `receipt.json` and `receipt.md`, `loki verify`, and UNSIGNED.
|
|
147
|
+
- **Provider table:** claude cost is measured. For codex, cline and aider, cost is not measured and kill blocking is not enforced. opencode is not supported and is refused.
|
|
148
|
+
- **After the flip:** `status`, `verify` and `dashboard` change meaning. `loki legacy <args>` and `LOKI_ENGINE=legacy` reach the old engine.
|
|
149
|
+
- **The opt-in line:** one line in each file carries `<!-- loki10-default -->` and reads "Opt-in: set LOKI_ENGINE=v10". E-31 changes that line.
|
|
150
|
+
- **Wall:** `bash tests/test-engine10-docs.sh`.
|
|
151
|
+
- **Red:** GUIDE.md is missing.
|
|
152
|
+
- **Green:**
|
|
153
|
+
- Every command in the guide appears in the engine10 USAGE.
|
|
154
|
+
- The marked line's wording matches bin/loki's current default.
|
|
155
|
+
- README links GUIDE.md.
|
|
156
|
+
- The docs contain no em or en dashes.
|
|
157
|
+
- **Deps:** E-13, E-22.
|
|
158
|
+
|
|
159
|
+
### E-35: Legacy deprecation note, with no removal
|
|
160
|
+
- **Files:** `autonomy/lib/engine10-legacy-notice.txt` (new), `CHANGELOG.md` (a "Deprecated" entry for v10.0.0), `tests/test-engine10-legacy-notice.sh` (new).
|
|
161
|
+
- **Tier:** LOW.
|
|
162
|
+
- **Contents:**
|
|
163
|
+
- The notice runs three lines or fewer. It says the legacy engine is deprecated in v10.0.0 and still fully supported, that nothing is removed in this release, that `LOKI_ENGINE=legacy` pins it, and where the guide lives.
|
|
164
|
+
- The notice avoids `autonomy/loki`, which is on the no-edit list. E-31's `legacy)` arm prints the file for help invocations only.
|
|
165
|
+
- The CHANGELOG entry states the same facts and says no removal date is set.
|
|
166
|
+
- **Wall:** `bash tests/test-engine10-legacy-notice.sh`.
|
|
167
|
+
- **Red:** the file is missing.
|
|
168
|
+
- **Green:**
|
|
169
|
+
- The notice exists and has 3 lines or fewer.
|
|
170
|
+
- It contains "LOKI_ENGINE=legacy" and does not contain "removed in".
|
|
171
|
+
- The CHANGELOG has a Deprecated entry that names `loki legacy`.
|
|
172
|
+
- Once E-31 is present, `loki legacy --help` stderr contains the first notice line. Until then that assertion prints SKIP.
|
|
173
|
+
- **Deps:** none (the file must exist before E-31 merges).
|
|
174
|
+
|
|
175
|
+
### E-36: First-run preflight with clear errors
|
|
176
|
+
- **Files:** `loki-ts/src/engine10/preflight.ts` (new), `loki-ts/tests/engine10/preflight.test.ts` (new), `loki-ts/src/engine10/supervisor.ts` (one call at the start of `main`, before the marker or branch).
|
|
177
|
+
- **Tier:** MEDIUM.
|
|
178
|
+
- **Checks:** each failure prints one line with a fix hint and exits 2 before any branch or event log exists.
|
|
179
|
+
- **Not a repo:** the current directory is not a git work tree.
|
|
180
|
+
- **Git identity:** `user.name` or `user.email` is unset, which would make the commit fail.
|
|
181
|
+
- **Provider CLI:** the provider's CLI is not on PATH (`LOKI_CLAUDE_CLI`, `LOKI_CODEX_CLI` and so on are honored).
|
|
182
|
+
- **Unsupported provider:** `--provider opencode`, or any other unknown name, gets: "the v10 engine has no opencode invoker yet; use LOKI_ENGINE=legacy loki start --provider opencode".
|
|
183
|
+
- **Host guard:** an inherited `LOKI_HOST_GUARD=1` with a non-claude provider would throw at `providers.ts:63`, so preflight explains it first.
|
|
184
|
+
- **GitHub CLI:** when origin is on github.com and `--no-pr` is absent, missing `gh` or a failing `gh auth status` gets a hint to use `--no-pr`. A non-GitHub origin or `--no-pr` skips the check, so the eval's local bare remote is unaffected.
|
|
185
|
+
- **Warnings (not fatal):** `python3 -I` without `cryptography`, or no signing key, prints "receipts will be UNSIGNED".
|
|
186
|
+
- **bun:** bin/loki already checks for bun.
|
|
187
|
+
- **Wall:** `cd loki-ts && bun test tests/engine10/preflight.test.ts`.
|
|
188
|
+
- **Red:** the file is missing.
|
|
189
|
+
- **Green:**
|
|
190
|
+
- Each fatal case gives exit 2, its exact line, and no `.loki/runs` dir.
|
|
191
|
+
- Missing cryptography warns and continues.
|
|
192
|
+
- `--no-pr` skips the gh check.
|
|
193
|
+
- **Deps:** E-14.
|
|
194
|
+
|
|
195
|
+
### E-37: Non-claude provider paths through session.ts, with honest cost
|
|
196
|
+
- **Files:** `loki-ts/tests/engine10/providers.test.ts` (new), `loki-ts/tests/engine10/fixtures/providers/` (new: stub codex, cline and aider CLIs).
|
|
197
|
+
- **Tier:** MEDIUM.
|
|
198
|
+
- **Contents:**
|
|
199
|
+
- Runs the supervisor end to end with `--provider codex`, `cline` and `aider` through their stubs (`LOKI_CODEX_CLI`, `LOKI_CLINE_CLI`, `LOKI_AIDER_CLI`) and `--no-pr`.
|
|
200
|
+
- This slice has no source files. Any red it finds becomes its own fix slice.
|
|
201
|
+
- **Wall:** `cd loki-ts && bun test tests/engine10/providers.test.ts`.
|
|
202
|
+
- **Red:** the file is missing.
|
|
203
|
+
- **Green, for each non-claude provider:**
|
|
204
|
+
- The run reaches seal.
|
|
205
|
+
- The `cost` event has `usd: null` with tokens kept.
|
|
206
|
+
- `cost-summary.py --json` reports `fully_measured` false.
|
|
207
|
+
- The Cost line reads "not measured" and never "$0.00".
|
|
208
|
+
- The receipt's `not_proven` holds "kill blocking not enforced".
|
|
209
|
+
- With `LOKI_MODEL_OVERRIDE` set, it also holds "model override not applied".
|
|
210
|
+
- The session child env has no `LOKI_HOST_GUARD`.
|
|
211
|
+
- `--provider opencode` exits 2 with the E-36 line.
|
|
212
|
+
- **Deps:** E-14, E-36.
|
|
213
|
+
|
|
214
|
+
### E-38: v10 arm gate run, with the legacy arm pinned
|
|
215
|
+
- **Files:** `eval/loki10/harness.py` (the legacy arm sets `env["LOKI_ENGINE"]="legacy"`), `eval/loki10/test-harness.sh` (one new leg).
|
|
216
|
+
- **Tier:** HIGH.
|
|
217
|
+
- **Contents:**
|
|
218
|
+
- Pinning the legacy arm keeps EV-5 results unchanged after the flip.
|
|
219
|
+
- The v10 arm runs `--all` over the 29 tasks using the dist build from E-32 (`LOKI_TS_ENTRY` pointing at the rebuilt bundle), so the gate measures what ships.
|
|
220
|
+
- Results stay under the gitignored `eval/loki10/results/`.
|
|
221
|
+
- **Wall:** `bash eval/loki10/test-harness.sh && eval/loki10/run.sh --arm v10 --all`. The results must hold 29 rows, none `arm_unavailable`, and each row must carry `model`, `time_to_pr_s` and `cost_usd` (a number or null).
|
|
222
|
+
- **Red:** the new leg fails because the legacy arm env has no `LOKI_ENGINE`, and no v10 results exist.
|
|
223
|
+
- **Green:** the leg asserts `LOKI_ENGINE=legacy` on the legacy arm and `v10` on the v10 arm, and the 29-row v10 results file exists.
|
|
224
|
+
- **Deps:** EV-1, E-32, E-36.
|
|
225
|
+
|
|
226
|
+
### E-39: Interrupt and resume end to end
|
|
227
|
+
- **Files:** `loki-ts/tests/engine10/resume_e2e.test.ts` (new), `loki-ts/tests/engine10/fixtures/resume/` (new).
|
|
228
|
+
- **Tier:** MEDIUM.
|
|
229
|
+
- **Wall:** `cd loki-ts && bun test tests/engine10/resume_e2e.test.ts`.
|
|
230
|
+
- **Red:** the file is missing.
|
|
231
|
+
- **Green:**
|
|
232
|
+
- SIGINT during a sleeping implement stub exits 130. The session process group is gone and there is no `run.completed`.
|
|
233
|
+
- `loki --resume <id>` finishes through seal on the same run id.
|
|
234
|
+
- `seq` keeps increasing, and there is no second `stage.started` for intake.
|
|
235
|
+
- `.loki/engine.json` still names the same run.
|
|
236
|
+
- Changing the origin between runs refuses the push.
|
|
237
|
+
- **Deps:** E-14.
|
|
238
|
+
|
|
239
|
+
### E-40: Live PR smoke on a sandbox GitHub repo
|
|
240
|
+
- **Files:** `tests/test-engine10-live-pr.sh` (new).
|
|
241
|
+
- **Tier:** HIGH (credentialed).
|
|
242
|
+
- **Contents:**
|
|
243
|
+
- Runs one real small task from the E-32 dist layout against `LOKI_E10_LIVE_REPO`.
|
|
244
|
+
- Without the variable it prints SKIP and exits 0. SKIP never counts as done; the Wall command sets the variable.
|
|
245
|
+
- **Wall:** `LOKI_E10_LIVE_REPO=<owner>/<sandbox> bash tests/test-engine10-live-pr.sh`. The output must show:
|
|
246
|
+
- a PR URL;
|
|
247
|
+
- `gh pr view --json isDraft` agreeing with the verdict;
|
|
248
|
+
- the `loki/deep-verify` status context through `gh api`;
|
|
249
|
+
- `loki verify <run>` exiting 0, or UNSIGNED stated;
|
|
250
|
+
- a second `--resume` reporting `existing: true` with the same URL.
|
|
251
|
+
- **Red:** the file is missing.
|
|
252
|
+
- **Green:** all five assertions hold against the sandbox repo.
|
|
253
|
+
- **Deps:** E-23, E-32, E-36.
|
|
254
|
+
|
|
255
|
+
### BOARD rows
|
|
256
|
+
|
|
257
|
+
The notes start with the requested "Source: ENGINE.md 23:00Z cut." and then add dependencies, following the 21:50Z rows. If you want the notes to be only that sentence, drop the dependency part.
|
|
258
|
+
|
|
259
|
+
| id | title | files | tier | wall check | status | notes |
|
|
260
|
+
|---|---|---|---|---|---|---|
|
|
261
|
+
| E-31 | Default flip to v10 with LOKI_ENGINE=legacy override and the loki legacy alias (merge held until the gate marker reads met) | bin/loki, loki-ts/src/engine10/cli.ts (USAGE only), tests/test-engine10-default.sh, tests/test-engine10-dispatch.sh, tests/test-engine10-legacy-contract.sh, README.md and docs/v10/GUIDE.md (marked opt-in line only, after E-34) | HIGH | bash tests/test-engine10-default.sh && bash tests/test-engine10-legacy-contract.sh && bash tests/test-engine10-dispatch.sh (0 failed; legacy contract 0 skipped) | ready@2026-09-27T23:00Z | Source: ENGINE.md 23:00Z cut. Held at approved until the METRICS.md loki10-gate marker reads met; parked if not met by 03:00Z. Depends on E-30, E-32, E-33, E-34, E-35, E-38, EV-6. |
|
|
262
|
+
| E-32 | Packaging: engine runs from dist and the npm package (static registry, session child via cli route, REPO_ROOT paths) | loki-ts/src/engine10/registry.ts, loki-ts/src/cli.ts (engine10 arm only), loki-ts/src/engine10/machine.ts, loki-ts/src/engine10/session.ts, loki-ts/src/engine10/output.ts, loki-ts/src/engine10/fetch_issue.ts, loki-ts/src/engine10/stages/pr.ts, loki-ts/tests/engine10/registry.test.ts, tests/test-engine10-dist.sh | HIGH | bash tests/test-engine10-dist.sh && (cd loki-ts && bun test tests/engine10/registry.test.ts) | ready@2026-09-27T23:00Z | Source: ENGINE.md 23:00Z cut. Later engine slices add one registry line at merge. Depends on E-14, E-TG. |
|
|
263
|
+
| E-33 | Gate report generator: METRICS.md and CHANGELOG blocks with every gate number, misses and the loki10-gate marker | eval/loki10/gate_report.py, eval/loki10/test-gate-report.sh, eval/loki10/fixtures/gate/ | HIGH | bash eval/loki10/test-gate-report.sh | ready@2026-09-27T23:00Z | Source: ENGINE.md 23:00Z cut. EV-6 runs it on real results and commits METRICS.md. Depends on EV-1. |
|
|
264
|
+
| E-34 | v10 user docs: README quickstart and docs/v10/GUIDE.md (5-line summary, NOT PROVEN, receipts), opt-in until the flip | README.md, docs/v10/GUIDE.md, tests/test-engine10-docs.sh | LOW | bash tests/test-engine10-docs.sh | ready@2026-09-27T23:00Z | Source: ENGINE.md 23:00Z cut. Depends on E-13, E-22. |
|
|
265
|
+
| E-35 | Legacy engine deprecation note for loki legacy help and CHANGELOG (no removal) | autonomy/lib/engine10-legacy-notice.txt, CHANGELOG.md, tests/test-engine10-legacy-notice.sh | LOW | bash tests/test-engine10-legacy-notice.sh | ready@2026-09-27T23:00Z | Source: ENGINE.md 23:00Z cut. Depends on none; lands before E-31. |
|
|
266
|
+
| E-36 | First-run preflight: repo, git identity, provider CLI, opencode refusal, host guard, gh auth, UNSIGNED warning | loki-ts/src/engine10/preflight.ts, loki-ts/tests/engine10/preflight.test.ts, loki-ts/src/engine10/supervisor.ts (one call in main) | MEDIUM | cd loki-ts && bun test tests/engine10/preflight.test.ts | ready@2026-09-27T23:00Z | Source: ENGINE.md 23:00Z cut. Depends on E-14. |
|
|
267
|
+
| E-37 | Non-claude provider paths (codex, cline, aider) through session.ts with cost not measured and NOT PROVEN entries | loki-ts/tests/engine10/providers.test.ts, loki-ts/tests/engine10/fixtures/providers/ | MEDIUM | cd loki-ts && bun test tests/engine10/providers.test.ts | ready@2026-09-27T23:00Z | Source: ENGINE.md 23:00Z cut. Test only; a red becomes its own slice. Depends on E-14, E-36. |
|
|
268
|
+
| E-38 | v10 arm gate run over the 29 tasks from dist; legacy arm pinned to LOKI_ENGINE=legacy | eval/loki10/harness.py (legacy arm env), eval/loki10/test-harness.sh (one leg) | HIGH | bash eval/loki10/test-harness.sh && eval/loki10/run.sh --arm v10 --all (29 rows, none arm_unavailable) | ready@2026-09-27T23:00Z | Source: ENGINE.md 23:00Z cut. The missing third arm for the gate. Depends on EV-1, E-32, E-36. |
|
|
269
|
+
| E-39 | Interrupt and resume end to end (SIGINT, no orphan, resume to seal on the same run) | loki-ts/tests/engine10/resume_e2e.test.ts, loki-ts/tests/engine10/fixtures/resume/ | MEDIUM | cd loki-ts && bun test tests/engine10/resume_e2e.test.ts | ready@2026-09-27T23:00Z | Source: ENGINE.md 23:00Z cut. Depends on E-14. |
|
|
270
|
+
| E-40 | Live PR smoke on a sandbox GitHub repo from the dist layout | tests/test-engine10-live-pr.sh | HIGH | LOKI_E10_LIVE_REPO=<owner>/<sandbox> bash tests/test-engine10-live-pr.sh | ready@2026-09-27T23:00Z | Source: ENGINE.md 23:00Z cut. SKIP without the variable does not count as done. Depends on E-23, E-32, E-36. |
|
|
271
|
+
|
|
272
|
+
**Critical path to the flip:** E-14 and E-TG → E-32 → E-36 → E-38 → EV-6 (runs E-33) → E-31. E-34 and E-35 must merge before E-31. E-37, E-39 and E-40 can run in parallel once their dependencies land.
|
package/docs/v10/METRICS.md
CHANGED
|
@@ -217,3 +217,29 @@ remains the only cap on this step. Guarded by
|
|
|
217
217
|
## Over-budget stops
|
|
218
218
|
|
|
219
219
|
- 2026-09-27T21:33Z: batch 8 workflow wf_ff8d537c-40e stopped. Its last two reviewers (S-191, S-195) ran about 55 minutes against the 30-minute reviewer budget with no verdict (pulse AGENT_OVER_BUDGET at 21:31Z: "S-191 building MEDIUM (55.9 min, budget 30 min)"). Re-dispatched as two standalone reviewers with 20 and 25 minute scopes. Load average was 15 to 17 during the stall.
|
|
220
|
+
|
|
221
|
+
## Loki 10 eval: first real arm numbers (2026-09-27, smoke, not the gate)
|
|
222
|
+
|
|
223
|
+
Raw `claude -p` arm (EV-4), model claude-opus-5-5, 900s cap, 3 public tasks, harness from the EV-1 branch with EV-3 isolation (auth via keychain access token; no credential in any result file):
|
|
224
|
+
|
|
225
|
+
| task | completed | time to PR | cost (provider-reported) |
|
|
226
|
+
|---|---|---|---|
|
|
227
|
+
| pub-more-itertools-1192 | yes | 20s | $0.1266 |
|
|
228
|
+
| pub-click-2877 | yes | 34s | $0.1861 |
|
|
229
|
+
| pub-humanize-152 | yes | 45s | $0.2704 |
|
|
230
|
+
|
|
231
|
+
`summarize --markdown`: 3/3 completed, p50 34s, p90 45s, $0.1944 per completed task, 0 capped. This is a 3-task smoke, not the 29-task gate. It sets the bar the v10 fast lane must meet on completion and cost per completed task (D29), which is far tighter than the 5-minute p50 target.
|
|
232
|
+
|
|
233
|
+
## Loki 10 eval: raw claude -p arm, full 29 tasks (2026-09-27 23:05-23:16Z)
|
|
234
|
+
|
|
235
|
+
Model claude-opus-5-5, harness 84c22568, 900s cap, --parallel 3, EV-3 isolation. Results: ~/loki-ci-logs/eval-raw-claude-20260927T231653Z/.
|
|
236
|
+
|
|
237
|
+
| Arm | Completed | Rate | p50 time to PR | p90 time to PR | Cost per completed | Cost measured | Capped |
|
|
238
|
+
|---|---|---|---|---|---|---|---|
|
|
239
|
+
| raw-claude | 27/29 | 93.1% | 39s | 68s | $0.2363 | 29/29 | 0 |
|
|
240
|
+
|
|
241
|
+
Misses: pub-click-3059 (hidden tests failed: wrong metavar bracketing), pub-humanize-174 (hidden tests failed: rounding boundary cases). Total provider-reported spend $6.38.
|
|
242
|
+
|
|
243
|
+
## Loki 10 engine: first real run (E-14 smoke, not the gate)
|
|
244
|
+
|
|
245
|
+
pub-more-itertools-1192 through the E-14 glue entry, real claude, --no-pr: 30s wall (intake 0s, plan 16s, implement 12s, verify 3s, commit and seal under 1s), hidden test passes, $0.4486 over 2 sessions (plan $0.2264, implement $0.2223), verdict PARTIAL only because ruff is not installed. Raw claude on the same task: 15s, $0.1290. The planner session costs as much as the implement session.
|
package/docs/v10/PROGRESS.md
CHANGED
|
@@ -1231,3 +1231,48 @@ sample.
|
|
|
1231
1231
|
- INCIDENT: an agent other than the Chief of Staff committed and pushed to main. Commit 28926937 "docs(v10): cite ARCHITECT-CUTS.md, retract unevidenced green claims" (author asklokesh, 14:35:11 local) landed on origin/main (`git ls-remote origin refs/heads/main` = 28926937...). Its content is exactly the Chief of Staff's staged, uncommitted working-tree change, so nothing wrong landed, but builders are forbidden to push or edit BOARD.md, and it broke the release freeze on a75c8b98. The likely cause is a batch-4 worker acting on the relayed founder message. The PreToolUse guard (.claude/settings.local.json in the main checkout) may not apply to agents running inside .claude/worktrees; guard slice S-152 follows.
|
|
1232
1232
|
- Consequence: release 5 moves from a75c8b98 to 28926937 (docs-only on top); it waits for Tests on that SHA, then bumps through release.sh --bump-only.
|
|
1233
1233
|
- Batch 4: 13 LOW slices show over budget at 17 min, several of whose builders were diverted by the relayed message; they are collected when the workflow returns, and diverted ones are re-dispatched.
|
|
1234
|
+
|
|
1235
|
+
## 2026-09-27T21:47Z: Loki 10 engine P0 started (D29)
|
|
1236
|
+
- Leader lock held by this session (`cat .loki/v10-leader` = 74619, the running claude process).
|
|
1237
|
+
- Orphan PIDs 22960 and 22986 stopped (SIGTERM ignored, SIGKILL by PID); `ps -o pid= -p 22960` empty.
|
|
1238
|
+
- Backlog paused: 22 BOARD rows parked, batch 10 builders' commits kept on their branches.
|
|
1239
|
+
- v9.77.0 tagged 21:46:19 (`git ls-remote origin refs/tags/v9.77.0^{}` = b473123d); train cadence continues.
|
|
1240
|
+
- In flight: stage-time measurement of augmentiq #52 plus 3 recent runs; eval harness runner (EV-1); eval task curation, 25+ tasks with hidden tests (EV-2); ORPHAN guard (E-00).
|
|
1241
|
+
- ETA for v10.0.0: the engine design lands first; the gate decision is at 03:00 UTC (23:00 ET).
|
|
1242
|
+
- Top blocker: none yet; the measured stage table decides the design.
|
|
1243
|
+
|
|
1244
|
+
## 2026-09-27T22:08Z: Loki 10 engine progress
|
|
1245
|
+
- ENGINE.md on main (`git ls-remote origin refs/heads/main` = a4ea867b): measured stage table (docs/v10/ENGINE-MEASURE.md), architecture, 30 slices E-01..E-30.
|
|
1246
|
+
- Slices in flight: E-01, E-05, E-06 (phase A, wf_f5dde039-0c5); E-11 shell half, E-12, E-30 (wf_f70c455a-69e); E-00 ORPHAN guard built (5e52dd64), in review.
|
|
1247
|
+
- Eval: EV-1 runner built (3cf723be, `bash eval/loki10/test-harness.sh` 34 passed), in adversarial review. EV-2 has 27 tasks (augmentiq 1, public 12, quickstart 14; f9304d1a), under full red/green re-verification. EV-3 arm isolation (clean claude config) in flight.
|
|
1248
|
+
- Eval numbers so far: none (no arm has run yet).
|
|
1249
|
+
- ETA for v10.0.0: thin path end to end targeted for about 01:00 UTC; gate decision at 03:00 UTC.
|
|
1250
|
+
- Top blocker: E-01 (shared types) gates phase B; augmentiq has only 3 issues, so the augmentiq share of the eval is 1 task, not 5.
|
|
1251
|
+
|
|
1252
|
+
## 2026-09-27T22:57Z: Loki 10 engine progress
|
|
1253
|
+
- On main (`git ls-remote origin refs/heads/main` = 694866fc): engine wave 1 E-01..E-13 except E-14, plus E-11 (both halves), E-16, E-20; the eval harness EV-1 with EV-3 isolation and the 29 EV-2 tasks (EV-7 nonce fixes). tests/engine10 plus spawn guard 185 pass, 0 fail; eval/loki10/test-harness.sh 77 passed.
|
|
1254
|
+
- Eval baseline: a no-op arm over all 29 tasks graded every task not completed, none task_invalid (108s). No real arm numbers yet: EV-4 (raw claude -p, 3 tasks) and EV-5 (legacy, 1 task) are running.
|
|
1255
|
+
- In flight: E-14 end to end plus the first real v10 run on pub-more-itertools-1192; reworks E-15, E-17, E-18, E-21, E-22; E-19, E-23, E-TG.
|
|
1256
|
+
- Incidents fixed forward: two orphan loki test runs over 24 hours (stopped by PID; E-00 guard merged); main CI red on Coverage from engine spawns without env (72423684, 19128f6b).
|
|
1257
|
+
- ETA for v10.0.0: first real v10 task within the next hour; gate decision at 03:00 UTC.
|
|
1258
|
+
- Top blocker: E-14 integration (first time the modules run together).
|
|
1259
|
+
|
|
1260
|
+
## 2026-09-27T23:03Z: first real eval numbers
|
|
1261
|
+
- Raw claude -p arm, 3 public tasks: 3/3 completed, p50 34s, p90 45s, $0.1944 per completed task (docs/v10/METRICS.md). Legacy arm and v10 arm not yet measured.
|
|
1262
|
+
- Implication for the gate: v10 must match raw completion and cost per completed task. Any extra model call (planner, Wall author, fix round) adds cost against a $0.19 baseline, so the fast lane must skip stages a small task does not need.
|
|
1263
|
+
|
|
1264
|
+
## 2026-09-27T23:27Z: Loki 10 progress
|
|
1265
|
+
- Raw claude -p full arm: 27/29 (93.1%), p50 39s, p90 68s, $0.2363 per completed task (docs/v10/METRICS.md).
|
|
1266
|
+
- v10 first real task (E-14 glue entry, commit 9d9ff7d2): fixed in 30s, hidden test result "1 passed, exit 0", $0.45 (plan $0.23 plus implement $0.22; `cost-summary.py --json` fully_measured true) against raw $0.13 on the same task.
|
|
1267
|
+
- On main (`git ls-remote origin refs/heads/main` = 44731e0f): every engine slice except E-14's glue, plus E-41 local-origin push; v9.79.0 tagged 23:12:55.
|
|
1268
|
+
- In flight: E-42 (real entry end to end, Rule of Two for the pr stage, harness v10 arm on one task), E-43 cost knobs, E-44 output fixes, E-33..E-35, EV-5 legacy full arm.
|
|
1269
|
+
- ETA: first harness-scored v10 task by about 00:15Z; full v10 arm by about 01:30Z; gate decision 03:00Z.
|
|
1270
|
+
- Top blocker: cost. Plan plus implement is about 2x raw per task on this sample; the gate requires v10 cost per completed task at or below raw ($0.2363).
|
|
1271
|
+
|
|
1272
|
+
## 2026-09-28T00:11Z: Loki 10 progress
|
|
1273
|
+
- On main (`git ls-remote origin refs/heads/main` = addda547): E-42 real entry end to end (run.ts glue deleted), E-44 output fixes, agent SDK 0.3.283 (9db2a4ed), E-51 eval PR path regression, and train E12 (23b20e6f): E-33 gate report, EV-6 publish script, E-38 legacy arm pin, E-39 interrupt/resume, E-40 live PR smoke. Train checks: engine10 349 pass 0 fail, tsc exit 0, test-harness 79/0, test-gate-report 34/0.
|
|
1274
|
+
- SDK route: claude-opus-5-5 now runs through the SDK (probe: `success OK`); 0.3.267 rejected it. The same probe cost $0.33 for a one-word reply, so fixed per-call overhead, not task work, drives v10 cost.
|
|
1275
|
+
- Legacy arm (EV-5): 3 results so far (2 hidden pass), each at the 900s cap; runner alive at parallel 3, ETA about 02:15Z. Incident: 6 then 2 legacy watchdog loops escaped the harness timeout group (ppid 1, 30 min); stopped by PID; guard slice EV-10.
|
|
1276
|
+
- In flight (wave E13, 12 builders): E-45 cost path rework, E-36 preflight (plus E-37), E-32 rebase, E-34 docs refresh, E-52..E-56, E-58 (makes E-47 green), E-59 (makes E-50 green), EV-10.
|
|
1277
|
+
- ETA: E-45 merge about 00:45Z, EV-8 5-task cost check right after, EV-9 full v10 arm about 01:00Z to 01:45Z, gate decision 03:00Z.
|
|
1278
|
+
- Top blocker: cost per completed task (raw $0.2363); E-45 plus the per-call overhead finding decide it.
|