loki-mode 11.63.1 → 11.63.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/SKILL.md +2 -2
  2. package/VERSION +1 -1
  3. package/dashboard/__init__.py +1 -1
  4. package/docs/CLI-REFERENCE.md +1 -1
  5. package/docs/INSTALLATION.md +1 -1
  6. package/docs/v10/FAILURE-CLASSES.md +27 -0
  7. package/loki-ts/dist/loki.js +1217 -1217
  8. package/mcp/__init__.py +1 -1
  9. package/package.json +2 -2
  10. package/packages/control-plane/dist/server.js +33 -14
  11. package/plugins/loki-mode/.claude-plugin/plugin.json +1 -1
  12. package/state/manager.py +30 -11
  13. package/state/test_manager.py +76 -0
  14. package/web-app/dist/assets/{AdminPage-D4vXtl3x.js → AdminPage-gdJ_mq-W.js} +1 -1
  15. package/web-app/dist/assets/{Avatar-BAmaydd2.js → Avatar-uej2QSmA.js} +1 -1
  16. package/web-app/dist/assets/{Badge-BxGYGo3Q.js → Badge-DHitiNso.js} +1 -1
  17. package/web-app/dist/assets/{Button-ClgPYM5T.js → Button-BgoY64df.js} +1 -1
  18. package/web-app/dist/assets/{CockpitPage-7kaTYcuc.js → CockpitPage-Bl_v3bJA.js} +1 -1
  19. package/web-app/dist/assets/{ComparePage-BWd3Nqh-.js → ComparePage-Cy9QJkBG.js} +1 -1
  20. package/web-app/dist/assets/{ErrorBoundary-BIIlK431.js → ErrorBoundary-BCun73bU.js} +1 -1
  21. package/web-app/dist/assets/{EvidenceReceiptPanel-DftEhk3j.js → EvidenceReceiptPanel-qJQaRkI9.js} +1 -1
  22. package/web-app/dist/assets/{GitHubIssuesPanel-BNppTWv3.js → GitHubIssuesPanel-Ddl1TxWZ.js} +1 -1
  23. package/web-app/dist/assets/{GitHubPRsPanel-DPGShg0k.js → GitHubPRsPanel-BnEssWgV.js} +1 -1
  24. package/web-app/dist/assets/{HomePage-DMWF6HYk.js → HomePage-Bt22O2j1.js} +2 -2
  25. package/web-app/dist/assets/{LoginPage-B_D4Yi0q.js → LoginPage-BQU2rLI3.js} +1 -1
  26. package/web-app/dist/assets/{MagicPage-BLkjJNnz.js → MagicPage-B4ts3gpw.js} +1 -1
  27. package/web-app/dist/assets/{MetricsPage-MTmGnwBj.js → MetricsPage-DM0gXhr7.js} +1 -1
  28. package/web-app/dist/assets/{NotFoundPage-BDvv8VLK.js → NotFoundPage-D0e2LfJ-.js} +1 -1
  29. package/web-app/dist/assets/{ProjectPage-0UlBEo2b.js → ProjectPage-DqCCoDz1.js} +3 -3
  30. package/web-app/dist/assets/{ProjectsPage-B34jQUL3.js → ProjectsPage-Bw_tXPsZ.js} +1 -1
  31. package/web-app/dist/assets/{SettingsPage-BNU0Zb8h.js → SettingsPage-D4BXWU8M.js} +1 -1
  32. package/web-app/dist/assets/{ShowcasePage-DpjHlzas.js → ShowcasePage-DCboSzXK.js} +1 -1
  33. package/web-app/dist/assets/{SystemSettingsPage-CZCtASOG.js → SystemSettingsPage-jHpON7dh.js} +1 -1
  34. package/web-app/dist/assets/{TeamsPage-DBh5sGve.js → TeamsPage-D_FbrqQf.js} +1 -1
  35. package/web-app/dist/assets/{TemplatesPage-UluxdoMu.js → TemplatesPage-f2z7hxdr.js} +1 -1
  36. package/web-app/dist/assets/{TerminalOutput-D9VFbaQn.js → TerminalOutput-C3lfdD7a.js} +1 -1
  37. package/web-app/dist/assets/{activity-tFpaqajG.js → activity-CX7KZ0Zy.js} +1 -1
  38. package/web-app/dist/assets/{bell-3_VWBImi.js → bell-R-T6ASAw.js} +1 -1
  39. package/web-app/dist/assets/{bot-B7vDY7kj.js → bot-BMnzxTnC.js} +1 -1
  40. package/web-app/dist/assets/{check-Bl9USn8W.js → check-Bw7k9kpq.js} +1 -1
  41. package/web-app/dist/assets/{chevron-left-D1wfecoQ.js → chevron-left-BoSd0E5Z.js} +1 -1
  42. package/web-app/dist/assets/{circle-alert-CNpwCNmG.js → circle-alert-C1ueYvrG.js} +1 -1
  43. package/web-app/dist/assets/{clock-XvZ37VZY.js → clock-C45cD549.js} +1 -1
  44. package/web-app/dist/assets/{cloud-BJXyzF5s.js → cloud-d8ZZMq1l.js} +1 -1
  45. package/web-app/dist/assets/{code-xml-C0p1GMZR.js → code-xml-Bd5ivRtJ.js} +1 -1
  46. package/web-app/dist/assets/{database-CV3PHblD.js → database-CYvMaPyn.js} +1 -1
  47. package/web-app/dist/assets/{dollar-sign-Bmqa3zS4.js → dollar-sign-OGPO6Bsz.js} +1 -1
  48. package/web-app/dist/assets/{file-code-corner-n1K8GB8d.js → file-code-corner-C967Cdng.js} +1 -1
  49. package/web-app/dist/assets/{file-plus-DDyHEQzN.js → file-plus-DDiGx19W.js} +1 -1
  50. package/web-app/dist/assets/{globe-CjyBU45u.js → globe-CaCuIwgp.js} +1 -1
  51. package/web-app/dist/assets/{hammer-D1ibTMVF.js → hammer-0GgB-rOO.js} +1 -1
  52. package/web-app/dist/assets/{index-74sqxHXo.js → index-vKQVLRHZ.js} +3 -3
  53. package/web-app/dist/assets/{layers-CkJVgs_b.js → layers-CbY99FYD.js} +1 -1
  54. package/web-app/dist/assets/{loader-circle-CVNbBptl.js → loader-circle-DFpexpFQ.js} +1 -1
  55. package/web-app/dist/assets/{lock-BXXtiqsu.js → lock-CEc4-FjZ.js} +1 -1
  56. package/web-app/dist/assets/{package-C_IHmD8A.js → package-CAN6zst3.js} +1 -1
  57. package/web-app/dist/assets/{plus-CKqdvHhf.js → plus-C86gJgNr.js} +1 -1
  58. package/web-app/dist/assets/{refresh-cw-2lwzwLZ9.js → refresh-cw-CvpDnO6y.js} +1 -1
  59. package/web-app/dist/assets/{rotate-ccw-Dq8gXHFW.js → rotate-ccw-DbiDnDyZ.js} +1 -1
  60. package/web-app/dist/assets/{scroll-text-DQTmI_IP.js → scroll-text-DrziGAAJ.js} +1 -1
  61. package/web-app/dist/assets/{server-CG8u66kJ.js → server-Bt7V6XI-.js} +1 -1
  62. package/web-app/dist/assets/{shield-alert-DbNHfkfA.js → shield-alert-BHuS_tji.js} +1 -1
  63. package/web-app/dist/assets/{thumbs-up-DjV44GnJ.js → thumbs-up-D95TF4FJ.js} +1 -1
  64. package/web-app/dist/assets/{trash-2-8jcEvw5m.js → trash-2-DOpZbtzM.js} +1 -1
  65. package/web-app/dist/assets/{trending-down-B1VgXHCl.js → trending-down-s8rM3yuS.js} +1 -1
  66. package/web-app/dist/assets/{trending-up-DZKdVYtZ.js → trending-up-D9T5MQbd.js} +1 -1
  67. package/web-app/dist/assets/{upload-DK1qDVuO.js → upload-CQheqd_w.js} +1 -1
  68. package/web-app/dist/assets/{usePolling-CQ99-9o3.js → usePolling-3x8b5OzZ.js} +1 -1
  69. package/web-app/dist/assets/{user-CxtOBv0N.js → user-84VbgyIX.js} +1 -1
  70. package/web-app/dist/index.html +1 -1
package/SKILL.md CHANGED
@@ -3,7 +3,7 @@ name: loki-mode
3
3
  description: Runs an autonomous software factory that knows what it is supposed to deliver and proves it did, with a signed receipt. Use when the user says Loki Mode or asks to build, fix or verify software autonomously.
4
4
  ---
5
5
 
6
- # Loki Mode v11.63.1
6
+ # Loki Mode v11.63.3
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 previous bash loop. PRD-file starts (`loki start ./prd.md`) and the opencode provider still run on it until FC38-SWEEP ports them; the legacy-engine command and the LOKI_ENGINE switch remain removed. Prefer `loki owner/repo#N` for issues.
9
9
 
@@ -476,4 +476,4 @@ Implemented, planned and deprecated items, with the version each landed in: `ski
476
476
 
477
477
  ---
478
478
 
479
- **v11.63.1 | [Autonomi](https://www.autonomi.dev/) flagship product | core skill**
479
+ **v11.63.3 | [Autonomi](https://www.autonomi.dev/) flagship product | core skill**
package/VERSION CHANGED
@@ -1 +1 @@
1
- 11.63.1
1
+ 11.63.3
@@ -7,6 +7,6 @@ Modules:
7
7
  control: Session control helpers (status, atomic writes, origin check)
8
8
  """
9
9
 
10
- __version__ = "11.63.1"
10
+ __version__ = "11.63.3"
11
11
 
12
12
  __all__ = ["__version__"]
@@ -1,6 +1,6 @@
1
1
  # CLI reference
2
2
 
3
- Generated from `loki-ts/src/cli/registry.ts` by `scripts/generate-stale-zero.sh` for v11.63.1. Do not edit by hand.
3
+ Generated from `loki-ts/src/cli/registry.ts` by `scripts/generate-stale-zero.sh` for v11.63.3. Do not edit by hand.
4
4
  Hidden and legacy-only commands are omitted; see `docs/v10/CLI-MODERN.md` for the full inventory.
5
5
 
6
6
  | Command | Description |
@@ -2,7 +2,7 @@
2
2
 
3
3
  Loki Mode, by [Autonomi](https://www.autonomi.dev/), turns a spec or an issue into a verified pull request with a receipt you can check. This page covers installing it, a first run, and the options around it.
4
4
 
5
- **Version:** v11.63.1
5
+ **Version:** v11.63.3
6
6
 
7
7
  **Engine note:** `loki start` is the primary command. `loki start`, `loki "<task>"`, `loki owner/repo#N` and `loki quick` all run the Loki 10 engine, whatever the flag order or input form (PRD file, issue ref, task or one-word brief). The previous loop runs only on `--engine legacy`, `LOKI_ENGINE=legacy`, or for one call when a flag Loki 10 cannot honor is present. See the [user guide](v10/GUIDE.md) and the [5-minute quickstart](QUICKSTART.md).
8
8
 
@@ -1463,6 +1463,7 @@ L0 review rule (ENGINE-LAWS.md L0): a fix that adds an `if` or a regex about the
1463
1463
  - Siblings swept: state/manager.py get_state_manager has the same single-default shape and is to follow the same keying rule (separate branch); no other TS caller passes arguments to getStateManager.
1464
1464
  - Mechanism: one per-root cache in state/manager.ts keyed by the (st_dev, st_ino) of the .loki directory (symlinks and case spellings share a manager), capped by LOKI_STATE_MANAGER_MAX (default 8), least recently used evicted and stop()ped.
1465
1465
  - Fixture: loki-ts/tests/state_manager.test.ts (under loki-ts so bun and CI discover it). Red on origin/main (2 fail), green after (5 pass or 4 pass and 1 skip on a case-sensitive volume); mutations: no eviction, eviction without stop, path-string key, constant key, no LRU touch each go red.
1466
+ - Python half (RQ-35): state/manager.py get_state_manager keyed per realpath but with no bound. Now an OrderedDict LRU capped by LOKI_STATE_MANAGER_MAX (default 8), evicted managers stop()ped outside the lock. Fixture: state/test_manager.py TestDefaultManagerCap (red before: 3 fail; mutant skipping stop() on eviction: 2 fail).
1466
1467
 
1467
1468
  ## FC-ENGINE10-CACHE-KEY-NOT-PRODUCER-BOUND engine10 repomap and testmap cache keyed by tree hash plus a hand-bumped prefix, so a builder change kept serving old maps, and cache files were written with default modes
1468
1469
  - User-visible vs raw: user-visible. After a repomap or testmap builder change, test selection and repo context kept using the previous builder's output until someone bumped `repomap2-` by hand. Closed by #331.
@@ -1717,3 +1718,29 @@ L0 review rule (ENGINE-LAWS.md L0): a fix that adds an `if` or a regex about the
1717
1718
  - Siblings swept: loki-ts/src/engine10 neither writes nor reads the pointer (`git grep -n last-proof-id -- loki-ts/src/engine10` returns nothing). The readers (run.sh, loki, run-summary.sh, trigger-server.py) are route-agnostic and unchanged.
1718
1719
  - Mechanism: clearStaleProofPointer in runner/proof.ts, called once from runAutonomous right after makeContext.
1719
1720
  - Fixture: loki-ts/tests/runner/autonomous.test.ts "#211 Bun-route sibling" seeds run-A, stops the run before proof with LOKI_PROOF=0, expects the pointer absent. Mutant: remove the call in runAutonomous; the test goes red.
1721
+
1722
+ ## FC-WALL-FILE-NOT-DISCOVERED-BY-RUNNER Verify runs the Wall only if the stack's test discovery also finds it, so a sealed loki_wall_*.py is never run and the receipt says "wall result not recorded by verify"
1723
+ - User-visible vs raw: user-visible. A Python run with a Wall file (`loki_wall_x.py`) never executes the Wall in verify; wall_passed stays undefined and Seal lists "wall result not recorded by verify" (seal.ts:250) as NOT PROVEN even though the Wall was authored, sealed and green on the base run.
1724
+ - Law: the Wall is the proof the run is judged by, so verify runs exactly the files the Wall sealed (outputs wall.files), never whichever of them the runner's discovery filter happens to list.
1725
+ - Cause (measured): wall.ts names every Wall file with the `loki_wall_` prefix and picks its runner with `guessRunner`; verify.ts built `wallTests` as `map.tests.filter(t => wallPaths.has(t.path))`, and `map.tests` comes from detect(), which pytest discovery limits to `test_*.py` and `*_test.py`. `loki_wall_x.py` matches neither, so the filter dropped it. The JS-only harness fallback below it covered one stack.
1726
+ - Siblings swept: Go (`loki_wall_x_test.go` ends in `_test.go`, so detect lists it and the old filter worked; the new path keeps it, with a regression fixture), JS (kept: the harness fallback is now the same code path, runner chosen by guessRunner), Rust (NOT closed here: guessRunner has no `.rs` mapping and `cargo test` takes no file argument, so a sealed Rust Wall file has no runner in wall.ts either; open as its own row against wall.ts).
1727
+ - Mechanism: `guessRunner` moved from wall.ts to testmap.ts (beside harnessRunners) and is exported; verify builds wallTests from the sealed paths with it, reusing the discovered ref when detect() already lists the file.
1728
+ - Fixture: loki-ts/tests/engine10/verify.test.ts "FC-WALL-FILE-NOT-DISCOVERED-BY-RUNNER" holding loki_wall_x.py beside test_x.py (red on origin/main: the Wall check is absent), plus a Go loki_wall_x_test.go case.
1729
+
1730
+ ## FC-WALL-RUST-FILE-HAS-NO-RUNNER A Rust Wall file is sealed and shipped but nothing ever runs it: guessRunner has no .rs mapping and the cargo command takes no file, so the Wall proves nothing on a Rust repo
1731
+ - User-visible vs raw: user-visible. On a Rust repo the Wall author writes `loki_wall_x.rs`; wall.ts seals it (wall.sealed lists it) but `guessRunner` returns null, so the base run skips it and verify (after FC-WALL-FILE-NOT-DISCOVERED-BY-RUNNER) builds no check for it. The receipt carries a Wall that was never executed and says nothing about it.
1732
+ - Law: a sealed Wall file is either run by a runner that names it, or reported NOT PROVEN with the reason; it is never silently dropped and no check is invented for it.
1733
+ - Cause (measured): `guessRunner` in testmap.ts mapped .py, .go and JS only; `runnerCmd` in check_result.ts ran `cargo test` for every cargo ref, which selects no file. Cargo selects a single integration-test file only as `cargo test --test <stem>`, and only for a file directly under a `tests/` directory.
1734
+ - Siblings swept: Go and JS already map (FC-WALL-FILE-NOT-DISCOVERED-BY-RUNNER). Other extensions (.java, .rb, .c) still have no mapping and are not covered here; they are named in the open list below.
1735
+ - Mechanism: `guessRunner(path, runners)` takes the path and returns "cargo" for `<dir>/tests/<name>.rs` when the repo has the cargo runner; `runnerCmd` runs `cargo test --test <name>` for such a file; a sealed .rs path with no per-file runner is named by the generic FC-WALL-FILE-WITHOUT-RUNNER-SILENTLY-DROPPED line in not_proven ("Wall test not executed: <path>: no runner of this repo runs this file"). A cargo per-file red stays not_run (the coarse rule), never a false green.
1736
+ - Open siblings: Wall files with extensions that guessRunner does not map (anything other than .py, .go, .rs, JS/TS) are still sealed without a runner or a not_proven note.
1737
+ - Fixture: loki-ts/tests/engine10/verify.test.ts "FC-WALL-RUST-FILE-HAS-NO-RUNNER" (tests/loki_wall_x.rs runs `cargo test --test loki_wall_x`; src/loki_wall_x.rs is NOT PROVEN with the reason and invents no check) and loki-ts/tests/engine10/testmap.test.ts guessRunner cases.
1738
+
1739
+ ## FC-WALL-GO-FILE-RUNS-WHOLE-PACKAGE A sealed Go Wall file is run as `go test ./<dir>`, the whole package, so a sibling test in the same package decides the Wall result
1740
+ - User-visible vs raw: user-visible. A Go Wall file `loki_wall_x_test.go` shares its package directory with the repo's own tests. Verify ran `go test -json ./<dir>`, so a red or slow sibling test (written by the repo, not the Wall) turns the Wall check red or hides what the Wall file proves.
1741
+ - Law: a Wall check reports on the Wall file, not on its neighbours. Go exit 0 stays never a pass (FC-16b): this row narrows what runs, it does not change how a Go result is trusted.
1742
+ - Cause (measured): `runnerCmd` case "go" in check_result.ts ignored the file name and passed only `./${dirname(t.path)}`.
1743
+ - Siblings swept: cargo is already per-file (FC-WALL-RUST-FILE-HAS-NO-RUNNER); pytest, vitest, jest, bun and node already take the file path. Go is the last per-file gap.
1744
+ - Mechanism: `runnerCmd` reads the file's top-level Test, Fuzz and Example function names by name only, never by signature (TestMain excluded; a signature check dropped multi-line, unnamed, aliased or dot-imported `*testing.T` and non-ASCII names, turning a red Wall into not_run, rev-b B1) and runs `go test -json -run '^(TestA|TestB)$' ./<dir>`. A file with no such function keeps the package run (it can only end not_run). The classification is unchanged: exit 0 is not_run (GO_EXIT0_REASON), a failed run is fail only with real failure evidence.
1745
+ - Open (needs a ruling, not decided here): a Go Wall file can never reach pass under FC-16b, so `wall_passed` stays unset for a Go-only repo and the receipt keeps saying the Wall result is not recorded. A pass from "exit 0 plus an ok line" would reopen the forgery FC-16b closed (TestMain os.Exit(0), a test printing `ok pkg`).
1746
+ - Fixture: loki-ts/tests/engine10/verify.test.ts "FC-WALL-GO-FILE-RUNS-WHOLE-PACKAGE" (a red sibling test in the package does not make the Wall check fail; the argv carries -run with the file's test names) and a runnerCmd unit case.