loki-mode 11.17.95 → 11.17.96

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/autonomy/lib/claude-flags.sh +1 -1
  4. package/dashboard/__init__.py +1 -1
  5. package/docs/CLI-REFERENCE.md +1 -1
  6. package/docs/INSTALLATION.md +1 -1
  7. package/docs/v10/FAILURE-CLASSES.md +7 -0
  8. package/docs/v10/PROGRESS.md +3 -0
  9. package/loki-ts/dist/loki.js +926 -926
  10. package/mcp/__init__.py +1 -1
  11. package/package.json +2 -2
  12. package/packages/control-plane/dist/server.js +7 -5
  13. package/plugins/loki-mode/.claude-plugin/plugin.json +1 -1
  14. package/web-app/dist/assets/{AdminPage-Bq3GIhNB.js → AdminPage-Dnrp8ziS.js} +1 -1
  15. package/web-app/dist/assets/{Avatar-DaiPuWqr.js → Avatar-BD77h_ON.js} +1 -1
  16. package/web-app/dist/assets/{Badge-CItgRbkz.js → Badge-C2BWNFqW.js} +1 -1
  17. package/web-app/dist/assets/{Button-OrSdD_k0.js → Button-BXpKuEtI.js} +1 -1
  18. package/web-app/dist/assets/{CockpitPage-BVBakqUM.js → CockpitPage-Cjkt15dz.js} +1 -1
  19. package/web-app/dist/assets/{ComparePage-UMAcdD0g.js → ComparePage-qrqu-1oQ.js} +1 -1
  20. package/web-app/dist/assets/{ErrorBoundary-BVib-R__.js → ErrorBoundary-BwDcgPBV.js} +1 -1
  21. package/web-app/dist/assets/{EvidenceReceiptPanel-CUT7gsPP.js → EvidenceReceiptPanel-DmrC3mQE.js} +1 -1
  22. package/web-app/dist/assets/{GitHubIssuesPanel-ClRXNMyP.js → GitHubIssuesPanel-CGJQMAW7.js} +1 -1
  23. package/web-app/dist/assets/{GitHubPRsPanel-DZ6X6Hxh.js → GitHubPRsPanel-BxjZ-Fx4.js} +1 -1
  24. package/web-app/dist/assets/{HomePage-C7r6eTnG.js → HomePage-Cm2nq40C.js} +2 -2
  25. package/web-app/dist/assets/{LoginPage-CoAU9hWW.js → LoginPage-BiMQBCw6.js} +1 -1
  26. package/web-app/dist/assets/{MagicPage-GPIuqNNU.js → MagicPage-NgC4HJgz.js} +1 -1
  27. package/web-app/dist/assets/{MetricsPage-oC1QHoms.js → MetricsPage-CVEsvnrS.js} +1 -1
  28. package/web-app/dist/assets/{NotFoundPage-R1g_LL-N.js → NotFoundPage-D2JCAqJu.js} +1 -1
  29. package/web-app/dist/assets/{ProjectPage-DD4w8s11.js → ProjectPage-qlLKSp71.js} +3 -3
  30. package/web-app/dist/assets/{ProjectsPage-BxcSql1s.js → ProjectsPage-f8AT-G30.js} +1 -1
  31. package/web-app/dist/assets/{SettingsPage-BQkI7SIf.js → SettingsPage-Wz5wMTEZ.js} +1 -1
  32. package/web-app/dist/assets/{ShowcasePage-BnmpNf9H.js → ShowcasePage-xZoQGRKG.js} +1 -1
  33. package/web-app/dist/assets/{SystemSettingsPage-D_CeUgOU.js → SystemSettingsPage-0-I4dYGj.js} +1 -1
  34. package/web-app/dist/assets/{TeamsPage-DI0twiAI.js → TeamsPage-D-cDH7vH.js} +1 -1
  35. package/web-app/dist/assets/{TemplatesPage-CF4bJa2a.js → TemplatesPage-N66vLiuE.js} +1 -1
  36. package/web-app/dist/assets/{TerminalOutput-CJYp2Vm2.js → TerminalOutput-D5-u-UqN.js} +1 -1
  37. package/web-app/dist/assets/{activity-Dbw7uHdj.js → activity-ITMDDsAx.js} +1 -1
  38. package/web-app/dist/assets/{bell-B7Dwt2kM.js → bell-DKDoEbOg.js} +1 -1
  39. package/web-app/dist/assets/{bot-DySTe33O.js → bot-jljmqB_U.js} +1 -1
  40. package/web-app/dist/assets/{check-ttlvc1oX.js → check-Dt8EfSuQ.js} +1 -1
  41. package/web-app/dist/assets/{chevron-left-D58uO9_E.js → chevron-left-CCR2wESF.js} +1 -1
  42. package/web-app/dist/assets/{circle-alert-BukvG_5h.js → circle-alert-BEk-GdAd.js} +1 -1
  43. package/web-app/dist/assets/{clock-BAI8rwxI.js → clock-CLYzZXuC.js} +1 -1
  44. package/web-app/dist/assets/{cloud-C3_FFOHi.js → cloud-BUU1JKG5.js} +1 -1
  45. package/web-app/dist/assets/{code-xml-BiZhCUId.js → code-xml-C7qaS3yN.js} +1 -1
  46. package/web-app/dist/assets/{database-DxDnnkdS.js → database-Cmz52NyA.js} +1 -1
  47. package/web-app/dist/assets/{dollar-sign-BK82Umxo.js → dollar-sign-CZZIoKak.js} +1 -1
  48. package/web-app/dist/assets/{file-code-corner-Cr5g9ekr.js → file-code-corner-DjPu6647.js} +1 -1
  49. package/web-app/dist/assets/{file-plus-BNNpaLY2.js → file-plus--3joal_S.js} +1 -1
  50. package/web-app/dist/assets/{globe-I-5yS74s.js → globe-Bw8BQlPB.js} +1 -1
  51. package/web-app/dist/assets/{hammer-CJ52XJSY.js → hammer-B4NVGnxW.js} +1 -1
  52. package/web-app/dist/assets/{index-8u9X9UkZ.js → index-haS12znm.js} +3 -3
  53. package/web-app/dist/assets/{layers-t3L355U4.js → layers-CHadYuxv.js} +1 -1
  54. package/web-app/dist/assets/{loader-circle-YZKhI-zo.js → loader-circle-DoepZDHN.js} +1 -1
  55. package/web-app/dist/assets/{lock-C-SdvJZG.js → lock-CVuC-Asv.js} +1 -1
  56. package/web-app/dist/assets/{package-D-PvM4OI.js → package-RE4sFnhR.js} +1 -1
  57. package/web-app/dist/assets/{plus-zusQn6fq.js → plus-1OIfUPbK.js} +1 -1
  58. package/web-app/dist/assets/{refresh-cw-CycJ-WmB.js → refresh-cw-maqNC4YR.js} +1 -1
  59. package/web-app/dist/assets/{rotate-ccw-oTTB4oPx.js → rotate-ccw-BEaz-jtK.js} +1 -1
  60. package/web-app/dist/assets/{scroll-text-BsF3F1FM.js → scroll-text-BaH8Ls9M.js} +1 -1
  61. package/web-app/dist/assets/{server-BejLzPI4.js → server--SAyQsac.js} +1 -1
  62. package/web-app/dist/assets/{shield-alert-DS86jyQ2.js → shield-alert-DMvh30VS.js} +1 -1
  63. package/web-app/dist/assets/{thumbs-up-DQ9-ANDq.js → thumbs-up-Clpz9KnO.js} +1 -1
  64. package/web-app/dist/assets/{trash-2-FSv2nvxY.js → trash-2-htd-Z1-P.js} +1 -1
  65. package/web-app/dist/assets/{trending-down-Bh20MLSt.js → trending-down-Crkm1od2.js} +1 -1
  66. package/web-app/dist/assets/{trending-up-J7yIg6ew.js → trending-up-BY9SxYuD.js} +1 -1
  67. package/web-app/dist/assets/{upload-D0j0hS3h.js → upload-5w_GUOcy.js} +1 -1
  68. package/web-app/dist/assets/{usePolling-C6HzHph-.js → usePolling-DpkAwy1-.js} +1 -1
  69. package/web-app/dist/assets/{user-fbR8rhOt.js → user-Bh4AVoPX.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: 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 v11.17.95
6
+ # Loki Mode v11.17.96
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
 
@@ -483,4 +483,4 @@ See `CHANGELOG.md` entries [7.5.7], [7.5.8], [7.5.13] for the per-fix list and r
483
483
 
484
484
  ---
485
485
 
486
- **v11.17.95 | [Autonomi](https://www.autonomi.dev/) flagship product | core skill**
486
+ **v11.17.96 | [Autonomi](https://www.autonomi.dev/) flagship product | core skill**
package/VERSION CHANGED
@@ -1 +1 @@
1
- 11.17.95
1
+ 11.17.96
@@ -331,7 +331,7 @@ loki_review_guard_denylist() {
331
331
  # Comma-separated single token. Bash(cmd:*) is command-prefix matching.
332
332
  # The `git -C:*` / `git --git-dir:*` / `git -c:*` entries close the
333
333
  # global-flag-before-subcommand evasion of the bare git-mutation rules.
334
- printf '%s' "Edit,Write,NotebookEdit,Bash(git commit:*),Bash(git reset:*),Bash(git push:*),Bash(git checkout:*),Bash(git clean:*),Bash(git rm:*),Bash(git stash:*),Bash(git -C:*),Bash(git --git-dir:*),Bash(git -c:*)"
334
+ printf '%s' "Edit,Write,NotebookEdit,Bash(git commit:*),Bash(git reset:*),Bash(git push:*),Bash(git checkout:*),Bash(git clean:*),Bash(git rm:*),Bash(git stash:*),Bash(git -C:*),Bash(git --git-dir:*),Bash(git -c:*),Bash(git --exec-path:*),Bash(git diff --output:*),Bash(git diff --output=:*),Bash(git diff --ext-diff:*),Bash(git diff --no-index:*),Bash(git log --output:*),Bash(git log --output=:*),Bash(git log --ext-diff:*),Bash(git show --output:*),Bash(git show --output=:*),Bash(git show --ext-diff:*),Bash(git blame --output:*),Bash(git blame --output=:*),Bash(rg --pre:*),Bash(rg --pre=:*),Bash(rg --pre-glob:*),Bash(rg --pre-glob=:*),Bash(rg --hostname-bin:*),Bash(rg --hostname-bin=:*),Bash(find -delete:*),Bash(find -exec:*),Bash(find -execdir:*),Bash(find -ok:*),Bash(find -fprint:*),Bash(find -fprintf:*),Bash(find -fls:*),Bash(git * --output*),Bash(git * --ext-diff*),Bash(git * --no-index*),Bash(rg * --pre*),Bash(rg * --hostname-bin*),Bash(rg --pre*),Bash(rg --hostname-bin*),Bash(find * -delete*),Bash(find * -exec*),Bash(find * -execdir*),Bash(find * -fprint*),Bash(find * -fls*),Bash(find * -ok*)"
335
335
  }
336
336
 
337
337
  # EMBED 3b (v7.35.0, GitHub #167) -- --allowedTools POSITIVE ALLOWLIST for the
@@ -7,6 +7,6 @@ Modules:
7
7
  control: Session control helpers (status, atomic writes, origin check)
8
8
  """
9
9
 
10
- __version__ = "11.17.95"
10
+ __version__ = "11.17.96"
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.17.95. Do not edit by hand.
3
+ Generated from `loki-ts/src/cli/registry.ts` by `scripts/generate-stale-zero.sh` for v11.17.96. 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.17.95
5
+ **Version:** v11.17.96
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
 
@@ -1311,3 +1311,10 @@ L0 review rule (ENGINE-LAWS.md L0): a fix that adds an `if` or a regex about the
1311
1311
  - Siblings swept: Wall author (fixed: brief names the destination, re-ask names the cause); implement bug-repro test and fix stage (an in-repo session whose cwd is the repo, so the file location is the author's own choice; nothing blind); verify changed set (fixed: a loki_wall_* path not installed by this run's Wall is dropped; the commit stage already excludes the prefix); holdout files are staged later by stageHoldout and unaffected.
1312
1312
  - Mechanism: buildWallBrief takes the destination from wallTargetDir (the value installCore copies to); phantomReason(miss, repoFiles, testDir, pkgRoot) names "your test is copied to X/, __dirname is that directory, not the repo root; Y exists relative to the repo root" when the phantom is testDir joined with a path real at the repo or package root; util/check_result.ts withoutStaleWall filters verify's changed list.
1313
1313
  - Fixture: loki-ts/tests/engine10/fc23_wall_conventions.test.ts describe "FC-WALL-LOCATION-BLIND" (brief, reason, end-to-end re-ask with the run's file shape, stale file excluded, own file kept). Red before the fix (4 of 6), green after.
1314
+
1315
+ ## FC-XREVIEW-BLIND-TOOLS The seal cross-reviewer is given no shell and a prompt that asks it to check behaviour, so it reports "my tool output came back empty" as a review flag and reviews blind
1316
+ - User-visible vs raw: user-visible. Run e10-20261019T124856Z-0c36 (anthropics/claude-code#81826, 11.17.93) sealed with two NOT PROVEN cross-review flags: "My tool output came back empty, so I could not confirm..." and "Acceptance lines, traced by hand because the shell output was not visible".
1317
+ - Law broken: a reviewer is told what it can and cannot do; a limit of its own sandbox is never reported to the user as a defect of the work (evidence or it did not happen).
1318
+ - Cause (REAL ROOT CAUSE, corrected after HIGH review of 54ffc9f0c): `leanReviewerFlags()` emitted `--tools=`, which disables ALL tools in Claude CLI 2.1.303 (stream-json init shows `"tools":[]` for the old and the first-fix argv alike), so allowlist and denylist were moot and the Bash deny was a red herring. Original observation: reviewArgv for claude passed `--allowedTools Read,Grep,Glob --disallowedTools Write,Edit,NotebookEdit,Bash`, so the reviewer had no shell at all; the prompt (acceptance block: "Check the diff against each line") invites running commands. Repro with the exact flags (haiku, `a.sh` containing `echo hi`): "This session has no shell tool ... there is no bash output", permission_denials empty. The process-group spawn (11.17.92) and cwd/env are not involved; the reviewer ran and returned a verdict.
1319
+ - Siblings swept: council voters (council/voter_agents.ts) and quality_gates reviewers already use the shared REVIEW_ALLOWLIST_TOKEN (read-only git/cat/ls/grep/rg/find/head/tail/wc) plus REVIEW_GUARD_DENYLIST (mutations only), so they can inspect; seal xreview was the one reviewer with a blanket Bash deny. Codex xreview runs in its read-only sandbox with a shell, unaffected.
1320
+ - Mechanism: xreview claude argv passes `leanReviewerFlags({ tools: "Read,Grep,Glob,Bash" })` = `--tools=Read,Grep,Glob,Bash` (one argument, so the variadic option cannot swallow the prompt), Bash narrowed by the shared allowlist; the prompt (REVIEW_TOOLS_NOTE) lists only the tools the reviewer has and tells it to say so when it could not inspect something (it is never told to hide an inspection failure). Write escapes under the allowlist (reproduced: `rg --pre rm`, `git diff --output=f`) are closed in REVIEW_GUARD_DENYLIST (TS and autonomy/lib/claude-flags.sh, byte-identical): `rg --pre/--pre-glob`, `--output`/`--ext-diff`/`--no-index` on git diff/log/show/blame, `git --exec-path`, `find -delete/-exec/-execdir/-ok/-fprint/-fls`, each as a prefix form and a mid-argument glob form (`Bash(git * --output*)`; live probe confirmed `git diff HEAD~1 --output=pwned.txt` and `rg one --pre rm a.txt` are denied). This also hardens council voters and quality_gates, which share the list. Sibling sweep: `leanReviewerFlags` default (`--tools=`) is unchanged for its other caller, quality_gates claudeReviewer (haiku-routed text-only reviewer, no allowlist, diff in prompt; blind by design, not the bug); council voters do not use it. Live init line (haiku, real argv, stream-json): `"tools":["Bash","Glob","Grep","Read"]`. Round 2 (HIGH review of e4e690dce): allowed `git status/diff/show/log` execute programs named by the repo `.git/config` and attributes (core.fsmonitor, diff drivers, textconv) and so can rewrite the worktree before seal hashes it; xreview therefore uses `REVIEW_ALLOWLIST_NO_GIT` (shared allowlist minus every `Bash(git` entry; the diff is already in the prompt) and the note says no git commands are available. Repo settings: with `--setting-sources project` a repo `.claude/settings.json` can carry `permissions.allow` or `defaultMode`, and the machine user `defaultMode: auto` made `touch marker.txt` run in a live haiku probe (settings-source-dependent, not proven for a trusted repo offline), so xreview now passes `--setting-sources user` plus `--permission-mode dontAsk`; probe with those flags: `cat f.txt` ran, `touch marker.txt` was denied and no marker was created even with a repo settings file allowing touch and bypassPermissions. Round 3 correction: `--setting-sources user` was itself a hole (user `permissions.allow` such as Bash(python3:*) pre-approves under dontAsk, user hooks fire in every review child, and the user CLAUDE.md added about 4,331 cache-creation tokens per review). xreview now passes `--setting-sources ""` (no source loads; the CLI accepts the empty value, "none" is rejected): live probe with the real argv, `python3 -c "print(6*7)"` denied, `cat f.txt` ran, 0 hook events (vs 12 with `user`), init tools `["Bash","Glob","Grep","Read"]`. Also closed: `rg --hostname-bin` (runs a program). A leading `rg --pre=CMD` form slipped past both `Bash(rg --pre=:*)` (prefix rules need a word boundary) and `Bash(rg * --pre*)` (needs an argument before it); live probe confirmed it ran until `Bash(rg --pre*)` and `Bash(rg --hostname-bin*)` were added, then denied. The new test records the argv the stub reviewer CLI really receives. Sibling note: council voters and quality_gates share the git allowlist and are exposed to repo-config driver execution; follow-up slice FC-REVIEWER-GIT-CONFIG-EXEC (not fixed here). Fixture: loki-ts/tests/engine10/xreview.test.ts describe "FC-XREVIEW-BLIND-TOOLS" (red before, green after).
@@ -2659,3 +2659,6 @@ v11.17.21 published (Release success on 462fbc40a; npm latest 11.17.21, next 11.
2659
2659
 
2660
2660
  ## 2026-10-19T13:43Z (CoS) v11.17.95
2661
2661
  - 11.17.95: FC-WALL-LOCATION-BLIND c3fbc4f4c+10226edf6 (from ff9d5c9d3+9807b3401; field run e10-20261019T130749Z-f11c FireLater#20). HIGH APPROVE round 2: 7 repro cases, 5 mutations red, 838 pass 0 fail; merged-tree gate 789 pass 0 fail.
2662
+
2663
+ ## 2026-10-19T13:53Z (CoS) v11.17.96
2664
+ - 11.17.96: FC-XREVIEW-BLIND-TOOLS bf2b129d8..2a08304d5 (from 54ffc9f0c..74ac1f558; field run #81826 NOT PROVEN 'tool output came back empty'). HIGH APPROVE round 4: python3/curl denied, cat ok, empty-source tokens equal project baseline, 3 mutations red; merged-tree gate 856 pass 0 fail, tsc clean.