loki-mode 10.5.5 → 10.5.6
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/run.sh +80 -2
- package/dashboard/__init__.py +1 -1
- package/docs/INSTALLATION.md +1 -1
- package/docs/v10/BOARD.md +30 -26
- package/docs/v10/METRICS.md +110 -0
- package/docs/v10/PROGRESS.md +17 -0
- package/loki-ts/dist/loki.js +397 -391
- 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-DMO4ixQY.js → AdminPage-TrFw5uq4.js} +1 -1
- package/web-app/dist/assets/{Avatar-DGDK3YXW.js → Avatar-BQTp4bqf.js} +1 -1
- package/web-app/dist/assets/{Badge-C-QKXBt2.js → Badge-k23hiC44.js} +1 -1
- package/web-app/dist/assets/{Button-BpqApKIy.js → Button-uD8DtV8A.js} +1 -1
- package/web-app/dist/assets/{CockpitPage-DTAsoIBL.js → CockpitPage-CAPci7PQ.js} +1 -1
- package/web-app/dist/assets/{ComparePage-BwcE0P-o.js → ComparePage-BUn6AE0j.js} +1 -1
- package/web-app/dist/assets/{ErrorBoundary-BcGQplMu.js → ErrorBoundary-BxiLU-gm.js} +1 -1
- package/web-app/dist/assets/{EvidenceReceiptPanel-DAVpkapJ.js → EvidenceReceiptPanel-BKpHqQTX.js} +1 -1
- package/web-app/dist/assets/{GitHubIssuesPanel-CjbNyZio.js → GitHubIssuesPanel-DCBAGBey.js} +1 -1
- package/web-app/dist/assets/{GitHubPRsPanel-Cw0WEbNQ.js → GitHubPRsPanel-BbuTShuc.js} +1 -1
- package/web-app/dist/assets/{HomePage-DTa35Ge3.js → HomePage-De38pz0O.js} +2 -2
- package/web-app/dist/assets/{LoginPage-gT025QLY.js → LoginPage-DCOJR6Kr.js} +1 -1
- package/web-app/dist/assets/{MagicPage-CERNEISj.js → MagicPage-1wcKrYqj.js} +1 -1
- package/web-app/dist/assets/{MetricsPage-CPfqyN8q.js → MetricsPage-DqXiafte.js} +1 -1
- package/web-app/dist/assets/{NotFoundPage-B4pEQEvP.js → NotFoundPage-DwN-Rr5k.js} +1 -1
- package/web-app/dist/assets/{ProjectPage-CFy4D-ue.js → ProjectPage-DwpdTqRm.js} +3 -3
- package/web-app/dist/assets/{ProjectsPage-DoBXDsJg.js → ProjectsPage-BbJZ0N2A.js} +1 -1
- package/web-app/dist/assets/{SettingsPage-gD7jYLJB.js → SettingsPage-B5dUkMf6.js} +1 -1
- package/web-app/dist/assets/{ShowcasePage-BCZEyXKR.js → ShowcasePage-0PKwb226.js} +1 -1
- package/web-app/dist/assets/{SystemSettingsPage-DrnWHhde.js → SystemSettingsPage-DR8mr10f.js} +1 -1
- package/web-app/dist/assets/{TeamsPage-irefUlqp.js → TeamsPage-CUCEJnl3.js} +1 -1
- package/web-app/dist/assets/{TemplatesPage-BbEFG28V.js → TemplatesPage-EzCXotqx.js} +1 -1
- package/web-app/dist/assets/{TerminalOutput-Co7bdjKY.js → TerminalOutput-D-NqghAv.js} +1 -1
- package/web-app/dist/assets/{activity-CszlgXyN.js → activity-CjPTVzFk.js} +1 -1
- package/web-app/dist/assets/{bell-CbzwwBBG.js → bell-DgkeYw2k.js} +1 -1
- package/web-app/dist/assets/{bot-DmY9Kc5P.js → bot-B1Mc6ViV.js} +1 -1
- package/web-app/dist/assets/{check-ENT9ADOJ.js → check-zzTEyu5C.js} +1 -1
- package/web-app/dist/assets/{chevron-left-DEgnxlu7.js → chevron-left-DAMVo_FN.js} +1 -1
- package/web-app/dist/assets/{circle-alert-CP5iGlX0.js → circle-alert-CDXwnHdj.js} +1 -1
- package/web-app/dist/assets/{clock-BOavB0HQ.js → clock-CG9o0zgK.js} +1 -1
- package/web-app/dist/assets/{cloud-C00FF8lQ.js → cloud-Ds-xnhLN.js} +1 -1
- package/web-app/dist/assets/{code-xml-CGOc4opI.js → code-xml-BQfcp-ky.js} +1 -1
- package/web-app/dist/assets/{database-fcSX-q5w.js → database-CX-u55m-.js} +1 -1
- package/web-app/dist/assets/{dollar-sign-BWQURzWW.js → dollar-sign-i_pmA6g5.js} +1 -1
- package/web-app/dist/assets/{file-code-corner-D1nBkg5Y.js → file-code-corner-BhT9HDbd.js} +1 -1
- package/web-app/dist/assets/{file-plus-DCy5Ihs9.js → file-plus-DZLJn576.js} +1 -1
- package/web-app/dist/assets/{globe-SUpUoBAx.js → globe-Bgw8ae_Q.js} +1 -1
- package/web-app/dist/assets/{hammer-BbTMEvdy.js → hammer-D2XXuXr_.js} +1 -1
- package/web-app/dist/assets/{index-ChM1IqAt.js → index-CCMAsJAW.js} +3 -3
- package/web-app/dist/assets/{layers-CslOxTwJ.js → layers-DNhvlI4K.js} +1 -1
- package/web-app/dist/assets/{loader-circle-Bgxwf-7o.js → loader-circle-D3XG86Eb.js} +1 -1
- package/web-app/dist/assets/{lock-B52waB-u.js → lock-CjWeWASl.js} +1 -1
- package/web-app/dist/assets/{package-B82BOXm3.js → package-WugiQ9wc.js} +1 -1
- package/web-app/dist/assets/{plus-CZxgKx6c.js → plus-BnP7v-Ox.js} +1 -1
- package/web-app/dist/assets/{refresh-cw-B_keiQxK.js → refresh-cw-BT2CvLmV.js} +1 -1
- package/web-app/dist/assets/{rotate-ccw-B9Uq6etF.js → rotate-ccw-DFEEIWSI.js} +1 -1
- package/web-app/dist/assets/{scroll-text-u4oVHR5b.js → scroll-text-Byp_Qui_.js} +1 -1
- package/web-app/dist/assets/{server-DTbaeWG3.js → server-AmNijQ29.js} +1 -1
- package/web-app/dist/assets/{shield-alert-mH66tVRv.js → shield-alert-Cfq3M6Sq.js} +1 -1
- package/web-app/dist/assets/{thumbs-up-DmNwqPa_.js → thumbs-up-Bf9EPha1.js} +1 -1
- package/web-app/dist/assets/{trash-2-CfboT0AB.js → trash-2-Cd0gDTru.js} +1 -1
- package/web-app/dist/assets/{trending-down-WbYSPLFd.js → trending-down--Pztmpkh.js} +1 -1
- package/web-app/dist/assets/{trending-up-C5UPHeNm.js → trending-up-DFl5twW_.js} +1 -1
- package/web-app/dist/assets/{upload-C3fNqfWN.js → upload-Ba2_IFPe.js} +1 -1
- package/web-app/dist/assets/{usePolling-Ctv4vcx6.js → usePolling-BlfOdGxZ.js} +1 -1
- package/web-app/dist/assets/{user-B-sI1PvH.js → user-DKle9QPo.js} +1 -1
- package/web-app/dist/index.html +1 -1
package/SKILL.md
CHANGED
|
@@ -3,7 +3,7 @@ name: loki-mode
|
|
|
3
3
|
description: Autonomous spec-driven build system with a built-in trust layer. It does not call work done until it is verified (RARV-C closure loop, 8 quality gates, completion council, verified-completion evidence gate). Triggers on "Loki Mode". Takes a spec (PRD, GitHub issue, OpenAPI doc, etc.) to deployed product with minimal human intervention. Provider-agnostic. Requires --dangerously-skip-permissions flag.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# Loki Mode v10.5.
|
|
6
|
+
# Loki Mode v10.5.6
|
|
7
7
|
|
|
8
8
|
**You are an autonomous agent. You make decisions. You do not ask questions. You do not stop.**
|
|
9
9
|
|
|
@@ -470,4 +470,4 @@ See `CHANGELOG.md` entries [7.5.7], [7.5.8], [7.5.13] for the per-fix list and r
|
|
|
470
470
|
|
|
471
471
|
---
|
|
472
472
|
|
|
473
|
-
**v10.5.
|
|
473
|
+
**v10.5.6 | [Autonomi](https://www.autonomi.dev/) flagship product | ~410 lines core**
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
10.5.
|
|
1
|
+
10.5.6
|
package/autonomy/run.sh
CHANGED
|
@@ -6255,6 +6255,83 @@ check_parallel_support() {
|
|
|
6255
6255
|
return 0
|
|
6256
6256
|
}
|
|
6257
6257
|
|
|
6258
|
+
# E-130: npm install cache keyed on sha256(package-lock.json + package.json),
|
|
6259
|
+
# stored under the project's .loki/cache/install/. Hit: copy cached node_modules.
|
|
6260
|
+
# Miss or unusable entry: real install, then publish the entry atomically
|
|
6261
|
+
# (temp dir + rename) so concurrent worktrees never see a partial entry.
|
|
6262
|
+
# ponytail: npm only; pip installs into the active interpreter, so there is no
|
|
6263
|
+
# per-worktree venv to cache. No lockfile means no cache (always install).
|
|
6264
|
+
_loki_npm_install_cached() {
|
|
6265
|
+
local cache_root="$1" wt="$2" key entry tmp aside old
|
|
6266
|
+
if [ ! -f "$wt/package-lock.json" ]; then
|
|
6267
|
+
(cd "$wt" && npm install --silent 2>/dev/null) || true
|
|
6268
|
+
return 0
|
|
6269
|
+
fi
|
|
6270
|
+
# node version + platform in the key: native addons are ABI specific
|
|
6271
|
+
key="$({ cat "$wt/package-lock.json" "$wt/package.json" 2>/dev/null; node -v 2>/dev/null; uname -sm; } | { shasum -a 256 2>/dev/null || sha256sum; } | cut -d' ' -f1)"
|
|
6272
|
+
if [ -n "$key" ]; then
|
|
6273
|
+
entry="$cache_root/$key"
|
|
6274
|
+
if [ -f "$entry/.complete" ] && [ -d "$entry/node_modules" ]; then
|
|
6275
|
+
rm -rf "$wt/node_modules"
|
|
6276
|
+
if cp -R "$entry/node_modules" "$wt/node_modules" 2>/dev/null; then
|
|
6277
|
+
return 0
|
|
6278
|
+
fi
|
|
6279
|
+
rm -rf "$wt/node_modules"
|
|
6280
|
+
fi
|
|
6281
|
+
# Evict only an unusable entry (never a complete one another creator
|
|
6282
|
+
# just published), renamed aside first so the removal is not racy.
|
|
6283
|
+
if [ -d "$entry" ] && { [ ! -f "$entry/.complete" ] || [ ! -d "$entry/node_modules" ]; }; then
|
|
6284
|
+
aside="$cache_root/.evict.$key.$$.$RANDOM"
|
|
6285
|
+
mv "$entry" "$aside" 2>/dev/null && rm -rf "$aside" 2>/dev/null
|
|
6286
|
+
fi
|
|
6287
|
+
fi
|
|
6288
|
+
(cd "$wt" && npm install --silent 2>/dev/null) || true
|
|
6289
|
+
if [ -n "$key" ] && [ -d "$wt/node_modules" ]; then
|
|
6290
|
+
mkdir -p "$cache_root" 2>/dev/null || return 0
|
|
6291
|
+
tmp="$(mktemp -d "$cache_root/.tmp.XXXXXX" 2>/dev/null)" || return 0
|
|
6292
|
+
if cp -R "$wt/node_modules" "$tmp/node_modules" 2>/dev/null && : >"$tmp/.complete"; then
|
|
6293
|
+
# mv onto an existing directory would nest tmp inside it, so
|
|
6294
|
+
# publish only when absent, then clean any nesting from a lost race.
|
|
6295
|
+
if [ -e "$entry" ]; then
|
|
6296
|
+
rm -rf "$tmp"
|
|
6297
|
+
else
|
|
6298
|
+
mv "$tmp" "$entry" 2>/dev/null
|
|
6299
|
+
rm -rf "${entry:?}/${tmp##*/}" "$tmp" 2>/dev/null
|
|
6300
|
+
fi
|
|
6301
|
+
# ponytail: keep the 3 newest entries by mtime; no LRU touch on hit
|
|
6302
|
+
for old in $(ls -t "$cache_root" 2>/dev/null | tail -n +4); do
|
|
6303
|
+
aside="$cache_root/.tmp.evict.$old.$$"
|
|
6304
|
+
mv "$cache_root/$old" "$aside" 2>/dev/null && rm -rf "$aside"
|
|
6305
|
+
done
|
|
6306
|
+
else
|
|
6307
|
+
rm -rf "$tmp"
|
|
6308
|
+
fi
|
|
6309
|
+
fi
|
|
6310
|
+
return 0
|
|
6311
|
+
}
|
|
6312
|
+
|
|
6313
|
+
# E-130: copy .loki into a worktree without the install cache (the cache is
|
|
6314
|
+
# often hundreds of MB; copy-then-delete would cost more than it saves).
|
|
6315
|
+
# Children are copied one by one, so no tar/rsync flavour issues (bash 3.2 safe).
|
|
6316
|
+
_loki_copy_state_no_install_cache() {
|
|
6317
|
+
local src="$1" dst="$2" e c
|
|
6318
|
+
mkdir -p "$dst" || return 1
|
|
6319
|
+
for e in "$src"/* "$src"/.[!.]*; do
|
|
6320
|
+
[ -e "$e" ] || [ -L "$e" ] || continue
|
|
6321
|
+
if [ "${e##*/}" = "cache" ] && [ -d "$e" ] && [ ! -L "$e" ]; then
|
|
6322
|
+
mkdir -p "$dst/cache"
|
|
6323
|
+
for c in "$e"/* "$e"/.[!.]*; do
|
|
6324
|
+
[ -e "$c" ] || [ -L "$c" ] || continue
|
|
6325
|
+
[ "${c##*/}" = "install" ] && continue
|
|
6326
|
+
cp -R "$c" "$dst/cache/" 2>/dev/null || true
|
|
6327
|
+
done
|
|
6328
|
+
else
|
|
6329
|
+
cp -R "$e" "$dst/" 2>/dev/null || true
|
|
6330
|
+
fi
|
|
6331
|
+
done
|
|
6332
|
+
return 0
|
|
6333
|
+
}
|
|
6334
|
+
|
|
6258
6335
|
# Create a worktree for a specific stream
|
|
6259
6336
|
create_worktree() {
|
|
6260
6337
|
local stream_name="$1"
|
|
@@ -6292,14 +6369,15 @@ create_worktree() {
|
|
|
6292
6369
|
|
|
6293
6370
|
# Copy .loki state to worktree
|
|
6294
6371
|
if [ -d "$TARGET_DIR/.loki" ]; then
|
|
6295
|
-
|
|
6372
|
+
# E-130: never copy the install cache into the worktree
|
|
6373
|
+
_loki_copy_state_no_install_cache "$TARGET_DIR/.loki" "$worktree_path/.loki"
|
|
6296
6374
|
fi
|
|
6297
6375
|
|
|
6298
6376
|
# Initialize environment (detect and run appropriate install)
|
|
6299
6377
|
(
|
|
6300
6378
|
cd "$worktree_path" || exit 1
|
|
6301
6379
|
if [ -f "package.json" ]; then
|
|
6302
|
-
|
|
6380
|
+
_loki_npm_install_cached "${TARGET_DIR}/.loki/cache/install" "$worktree_path"
|
|
6303
6381
|
elif [ -f "requirements.txt" ]; then
|
|
6304
6382
|
pip install -r requirements.txt -q 2>/dev/null || true
|
|
6305
6383
|
elif [ -f "Cargo.toml" ]; then
|
package/dashboard/__init__.py
CHANGED
package/docs/INSTALLATION.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
The flagship product of [Autonomi](https://www.autonomi.dev/). Loki Mode is a spec-driven autonomous builder with a built-in trust layer that takes any spec to a deployed product and verifies completion with evidence (quality gates plus a completion council), not just a "done" claim. Complete installation instructions for all platforms and use cases.
|
|
4
4
|
|
|
5
|
-
**Version:** v10.5.
|
|
5
|
+
**Version:** v10.5.6
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
package/docs/v10/BOARD.md
CHANGED
|
@@ -365,11 +365,11 @@ set is declared to avoid overlap with those and with each other.
|
|
|
365
365
|
| M-11 | Java capture: JUnit under JDK 8 with JaCoCo plus Randoop | autonomy/lib/modernize/java_capture.sh, loki-ts/src/engine10/modernize/oracle/java.ts, loki-ts/tests/engine10/modernize/java_capture.test.ts | HIGH | cd loki-ts && bun test tests/engine10/modernize/java_capture.test.ts | released@2026-09-28T21:01Z | Source: MODERNIZE.md (D30). Depends on M-04. Opus REJECT (reproduced): multi-line java -version breaks status.json (json_escape skips newlines). Next: rework. Wave E26 (wf_9ba5fcaf-75a). Round 3. r3 e476435b opus APPROVE (every C0 byte escaped as \u00XX; malformed status.json reported as its own reason); merged locally. Released in v10.5.0 (merge 4a11c285 is an ancestor of v10.5.0). |
|
|
366
366
|
| M-12 | Oracle seal, held-out split, 80% floor, up-front NOT PROVEN | loki-ts/src/engine10/modernize/oracle/seal.ts, loki-ts/tests/engine10/modernize/oracle_seal.test.ts | HIGH | cd loki-ts && bun test tests/engine10/modernize/oracle_seal.test.ts | released@2026-09-28T21:01Z | Source: MODERNIZE.md (D30). Depends on M-09. Opus REJECT (reproduced): delete-and-reseal defeats tamper evidence (hashes stored beside the data). Next: rework. r2 d9026ec6 Opus APPROVE (reseal refused via the append-only log); merged dc827b80 (on top of v10.2.2): full `cd loki-ts && bun test` 2277 pass 0 fail, `bash tests/test-engine10-dist.sh` 18 passed, `bash tests/test-v10-pulse.sh` 117 passed. Released in v10.5.0 (merge b71d80fa is an ancestor of v10.5.0). |
|
|
367
367
|
| M-13 | Equivalence checker with sealed normalizers and contract output | loki-ts/src/engine10/modernize/equiv.ts, loki-ts/tests/engine10/modernize/equiv.test.ts, loki-ts/tests/engine10/modernize/fixtures/equiv/ | HIGH | cd loki-ts && bun test tests/engine10/modernize/equiv.test.ts | released@2026-09-28T22:26Z | Source: MODERNIZE.md (D30). Depends on M-12. Wave E27 (wf_bcacb1d1-e76). Wave E27 stopped 18:37Z (founder: over budget, load 50). REJECT (reproduced): a unit whose oracle seal is NOT_PROVEN still gets a clean equivalence pass. Branch slice-M-13-equiv kept. Dispatched 21:18Z sonnet (founder 17:10 staffing directive). r2 b379c171 REJECT (3 blockers), r3 89ea40ae REJECT on B3 (normalizers still caller-supplied: tolerance 1e9 after the new tree gives PROVEN). D42 (4): only fix (a), sealOracle hashes the normalizers; M-13 may edit the M-12 seal file for this only. r4 dispatched 21:42Z. r4 fe3cae28 opus APPROVE (normalizer hash in the oracle seal; tolerance 1e9 after seal gives NOT_PROVEN; hand-edited sealed.json refused; canonical hash over all 3 fields). Merged. Released in v10.5.3 (merge cb1ef386 is an ancestor of v10.5.3). |
|
|
368
|
-
| M-14 | Wall pre-sealed mode: oracle plus conformance, green base is an error | loki-ts/src/engine10/stages/wall.ts (pre-sealed branch only), loki-ts/tests/engine10/modernize/wall_presealed.test.ts | HIGH | cd loki-ts && bun test tests/engine10/modernize/wall_presealed.test.ts |
|
|
369
|
-
| M-15 | Unit runner: card to v10 run with oracle Wall and equiv check | loki-ts/src/engine10/modernize/unit.ts, loki-ts/tests/engine10/modernize/unit.test.ts | HIGH | cd loki-ts && bun test tests/engine10/modernize/unit.test.ts |
|
|
368
|
+
| M-14 | Wall pre-sealed mode: oracle plus conformance, green base is an error | loki-ts/src/engine10/stages/wall.ts (pre-sealed branch only), loki-ts/tests/engine10/modernize/wall_presealed.test.ts | HIGH | cd loki-ts && bun test tests/engine10/modernize/wall_presealed.test.ts | released@2026-09-28T23:18Z | Source: MODERNIZE.md (D30). Depends on M-12, E-54. D33: states its net core line delta; core must stay under 5,000 (92 lines of headroom shared by E-67, E-66, E-61, M-14, merge order E-67, E-66, E-61); offset any excess by deleting dead core code. Wave E27 (wf_bcacb1d1-e76). Wave E27 stopped 18:37Z (founder: over budget, load 50). REJECT: branch empty (no commits). Dispatched 21:51Z. r1 867cffab opus REJECT: crash/OOM/signal exits read as red; bare ImportError enum reads a missing third-party package as red; no file sha256 or verify; no binding to the oracle seal. r2 dispatched 21:57Z. r2 86d078eb (crash/signal exits not_run; inRepo on collection errors; file sha256 plus verify; oracle seal required; base_sha recorded); presealed 26/26, modernize 222/0; opus re-review 22:04Z. r2 86d078eb opus: B1, B3, B4 fixed; B2 still open (inRepo is a caller-supplied flag: name six with inRepo true gives red). r3 derives it from the repo tree. r3 ef4fa166 opus APPROVE (inRepo derived from the real tree via realpath; symlinks and .. names give not_run; verify re-runs verifySeal). Merged; modernize suite green. Released in v10.5.5 (merge c8f9a7d0 is an ancestor of v10.5.5). |
|
|
369
|
+
| M-15 | Unit runner: card to v10 run with oracle Wall and equiv check | loki-ts/src/engine10/modernize/unit.ts, loki-ts/tests/engine10/modernize/unit.test.ts | HIGH | cd loki-ts && bun test tests/engine10/modernize/unit.test.ts | review@2026-09-30T17:28Z | Source: MODERNIZE.md (D30). Depends on M-13, M-14. Requirement from the M-13 review: call sealOracle with the card normalizers before implement, and test that ordering. From the M-14 review: derive the failing module from the traceback file path under the target runtime (site-packages can shadow a repo name); resolve the module part of an AttributeError so real reds are sealable; call verifyPreSealedWall and verifySeal before trusting a Wall. Dispatched 22:09Z (M-13, M-14 merged). WIND-DOWN 2026-09-28: opus r1 REJECT (B1 importer frame made a missing third-party package red; B2 PROVEN without conformance re-run or ablation) fixed at 03b35a69 on slice-M-15 (modernize plus budget 250/0, both red then green on real pytest 9.0.2). NEXT: opus r2 review of 03b35a69, then merge. |
|
|
370
370
|
| M-16 | Deterministic codemods first (futurize, OpenRewrite) or skipped | loki-ts/src/engine10/modernize/codemod.ts, loki-ts/tests/engine10/modernize/codemod.test.ts | MEDIUM | cd loki-ts && bun test tests/engine10/modernize/codemod.test.ts | released@2026-09-28T16:03Z | Source: MODERNIZE.md (D30). Depends on M-02. Built 0a8bbe6c (branch slice-M-16-codemods); TL review died on the 04:48Z access outage. Wave E21 (wf_39ab3f7d-8f3). TL review. TL APPROVE of 0a8bbe6c; merged into train E22 (9042e964): `bun test tests/engine10/` 547 pass 0 fail, tsc 0, `bash tests/test-v10-pulse.sh` 107 passed, `bash eval/loki10/test-harness.sh` 108 passed. Released in v10.2.1 (npm publish 2026-09-28T16:03Z; every cited commit is an ancestor of the v10.2.1 tag; `git merge-base --is-ancestor`). |
|
|
371
371
|
| M-17 | Scheduler: N workers, worktrees, cascade, best-of-2, budget stop | loki-ts/src/engine10/modernize/scheduler.ts, loki-ts/tests/engine10/modernize/scheduler.test.ts | HIGH | cd loki-ts && bun test tests/engine10/modernize/scheduler.test.ts | ready@2026-09-28T02:45Z | Source: MODERNIZE.md (D30). Depends on M-15. |
|
|
372
|
-
| M-18 | Re-slice non-equivalent units to depth 2, then NOT PROVEN | loki-ts/src/engine10/modernize/reslice.ts, loki-ts/tests/engine10/modernize/reslice.test.ts | MEDIUM | cd loki-ts && bun test tests/engine10/modernize/reslice.test.ts |
|
|
372
|
+
| M-18 | Re-slice non-equivalent units to depth 2, then NOT PROVEN | loki-ts/src/engine10/modernize/reslice.ts, loki-ts/tests/engine10/modernize/reslice.test.ts | MEDIUM | cd loki-ts && bun test tests/engine10/modernize/reslice.test.ts | released@2026-09-28T23:18Z | Source: MODERNIZE.md (D30). Depends on M-05, M-13. Merged 20c51512 after TL r2 APPROVE (f41e7e70; reslice 13/0, modernize 241/0 on main). Released in v10.5.5 (merge 20c51512 is an ancestor of v10.5.5). |
|
|
373
373
|
| M-19 | Strangler targets and routes.json (py2/dual/py3, per-module release) | loki-ts/src/engine10/modernize/routes.ts, loki-ts/src/engine10/modernize/targets/python3.ts, loki-ts/src/engine10/modernize/targets/java21.ts, loki-ts/tests/engine10/modernize/routes.test.ts | MEDIUM | cd loki-ts && bun test tests/engine10/modernize/routes.test.ts | released@2026-09-28T16:03Z | Source: MODERNIZE.md (D30). Depends on M-05. Built 3299d359 (branch slice-M-19-routes); TL review died on the 04:48Z access outage. Wave E21 (wf_39ab3f7d-8f3). TL review. TL APPROVE of 3299d359; merged into train E22 (9042e964): `bun test tests/engine10/` 547 pass 0 fail, tsc 0, `bash tests/test-v10-pulse.sh` 107 passed, `bash eval/loki10/test-harness.sh` 108 passed. Released in v10.2.1 (npm publish 2026-09-28T16:03Z; every cited commit is an ancestor of the v10.2.1 tag; `git merge-base --is-ancestor`). |
|
|
374
374
|
| M-20 | Wave verify: full build, integration and original suite | loki-ts/src/engine10/modernize/wave.ts, loki-ts/tests/engine10/modernize/wave.test.ts | MEDIUM | cd loki-ts && bun test tests/engine10/modernize/wave.test.ts | ready@2026-09-28T02:45Z | Source: MODERNIZE.md (D30). Depends on M-17, M-19. |
|
|
375
375
|
| M-21 | Wave ship: one PR per wave with unit receipts, draft unless all proven | loki-ts/src/engine10/modernize/ship.ts, loki-ts/tests/engine10/modernize/ship.test.ts | HIGH | cd loki-ts && bun test tests/engine10/modernize/ship.test.ts | ready@2026-09-28T02:45Z | Source: MODERNIZE.md (D30). Depends on M-20. |
|
|
@@ -445,44 +445,48 @@ set is declared to avoid overlap with those and with each other.
|
|
|
445
445
|
| E-115 | Verify: a passing lint on a system ruff adds its own not_proven line ("lint ran on the system ruff") instead of reusing "tests ran on the system interpreter" | loki-ts/src/engine10/stages/verify.ts, loki-ts/tests/engine10/verify.test.ts | LOW | unit test: system ruff pass gives the lint line, not the tests line (red first); core stays under 5000 | ready@2026-09-28T22:01Z | Source: E-98a r2 opus review (advisory). Held 21:31Z: worktree cap (15). Held 22:01Z: touches core verify.ts while S41-16 has core at 4997/5000. |
|
|
446
446
|
| E-116 | seal.test.ts has no SPEC_CONFLICT case: add real-seal tests (not a copy of seal.ts:110) proving SPEC_CONFLICT survives verify pass, verify fail plus fix, and never upgrades to VERIFIED | loki-ts/tests/engine10/seal.test.ts | LOW | new cases red on a mutated seal.ts that drops the spec_conflict branch | released@2026-09-28T22:02Z | Source: E-98b opus review note 4. Built fbc79ac9 (4 real-seal tests; red when seal.ts:109 removed); Tech Lead review 21:30Z. Tech Lead APPROVE fbc79ac9 (imports the real sealStage; gap test honest); merged; seal.test.ts 18/0. Released in v10.5.2 (merge f4087942 is an ancestor of v10.5.2). |
|
|
447
447
|
| E-117 | Pulse DEPENDS_ON parsing: expand range shorthand ("Depends on E-98a..e", "M-20..M-23") into each id so a dependency on b..e is not silently dropped | scripts/v10-pulse.sh (dependency parse only), tests/test-v10-pulse.sh | LOW | fixture: "Depends on E-98a..c" with E-98b unmerged is blocked (red first) | released@2026-09-28T22:02Z | Source: E-91 Tech Lead review. Dispatched 21:31Z sonnet. Tech Lead REJECT 5f59bfed: numeric range uncapped (M-1..M-9999 expands to 9999 ids into the injected pulse); r2 caps at 50. r2 d99963e3 caps numeric spans at 50 (the Tech Lead blocker); merged; test-v10-pulse.sh 146/0. Released in v10.5.2 (merge ab909f95 is an ancestor of v10.5.2). |
|
|
448
|
-
| E-118 | Usage governor leftovers from G-01 review: a non-numeric used_percentage or a non-dict rate_limits in a live reading must be ignored, not crash; the "uncalibrated" label must not show when calibration exists but no engineers were active | scripts/usage-governor.py, tests/test-usage-governor.sh | LOW | fixtures for each case (red first); 30/30 existing still pass |
|
|
448
|
+
| E-118 | Usage governor leftovers from G-01 review: a non-numeric used_percentage or a non-dict rate_limits in a live reading must be ignored, not crash; the "uncalibrated" label must not show when calibration exists but no engineers were active | scripts/usage-governor.py, tests/test-usage-governor.sh | LOW | fixtures for each case (red first); 30/30 existing still pass | released@2026-09-28T23:18Z | Source: G-01 r2/r3 opus review non-blocking notes. Held 21:31Z: worktree cap (15). Dispatched 22:01Z. Built 7ef9183a (TypeError and AttributeError reproduced first); Tech Lead APPROVE (bad reading degrades to uncalibrated, never a healthy 0%; E-109 cache untouched); merged; 36/0. Released in v10.5.5 (merge 66ef537d is an ancestor of v10.5.5). |
|
|
449
449
|
| E-119 | pre-push: the pushed-range .gitleaks.toml check (pre-push:319) swallows a git rev-list error with an or-true, which reads as "config unchanged" and restores the tip config; fail closed on a non-zero rc | .githooks/pre-push, tests/test-pre-push-gitleaks.sh | LOW | a stubbed git rev-list failure refuses the push (red first) | released@2026-09-28T22:26Z | Source: E-110 r2 opus review nit 4. Built 22bc9931 (case 35 red on the pre-fix hook: push succeeded rc=0); opus APPROVE (one code path changed; case 28 still refuses the corrupted range); merged; pre-push-gitleaks 54/0, pre-push-hook 13/0. Released in v10.5.3 (merge b6360142 is an ancestor of v10.5.3). |
|
|
450
450
|
| E-120 | Seal: carry implement.spec_conflict_reason into receipt.json and receipt.md so a SPEC_CONFLICT verdict states why | loki-ts/src/engine10/stages/seal.ts, loki-ts/tests/engine10/seal.test.ts | LOW | the E-116 documenting test flips to asserting the reason is present (red first); core stays under 5000 | released@2026-09-28T22:02Z | Source: E-116 engineer finding (seal.ts reads only implement.exit and tests_reverted). Dispatched 21:31Z sonnet. opus REJECT b0f0dce3: reason rendered raw into receipt.md (a newline plus heading forges VERIFIED); r2 46eeb56d neutralizes it; core 4982; opus re-review 21:42Z. opus APPROVE r2 46eeb56d (injection repro stays on one inline-code line; backticks neutralized; key omitted when absent); merged; seal+budget 23/0. Released in v10.5.2 (merge 4792e911 is an ancestor of v10.5.2). |
|
|
451
451
|
| E-121 | Pulse ID_RE and DEPENDS_ON_ID_RE reject ids with digits in the prefix (S41-01), so all 16 S41 rows are invisible to the building/ready counts and budgets; accept [A-Z]+[0-9]*-[0-9]+[a-z]? | scripts/v10-pulse.sh (id regexes only), tests/test-v10-pulse.sh | LOW | fixture: a building S41-01 row is counted and a "Depends on S41-06" is honored (red first) | released@2026-09-28T22:26Z | Source: 21:50Z pulse showed building=0 while S41-01, S41-02, S41-16 were building. Dispatched 21:51Z. Built f94ab0da (T52/T53 red first); Tech Lead APPROVE (full-match on cell 0 and Depends clause only); merged; test-v10-pulse.sh 149/0. Released in v10.5.3 (merge aecf6daa is an ancestor of v10.5.3). |
|
|
452
|
-
| E-122 | Scorecard headline pair (loki on sonnet vs raw opus) is green on cost only at 0.5x raw or less, per D41; add the rule and a test | eval/loki10/scorecard, eval/loki10/test-scorecard.sh | LOW | fixture at 0.6x raw cost is red on the headline pair, 0.5x is green (red first) |
|
|
453
|
-
| E-123 | tests/test-security-scan-coverage.sh runs only in local-ci.sh, never in CI, so its .gitleaksignore baseline drifted unnoticed (6358e0a6); register it in tests/run-all-tests.sh and shard-durations so CI Tests run it | tests/run-all-tests.sh, tests/shard-durations.tsv | LOW | test-shard-coverage.sh lists it; the suite passes on main (31/0) |
|
|
454
|
-
| E-124 | verifyPreSealedWall cross-checks the carried oracle_normalizers_sha256 against the current oracle seal (today only cases and coverage hashes are checked) | loki-ts/src/engine10/modernize/presealed_wall.ts, its test | LOW | a Wall sealed against one normalizer hash fails verify after the oracle normalizers change (red first) |
|
|
455
|
-
| E-125 | Wall red classification: real pytest prints collection-time AttributeError/NameError frames as "path.py:N: in <module>", not "File ...", so wall.ts never classifies them red (always not_run, fail-safe but the D42 red class cannot fire); parse both frame shapes and replace the B3 test fixtures with real pytest output | loki-ts/src/engine10/stages/wall.ts, loki-ts/tests/engine10/wall.test.ts | MEDIUM | a real pytest run (captured fixture) with an in-repo AttributeError classifies red; third-party frame stays not_run; core stays under 5000 |
|
|
452
|
+
| E-122 | Scorecard headline pair (loki on sonnet vs raw opus) is green on cost only at 0.5x raw or less, per D41; add the rule and a test | eval/loki10/scorecard, eval/loki10/test-scorecard.sh | LOW | fixture at 0.6x raw cost is red on the headline pair, 0.5x is green (red first) | released@2026-09-28T23:18Z | Source: S41-02 Tech Lead review note 5. Depends on S41-02. Dispatched 22:01Z. Built a4bc79b9 (0.6x headline red on the old script); Tech Lead APPROVE (label-matched pair, inclusive 0.5x, null stays red); merged; test-scorecard 27/0. Released in v10.5.5 (merge 901466ef is an ancestor of v10.5.5). |
|
|
453
|
+
| E-123 | tests/test-security-scan-coverage.sh runs only in local-ci.sh, never in CI, so its .gitleaksignore baseline drifted unnoticed (6358e0a6); register it in tests/run-all-tests.sh and shard-durations so CI Tests run it | tests/run-all-tests.sh, tests/shard-durations.tsv | LOW | test-shard-coverage.sh lists it; the suite passes on main (31/0) | released@2026-09-28T23:18Z | Source: E-114 opus review item 4. Depends on E-114. Dispatched 22:01Z. Built fc3e17b1; Tech Lead APPROVE (self-contained text checks, rows match format); merged; scan-coverage 31/0, shard coverage 19/0. Released in v10.5.5 (merge a553be40 is an ancestor of v10.5.5). |
|
|
454
|
+
| E-124 | verifyPreSealedWall cross-checks the carried oracle_normalizers_sha256 against the current oracle seal (today only cases and coverage hashes are checked) | loki-ts/src/engine10/modernize/presealed_wall.ts, its test | LOW | a Wall sealed against one normalizer hash fails verify after the oracle normalizers change (red first) | released@2026-09-28T23:18Z | Source: M-14 r3 opus review advisory. Dispatched 22:09Z. Released in v10.5.5 (merge 8a99554c is an ancestor of v10.5.5). |
|
|
455
|
+
| E-125 | Wall red classification: real pytest prints collection-time AttributeError/NameError frames as "path.py:N: in <module>", not "File ...", so wall.ts never classifies them red (always not_run, fail-safe but the D42 red class cannot fire); parse both frame shapes and replace the B3 test fixtures with real pytest output | loki-ts/src/engine10/stages/wall.ts, loki-ts/tests/engine10/wall.test.ts | MEDIUM | a real pytest run (captured fixture) with an in-repo AttributeError classifies red; third-party frame stays not_run; core stays under 5000 | review@2026-09-30T17:08Z | Source: S41-16 r2 opus review (ran real pytest 9.0.2). WIND-DOWN 2026-09-28: opus r1 REJECT (B1 owner of missing attribute, B2 space in frame path, B3 captured-stdout injection, B4 chained exception) fixed at 845c9231 on slice-E-125: classifies on the pytest short-summary ERROR line, requires module '<name>' has no attribute with <name> under the repo; wall.test.ts 26/0, r3-B1 to B4 red on e6d2ddec then green. Core 4,998 (cap 4,999). Full engine10 suite not re-run after r3. NEXT: run tests/engine10 plus seal and budget, then opus r2 review, then merge. |
|
|
456
456
|
| E-126 | D41 item 3: repo memory, record the verified build and test command, flaky list and failure causes per repo, cold vs warm | loki-ts/src/e10ext/repomemory.ts, loki-ts/tests/e10ext/repomemory.test.ts | MEDIUM | cd loki-ts and bun test tests/e10ext/repomemory.test.ts | ready@2026-09-28T22:30Z | Source: D41 item 3, SCORECARD-PLAN section 7. Evidence: engine10/cache.ts:87 recordFlaky and :108 topFailures exist, the verified command is not captured. Data only per D42. |
|
|
457
457
|
| E-127 | D41 item 5 (backlog throughput): fetch N issues for a label or milestone as pure data | loki-ts/src/e10ext/issues.ts, loki-ts/tests/e10ext/issues.test.ts | MEDIUM | cd loki-ts and bun test tests/e10ext/issues.test.ts | ready@2026-09-28T22:30Z | Source: D41 item 5. Evidence: engine10/fetch_issue.ts:35 takes one ref only. |
|
|
458
|
-
| E-128 | BACKLOG 147: P7 scanner misses a useMemo factory that calls an already-registered fabricator instead of returning a literal | tests/moat/p7-no-fabricated-data.sh | HIGH | bash tests/moat/p7-no-fabricated-data.sh |
|
|
459
|
-
| E-129 | BACKLOG 117 remainder: WhatsNew.tsx hardcodes a stale CURRENT_VERSION (9.55.0) that drifts from the shipped release | web-app/src/components/WhatsNew.tsx, tests/test-whatsnew-version-sync.sh | LOW | bash tests/test-whatsnew-version-sync.sh |
|
|
460
|
-
| E-130 | D41 item 4 (speed): cache dependency install by lockfile hash in the bash parallel-worktree bootstrap | autonomy/run.sh (create_worktree only), tests/test-worktree-install-cache.sh | MEDIUM | bash tests/test-worktree-install-cache.sh |
|
|
461
|
-
| E-131 | BACKLOG 146: P7 sink regex misses a computed or bracket-indexed sink name, for example window[sinkName](rows) | tests/moat/p7-no-fabricated-data.sh | HIGH | bash tests/moat/p7-no-fabricated-data.sh |
|
|
458
|
+
| E-128 | BACKLOG 147: P7 scanner misses a useMemo factory that calls an already-registered fabricator instead of returning a literal | tests/moat/p7-no-fabricated-data.sh | HIGH | bash tests/moat/p7-no-fabricated-data.sh | building@2026-09-30T17:29Z | Source: BACKLOG 147; the file's own comment at p7-no-fabricated-data.sh:987 names the gap. Same file as E-131: one engineer takes both. |
|
|
459
|
+
| E-129 | BACKLOG 117 remainder: WhatsNew.tsx hardcodes a stale CURRENT_VERSION (9.55.0) that drifts from the shipped release | web-app/src/components/WhatsNew.tsx, tests/test-whatsnew-version-sync.sh | LOW | bash tests/test-whatsnew-version-sync.sh | building@2026-09-30T17:29Z | Source: BACKLOG 117. Evidence: WhatsNew.tsx:5 against VERSION 10.5.3. |
|
|
460
|
+
| E-130 | D41 item 4 (speed): cache dependency install by lockfile hash in the bash parallel-worktree bootstrap | autonomy/run.sh (create_worktree only), tests/test-worktree-install-cache.sh | MEDIUM | bash tests/test-worktree-install-cache.sh | merged@2026-09-30T17:28Z | Source: D41 item 4. Evidence: run.sh:6298-6304 installs unconditionally on every worktree. |
|
|
461
|
+
| E-131 | BACKLOG 146: P7 sink regex misses a computed or bracket-indexed sink name, for example window[sinkName](rows) | tests/moat/p7-no-fabricated-data.sh | HIGH | bash tests/moat/p7-no-fabricated-data.sh | building@2026-09-30T17:29Z | Source: BACKLOG 146. Evidence: SETTER regex at p7-no-fabricated-data.sh:771 matches only literal names. Same engineer as E-128. |
|
|
462
462
|
| E-132 | Wall classifier: a missing test runner (python -m pytest exits 1 with No module named pytest) reads as red, not not_run; D42 red requires the runner to start and at least one test to fail, so require a pytest summary line with failed before red | loki-ts/src/engine10/stages/wall.ts, loki-ts/tests/engine10/wall.test.ts | HIGH | cd loki-ts and bun test tests/engine10/wall.test.ts with a pytest-less python first on PATH | ready@2026-09-28T22:47Z | Source: main red on 04d3ac9c and 708c2907 (CI Bun job had no pytest); reproduced locally with a pytest-less venv, tests (3b) and (4) read fail 1. Seal still refuses later (not_run), so no false VERIFIED, but the Wall mis-seals. Coordinate with E-125 (same classifier). Core budget binds. |
|
|
463
|
-
| E-133 | release.sh guard: refuse to commit dist maps that contain an absolute path (a node_modules symlink in a release worktree wrote 133 /Users paths into loki.js.map and one into cockpit.js.map at v10.5.4) | scripts/release.sh, tests/test-release-dist-guard.sh | MEDIUM | bash tests/test-release-dist-guard.sh |
|
|
464
|
-
|
|
|
465
|
-
|
|
|
463
|
+
| E-133 | release.sh guard: refuse to commit dist maps that contain an absolute path (a node_modules symlink in a release worktree wrote 133 /Users paths into loki.js.map and one into cockpit.js.map at v10.5.4) | scripts/release.sh, tests/test-release-dist-guard.sh | MEDIUM | bash tests/test-release-dist-guard.sh | merged@2026-09-30T17:08Z | Source: v10.5.4 cut 2026-09-28, caught by hand before commit (paths rewritten to ../node_modules/). Guard: grep the dist maps for an absolute or home-directory path after the bump and exit nonzero. |
|
|
464
|
+
| E-134 | spawn_env_fsmonitor.test.ts positive control fails on Bun 1.4.2 (Nightly red 2026-09-29 and 09-30, both OSes): Bun no longer inherits the START env for a spawn with no env option, so the bare control call stops leaking the canary and the test proves nothing there. Keep the product assertions unconditional; add a control that passes the canary explicitly so the hook is proven to record env on any Bun; report which inheritance mode the running Bun has | loki-ts/tests/runner/spawn_env_fsmonitor.test.ts | HIGH | cd loki-ts and bun test tests/runner/spawn_env_fsmonitor.test.ts on Bun 1.3.13 and on latest | review@2026-09-30T17:08Z | Source: Nightly run 36719756873 job 109901555421 (bun-v1.4.2): control record held the withheld sentinel, not the canary. Product calls still did not leak. Security guard, opus review. |
|
|
465
|
+
| E-135 | Post-Release Smoke PyPI install gives up after about 10.5 min (6 attempts, 30s steps) while the published version is still propagating; v10.5.5 failed this way though PyPI now has it. Add --no-cache-dir and widen the window | .github/workflows/post-release-smoke.yml | LOW | bash -n on the step script; a rerun of the smoke on the next release | merged@2026-09-30T17:08Z | Source: Post-Release Smoke run 36497082408 job 109179083720 (FATAL loki-mode-sdk==10.5.5 not installable after retries); PyPI shows 10.5.5 on 2026-09-30. Rerun of the failed jobs requested. |
|
|
466
|
+
| E-136 | measure-size.py counts any touched non-test .py file, so a docstring-only or typing-only second file makes a one-file fix read as medium (click-3449 utils.py, marshmallow-2170, pluggy-442); count only files whose change alters code, not comments or docstrings | eval/loki10/measure-size.py, its test | MEDIUM | the measure-size self test plus a fixture diff with a docstring-only second file reading small | building@2026-09-30T17:29Z | Source: S41-20a opus review 2026-09-30 (criterion 7 cannot stand in for criterion 1). Use the Python ast module to compare function bodies with docstrings stripped. |
|
|
467
|
+
| E-137 | S41-18 interrupt test (legA in eval/loki10/test-scorecard-run.sh) leaks an orphaned run.sh plus harness.py (tasks rt1,rt2) when the run is torn down: two groups found reparented to PID 1 after 18 and 32 min on 2026-09-30, from a removed worktree and a reviewer probe dir | eval/loki10/test-scorecard-run.sh | MEDIUM | bash eval/loki10/test-scorecard-run.sh twice, then no run.sh or harness.py with --tasks rt1,rt2 remains | ready@2026-09-30T17:45Z | Source: pulse Orphan worktree/run.sh processes 2 at 17:30Z; PIDs 56770/56781 and 96302/96310 stopped by literal PID after inspection (the python harness ignored SIGTERM). Fix: trap EXIT in the test that stops the recorded group, and assert no survivors. |
|
|
468
|
+
| S41-16 | P0: Wall red-on-base is vacuous without python (launch error counted as failed on base) | see docs/v10/SCORECARD-PLAN.md | HIGH | per SCORECARD-PLAN.md card | released@2026-09-28T23:18Z | Source: D41, Architect plan 7f671f5c. Depends on D42. D42 (3) confirmed P0; merges before any wave-1 card touching wall, verify or Seal. Dispatched 21:42Z. r1 55e427ab opus REJECT: not_run never reaches seal (seal.ts:117 ignores not_run, so pass 1 fail 0 not_run 1 seals ALREADY_SATISFIED: a new false verdict); jest/vitest/bun non-zero exit without a parsed count read as red; AttributeError/NameError anywhere counted as repo red; system-interpreter results must be not_run. r2 dispatched 21:58Z. r2 d5bb05bd (seal refuses not_run; per-runner red rules; traceback path under repo; system interpreter not_run); core 4997; opus re-review 22:10Z. opus APPROVE r2 d5bb05bd (seal refuses not_run: real-seal test; receipts byte-stable when not_run 0; per-runner red rules; system interpreter not_run). Merged, dist rebuilt. Follow-up E-125. Released in v10.5.5 (merge 8788d54d is an ancestor of v10.5.5). |
|
|
469
|
+
| S41-01 | Harness: accept partial-stream cost, allowlist LOKI_E10_CASCADE, new row fields | see docs/v10/SCORECARD-PLAN.md | HIGH | per SCORECARD-PLAN.md card | review@2026-09-30T17:28Z | Source: D41, Architect plan 7f671f5c. Depends on none. Dispatched 21:41Z. WIND-DOWN 2026-09-28: built at 68d1fc28 on slice-S41-01 (test-harness.sh 126/0; red vs its merge-base 0fe549a0 119/7, the 7 S41-01 legs; positive control provider_cost on e98f default-r1 pub-werkzeug-3121 gives 0.37101 with partial 0.0628). Sonnet TL APPROVE on content (af2109d7): partial-stream cost, never-silently-0, 7-knob allowlist, row fields, repriced files beside untouched originals. The 2 nocascade nulls are killed sessions with no partial-usage file and must stay null (E-98e engine gap). NOT MERGED: (1) rebase onto main conflicts in harness.py V10_ENGINE_ENV_ALLOWLIST (S41-09 and S41-11 added LOKI_E10_PREFIX and LOKI_E10_TRIM), keep one of each and rerun test-harness.sh; (2) SCORECARD-PLAN tags the card HIGH, so D12 needs an opus review before merge (this row said MEDIUM). WEDNESDAY STEP 1. |
|
|
466
470
|
| S41-02 | Scorecard tool: per-tier completion, cost per completed, p50, raw vs loki, into METRICS.md | see docs/v10/SCORECARD-PLAN.md | LOW | per SCORECARD-PLAN.md card | released@2026-09-28T22:26Z | Source: D41, Architect plan 7f671f5c. Depends on none. Dispatched 21:41Z. Built 42c0d88d (21/0; null-cost mutation flips n/a red to green, caught); replay reproduces E-98f exactly; EV-15 medium red on all 3 columns. Tech Lead review 21:51Z. Tech Lead APPROVE (definitions match section 2; replayed all 3 E-98f arms exactly). Merged. Released in v10.5.3 (merge a4cdb78f is an ancestor of v10.5.3). |
|
|
467
|
-
| S41-03 | Arm runner for raw sonnet, raw opus, loki on sonnet (LOKI_EVAL_MODEL) plus OAuth auth guard | see docs/v10/SCORECARD-PLAN.md | MEDIUM | per SCORECARD-PLAN.md card |
|
|
471
|
+
| S41-03 | Arm runner for raw sonnet, raw opus, loki on sonnet (LOKI_EVAL_MODEL) plus OAuth auth guard | see docs/v10/SCORECARD-PLAN.md | MEDIUM | per SCORECARD-PLAN.md card | released@2026-09-28T23:18Z | Source: D41, Architect plan 7f671f5c. Depends on none. Dispatched 21:51Z. Built de741f04 (dry-run for 3 arms; red evidence only proved file existence); Tech Lead review 22:00Z checks the auth guard decision itself. Tech Lead APPROVE de741f04 (guard branches exercised with stubbed security/claude: near-expiry refresh, unreadable keychain, refresh failure; no token output; LOKI_EVAL_MODEL honored by both arms; mid-batch stop keeps prior results); merged; 7/7. Released in v10.5.5 (merge f76810ec is an ancestor of v10.5.5). |
|
|
468
472
|
| S41-04 | First-turn prefix measurement (tokens by type per stage) | see docs/v10/SCORECARD-PLAN.md | LOW | per SCORECARD-PLAN.md card | released@2026-09-28T22:26Z | Source: D41, Architect plan 7f671f5c. Depends on none. Dispatched 21:51Z. Built 71a0d28d; Tech Lead APPROVE (implement row re-derived from 58 impl.json files: mean 982,144, p50 654,959 cache_read, exact); merged. Implement is the re-reading hotspot (982K cache read per task vs 45-68K for intake, plan, Wall). Released in v10.5.3 (merge 926c0371 is an ancestor of v10.5.3). |
|
|
469
|
-
| S41-05 | Attempt-selection rule (pure function in e10ext/select.ts) | see docs/v10/SCORECARD-PLAN.md | HIGH | per SCORECARD-PLAN.md card |
|
|
470
|
-
| S41-12 | Tree swap helper for parallel attempts | see docs/v10/SCORECARD-PLAN.md | HIGH | per SCORECARD-PLAN.md card |
|
|
473
|
+
| S41-05 | Attempt-selection rule (pure function in e10ext/select.ts) | see docs/v10/SCORECARD-PLAN.md | HIGH | per SCORECARD-PLAN.md card | review@2026-09-30T17:29Z | Source: D41, Architect plan 7f671f5c. Depends on D42. WIND-DOWN 2026-09-28: opus r2 REJECT (R1 Wall outside S uncounted, R2 key swaps 2-3 and 5-6 survived, R3 multi-line import passed fence) addressed at 34c44c99 on slice-S41-05 (50/0): R1 done red then green incl. M1'; R3, E3, require() done. LEFT: R2 pair tests 2-3, 4-5, 5-6, 6-7 are written and green but their mutation red-proof was not re-run. NEXT: run those 4 swap mutations, then opus r3 review. |
|
|
474
|
+
| S41-12 | Tree swap helper for parallel attempts | see docs/v10/SCORECARD-PLAN.md | HIGH | per SCORECARD-PLAN.md card | review@2026-09-30T17:08Z | Source: D41, Architect plan 7f671f5c. Depends on D42. WIND-DOWN 2026-09-28: opus REJECT at 7a3fbe53, 5 blocking, all reproduced: B1 resetToBase deletes user untracked files on a successful swap (treeswap.ts:240-243); B2 symlinked attempts dir lets cleanup delete the primary (:301, :312-314); B3 type-changed path (T status) never reset (:228-229); B4 segment-anywhere excludes drop winner changes under src/venv (:109-113 vs :65); B5 base .gitignore restored before listing untracked deletes an ignored .env (:231, :240). Non-blocking N1 to N4 (index rewrite, undo not persisted, .git symlink, O_NOFOLLOW). Resume from branch slice-S41-12. |
|
|
471
475
|
| S41-06 | Baseline scorecard (eval only) on small and medium, all arms | see docs/v10/SCORECARD-PLAN.md | HIGH | per SCORECARD-PLAN.md card | ready@2026-09-28T21:41Z | Source: D41, Architect plan 7f671f5c. Depends on S41-01, S41-02, S41-03, S41-04. |
|
|
472
476
|
| S41-07 | Plan on the cheap model | see docs/v10/SCORECARD-PLAN.md | MEDIUM | per SCORECARD-PLAN.md card | ready@2026-09-28T21:41Z | Source: D41, Architect plan 7f671f5c. Depends on S41-06. |
|
|
473
477
|
| S41-08 | Top model and deterministic-failure escalation | see docs/v10/SCORECARD-PLAN.md | HIGH | per SCORECARD-PLAN.md card | ready@2026-09-28T21:41Z | Source: D41, Architect plan 7f671f5c. Depends on S41-06. |
|
|
474
|
-
| S41-09 | Lean stable prefix (flag) | see docs/v10/SCORECARD-PLAN.md | MEDIUM | per SCORECARD-PLAN.md card |
|
|
478
|
+
| S41-09 | Lean stable prefix (flag) | see docs/v10/SCORECARD-PLAN.md | MEDIUM | per SCORECARD-PLAN.md card | released@2026-09-28T23:18Z | Source: D41, Architect plan 7f671f5c. Depends on S41-04. Dispatched 22:01Z. Released in v10.5.5 (merge ebb16a62 is an ancestor of v10.5.5). |
|
|
475
479
|
| S41-14 | Wall in parallel with implement (item 4, target p50 not worse) | see docs/v10/SCORECARD-PLAN.md | HIGH | per SCORECARD-PLAN.md card | parked@2026-09-28T21:42Z | Source: D41, Architect plan 7f671f5c. Depends on D42, S41-16. D42 (2): deferred; E-98f shows no speed win (Wall-off p50 214s vs 209s) and it touches the moat. Reopen only if Wall is at least 15% of p50, with the Wall sealed and proven red on a clean base before any implement diff. |
|
|
476
480
|
| S41-10 | Relevant context and a static-first brief | see docs/v10/SCORECARD-PLAN.md | MEDIUM | per SCORECARD-PLAN.md card | ready@2026-09-28T21:41Z | Source: D41, Architect plan 7f671f5c. Depends on S41-09. |
|
|
477
|
-
| S41-11 | Rule-based trajectory trimming (flag) | see docs/v10/SCORECARD-PLAN.md | MEDIUM | per SCORECARD-PLAN.md card |
|
|
481
|
+
| S41-11 | Rule-based trajectory trimming (flag) | see docs/v10/SCORECARD-PLAN.md | MEDIUM | per SCORECARD-PLAN.md card | merged@2026-09-30T17:08Z | Source: D41, Architect plan 7f671f5c. Depends on S41-09. WIND-DOWN 2026-09-28: built at 8aafe341 on slice-S41-11 (trim.ts plus providers.ts wiring, 35/0; SDK exposes no Bash exit code to PostToolUse, sdk.d.ts:2677, so nonzero-exit uses a fail-safe heuristic). NEXT: TL review, then merge (rebase onto main: providers.ts and harness.py also changed). |
|
|
478
482
|
| S41-13 | Two parallel attempts for medium and large (flag) | see docs/v10/SCORECARD-PLAN.md | HIGH | per SCORECARD-PLAN.md card | ready@2026-09-28T21:41Z | Source: D41, Architect plan 7f671f5c. Depends on S41-05, S41-12. |
|
|
479
483
|
| S41-15 | After-scorecard and defaults (flip only when green on small and medium) | see docs/v10/SCORECARD-PLAN.md | HIGH | per SCORECARD-PLAN.md card | ready@2026-09-28T21:41Z | Source: D41, Architect plan 7f671f5c. Depends on S41-13, S41-10, S41-11. |
|
|
480
|
-
| S41-17 | Scorecard 95% intervals: bootstrap (seeded, 10000 resamples, per-task clustered over reps) CIs on completion, cost per completed and p50 for each arm and for the Loki minus raw difference; a mark is green or red only when the difference CI excludes 0, else inconclusive, and inconclusive blocks the tier verdict | eval/loki10/scorecard, eval/loki10/test-scorecard.sh | HIGH | bash eval/loki10/test-scorecard.sh |
|
|
481
|
-
| S41-18 | scorecard-run.sh resume: before each arm and rep, read that rep's --out file and pass the harness only tasks with no status ok row; a rerun after an interrupt or auth stop finishes the missing rows and never repeats done ones; auth_guard still runs before every rep | eval/loki10/scorecard-run.sh, eval/loki10/test-scorecard-run.sh | MEDIUM | bash eval/loki10/test-scorecard-run.sh |
|
|
482
|
-
| S41-19 | Stage wall-clock profile: derive per-stage seconds (intake, plan, wall, implement, verify, fix, seal) per run from the preserved E-98f engine10 journals, publish a per-arm p50 and p90 table in METRICS.md and name the slowest stage | eval/loki10/stage-profile.py, docs/v10/METRICS.md | MEDIUM | python3 eval/loki10/stage-profile.py --self-test |
|
|
483
|
-
| S41-20a | Medium tier growth, batch a: add 5 new pub-* medium tasks from pallets repos (click, flask, jinja, itsdangerous, markupsafe) meeting the D30 medium criteria in INDEX.md | eval/loki10/tasks/pub-* (new dirs only) | HIGH | measure-size.py and validate rc=0 on the new tasks; RED at base and GREEN with the merged upstream fix for each |
|
|
484
|
-
| S41-20b | Medium tier growth, batch b: add 5 new pub-* medium tasks from attrs, more-itertools, packaging, humanize, faker meeting D30 | eval/loki10/tasks/pub-* (new dirs only) | HIGH | as S41-20a |
|
|
485
|
-
| S41-20c | Medium tier growth, batch c: add 5 new pub-* medium tasks from werkzeug, jsonschema, and other pure-Python repos with pytest suites (for example marshmallow, httpx, pluggy) meeting D30 | eval/loki10/tasks/pub-* (new dirs only) | HIGH | as S41-20a |
|
|
484
|
+
| S41-17 | Scorecard 95% intervals: bootstrap (seeded, 10000 resamples, per-task clustered over reps) CIs on completion, cost per completed and p50 for each arm and for the Loki minus raw difference; a mark is green or red only when the difference CI excludes 0, else inconclusive, and inconclusive blocks the tier verdict | eval/loki10/scorecard, eval/loki10/test-scorecard.sh | HIGH | bash eval/loki10/test-scorecard.sh | review@2026-09-30T17:28Z | Source: D43 item 2. Deterministic seed; a fixture where arms differ by noise only must read inconclusive, a clear gap must read green or red. Stdlib only. WIND-DOWN 2026-09-28: built at f3f1d985 on slice-S41-17 (test-scorecard.sh 43/43; new cases a to e are 27 pass 16 fail on the old scorecard). Seeded (41) 10000-resample percentile bootstrap clustered by task; marks need the difference CI strictly outside 0; headline cost uses the ratio against 0.5; over 2.5 percent undefined replicates downgrades to inconclusive. Not benchmarked at real-eval scale. NEXT: opus review (HIGH, flip gate), then merge. |
|
|
485
|
+
| S41-18 | scorecard-run.sh resume: before each arm and rep, read that rep's --out file and pass the harness only tasks with no status ok row; a rerun after an interrupt or auth stop finishes the missing rows and never repeats done ones; auth_guard still runs before every rep | eval/loki10/scorecard-run.sh, eval/loki10/test-scorecard-run.sh | MEDIUM | bash eval/loki10/test-scorecard-run.sh | merged@2026-09-30T17:28Z | Source: D43 item 4. Do not change auth_guard logic or harness.py (S41-01 owns it). Test with the stub arm: kill mid-rep, rerun, assert each task row appears exactly once per rep. WIND-DOWN 2026-09-28: built at 66cc1882 on slice-S41-18 (scorecard-run.sh resume; test-scorecard-run.sh 11/11, legs a to d red on the old script then green). LEFT: leg (a) seeds via a clean run, not a real SIGTERM mid-rep; no assertion for a capped (timeout) row; missing_tasks tier filter does not fail loud on an invalid tier; an empty tier now exits 0 instead of erroring. NEXT: close those 4, then TL review. |
|
|
486
|
+
| S41-19 | Stage wall-clock profile: derive per-stage seconds (intake, plan, wall, implement, verify, fix, seal) per run from the preserved E-98f engine10 journals, publish a per-arm p50 and p90 table in METRICS.md and name the slowest stage | eval/loki10/stage-profile.py, docs/v10/METRICS.md | MEDIUM | python3 eval/loki10/stage-profile.py --self-test | merged@2026-09-30T17:08Z | Source: D43 item 3. Read only on run data. If the journals lack stage timestamps, say so with evidence and propose the minimal event field instead of guessing. The cut slice is cut from its result. WIND-DOWN 2026-09-28: built at e06fa612 on slice-S41-19 (eval/loki10/stage-profile.py with --self-test, METRICS section over all 63 E-98f runs). Result: implement is 72.5 to 85.7 percent of wall-clock in every arm; wall is 23 to 29 percent and hits its own 90s timeout in 9/21 (default) and 11/21 (nocascade) runs, directly on the critical path, which clears D42 item 2's 15 percent revival bar for S41-14. NEXT: TL review and merge, then CTO call on reopening S41-14 (wall off the critical path) and an implement token/turn cut. |
|
|
487
|
+
| S41-20a | Medium tier growth, batch a: add 5 new pub-* medium tasks from pallets repos (click, flask, jinja, itsdangerous, markupsafe) meeting the D30 medium criteria in INDEX.md | eval/loki10/tasks/pub-* (new dirs only) | HIGH | measure-size.py and validate rc=0 on the new tasks; RED at base and GREEN with the merged upstream fix for each | review@2026-09-30T17:28Z | Source: D43 item 2 (medium to 20). Return the INDEX.md lines in the report, do not edit INDEX.md (merge appends). No task whose issue is already present. WIND-DOWN 2026-09-28: 2 of 5 tasks built and self-verified at d8d8d41e on slice-S41-20a: pub-flask-6093 (fix flask#6096) and pub-click-3449 (fix click#3533), RED rc=1, GREEN rc=0, deletion mutant red, no-op baseline not completed; INDEX lines in the engineer report (not yet in INDEX.md). Stopped mid-screen: flask#5736 (asserts span 2 test files), flask#5526, itsdangerous#151. Rejected: click#2836 (emoji in issue body). NEXT: opus review of the 2 tasks, append INDEX lines, then resume the 3 candidates. |
|
|
488
|
+
| S41-20b | Medium tier growth, batch b: add 5 new pub-* medium tasks from attrs, more-itertools, packaging, humanize, faker meeting D30 | eval/loki10/tasks/pub-* (new dirs only) | HIGH | as S41-20a | review@2026-09-30T17:28Z | Source: D43 item 2. Same rules as S41-20a. WIND-DOWN 2026-09-28: 3 of 5 tasks built at 881126a0 on slice-S41-20b: pub-attrs-1327 (fix attrs#1328), pub-packaging-1162 (fix packaging#1163, hidden test trimmed, pins pytest<9), pub-humanize-103 (fix humanize#110), each RED rc=1, GREEN rc=0, deletion mutant red; D30 no-op baseline NOT run for any. INDEX lines in the engineer report. Stopped: faker#2206 (fix #2211) venv installed, RED/GREEN not run. more-itertools has no 2-source-file fixes (rejected). NEXT: run the no-op baseline on the 3, opus review, append INDEX lines, then finish faker#2206. |
|
|
489
|
+
| S41-20c | Medium tier growth, batch c: add 5 new pub-* medium tasks from werkzeug, jsonschema, and other pure-Python repos with pytest suites (for example marshmallow, httpx, pluggy) meeting D30 | eval/loki10/tasks/pub-* (new dirs only) | HIGH | as S41-20a | review@2026-09-30T17:28Z | Source: D43 item 2. Same rules as S41-20a. WIND-DOWN 2026-09-28: 1 of 5 tasks built at f6ea1d02 on slice-S41-20c: pub-httpx-2536 (fix httpx#2543; hidden test trimmed to test_url_query_encoding), RED 1 failed, GREEN 1 passed, deletion mutant red; D30 no-op baseline NOT run. Stopped: marshmallow#2170 (fix #2792, 3 source files) cloned only. jsonschema, pluggy, most httpx fixes are single-file (rejected); httpx#1850 needs Python below 3.13 (cgi). NEXT: no-op baseline, opus review, INDEX line, then marshmallow#2170. Medium tier after 20a/b/c: 7 plus 6 candidates = 13, still short of 20. |
|
|
486
490
|
| E-98b | a spec_conflict implement exit still runs verify and fix; receipt keeps SPEC_CONFLICT | loki-ts/src/engine10/machine.ts, loki-ts/tests/engine10/machine*.test.ts | HIGH | fake-stage test red on main; core +3 max | released@2026-09-28T21:01Z | Source: MEDIUM-ANALYSIS.md. Dispatched 19:40Z sonnet; opus review. opus APPROVE 214b8dd2 (seal stays SPEC_CONFLICT through verify and fix; empty diff fails verify, no false pass); merged 97b80ca4; machine+budget 26/0. Released in v10.5.0 (merge 97b80ca4 is an ancestor of v10.5.0). |
|
|
487
491
|
| E-98c | existing test files append-only in the implement brief; impactedTests falls back to named files when relevant_files is empty | loki-ts/src/engine10/stages/implement.ts, its test | MEDIUM | unit test red then green; core +2 max | released@2026-09-28T21:01Z | Source: MEDIUM-ANALYSIS.md. Dispatched 19:40Z sonnet. Tech Lead APPROVE b24f4da2; merged f4606246; implement+machine+budget 37/0. Released in v10.5.0 (merge f4606246 is an ancestor of v10.5.0). |
|
|
488
492
|
| E-98d | repo map extracts Python top-level def and class names | loki-ts/src/engine10/repomap.ts, loki-ts/tests/engine10/repomap*.test.ts | MEDIUM | unit test red then green; core +4 max | released@2026-09-28T21:01Z | Source: MEDIUM-ANALYSIS.md. Dispatched 19:40Z sonnet. Offline 7-repo check runs after merge. Tech Lead APPROVE ba31cca4 plus async def fix a1e8dc4b; merged 15859bef; 41/0 across repomap, implement, machine, budget. Offline 4/7 repos rank the upstream file in the top 8 (was 0/7; card bar 5/7, keyword-tie ceiling). Released in v10.5.0 (merge 15859bef is an ancestor of v10.5.0). |
|
package/docs/v10/METRICS.md
CHANGED
|
@@ -424,3 +424,113 @@ instruction for this slice.
|
|
|
424
424
|
Command: `python3` one-off aggregation of the `result-cost-*.json` files
|
|
425
425
|
under `~/loki-ci-logs/eval/e98f-engine/*/*/.loki/metrics/`, grouped by the
|
|
426
426
|
stage suffix after `result-cost-e10-<ts>-<hash>-`.
|
|
427
|
+
|
|
428
|
+
## Stage wall-clock profile (S41-19)
|
|
429
|
+
|
|
430
|
+
Source: `docs/v10/DECISIONS.md` D43 item 3. `eval/loki10/stage-profile.py`
|
|
431
|
+
run over all 9 preserved E-98f engine copies
|
|
432
|
+
(`~/loki-ci-logs/eval/e98f-engine/{default,nocascade,nowall}-r{1,2,3}/*/.loki/
|
|
433
|
+
runs/*/events.jsonl`), 21 runs per arm, all 63 preserved runs counted (no
|
|
434
|
+
filter for completed/graded, unlike the pooled table above), no new eval
|
|
435
|
+
spend. Per-run total is `time_to_pr_s` from the matching harness row (the
|
|
436
|
+
`results.jsonl` next to each source `e98f-<arm>-r<n>` dir, deduped one row
|
|
437
|
+
per task with the rule in `docs/v10/MEDIUM-ANALYSIS.md` "After (E-98f)");
|
|
438
|
+
one nowall row has a null `time_to_pr_s` and falls back to the journal's own
|
|
439
|
+
run.completed-minus-run.started span. Per-stage seconds are self-time
|
|
440
|
+
(top-of-stack) attribution over each run's `stage.started`/`.completed`/
|
|
441
|
+
`.failed`/`.skipped` events, which nests correctly through cascade's plan/
|
|
442
|
+
wall overlap (wall opens before plan closes) and repeated fix/verify
|
|
443
|
+
rounds; mechanism, a worked synthetic example, and the same regression
|
|
444
|
+
covered by `--self-test` are in the script's module docstring and tests.
|
|
445
|
+
|
|
446
|
+
Journals have what the profile needs: every run has a run.started/
|
|
447
|
+
run.completed pair, every stage transition is covered by a start plus a
|
|
448
|
+
completed/failed/skipped event, and unattributed time (a run's own launch/
|
|
449
|
+
push-confirm overhead plus untracked gaps such as the post-seal
|
|
450
|
+
pr.opened/deep.started handoff) is only 0.2-1.0s p50 (0.1-0.5% of total) in
|
|
451
|
+
every arm. No missing event field is needed.
|
|
452
|
+
|
|
453
|
+
Share is aggregate: sum of a stage's seconds over sum of every run's total,
|
|
454
|
+
across the arm's 21 runs (`stage-profile.py`'s own column). It sums to
|
|
455
|
+
100% by construction, unlike a p50-over-p50 ratio (p50s of different
|
|
456
|
+
stages do not fall on the same run, so those ratios can tie or overshoot
|
|
457
|
+
100%; an earlier draft of this section used that ratio and wrongly read
|
|
458
|
+
wall and implement as tied in nocascade at p50 90.0s/88.2s -- the aggregate
|
|
459
|
+
share below, 29.0%/62.9%, does not tie).
|
|
460
|
+
|
|
461
|
+
| stage | default p50/p90 (s) | default share | nocascade p50/p90 (s) | nocascade share | nowall p50/p90 (s) | nowall share |
|
|
462
|
+
|---|---|---|---|---|---|---|
|
|
463
|
+
| intake | 0.1 / 11.2 | 1.3% | 0.1 / 9.8 | 1.4% | 0.1 / 6.7 | 1.2% |
|
|
464
|
+
| plan | 0.0 / 0.0 | 0.2% | 0.0 / 0.0 | 0.1% | 18.7 / 35.6 | 7.1% |
|
|
465
|
+
| wall | 73.6 / 90.0 | 23.0% | 90.0 / 90.0 | 29.0% | 0.0 / 0.0 | 0.0% |
|
|
466
|
+
| implement | 139.8 / 424.1 | 72.5% | 88.2 / 253.1 | 62.9% | 158.1 / 352.9 | 85.7% |
|
|
467
|
+
| verify | 1.7 / 5.3 | 0.8% | 1.5 / 4.3 | 0.9% | 1.7 / 5.4 | 1.1% |
|
|
468
|
+
| fix | 0.0 / 18.9 | 1.9% | 0.0 / 0.0 | 5.3% | 0.0 / 35.7 | 4.4% |
|
|
469
|
+
| seal + commit | 0.1 / 0.1 | 0.1% | 0.1 / 0.1 | 0.1% | 0.1 / 0.1 | 0.1% |
|
|
470
|
+
| unattributed | 1.0 / 1.7 | 0.4% | 0.9 / 1.6 | 0.4% | 0.8 / 1.7 | 0.4% |
|
|
471
|
+
| **total** | **209 / 483** | **100%** | **166 / 565** | **100%** | **199 / 357** | **100%** |
|
|
472
|
+
|
|
473
|
+
"plan" reads near-zero in the two wall-on arms (default, nocascade) not
|
|
474
|
+
because planning is free, but because "wall" opens before "plan" closes
|
|
475
|
+
(seen directly in the journals: e.g. pub-werkzeug-3271/default-r1, plan
|
|
476
|
+
starts and wall starts within 4ms of each other, plan closes 24.96s later
|
|
477
|
+
while wall is still running) and self-time attribution charges the overlap
|
|
478
|
+
to whichever stage is innermost on the stack (wall). This overlap happens
|
|
479
|
+
in both wall-on arms regardless of the cascade knob; it is wall racing
|
|
480
|
+
plan, not cascade. nowall's runs, with no wall racing it, show plan's real
|
|
481
|
+
cost (18.7s p50). "fix" is 0 at p50 in every arm (most runs need no fix
|
|
482
|
+
round) but reaches 18.9-35.7s at p90 when one or two rounds fire.
|
|
483
|
+
|
|
484
|
+
Slowest stage by aggregate share: **implement** in every arm (72.5%,
|
|
485
|
+
62.9%, 85.7%), and per the S41-04 token table above, the stage with by far
|
|
486
|
+
the largest token volume (mean cache_read 982K tokens, p50 654K, the most
|
|
487
|
+
of any stage).
|
|
488
|
+
|
|
489
|
+
**Wall meets D42 item 2's own revival bar.** That decision deferred S41-14
|
|
490
|
+
(skip implement straight past Wall) with an explicit condition: "It may be
|
|
491
|
+
revived only on new evidence that Wall is 15% or more of p50 wall-clock."
|
|
492
|
+
This profile is that evidence: wall's aggregate share is 23.0% (default)
|
|
493
|
+
and 29.0% (nocascade), both above 15%. Two more facts from the same
|
|
494
|
+
journals, not yet in any prior METRICS.md entry: (1) of the 21 wall-opened
|
|
495
|
+
runs per arm, wall hits its own timeout (`stage.failed` with
|
|
496
|
+
`data.reason=="limit"`, `limit_s`=90) in 9/21 default runs and 11/21
|
|
497
|
+
nocascade runs -- wall burns its full 90s budget with nothing to show for
|
|
498
|
+
it in roughly half of runs; (2) implement starts within 1ms of wall's
|
|
499
|
+
close in every run that has both (p50 and p90 gap 0.0-0.001s across 18
|
|
500
|
+
measured pairs per arm) -- wall is not waited-on after the fact, it is
|
|
501
|
+
directly on the critical path in front of implement. Whether to actually
|
|
502
|
+
revive S41-14 is a HIGH-tier call under D42 item 2's own invariant (Wall
|
|
503
|
+
files must stay sealed and proven red on the base tree before implement
|
|
504
|
+
exists), not decided here; this section only supplies the measurement that
|
|
505
|
+
triggers reconsidering it.
|
|
506
|
+
|
|
507
|
+
nowall's total p50 (199s) is 10s below default's (209s), the opposite
|
|
508
|
+
direction from the completed-only table above (214s vs 209s, nowall
|
|
509
|
+
higher); both are inside the noise D43 describes (raw swung 85.7% to
|
|
510
|
+
71.4% between two runs on the same 7 tasks), so neither ordering should be
|
|
511
|
+
read as a verdict on nowall by itself -- the wall evidence above is the
|
|
512
|
+
finding, not the nowall-vs-default total.
|
|
513
|
+
|
|
514
|
+
Largest unattributed chunk: the internal-gap component (untracked time
|
|
515
|
+
between a stage.completed for seal and the next tracked event, chiefly the
|
|
516
|
+
post-seal pr.opened/deep.started handoff) at about 0.75s p50 in every arm,
|
|
517
|
+
ahead of pre-launch (about 0.1s) and post-push (0.0-0.2s) overhead.
|
|
518
|
+
nocascade's post-push reads slightly negative (-0.02s p50): `harness.py`
|
|
519
|
+
truncates `time_to_pr_s` to whole seconds (`pushed_at - int(started)`, line
|
|
520
|
+
1177), so pre/post carry up to about 1s of rounding residue; only the
|
|
521
|
+
internal-gap component has millisecond precision. All three are small
|
|
522
|
+
relative to the named stages and do not change where the time goes.
|
|
523
|
+
|
|
524
|
+
Recommended cut: **wall**, on the strength of meeting D42 item 2's own
|
|
525
|
+
15%-of-p50 revival bar with direct evidence (23-29% aggregate share, half
|
|
526
|
+
of runs hitting its full timeout, zero wait-gap into implement) -- reopen
|
|
527
|
+
S41-14 for a HIGH-tier call rather than starting a new knob. Implement
|
|
528
|
+
remains the largest absolute-time consumer in every arm regardless of
|
|
529
|
+
wall's fate (72.5-85.7% aggregate share) and stays a second, independent
|
|
530
|
+
candidate: the S41-04 token-table evidence points at trimming per-turn
|
|
531
|
+
context / cache_read volume during implement, or reducing its turn count;
|
|
532
|
+
profiling implement's own internal turn-by-turn timing (not available from
|
|
533
|
+
`result-cost-*.json` alone) would be that slice's first step.
|
|
534
|
+
|
|
535
|
+
Command: `python3 eval/loki10/stage-profile.py
|
|
536
|
+
~/loki-ci-logs/eval/e98f-engine/{default,nocascade,nowall}-r{1,2,3}`
|
package/docs/v10/PROGRESS.md
CHANGED
|
@@ -1488,3 +1488,20 @@ The swarm is stopped: .loki/V10-STOP exists, the loop has no wake-ups, and the c
|
|
|
1488
1488
|
2. S41-01: rebase slice-S41-01 onto main, keep one LOKI_E10_PREFIX and one LOKI_E10_TRIM in V10_ENGINE_ENV_ALLOWLIST, rerun bash eval/loki10/test-harness.sh to 0 failures, send it to an opus reviewer, and merge on APPROVE. No scorecard counts until this is merged (D43 item 1).
|
|
1489
1489
|
3. Then merge the eval prerequisites (S41-17 CIs, S41-18 resume) and bring the medium tier to 20 tasks (review S41-20a/b/c, run their no-op baselines, append their INDEX lines, and cut 7 more).
|
|
1490
1490
|
4. Then run the medium-tier eval per D43: raw sonnet, raw opus and loki on sonnet, at least 3 reps each, back to back, with auth checked before every rep and resume on interrupt; decide only on differences whose 95% interval excludes 0.
|
|
1491
|
+
|
|
1492
|
+
## 2026-09-30T16:58Z RESUME (Chief of Staff / Release Manager)
|
|
1493
|
+
- v10.5.5 verified (after the 2026-09-28 hand-off): Release 21b7becd all jobs success; npm latest 10.5.5, gitHead 21b7becd; body 24 lines; Post-Release Smoke green on rerun of run 36497082408 (the first attempt timed out waiting on PyPI, now E-135). 9 rows flipped released.
|
|
1494
|
+
- Nightly red since 2026-09-29 is E-134 (fsmonitor test control breaks on Bun 1.4.2; product calls still do not leak).
|
|
1495
|
+
- Usage governor: still uncalibrated, no founder reading on file after the reset; staffing at the operating-model floor of 8 until a reading arrives.
|
|
1496
|
+
- Order per hand-off: S41-01 (rebase, opus), then S41-17/S41-18, S41-20a/b/c toward 20 medium tasks, then the D43 medium eval. Rework in parallel: M-15, E-125, S41-05, S41-12; fixes E-134, E-135.
|
|
1497
|
+
|
|
1498
|
+
## 2026-09-30T17:08Z (Chief of Staff)
|
|
1499
|
+
- Merged and pushed (53918a30): E-135 (smoke PyPI window 21 min, TL APPROVE), S41-19 (stage profile, TL APPROVE; implement 72 to 86 percent, Wall 23 to 29 percent with 90s timeouts in 9 to 11 of 21 runs), S41-11 (trim flag, TL r2 APPROVE, 37/0), E-133 (release map path guard, TL APPROVE, 9/0, reproduced the 10.5.4 incident as a refusal). CI watcher armed; 10.5.6 on green.
|
|
1500
|
+
- Rejected and in rework: S41-18 (identity keys untested), E-130 (cache copied into every worktree; publish race), M-15 r2 (no ablation; conformance forgeable via conftest; classifier diverges from wall.ts, now told to reuse it), S41-17 (green from noise below the D43 floor; fixed at 3a1077c0, awaiting opus r2), S41-12 r2 (4 rollback data-loss findings; fixed at d72ac106, awaiting opus r3), S41-05 r3 (fixed at 5aae1384, awaiting opus r4).
|
|
1501
|
+
- Opus share 34 to 41 percent against the D13 30 percent cap: HIGH reviews queued (S41-05, S41-12, S41-17, E-134, E-125) and released two at a time as running opus reviews finish. S41-01 (P0) opus review launched despite the cap.
|
|
1502
|
+
- Two reviewer temp dirs without an ownership marker remain (/private/tmp/loki-run.ztK3ctuo, /private/tmp/claude-501/loki-run.42ODTAwP); the cleanup helper refused both (rc 64) and they are left in place.
|
|
1503
|
+
|
|
1504
|
+
## 2026-09-30T17:29Z (Chief of Staff)
|
|
1505
|
+
- Merged: E-130 (worktree install cache, TL r2 APPROVE, 15/0; .loki copy 2.32s to 0.04s with a 71 MB cache) and S41-18 (resume, TL r3 APPROVE, 17/0). Pushed cad4615f with two red-main fix-forwards: 7f1dff57 (E-133 shard-durations row missing) and 010797b3 (E-133 fixture tripped test-no-hardcoded-paths, the real cause of Tests red on 53918a30). Local fast tier: 96 PASS, 0 FAIL before the 10 min cap. CI watcher armed; 10.5.6 on green.
|
|
1506
|
+
- S41-01 opus r1 REJECT (a killed session's cost silently dropped, understating loki); fixed at 5c539ee5 (129/0, 0 of 77 preserved rows change), opus r2 in flight. S41-17 opus r2 REJECT (floor counted rows not evaluated reps); fixed at 37fc78d2 (63/0), opus r3 in flight. S41-05 opus r4 REJECT (template-literal dynamic import bypasses the fence); engineer switching to Bun scanImports.
|
|
1507
|
+
- Medium tier: S41-20a flask-6093 reworked (click-3449 dropped); 20b/20c self-check kept attrs-1327, packaging-1162, faker-2206 (added an anti-alias test), httpx-2536 and dropped humanize-103, marshmallow-2170, pluggy-442. Medium would be 12 of the 20 D43 needs. The INDEX.md edits on the three branches will conflict at merge.
|