loki-mode 10.6.9 → 10.6.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/SKILL.md +2 -2
- package/VERSION +1 -1
- package/autonomy/loki +7 -5
- package/dashboard/__init__.py +1 -1
- package/docs/INSTALLATION.md +1 -1
- package/docs/TOOL-INTEGRATION.md +3 -3
- package/docs/v10/BOARD.md +17 -7
- package/docs/v10/DECISIONS.md +12 -0
- package/docs/v10/E2E-D65.md +36 -0
- package/docs/v10/PROGRESS.md +27 -0
- package/loki-ts/dist/loki.js +443 -443
- package/mcp/__init__.py +1 -1
- package/package.json +2 -1
- package/plugins/loki-mode/.claude-plugin/plugin.json +1 -1
- package/schemas/features.schema.json +71 -0
- package/schemas/loki-yaml.schema.json +123 -0
- package/schemas/manifest.schema.json +77 -0
- package/schemas/migration-plan.schema.json +109 -0
- package/schemas/outcome-contract.schema.json +73 -0
- package/schemas/seams.schema.json +90 -0
- package/schemas/status-result.schema.json +30 -0
- package/schemas/why-result.schema.json +51 -0
- package/web-app/dist/assets/{AdminPage-CZKZLuWU.js → AdminPage-BnPQzCoC.js} +1 -1
- package/web-app/dist/assets/{Avatar-Dcy9kO2E.js → Avatar-DBpPssag.js} +1 -1
- package/web-app/dist/assets/{Badge-DUotUSyx.js → Badge-CxlVZMg8.js} +1 -1
- package/web-app/dist/assets/{Button-CFz_zfMZ.js → Button-BXMmAcji.js} +1 -1
- package/web-app/dist/assets/{CockpitPage-BhRw_oiM.js → CockpitPage-Birxgrlx.js} +1 -1
- package/web-app/dist/assets/{ComparePage-DfnsRTTC.js → ComparePage-BqqDXwLS.js} +1 -1
- package/web-app/dist/assets/{ErrorBoundary-Dn0gUu3D.js → ErrorBoundary-C0u7Mi2z.js} +1 -1
- package/web-app/dist/assets/{EvidenceReceiptPanel-Co-xi282.js → EvidenceReceiptPanel-Cp-3O8W8.js} +1 -1
- package/web-app/dist/assets/{GitHubIssuesPanel-CoCpfexq.js → GitHubIssuesPanel-B_W8k95U.js} +1 -1
- package/web-app/dist/assets/{GitHubPRsPanel-Dg0Eg6F_.js → GitHubPRsPanel-BqvyZ1r1.js} +1 -1
- package/web-app/dist/assets/{HomePage-BysxL4mV.js → HomePage-BQ7osrwA.js} +2 -2
- package/web-app/dist/assets/{LoginPage-CQ366p_d.js → LoginPage-B2aHa3wI.js} +1 -1
- package/web-app/dist/assets/{MagicPage-DD7YcbNq.js → MagicPage-DwIxsJzJ.js} +1 -1
- package/web-app/dist/assets/{MetricsPage-BYz49xQj.js → MetricsPage-CRhnEmp8.js} +1 -1
- package/web-app/dist/assets/{NotFoundPage-CKs09MeO.js → NotFoundPage-ByEZNNyC.js} +1 -1
- package/web-app/dist/assets/{ProjectPage-Ci2BIA_D.js → ProjectPage-LSU-iiUP.js} +3 -3
- package/web-app/dist/assets/{ProjectsPage-ClwMH0eu.js → ProjectsPage-lBbt1xYZ.js} +1 -1
- package/web-app/dist/assets/{SettingsPage-Cm0rCX-y.js → SettingsPage-DOdfwqdK.js} +1 -1
- package/web-app/dist/assets/{ShowcasePage-CxvESt8X.js → ShowcasePage-CjsS6oSQ.js} +1 -1
- package/web-app/dist/assets/{SystemSettingsPage-W_CGYPOY.js → SystemSettingsPage-O-HGI2S_.js} +1 -1
- package/web-app/dist/assets/{TeamsPage-feVvRvys.js → TeamsPage-Mt8EP17C.js} +1 -1
- package/web-app/dist/assets/{TemplatesPage-C-pUWMmF.js → TemplatesPage-CVVy4Iz7.js} +1 -1
- package/web-app/dist/assets/{TerminalOutput-j5ibjKY3.js → TerminalOutput-XUgC02sX.js} +1 -1
- package/web-app/dist/assets/{activity-TTdVYMa_.js → activity-DU5SJfx3.js} +1 -1
- package/web-app/dist/assets/{bell-DeoTFwpv.js → bell-C5YepG66.js} +1 -1
- package/web-app/dist/assets/{bot-B5SghxqU.js → bot-BRExedZU.js} +1 -1
- package/web-app/dist/assets/{check-k8SzsdbE.js → check-DsyIFRaT.js} +1 -1
- package/web-app/dist/assets/{chevron-left-DHnEllFz.js → chevron-left-DdK1iGTs.js} +1 -1
- package/web-app/dist/assets/{circle-alert-DW_SLdcB.js → circle-alert-C_4QlfMh.js} +1 -1
- package/web-app/dist/assets/{clock-Bmoaxy09.js → clock-BY9MJ-Yl.js} +1 -1
- package/web-app/dist/assets/{cloud-eg3tzXTh.js → cloud-Cl1jOslN.js} +1 -1
- package/web-app/dist/assets/{code-xml-VAfXihhD.js → code-xml-BRRBRbeE.js} +1 -1
- package/web-app/dist/assets/{database-CY3_-5aK.js → database-BtZdEQTc.js} +1 -1
- package/web-app/dist/assets/{dollar-sign-DYC0OLlg.js → dollar-sign-BqQ0fBnq.js} +1 -1
- package/web-app/dist/assets/{file-code-corner-0X3SveKz.js → file-code-corner-Q9YsC7IC.js} +1 -1
- package/web-app/dist/assets/{file-plus-B_oh_ukl.js → file-plus-GrZYy7o7.js} +1 -1
- package/web-app/dist/assets/{globe-F0tLA8WJ.js → globe-CNKuJhK7.js} +1 -1
- package/web-app/dist/assets/{hammer-DrlvBmfW.js → hammer-Cauj0_Mr.js} +1 -1
- package/web-app/dist/assets/{index-YihVaZAj.js → index-4c5tMfoO.js} +3 -3
- package/web-app/dist/assets/{layers-CbJfn5UC.js → layers-IEQ3AZ0i.js} +1 -1
- package/web-app/dist/assets/{loader-circle-CpmOggou.js → loader-circle-DkC6SXf0.js} +1 -1
- package/web-app/dist/assets/{lock-BGJ6QWrI.js → lock-Db0jlkGG.js} +1 -1
- package/web-app/dist/assets/{package-BTmH4Xto.js → package-BkagJWcN.js} +1 -1
- package/web-app/dist/assets/{plus-mKQ7hz-8.js → plus-BH3dF7wB.js} +1 -1
- package/web-app/dist/assets/{refresh-cw-vPetpLsm.js → refresh-cw-3r-v6CaV.js} +1 -1
- package/web-app/dist/assets/{rotate-ccw-DiJ8GFhj.js → rotate-ccw-DuqsPonD.js} +1 -1
- package/web-app/dist/assets/{scroll-text-DpPQIlQR.js → scroll-text-OaKgXAF3.js} +1 -1
- package/web-app/dist/assets/{server-CiaV4drx.js → server-283wBoqS.js} +1 -1
- package/web-app/dist/assets/{shield-alert-BaaQqyco.js → shield-alert-Cfka1gvI.js} +1 -1
- package/web-app/dist/assets/{thumbs-up-2zNCKp0Q.js → thumbs-up-Be3PhCnV.js} +1 -1
- package/web-app/dist/assets/{trash-2-CiVDx5Co.js → trash-2-BDKSlpn4.js} +1 -1
- package/web-app/dist/assets/{trending-down-tcxvw5BH.js → trending-down-SkioL8cr.js} +1 -1
- package/web-app/dist/assets/{trending-up-C2bv2_v_.js → trending-up-CzCzHgB7.js} +1 -1
- package/web-app/dist/assets/{upload-DS4VPUAp.js → upload-DlhOQ6b3.js} +1 -1
- package/web-app/dist/assets/{usePolling-JggBcVln.js → usePolling-Z7LLnCrf.js} +1 -1
- package/web-app/dist/assets/{user-CvavvOxM.js → user-BKegc_v2.js} +1 -1
- package/web-app/dist/index.html +1 -1
package/README.md
CHANGED
|
@@ -553,7 +553,7 @@ Loki 10 engine:
|
|
|
553
553
|
| `loki status [--json]` | Current status |
|
|
554
554
|
| `loki verify [run-id]` | Re-check a sealed receipt (exit codes above) |
|
|
555
555
|
| `loki doctor [--json] [--airgap]` | Check environment and providers |
|
|
556
|
-
| `
|
|
556
|
+
| `loki control serve\|backfill\|status` | Control Plane server, ship existing runs, reachability check (on by default; `LOKI_CONTROL=0` turns it off) |
|
|
557
557
|
| `loki modernize <repo> --to <target> --dry-run` | Estimate only |
|
|
558
558
|
| `loki plan [PRD]` | Dry-run analysis: complexity, cost, execution plan |
|
|
559
559
|
| `loki version` | Show version |
|
package/SKILL.md
CHANGED
|
@@ -3,7 +3,7 @@ name: loki-mode
|
|
|
3
3
|
description: An autonomous software factory that knows what it is supposed to deliver, and proves it did. Use when the user says Loki Mode or asks to build, fix or verify software autonomously.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# Loki Mode v10.6.
|
|
6
|
+
# Loki Mode v10.6.11
|
|
7
7
|
|
|
8
8
|
**Current entry points (Loki 10 engine):** `loki "<task>"`, `loki owner/repo#N` and `loki quick "<task>"` run the Loki 10 engine and end with a signed receipt (`loki verify`). `loki backlog owner/repo --all` runs many issues in parallel. Guide: `docs/v10/GUIDE.md`. The skill instructions below, and `loki start`, describe the legacy engine, which still ships and is being removed (`loki start owner/repo#N` still routes to it; prefer `loki owner/repo#N`).
|
|
9
9
|
|
|
@@ -473,4 +473,4 @@ See `CHANGELOG.md` entries [7.5.7], [7.5.8], [7.5.13] for the per-fix list and r
|
|
|
473
473
|
|
|
474
474
|
---
|
|
475
475
|
|
|
476
|
-
**v10.6.
|
|
476
|
+
**v10.6.11 | [Autonomi](https://www.autonomi.dev/) flagship product | core skill**
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
10.6.
|
|
1
|
+
10.6.11
|
package/autonomy/loki
CHANGED
|
@@ -21965,6 +21965,8 @@ main() {
|
|
|
21965
21965
|
echo "Alias for 'loki api start'. Starts the dashboard HTTP API"
|
|
21966
21966
|
echo "server (FastAPI, port 57374 by default)."
|
|
21967
21967
|
echo ""
|
|
21968
|
+
echo "For the UI, run 'loki' (opens the Control Plane) or 'loki control serve'."
|
|
21969
|
+
echo ""
|
|
21968
21970
|
echo "Options:"
|
|
21969
21971
|
echo " --host HOST Bind host (default: 127.0.0.1)"
|
|
21970
21972
|
echo " --port PORT Bind port (default: 57374)"
|
|
@@ -33938,14 +33940,14 @@ cmd_outcomes() {
|
|
|
33938
33940
|
LOKI_DIR="${LOKI_DIR:-.loki}" python3 "$lib" "$@"
|
|
33939
33941
|
}
|
|
33940
33942
|
|
|
33941
|
-
# loki control -- D56 control plane (
|
|
33943
|
+
# loki control -- D56 control plane (on by default). The live route is the Bun CLI
|
|
33942
33944
|
# (loki-ts/src/commands/control.ts); this is the LOKI_LEGACY_BASH / no-shim
|
|
33943
|
-
# fallback. It keeps the
|
|
33945
|
+
# fallback. It keeps the off switch and help in bash and hands the work to Bun.
|
|
33944
33946
|
cmd_control() {
|
|
33945
33947
|
local sub="${1:-}"
|
|
33946
33948
|
case "$sub" in
|
|
33947
33949
|
""|-h|--help|help)
|
|
33948
|
-
echo "Usage: loki control <command> [options] (
|
|
33950
|
+
echo "Usage: loki control <command> [options] (on by default; LOKI_CONTROL=0 turns it off; requires bun)"
|
|
33949
33951
|
echo ""
|
|
33950
33952
|
echo "Commands:"
|
|
33951
33953
|
echo " serve [--port N] [--db PATH] Run the control plane + UI on 127.0.0.1"
|
|
@@ -33954,8 +33956,8 @@ cmd_control() {
|
|
|
33954
33956
|
return 0
|
|
33955
33957
|
;;
|
|
33956
33958
|
esac
|
|
33957
|
-
if [ "${LOKI_CONTROL:-}"
|
|
33958
|
-
echo "loki control is
|
|
33959
|
+
if [ "${LOKI_CONTROL:-}" = "0" ]; then
|
|
33960
|
+
echo "loki control is off (LOKI_CONTROL=0). Unset it to turn the Control Plane back on."
|
|
33959
33961
|
return 0
|
|
33960
33962
|
fi
|
|
33961
33963
|
local cli="$SKILL_DIR/loki-ts/dist/loki.js"
|
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.6.
|
|
5
|
+
**Version:** v10.6.11
|
|
6
6
|
|
|
7
7
|
**Engine note:** `loki "<task>"`, `loki owner/repo#N` and `loki quick` run the Loki 10 engine. `loki start` still routes to the legacy engine, which is being removed (planned work resumes 2026-10-07); prefer `loki owner/repo#N`. See [docs/v10/GUIDE.md](v10/GUIDE.md).
|
|
8
8
|
|
package/docs/TOOL-INTEGRATION.md
CHANGED
|
@@ -7,7 +7,7 @@ This document shows how all Loki Mode tools work together to create a unified au
|
|
|
7
7
|
| Tool | Entry Point | Purpose | Communication |
|
|
8
8
|
|------|-------------|---------|---------------|
|
|
9
9
|
| **CLI** | `loki` | User interface for all operations | File-based state |
|
|
10
|
-
| **API** | `loki
|
|
10
|
+
| **API** | `loki api start` | Remote control, SSE events (dashboard API, not the Control Plane UI) | HTTP/REST |
|
|
11
11
|
| **VS Code** | Extension | IDE integration | API client |
|
|
12
12
|
| **MCP** | Claude tools | Claude Code integration | STDIO/MCP protocol |
|
|
13
13
|
| **SKILL** | SKILL.md | Autonomy rules and behavior | File reads |
|
|
@@ -71,8 +71,8 @@ loki stop
|
|
|
71
71
|
loki memory index
|
|
72
72
|
loki memory retrieve "authentication"
|
|
73
73
|
|
|
74
|
-
# Manage API server (enables VS Code,
|
|
75
|
-
loki
|
|
74
|
+
# Manage the dashboard API server (enables VS Code; not the Control Plane UI, run `loki` for that)
|
|
75
|
+
loki api start --port 57374
|
|
76
76
|
loki api start
|
|
77
77
|
|
|
78
78
|
# View dashboard (web UI)
|
package/docs/v10/BOARD.md
CHANGED
|
@@ -606,8 +606,8 @@ Source: ~/git/autonomi-dev/research/2026-09-30-adoption/SWARM-PROMPT-ADOPTION.md
|
|
|
606
606
|
| A-04 | loki-seal: a Claude Code skill plus hook that runs the repo's real test suite on the current diff, refuses done on red or on deleted, skipped, xfailed or weakened tests or CI config (diff scan plus a tree hash of existing tests), prints a 5-line receipt; zero model cost, no dangerous flags; self-contained, no LICENSE file; SUBMIT.md drafts only; a 20-second vhs or asciinema script | packages/loki-seal/** | HIGH | fixture repos: deleting a failing test is blocked; a real fix passes; each weakening class caught | released@2026-10-01T00:52Z | Tier 1 wedge; answers issue #42. Released in v10.5.13 (merge a61e1721 is an ancestor of v10.5.13). |
|
|
607
607
|
| A-04b | loki-seal follow-ups from opus r5: reset the hook-error counter after a successful stop; fall back to stop_hook_active repetition when the tmpdir is read-only or full; tests must write loki-seal-err-* counter files under LOKI_RUN_TMP, not the real os.tmpdir() | packages/loki-seal/** | MEDIUM | package tests plus demo dry-run; no files left in the real tmpdir after the suite | merged@2026-10-01T08:56Z | Source: A-04 opus r5 APPROVE notes. |
|
|
608
608
|
| A-09 | README under 150 lines (directive item 9): line 1 "Your agent says done. Loki proves it." (veto pending, founder queue 10); line 2 "An autonomous software factory that knows what it is supposed to deliver, and proves it did." (D45); then the loki-seal 20-second GIF (placeholder until recorded), then two install lines (loki-seal first, `npx loki-mode tour` second); flags, internal paths, version stamps and app-builder comparisons move to docs; remove the commercial-editions sentence from the top and the npm total-downloads and Docker pulls badges; define "Seal" in one sentence or stop using the word; package.json description and SKILL.md description use line 2 verbatim (SKILL.md header and footer version rules still apply) | README.md, docs/ (moved sections), package.json (description only), SKILL.md (description only) | MEDIUM | README <= 150 lines; no retracted claims (directive Never list); structural checks (SKILL.md sync, readme version) pass | released@2026-10-01T00:52Z | Source: directive item 9 plus D45. Released in v10.5.13 (merge 38ffd386 is an ancestor of v10.5.13). |
|
|
609
|
-
| A-04c | loki-seal reads the delivery contract (D45): from the task or issue the user gave the session (prompt text, a linked issue, a spec file), derive the acceptance checks and refuse "done" until the checks tied to that request pass, not only "the suite is green"; when no contract can be derived, say so on the receipt (NOT VERIFIED: no contract) instead of passing on green alone. Design first (how the hook sees the user request: transcript_path from the hook input, first user message), then build; zero model cost stays a constraint | packages/loki-seal/** | HIGH | fixtures: a session asking for behavior X with a green suite that never tests X is NOT VERIFIED; with a test for X passing it PASSes |
|
|
610
|
-
| A-103b | Seal lists each discarded Wall test in not_proven as "wall test discarded: <path> (<class>)" (A-103 kept seal.ts out of its file set; today only a count appears via base_run not_run) | loki-ts/src/engine10/stages/seal.ts, its test | HIGH | fixture: a discarded Wall file appears by path in not_proven |
|
|
609
|
+
| A-04c | loki-seal reads the delivery contract (D45): from the task or issue the user gave the session (prompt text, a linked issue, a spec file), derive the acceptance checks and refuse "done" until the checks tied to that request pass, not only "the suite is green"; when no contract can be derived, say so on the receipt (NOT VERIFIED: no contract) instead of passing on green alone. Design first (how the hook sees the user request: transcript_path from the hook input, first user message), then build; zero model cost stays a constraint | packages/loki-seal/** | HIGH | fixtures: a session asking for behavior X with a green suite that never tests X is NOT VERIFIED; with a test for X passing it PASSes | building@2026-10-03T08:24Z | r1 d07db333e opus BLOCK: B1 contract blocks drain the shared valve (later skip regression released), B2 conversational/README items block, B3 assertion-free test satisfies item; r2 building |
|
|
610
|
+
| A-103b | Seal lists each discarded Wall test in not_proven as "wall test discarded: <path> (<class>)" (A-103 kept seal.ts out of its file set; today only a count appears via base_run not_run) | loki-ts/src/engine10/stages/seal.ts, its test | HIGH | fixture: a discarded Wall file appears by path in not_proven | building@2026-10-03T08:22Z | sonnet builder on main 76b6c58ff (SPEC-F2 seal.ts merged first) |
|
|
611
611
|
| A-101 | Receipt canonicalization and verify help (item 1) | see docs/v10/ADOPTION-PLAN.md A-101 | HIGH | first-run-gate assertion per plan card | released@2026-09-30T21:23Z | Wave per plan section 5; one writer per file. Released in v10.5.11 (merge 5ea92836 is an ancestor of v10.5.11). |
|
|
612
612
|
| A-102 | Test-runner detection: node:test plus fixtures for all six runners (item 1) | see plan A-102 | HIGH | first-run-gate assertion per plan card | released@2026-10-01T00:52Z | Wave per plan section 5; one writer per file. Released in v10.5.13 (merge 0990afb8 is an ancestor of v10.5.13). |
|
|
613
613
|
| A-104 | Commit only the fix (items 1 and 2, v10) | see plan A-104 | HIGH | first-run-gate assertion per plan card | released@2026-09-30T21:23Z | Wave per plan section 5; one writer per file. Released in v10.5.11 (merge d86a5817 is an ancestor of v10.5.11). |
|
|
@@ -618,7 +618,7 @@ Source: ~/git/autonomi-dev/research/2026-09-30-adoption/SWARM-PROMPT-ADOPTION.md
|
|
|
618
618
|
| D50-F2r | D50-F2 rework, honest label only: label a test value change only on the expected side of an assert comparison or a parametrize expected value, only when the old or new value appears in the task text; wording 'assertion value changed (not shown to be required by the task): file:line old -> new' and keep the 'weakened test' line beside it; exclude control flow, range, tolerances, approx kwargs, decorators | loki-ts/src/e10ext classifier, engine10 verify and seal wiring, tests, dist | probes C D E F G H K from the F2 review all keep 'weakened test'; A labelled only when 5 appears in the task; verdict PARTIAL in every case | HIGH | building@2026-10-01T13:50Z r3 (r2 38d8ffe7 REJECTED: tolerance column never read in the body passes as expected; token boundaries let -25 match 25; required: seal re-check on the committed blob with verify counts) | none |
|
|
619
619
|
| D50-F2-S3 | humanize-174 lift: let the implement brief edit an existing assertion only when the task text states the new expected value; verdict stays PARTIAL, never VERIFIED (moat). CTO call needed first: does a PARTIAL spec-required test edit count as the right outcome, and does the brief license weaken the append-only rule (context.ts:23) | loki-ts/src/e10ext/context.ts, verify and wall policy, eval fixture through implement | humanize-174 fixture through implement ends with code fixed and the spec value assertion changed, PARTIAL with an honest note | HIGH | ready (D53 ruled 12:39Z: VERIFIED allowed when the new literal is verbatim in the issue, the edit changes only that literal in an existing assert, and Wall plus other tests pass; PARTIAL never scores completed; red bypass tests for tolerance, if True to False, deleted assert, literal not in issue) | needs D50-F2r |
|
|
620
620
|
| D50-F4b | D50-F4 hardening from the opus review (non-blocking): validate base from the worker-written event log as ^[0-9a-f]{40,64}$ before any git call, and skip the backstop when log.verify() fails | loki-ts/src/engine10/supervisor.ts or e10ext/commit_filter.ts, tests | a base of --output=x is refused with no git call; a tampered log runs no backstop | merged@2026-10-03T05:14Z | TL APPROVE (3 mutations red, engine10 net 0); cherry-picked cff3d4ab8, dist 159abf6d6, e10ext+supervisor 122/0. Follow-up (non-blocking): invalid raw base records no notProven reason in the supervisor path | none |
|
|
621
|
-
| NPM-LAG | CORRECTED 16:14Z: v10.5.34 (ceb6942a) was accepted by npm at 15:37Z with the notice that it was being processed, and appeared in the registry only at 16:05:58Z (about 29 min; gitHead ceb6942a correct). Not a lost publish, a long npm processing delay, while the Release run already showed success. Guard: publish-npm, post-release-smoke and promote wait up to 45 min for the version (registry, no cache) before declaring it missing, and promote re-triggers when it appears, so a delay is never read as a failure or a pass (10.5.34 smoke failed ETARGET during the lag and skipped promote; rerun 16:30Z); train-cycle merges origin/main back into local main after each release (it stalled at 16:20Z with local main behind its own release) and waits on previous version visible; the release captain (train-cycle.sh) refuses the next release while the previous version is missing from npm | .github/workflows/release.yml publish-npm, scripts/train-cycle.sh, tests | a stubbed npm that never lists the version fails the step; train-cycle logs PREV_NOT_ON_NPM and waits | MEDIUM |
|
|
621
|
+
| NPM-LAG | CORRECTED 16:14Z: v10.5.34 (ceb6942a) was accepted by npm at 15:37Z with the notice that it was being processed, and appeared in the registry only at 16:05:58Z (about 29 min; gitHead ceb6942a correct). Not a lost publish, a long npm processing delay, while the Release run already showed success. Guard: publish-npm, post-release-smoke and promote wait up to 45 min for the version (registry, no cache) before declaring it missing, and promote re-triggers when it appears, so a delay is never read as a failure or a pass (10.5.34 smoke failed ETARGET during the lag and skipped promote; rerun 16:30Z); train-cycle merges origin/main back into local main after each release (it stalled at 16:20Z with local main behind its own release) and waits on previous version visible; the release captain (train-cycle.sh) refuses the next release while the previous version is missing from npm | .github/workflows/release.yml publish-npm, scripts/train-cycle.sh, tests | a stubbed npm that never lists the version fails the step; train-cycle logs PREV_NOT_ON_NPM and waits | MEDIUM | review@2026-10-03T08:22Z | a=63ef78416 (train-cycle npm wait, 68/0) b=b2397bd7c (release.yml npm wait + D75b LOWs, 67/0); opus review dispatched |
|
|
622
622
|
| D53-Q1 | CTO call before D50-F2-S3: under D53(a) a bug-report task ('Expected 200, got 404') lets a test change to the buggy value pass the literal-only gate; only Wall coverage of that behaviour stops it. Options: require the new literal to sit on the expected side of an expected/should phrase in the task, or require Wall coverage of the edited assertion | docs/v10/DECISIONS.md D53 | ruling recorded | HIGH | released@2026-10-01T14:20Z (ruled in DECISIONS D53 amendment: literal must be the EXPECTED value in the acceptance criteria with a source span; Wall must cover the behaviour; unclassifiable stays PARTIAL) | none |
|
|
623
623
|
| D50-F4 | aiq-52 diagnosis: on FAILED, backstopCommit runs git add -A and re-stages the commit stage's exclusions (pre-existing dirt, Wall files, stray lockfiles), so a PR with only setup dirt is pushed. Backstop applies the same exclusions; nothing left means no commit and no PR | loki-ts/src/engine10/supervisor.ts, e10ext helper, tests, dist | preexisting-dirty fixture with FAILED: HEAD equals base and no PR; with a run edit the backstop commit holds only that edit; Wall and stray lockfile never committed | HIGH | merged@2026-10-01T13:50Z 8364a03e (ed8caedf, opus APPROVE r2: filter fixture shows no token, hooks, fsmonitor, textconv or ext-diff with the supervisor env; train/61) | none |
|
|
624
624
|
| D50-F5 | aiq-52 lift: already_done.ts findEvidence misses compound task keywords (searchbar vs search-command); add deterministic compound-token matching and a same-stem source plus referencing-test category pair; confirmation still must cite a real hit | loki-ts/src/e10ext/already_done.ts, tests, dist | aiq-52-shaped fixture yields a candidate; unrelated keyword, source without referencing test and short prefix yield none | HIGH | building@2026-10-01T13:50Z r3 (r2 f4aa8cc9 REJECTED: derivational suffixes, authorization vs author.ts, productivity vs product.ts; import detection counts strings, comments and docstrings) | none |
|
|
@@ -641,9 +641,9 @@ Source: ~/git/autonomi-dev/research/2026-09-30-adoption/SWARM-PROMPT-ADOPTION.md
|
|
|
641
641
|
| D51-B14 | D51 Phase B B14 (flag LOKI_WORKSPACES, docs/v10/D51-PHASE-B.md): Dashboard group card (per-repo rows, integration row, stale-evidence badge) | dashboard/static/start.html | Playwright: a fixture group renders 2 repo rows plus integration; a mismatched head SHA shows stale | LOW | ready | needs B13 |
|
|
642
642
|
| D51-B15 | D51 Phase B B15 (flag LOKI_WORKSPACES, docs/v10/D51-PHASE-B.md): 10x metric: PRs per wall-clock hour and per attention minute from group.json timestamps | autonomy/lib/workspace_metrics.py, tests/workspace/95-metrics.sh | a fixture group gives the hand-computed rate; unmeasured runs are reported, not counted as zero | LOW | ready | needs B07 |
|
|
643
643
|
| D51-B16 | D51 Phase B B16 (flag LOKI_WORKSPACES, docs/v10/D51-PHASE-B.md): Docs plus flag flip after the whole-feature Wall: a 2-repo fixture (lib and app) ends with 2 PRs and integration passed | docs/WORKSPACES.md, tests/workspace/99-e2e.sh | the e2e part passes on CI with the stub provider; one real run is recorded in METRICS.md | MEDIUM | ready | needs all |
|
|
644
|
-
| INTEL-1 | Standards-based receipts (competitive intel 2026-10-01): emit the Seal as an in-toto Statement in a DSSE envelope, verifiable by stock tools (in-toto verify, cosign verify-blob) as well as loki verify; V10-VISION names this stack | loki-ts/src/engine10 seal and receipt export, loki keys, tests, dist | a stock tool verifies a real receipt in a test; a tampered envelope fails both the stock tool and loki verify | HIGH |
|
|
644
|
+
| INTEL-1 | Standards-based receipts (competitive intel 2026-10-01): emit the Seal as an in-toto Statement in a DSSE envelope, verifiable by stock tools (in-toto verify, cosign verify-blob) as well as loki verify; V10-VISION names this stack | loki-ts/src/engine10 seal and receipt export, loki keys, tests, dist | a stock tool verifies a real receipt in a test; a tampered envelope fails both the stock tool and loki verify | HIGH | review@2026-10-03T08:23Z | 65a5b8f8a (DSSE in-toto export/verify, Ed25519 PAE); opus HIGH review dispatched |
|
|
645
645
|
| INTEL-2 | Visible hard cost cap by default: the v10 start line shows the per-run cap; BUDGET_STOP (exit 3) enforces it; loki.yaml budgets.per_run or --max-cost sets it; conservative default with rationale in DECISIONS. Check what already exists first (BUDGET_STOP, LOKI_E10_CAP_S) | engine10 start line and budget path, loki.yaml schema, docs, tests | a run over the cap stops with exit 3 and BUDGET_STOP; the start line names the cap; the default is recorded in DECISIONS | MEDIUM | merged@2026-10-03T04:26Z | none |
|
|
646
|
-
| INTEL-3 | Reviewer-first PR body: delivery contract, each acceptance criterion mapped to changed files and the proving check, then NOT PROVEN, readable in 60 seconds | engine10 pr body rendering, tests | a fixture PR body lists every Wall criterion with its file and check; NOT PROVEN last; under a fixed line budget | MEDIUM |
|
|
646
|
+
| INTEL-3 | Reviewer-first PR body: delivery contract, each acceptance criterion mapped to changed files and the proving check, then NOT PROVEN, readable in 60 seconds | engine10 pr body rendering, tests | a fixture PR body lists every Wall criterion with its file and check; NOT PROVEN last; under a fixed line budget | MEDIUM | building@2026-10-03T08:26Z | r1 18062ed6d TL BLOCK: every criterion shows all Wall files incl failed/unrun as proving; legacy shape not byte-identical (clip/fit); docs claim unwired body ships; r2 building |
|
|
647
647
|
| D50-F1b | D50-F1 structural follow-up (CTO call B): run engine10 in a worktree on base per run instead of the user checkout, copying uncommitted user edits in via git stash create; run files stay under the user .loki; PR pushes from the worktree branch; removes the restore and pre-existing-dirty class by construction | loki-ts/src/engine10 supervisor, worker, intake, seal/discard, pr, their tests, dist | user checkout byte-identical after any outcome; dirty user edits visible to the run; ALREADY_SATISFIED leaves no diff; VERIFIED opens the PR from the worktree branch | HIGH | parked@2026-10-01T12:20Z: e69eeec2 REJECTED by opus. Blocking: dirty user edits snapshotted into the pushed branch and receipt base; ignored deps (node_modules, .venv, .env) absent in the worktree, VERIFIED fixture STALLED. Rework needs refuse-dirty in main(), start from HEAD, a dependency strategy (CoW clone or install step) and kill cleanup; CTO call | D50-F1 |
|
|
648
648
|
| A-120 | One signing key, auto-generated (item 3) | see plan A-120 | HIGH | first-run-gate assertion per plan card | released@2026-10-01T00:52Z | Wave per plan section 5; one writer per file. Released in v10.5.13 (merge 1e1417b9 is an ancestor of v10.5.13). |
|
|
649
649
|
| A-132 | Legacy: no HANDOFF.md, USAGE.md or lockfile in a fix commit (item 2) | see plan A-132 | MEDIUM | first-run-gate assertion per plan card | released@2026-10-01T00:52Z | Wave per plan section 5; one writer per file. Released in v10.5.13 (merge 297c2d1f is an ancestor of v10.5.13). |
|
|
@@ -724,7 +724,7 @@ Source: ~/git/autonomi-dev/research/2026-09-30-adoption/SWARM-PROMPT-ADOPTION.md
|
|
|
724
724
|
| D65-MCP | D65 D63-8: MCP server tools run, status and verify for v10 | mcp/server.py, tests | MEDIUM | merged@2026-10-03T02:28Z | train/81 dd2995153, red on Tests (count docs and event balance, fixed dc1fa634f); carried in train/82 e072e47a9. |
|
|
725
725
|
| D65-CONT | D65 D63-9: one container for the Control Plane plus Helm and ECS examples | Dockerfile.control-plane, deploy/helm, deploy/ecs, docs | MEDIUM | merged@2026-10-03T02:28Z | train/81 dd2995153, red on Tests (DEPS rows, fixed dc1fa634f); carried in train/82 e072e47a9. |
|
|
726
726
|
| D65-SPEC-F1 | D12 should-fix from the HIGH re-review: contract read requires a regular file with a size cap (a FIFO at .loki/contract.json hangs seal), and malformed or unreadable criteria add one NOT PROVEN line instead of being dropped | loki-ts/src/features/contract.ts, tests/features/contract.test.ts | MEDIUM | merged@2026-10-03T03:13Z | Review af6ddde5 2026-10-03T03:03Z; fails closed today, no false VERIFIED. TL APPROVE; 92bf182b4 plus D70 default-on 960f4b57c in train/83 1a63ad156. |
|
|
727
|
-
| D65-SPEC-F2 | D12 should-fix (design): snapshot or hash .loki/contract.json at intake so the implementing agent cannot edit it before seal | loki-ts/src/features/contract.ts, engine10 intake | HIGH |
|
|
727
|
+
| D65-SPEC-F2 | D12 should-fix (design): snapshot or hash .loki/contract.json at intake so the implementing agent cannot edit it before seal | loki-ts/src/features/contract.ts, engine10 intake | HIGH | merged@2026-10-03T08:22Z | opus r2 APPROVE (mutation red 2/18); main 4bf62e271 054caef8b + dist 4088f8cb3 |
|
|
728
728
|
| D62-VIS-F1 | D12 should-fix: SIGKILL the dev server process group after a short grace (a SIGTERM-ignoring server survives capture); verifyReceipt requires regular files for evidence_screens (path "." throws EISDIR) | loki-ts/src/features/visual_evidence.ts, tests/features/visual_evidence.test.ts | MEDIUM | review@2026-10-03T03:12Z | Review af6ddde5 2026-10-03T03:03Z. Built 77522987a with D70 default-on; opus review (verifier path) incl. moat base-vs-slice. |
|
|
729
729
|
| D61-03 | D61 slice 3, lean eligibility without a named file behind LOKI_SPEED | engine10/sizing.ts, features/speed/lean_select.ts, tests engine10/sizing_lean.test.ts | MEDIUM | merged@2026-10-03T03:13Z | TL APPROVE; 999ea6af3 in train/83 1a63ad156. |
|
|
730
730
|
| D61-09 | D61 slice 9, decomposability check with strict-schema confirm | features/speed/decompose_check.ts, tests engine10/decompose_check.test.ts | MEDIUM | merged@2026-10-03T03:13Z | TL APPROVE; 0393c5a6b in train/83 1a63ad156. |
|
|
@@ -750,8 +750,18 @@ Source: ~/git/autonomi-dev/research/2026-09-30-adoption/SWARM-PROMPT-ADOPTION.md
|
|
|
750
750
|
| D63-C4 | BLOCKED-RESUME: loki answer closes the BLOCKED loop | features/blocked_answer.ts, cli.ts, control-plane answer.ts, docs | MEDIUM | merged@2026-10-03T03:55Z | TL APPROVE 7b24ed66b + bdd5018d7; cherry-picked into train 85 (dist 52c3b0e02). |
|
|
751
751
|
| D63-C3 | BASH-FLIPS: bare loki opens the Control Plane; workspace gate flips | autonomy/loki, tests/test-ui-bare-loki.sh, docs/dashboard-guide.md | MEDIUM | approved@2026-10-03T03:55Z | TL APPROVE e41381751 + C3-F 362e9c501 (URL path/query/userinfo reject, [::1] leg, 20/0). Train 86 with C2. |
|
|
752
752
|
| D63-C11a | E2E-HARNESS: stub-provider E2E harness, legs 1-4 | scripts/e2e-d65.sh, scripts/e2e-d65/ | MEDIUM | approved@2026-10-03T03:55Z | TL APPROVE 50a75bcfa (legs 1-2 PASS, positive control rc 1; legs 3-4 fail on known C2/C5 bugs). BUG-C slack --port 0 for C6 follow-up. Train 86. |
|
|
753
|
-
| D63-C11b | E2E-LEGS: stub-provider E2E legs 5-9 (Jira, contract, multi-repo, MCP, containers) and E2E-D65.md section 6 | scripts/e2e-d65/legs/05-09, docs/v10/E2E-D65.md | MEDIUM |
|
|
753
|
+
| D63-C11b | E2E-LEGS: stub-provider E2E legs 5-9 (Jira, contract, multi-repo, MCP, containers) and E2E-D65.md section 6 | scripts/e2e-d65/legs/05-09, docs/v10/E2E-D65.md | MEDIUM | merged@2026-10-03T05:53Z | Built c32e7c06c: legs 1-6, 8 PASS; 7 FAIL (BUG-5), 9 FAIL (BUG-6); force-fail rc 1; shellcheck clean. Sonnet TL review dispatched. TL APPROVE (leg 6 PASS, force-fail fails=1, shellcheck 0); cherry-picked. Doc table needs a refresh after BUG-5/BUG-6 land. |
|
|
754
|
+
| D65-BUG5 | Installed package lacks schemas/loki-yaml.schema.json (package.json files), so `loki workspace run` fails rc=2 outside a source checkout | package.json, a packaged-files test, CHANGELOG | LOW | merged@2026-10-03T05:55Z | Found by C11b leg 7. Builder dispatched from 3c47d0f1a. Fix e2abb9d8f (packaged test 14/1 -> 15/0); TL APPROVE (3 packaging suites green); cherry-picked. |
|
|
755
|
+
| D65-BUG6 | Dockerfile.control-plane omits loki-ts sources imported by packages/control-plane ingest.ts, so docker build fails Could not resolve | Dockerfile.control-plane, .dockerignore, CHANGELOG | MEDIUM | merged@2026-10-03T05:54Z | Found by C11b leg 9. Builder dispatched from 3c47d0f1a. Fix 33e6508c7; TL APPROVE (rebuilt image, /ready 200, test-control-plane 17/0); cherry-picked. Follow-up D65-BUG6-G: static guard that every loki-ts import in packages/control-plane is COPYed by the Dockerfile. |
|
|
756
|
+
| D65-BUG6-G | Guard: every loki-ts/src path imported by packages/control-plane/src appears in a Dockerfile.control-plane COPY | an existing control-plane shell test | LOW | merged@2026-10-03T05:58Z | TL non-blocking note on D65-BUG6. Built 31076e369 (guard red on missing redact.ts COPY, green restored, control plane 18/0, shellcheck 0); TL review dispatched. TL APPROVE (red/green reproduced, 11 import shapes, 18/0, shellcheck 0); non-blocking: dynamic import() and same-line second import not detected. |
|
|
754
757
|
| P0-SPAWN-ENV-SPEED | Train 86 Coverage red: spawn_env_guard flags features/speed/already_done_async.ts execFile whose env arrives via an opts spread; inline env in the call | loki-ts/src/features/speed/already_done_async.ts | LOW | merged@2026-10-03T05:40Z | gh run 37099794381: 3070 pass 1 fail, (fail) spawn env guard > no spawn under loki-ts/src omits env. Runtime env is passed; source scan cannot see the spread. Blocks train 86 promote; fix rides train 87. Fix 191e5c6d2 (red 1 fail, green 2/0); dist 6cbdd32e0, dist guard 13/0; main full loki-ts bun test 3072 pass 0 fail. |
|
|
758
|
+
| P0-TC-SUPERSEDE | train-cycle Phase A superseded green unpromoted train/87 with train/88 and Phase B only evaluates the newest train; hold a green unpromoted train so Phase B promotes it first | scripts/train-cycle.sh, tests/test-train-cycle.sh | MEDIUM | merged@2026-10-03T06:18Z | Incident 06:13Z, RM promoted 87 by SHA by hand. Fix 5abab1f2c (red 47/3, green 50/0, shellcheck 0). TL APPROVE: A and B share REQUIRED_TRAIN and success rule; gh/fetch failures fail open; non-fast-forward train not held; mutation 47/3. Cherry-pick bd686b7c9. |
|
|
759
|
+
| D65-UI-NAMING | One UI command: loki serve --help points to loki / loki control serve; README control row and TOOL-INTEGRATION.md stop presenting loki serve or a LOKI_CONTROL=1 preview as the UI | autonomy/loki, README.md, docs/TOOL-INTEGRATION.md, CHANGELOG.md | LOW | merged@2026-10-03T06:25Z | Peer finding 06:20Z. Fix 5708413dd; serve routing unchanged. TL APPROVE (bash -n ok, serve --help exits 0 and binds nothing, wording matches control.ts LOKI_CONTROL=="0"). Follow-up D65-UI-NAMING-2 for bash fallback and cli.ts help. |
|
|
760
|
+
| D65-UI-NAMING-2 | Bash fallback cmd_control and loki-ts cli.ts help still say preview, needs LOKI_CONTROL=1; align with bun route (on by default, LOKI_CONTROL=0 off) | autonomy/loki, loki-ts/src/cli.ts, loki-ts/dist, tests, CHANGELOG.md | LOW | merged@2026-10-03T06:33Z | Fix 15f631fae (red: preview line rc=0 under LOKI_CONTROL=0; green: off line rc=0, no bun names bun rc=1). TL APPROVE: OFF_LINE byte-identical to control.ts:12, delegation unchanged, control plane 19/0, dist guard 13/0, shellcheck no new findings. Cherry-pick e564d2423 (CHANGELOG conflict resolved keeping both lines). Non-blocking: no-bun assertion depends on bun absent from /usr/bin:/bin. |
|
|
761
|
+
| D75-GITLEAKS-RANGE | train/** pushes scan merge-base(origin/main)..SHA via security-audit-gitleaks.sh; main-push secret-scan always full (no E-160 skip); release.yml required-ci reuses only main-branch or dispatch audit verdicts; weekly cron becomes daily | .github/workflows/security-audit.yml, .github/workflows/release.yml, tests/test-security-audit-config.sh | HIGH | merged | main baf694a9b/8da824056/09fe087ae; opus r3 APPROVE 08:02Z (live gate rc=0 today, stub gh error rc=1, 8 mutations red); test 54/0; follow-up D75b |
|
|
762
|
+
| D75b | release.yml sched_audit gate: separate schedule fetch, paginated newer-success check, indeterminate blocks (fail-closed on page overflow) | .github/workflows/security-audit.yml, .github/workflows/release.yml, tests/test-security-audit-config.sh | HIGH | merged | main (cherry-pick of 03914c5ab); opus APPROVE 08:09Z (live gate rc=0, created>= filter verified live, stub errors block, 11 mutations red); 57/0; LOW: missing total_count passes, newest-first ordering undocumented |
|
|
763
|
+
| P0-D75-PINS | D75 regressed tests/test_release_required_ci.py (24 fail, gh stub lacks scheduled-audit answers) and E-123 scanner pins; train/92 Tests red | | | merged@2026-10-03T08:27Z | opus APPROVE (5 gate mutations red); main ae8f70284; required_ci 63/0, E-123 31/0, audit-config 57/0 on main |
|
|
764
|
+
| D65-BUG7 | E2E leg 7: installed `loki workspace run` exits 1 with 0 receipts after BUG-5 (integration.json now written); expected one run per repo and rc 0 | engineer-determined (autonomy/lib workspace path, tests) | MEDIUM | merged | main b5a0085a0 (cherry-pick of 18ca83dd8); TL APPROVE 07:59Z (mutation red 15/1, restored 16/0); dist guard 13/0; e2e-d65 legs=9 fails=0 |
|
|
755
765
|
| D63-C6 | SLACK: two-way Slack on by default | features/slack_inbound.ts, docs/slack.md, README | HIGH | merged@2026-10-03T04:15Z | Opus round 2 APPROVE; cherry-picked 1acd2a9a2,4b2c242bd,f02609175, dist fc10b503c |
|
|
756
766
|
| D63-C6-F | SLACK follow-up: sender allowlist, 64 KB task cap, no local paths in replies, strict --port | features/slack_inbound.ts, docs/slack.md | MEDIUM | merged@2026-10-03T04:25Z | TL APPROVE e8837ffa4 (3 mutations red); cherry-picked 2a404421a, dist 7ad4a44e9 |
|
|
757
767
|
| P0-CORE-BUDGET | Core engine10 at 5001 lines after D61-13 (budget.test.ts needs < 5000); remove dead core code | loki-ts/src/engine10 | MEDIUM | building@2026-10-03T04:31Z | Blocks train 86 |
|
package/docs/v10/DECISIONS.md
CHANGED
|
@@ -554,3 +554,15 @@ The $20.00 default per-run cap stays. It is a hard stop on priced sessions only;
|
|
|
554
554
|
- D61-12 is parked. D61 ships without an integrator: parallel units stay behind their flag and the integrator is not in the shipped feature set. Named in the handoff as not shipped.
|
|
555
555
|
- Next window: redesign around per-resolution-commit containment (B at R^1, X at R, H at HEAD) and a revert guard for covered units, as the reviewer proposed.
|
|
556
556
|
|
|
557
|
+
|
|
558
|
+
## D74: gitleaks job timeout 15 -> 30 min (CoS under D69, 07:25Z 2026-10-03)
|
|
559
|
+
- Evidence: the gitleaks full-history scan took 8-15 min on trains 83-87 and was cancelled at the 15 min limit on trains 86, 88, 89 and 90 ("gitleaks scan (all reachable history) ##[error]The operation was canceled", run 37104195817 attempt 2). Every other Security Audit job passed.
|
|
560
|
+
- Decision: raise timeout-minutes to 30. Same scan, same config, same blocking posture; nothing is narrowed or skipped, so this is not a gate weakening.
|
|
561
|
+
- Follow-up slice: make the scan scale (incremental scan against a reviewed baseline commit) before history doubles again. Any change to scan scope needs a CTO pass.
|
|
562
|
+
|
|
563
|
+
## D75: gitleaks range scan on train/** pushes, full scan stays the release authority (CTO, 07:45Z 2026-10-03)
|
|
564
|
+
- Decision: train/** pushes scan merge-base(origin/main)..SHA through scripts/security-audit-gitleaks.sh (release-tag config, net .gitleaks.toml refusal, first-parent merges); any doubt falls back to the full scan.
|
|
565
|
+
- Gap found: E-160 reuse (train-verdict-reuse.sh:53-64) plus parent reuse in release.yml required-ci (fetch_runs:423, no branch filter) would let a range-only train verdict reach npm; train-cycle.sh:53 Phase C never waits on Security Audit.
|
|
566
|
+
- Conditions: secret-scan on main always runs full (no E-160 skip); required-ci reuses only main-branch or dispatch audit verdicts; the weekly cron becomes daily and a red daily scan halts releases.
|
|
567
|
+
- No base-config fallback (r3 class). PR, slice-*, main, schedule and dispatch stay full. HIGH tier, unanimous opus review. Proposed by peer autonomi-dev-76; decided by the CTO advisor.
|
|
568
|
+
- Saves about 15 min per promotion; release latency may still include the main full scan, accepted (moat over speed). Unmeasured hypothesis for a later CTO pass: --all on a fetch-depth 0 checkout also scans stale remote slice branches.
|
package/docs/v10/E2E-D65.md
CHANGED
|
@@ -85,3 +85,39 @@ grep -rIl -E 'sk-ant-|oat01-' "$HOME/loki-ci-logs/real-repo-gate-e2e.logs" || ec
|
|
|
85
85
|
```
|
|
86
86
|
|
|
87
87
|
Pass criteria per repo are in `scripts/real-repo-gate.repos` (expected outcome, allowed diff paths, max seconds); evidence to record for the log: exit code, wall seconds, Outcome line, receipt path, `loki verify` verdict.
|
|
88
|
+
|
|
89
|
+
## 6. Stub E2E (`scripts/e2e-d65.sh`)
|
|
90
|
+
|
|
91
|
+
Hermetic run on loki-mode 10.6.8 (tree 158d977ba plus the C11b legs), 2026-10-03. The script runs `npm pack`, installs the tarball into a run-owned temp prefix (throwaway `HOME` and npm cache), puts a stub `claude` on PATH and drives the INSTALLED `loki` under `env -i` with an allowlist: no `*_API_KEY`, no `*_TOKEN` (only fake values such as `JIRA_API_TOKEN=e2e-fake-token`). Command: `LOKI_NO_BROWSER=1 timeout 600 bash scripts/e2e-d65.sh`; total 19 s, script rc=1 (two FAIL legs, both named product bugs below).
|
|
92
|
+
|
|
93
|
+
BUG-2 (the v10 engine ignored the stub `claude`) is resolved by `LOKI_E10_INVOKER=cli` plus `LOKI_CLAUDE_CLI=<stub>`, which the harness sets for every leg: legs 1, 2, 5 and 6 each produced a receipt with run rc=0 and no `Not logged in`.
|
|
94
|
+
|
|
95
|
+
| Leg | Result | Wall | rc line (from the run) |
|
|
96
|
+
|---|---|---|---|
|
|
97
|
+
| 1 D61 speed | PASS | 1 s | `loki quick rc=0 run=e10-20261003T053414Z-f543` |
|
|
98
|
+
| 2 Visual evidence | PASS | 1 s | `loki quick rc=0 run=e10-20261003T053416Z-13df`; NOT PROVEN line present |
|
|
99
|
+
| 3 Control Plane | PASS | 1 s | `blocked run rc=4 run=e10-20261003T053417Z-a324`; `POST answer ... -> 200` |
|
|
100
|
+
| 4 Slack | PASS | 1 s | signed `url_verification` returned the challenge; bad signature 401; no outbound connection |
|
|
101
|
+
| 5 Jira | PASS | 1 s | `loki quick jira:ABC-1 rc=0 run=e10-20261003T053418Z-d497`, `issue.json has source=jira`; `no-credentials rc=2 in 0s`, names `JIRA_EMAIL`/`JIRA_API_TOKEN` |
|
|
102
|
+
| 6 Spec to contract | PASS | 1 s | `loki quick rc=0 run=e10-20261003T053419Z-7afd`; receipt has the `contract` section with AC-1 |
|
|
103
|
+
| 7 Multi-repo | FAIL | 1 s | `loki workspace run rc=2`, `receipts=0 integration.json=none` (BUG-5) |
|
|
104
|
+
| 8 MCP | PASS | 0 s | `python rc=0`; `v10_status` done/VERIFIED, `v10_verify` `exit_code` 0 on leg 6's repo |
|
|
105
|
+
| 9 Containers | FAIL | 3 s | deploy files present; docker daemon answered; `docker build` failed (BUG-6) |
|
|
106
|
+
|
|
107
|
+
SKIP legs: none in this run. Leg 8 would SKIP if leg 6 had not produced a run, and leg 9 SKIPs with `SKIP(docker unavailable)` when `docker` is missing or `docker info` does not answer within 10 s; it never passes without a real `/ready` 200 probe on a random host port.
|
|
108
|
+
|
|
109
|
+
Positive control: `E2E_LEGS=6 E2E_FORCE_FAIL=6 bash scripts/e2e-d65.sh` prints `FAIL leg 6 ... forced by E2E_FORCE_FAIL=6 (positive control)` and exits 1. After each run the recorded PIDs (control-plane servers, the fake Jira `http.server`, the Slack proxy trap) are stopped by PID and the run directory is removed; nothing outside the run dir was touched.
|
|
110
|
+
|
|
111
|
+
New bugs found by this run (product code is not changed by this slice):
|
|
112
|
+
|
|
113
|
+
BUG-5 (P1, packaging): the npm package omits `schemas/`, so `loki workspace` fails on every installed copy. `package.json` `files` has no `schemas/` entry, while `autonomy/lib/loki_yaml.py:23` reads `schemas/loki-yaml.schema.json` relative to the package root. Repro: install the tarball, put a `workspaces:` block in `loki.yaml`, run `loki workspace run <name> <task>`; output `workspace: cannot read loki.yaml: [Errno 2] No such file or directory: '.../node_modules/loki-mode/autonomy/lib/../../schemas/loki-yaml.schema.json'`, rc=2. Leg 7 stays FAIL until `schemas/loki-yaml.schema.json` ships; the two-runs and `integration.json` assertions were therefore not reached.
|
|
114
|
+
|
|
115
|
+
BUG-6 (P1, container): `Dockerfile.control-plane` cannot build. Its build stage copies only `packages/control-plane/`, but `packages/control-plane/src/server/ingest.ts:3` and `:5` import `../../../../loki-ts/src/engine10/events.ts` and `../../../../loki-ts/src/util/redact.ts`. Repro: `docker build -f Dockerfile.control-plane .` fails at `RUN bun run build:all` with `error: Could not resolve: "../../../../loki-ts/src/engine10/events.ts"` and `.../util/redact.ts`. The `/ready` probe was therefore not reached and leg 9 is FAIL, not PASS.
|
|
116
|
+
|
|
117
|
+
### 6.1 Rerun after BUG-5, BUG-6 and BUG-7 fixes (2026-10-03)
|
|
118
|
+
|
|
119
|
+
The 07:56Z rerun on the main tree that includes the BUG-5 and BUG-6 fixes passed 8 of 9 legs. Legs 8 (MCP) and 9 (containers) PASS: `docker build` now succeeds and `/ready` answers 200. Leg 7 still failed with `workspace run rc=1, expected 0; found 0 receipts; integration.json written`.
|
|
120
|
+
|
|
121
|
+
BUG-7 (P1, engine): `excludeLokiDir` in `loki-ts/src/engine10/stages/intake.ts` hard-coded `<repo>/.git/info/exclude`. Workspace runs execute in linked git worktrees, where `.git` is a file, so `mkdir` threw `ENOTDIR: not a directory, mkdir '.../worktrees/e2e__api/.git/info'`. The first repo's run exited 1 and the second was skipped. Fix: resolve the path with `git rev-parse --git-path info/exclude` (main b5a0085a0). A new intake test goes red on the old code (15 pass, 1 fail) and green on the fix (16/0).
|
|
122
|
+
|
|
123
|
+
Result after the fix: `PASS leg 7 (2s) leg_07_workspaces: two runs (2 receipts) plus integration.json, rc=0`; `e2e-d65: legs=9 fails=0 total=19s`. BUG-5, BUG-6 and BUG-7 are resolved; all 9 stub legs pass from a clean npm install.
|
package/docs/v10/PROGRESS.md
CHANGED
|
@@ -1961,3 +1961,30 @@ The swarm is stopped: .loki/V10-STOP exists, the loop has no wake-ups, and the c
|
|
|
1961
1961
|
- Train 86 first push failed: gitleaks github-pat on the synthetic token fixture tests/workspace/80-comment.sh:7 (D51-B11). Fingerprint baselined with a reason line in .gitleaksignore (acb4ee58f). Rerun: TRAIN_PUSHED train/86 at acb4ee58f, 05:25:53Z; CI pending.
|
|
1962
1962
|
- In flight: P0-CORE-BUDGET TL r2, D61-11 test fix, D61-04-F leak fixes (MEDIUM, new BOARD row).
|
|
1963
1963
|
- Carry-forward reviewer notes: P0-CONTROL-LINUX wants a frozen-lockfile install for packages/control-plane in CI; D50-F4b invalid-base reason unreachable in supervisor; D61-04 child env carries OLDPWD (informational).
|
|
1964
|
+
|
|
1965
|
+
## 2026-10-03T06:15Z tick (CoS)
|
|
1966
|
+
- Train 86 red: spawn_env_guard flagged already_done_async.ts (env passed via spread) and the gitleaks shape pin drifted after acb4ee58f. Fixed by P0-SPAWN-ENV-SPEED (env inline, bun suite 3072/0) and the shape pin 3c47d0f1a (31/0).
|
|
1967
|
+
- Train 87 (3c47d0f1a) all six checks green (Tests 37101104493, Coverage, Security Audit, Bun Parity, Tier A, First-run). Promoted by SHA to main at 06:14Z (fast-forward from d95095d9d); Phase C waits on main Tests.
|
|
1968
|
+
- Incident: train-cycle Phase A pushed train/88 before Phase B evaluated green train/87, and Phase B only looks at the newest train, so a green train was skipped. Promoted 87 by hand with the same RM push Phase B uses. Guard slice wanted: Phase A must not supersede a green unpromoted train.
|
|
1969
|
+
- Train 88 (c127f5e9f) pushed: C11b E2E legs 5-9, D65-BUG5 (schemas/ shipped), D65-BUG6 (Dockerfile COPYs), D65-BUG6-G (TL APPROVE, 18/0), D61-04-F.
|
|
1970
|
+
- In flight: P0-CORE-BUDGET TL r2, D61-11 test fix. E2E-D65 section 6 table refresh due after train 88.
|
|
1971
|
+
|
|
1972
|
+
## 2026-10-03T06:31Z tick (CoS)
|
|
1973
|
+
- v10.6.9 released (tag 48dadd05c). Release run all 10 jobs success; publish-npm logged "+ loki-mode@10.6.9" at 06:24:51Z. Registry at 06:30Z still reads latest=next=10.6.8 with no time entry; not announced as latest until npm view shows it (peer finding accepted).
|
|
1974
|
+
- Peer finding: `loki serve` is the deprecated alias of `loki api start`, not the Control Plane; docs and help disagreed. D65-UI-NAMING (62b592031) and D65-UI-NAMING-2 (e564d2423, bash fallback honors LOKI_CONTROL=0 and names bun) merged, both TL APPROVE.
|
|
1975
|
+
- P0-TC-SUPERSEDE merged (bd686b7c9): train-cycle now holds a green unpromoted train so Phase B promotes it first.
|
|
1976
|
+
- Train 88 was cut before the v10.6.9 release commit, so it is not a fast-forward of main. Merged origin/main into local main (7ad91e03f, no conflicts, dist rebuilt unchanged, dist guard 13/0) and pushed train 89 (8576564a7) carrying C11b, D65-BUG5, D65-BUG6, D65-BUG6-G, D61-04-F, P0-TC-SUPERSEDE, D65-UI-NAMING and -2.
|
|
1977
|
+
|
|
1978
|
+
## 2026-10-03T07:55Z tick (CoS)
|
|
1979
|
+
- Train 89 and 90 never went all-green: Security Audit cancelled both because the gitleaks full-history scan hit its 15 min timeout (also trains 86, 88; passing runs took 8-15 min). Train 90 Tests had one P9 red; full rerun green (flake, same code green on 89).
|
|
1980
|
+
- D74 (5d4530b18): gitleaks timeout 15 -> 30 min, same scope. Train 91 all six checks green; train-cycle promoted it at 07:41:45Z and cut v10.6.10 (a5a4f0c95, release run in progress at 07:55Z; npm still reads latest=10.6.9, not announced).
|
|
1981
|
+
- D75 (cacc31400): peer proposal for a train-range gitleaks scan; CTO APPROVE-WITH-CONDITIONS after finding the full scan would no longer guard npm publish (E-160 reuse plus unfiltered required-ci parent reuse). Slice D75-GITLEAKS-RANGE built (30e96b09c, test 43/0); opus adversarial review in flight.
|
|
1982
|
+
- Local main merged origin/main v10.6.10 (a6ebe9897), dist guard 13/0.
|
|
1983
|
+
- Drift audit vs CONTROL.md (last 6h): release cadence and merged-unreleased age violated by the gitleaks timeouts (fixed D74/D75); D12/D13 held; active builders 1 vs target 6. Only one ready row is dependency-free (D65-SPEC-F2, needs architect card). engine10 budget.test.ts 27/0 on main, so P0-CORE-BUDGET no longer blocks trains.
|
|
1984
|
+
|
|
1985
|
+
## 2026-10-03T07:56Z tick (CoS)
|
|
1986
|
+
- Correction: the previous entry is stamped 07:55Z but was written at 07:52Z (pulse FUTURE_TIMESTAMP). This entry's time comes from `date -u`.
|
|
1987
|
+
- D65-BUG7 merged as main b5a0085a0. Intake resolved `info/exclude` with a hard-coded `.git/` path, which threw ENOTDIR in linked worktrees. TL APPROVE (the mutation went red at 15/1). The intake test is 16/0 on main, the dist guard is 13/0, and `scripts/e2e-d65.sh` gives legs=9 fails=0. Documented in E2E-D65.md section 6.1.
|
|
1988
|
+
- D75-GITLEAKS-RANGE: opus r1 BLOCK B1 (a red daily scan did not halt releases). The r2 fix b11872776 adds a scheduled-run check in release.yml required-ci (47/0, W9 plus 2 mutations go red). The opus r2 re-review is running and also judges the fail-open path on an API error.
|
|
1989
|
+
- v10.6.10: the release workflow (a5a4f0c95) is still in_progress. npm shows latest=next=10.6.9. No push until it completes; the peer has not been told.
|
|
1990
|
+
- Drift audit (last 6h): 3 releases against the 18 that the 20 min cadence target implies (MISS; the main cause was Security Audit timeouts on trains 86-90, fixed by D74). 175 commits on local main. Ready rows: 25, of which 14 are dependency-blocked and most of the rest are eval, real-model or CTO-owned. Active builders: 3 (D65-SPEC-F2, D61-11 r3, and the D75 review), against a target of 6. Pulse budget projection: weekly 115.8%, max engineers 2. The D68 mandate floor (85% of live /usage) overrides this; live usage was 52% at 07:43 according to the peer, so it is within the floor.
|