loki-mode 11.56.3 → 11.56.5

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 (69) hide show
  1. package/SKILL.md +2 -2
  2. package/VERSION +1 -1
  3. package/autonomy/loki +9 -9
  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 +16 -0
  8. package/loki-ts/dist/loki.js +1076 -1076
  9. package/mcp/__init__.py +1 -1
  10. package/package.json +2 -2
  11. package/plugins/loki-mode/.claude-plugin/plugin.json +1 -1
  12. package/providers/model_catalog.json +1 -1
  13. package/web-app/dist/assets/{AdminPage-C7lE9pGa.js → AdminPage-Dimx1yBh.js} +1 -1
  14. package/web-app/dist/assets/{Avatar-W6Iz0x95.js → Avatar-Dc3bWhBo.js} +1 -1
  15. package/web-app/dist/assets/{Badge-D7puA-CC.js → Badge-b2X7zLeT.js} +1 -1
  16. package/web-app/dist/assets/{Button-D2vS5NVa.js → Button-WmENJAsd.js} +1 -1
  17. package/web-app/dist/assets/{CockpitPage-DA91y2kh.js → CockpitPage-8RQI3bm-.js} +1 -1
  18. package/web-app/dist/assets/{ComparePage-zLWzOK2s.js → ComparePage-CifTx_ce.js} +1 -1
  19. package/web-app/dist/assets/{ErrorBoundary-eGDypuFT.js → ErrorBoundary-BWf3qZVi.js} +1 -1
  20. package/web-app/dist/assets/{EvidenceReceiptPanel-DUEar-6F.js → EvidenceReceiptPanel-COEJUdCv.js} +1 -1
  21. package/web-app/dist/assets/{GitHubIssuesPanel-DcEOyw_W.js → GitHubIssuesPanel-BuoEObIg.js} +1 -1
  22. package/web-app/dist/assets/{GitHubPRsPanel-DiDf8gTs.js → GitHubPRsPanel-k338Akq5.js} +1 -1
  23. package/web-app/dist/assets/{HomePage-C68VAZ5w.js → HomePage-Dw89TygE.js} +2 -2
  24. package/web-app/dist/assets/{LoginPage-Drodb46K.js → LoginPage-Go7X1UUz.js} +1 -1
  25. package/web-app/dist/assets/{MagicPage-CsKLtedA.js → MagicPage-l9yI0QuR.js} +1 -1
  26. package/web-app/dist/assets/{MetricsPage-DgXXiPnG.js → MetricsPage-CqYbIdOq.js} +1 -1
  27. package/web-app/dist/assets/{NotFoundPage-CQu4ArpT.js → NotFoundPage-DDY07nmT.js} +1 -1
  28. package/web-app/dist/assets/{ProjectPage-DKxZXcOV.js → ProjectPage-BI3YXMvn.js} +3 -3
  29. package/web-app/dist/assets/{ProjectsPage-C3Ivyvky.js → ProjectsPage-B-e-jZCX.js} +1 -1
  30. package/web-app/dist/assets/{SettingsPage-CmQPtCck.js → SettingsPage-D5yeF0Ib.js} +1 -1
  31. package/web-app/dist/assets/{ShowcasePage-C7b-lMu6.js → ShowcasePage-Cp4lhM2Q.js} +1 -1
  32. package/web-app/dist/assets/{SystemSettingsPage-BfL42v4V.js → SystemSettingsPage-CGgunfcK.js} +1 -1
  33. package/web-app/dist/assets/{TeamsPage-tNfCH0Hx.js → TeamsPage-CH4-Ec82.js} +1 -1
  34. package/web-app/dist/assets/{TemplatesPage-hNBcHu-Q.js → TemplatesPage-DphuBvfB.js} +1 -1
  35. package/web-app/dist/assets/{TerminalOutput-BzqIvaYm.js → TerminalOutput-BppH3g5s.js} +1 -1
  36. package/web-app/dist/assets/{activity-DjWX1ZuI.js → activity-BWs18kHl.js} +1 -1
  37. package/web-app/dist/assets/{bell-DelbE6p-.js → bell-CJcKaBBF.js} +1 -1
  38. package/web-app/dist/assets/{bot-UpS2wR8E.js → bot-DzNrwUlE.js} +1 -1
  39. package/web-app/dist/assets/{check-Bxrfdyhd.js → check-BwXjvRFD.js} +1 -1
  40. package/web-app/dist/assets/{chevron-left-wlzm5XjY.js → chevron-left-CtR6I6_X.js} +1 -1
  41. package/web-app/dist/assets/{circle-alert-NzRa_65V.js → circle-alert-Buh7j2ty.js} +1 -1
  42. package/web-app/dist/assets/{clock-B-8MYHTk.js → clock-s2f9N3Vx.js} +1 -1
  43. package/web-app/dist/assets/{cloud-BvM01r2i.js → cloud-DEOd_pzL.js} +1 -1
  44. package/web-app/dist/assets/{code-xml-Mwv2JWEG.js → code-xml-C4xFPVwf.js} +1 -1
  45. package/web-app/dist/assets/{database-CJBOr7wm.js → database-BnoHUFDF.js} +1 -1
  46. package/web-app/dist/assets/{dollar-sign-DdNc6N2p.js → dollar-sign-DtvGSyex.js} +1 -1
  47. package/web-app/dist/assets/{file-code-corner-DHjU7Kzx.js → file-code-corner-DzzG_aWp.js} +1 -1
  48. package/web-app/dist/assets/{file-plus-DwPCiCKR.js → file-plus-D44fKKeH.js} +1 -1
  49. package/web-app/dist/assets/{globe-BBeOP3JY.js → globe-BmRQoo61.js} +1 -1
  50. package/web-app/dist/assets/{hammer-Dr2sfI44.js → hammer-DlnGJRRm.js} +1 -1
  51. package/web-app/dist/assets/{index-zVISXodx.js → index-yNuJC1nz.js} +3 -3
  52. package/web-app/dist/assets/{layers-bie6KIlG.js → layers-Mp7J961W.js} +1 -1
  53. package/web-app/dist/assets/{loader-circle-DegqeQsZ.js → loader-circle-BXbrKzAM.js} +1 -1
  54. package/web-app/dist/assets/{lock-DRltKs0d.js → lock--G0xB_sg.js} +1 -1
  55. package/web-app/dist/assets/{package-b9RN_e_D.js → package-ffXQaNr5.js} +1 -1
  56. package/web-app/dist/assets/{plus-uDt2xbUZ.js → plus-D-SjJwMh.js} +1 -1
  57. package/web-app/dist/assets/{refresh-cw-Bv47v7QW.js → refresh-cw-YZez-e-J.js} +1 -1
  58. package/web-app/dist/assets/{rotate-ccw-DFt56gu7.js → rotate-ccw-DJeBzW7L.js} +1 -1
  59. package/web-app/dist/assets/{scroll-text-YAhxM4lL.js → scroll-text-BczZXyxh.js} +1 -1
  60. package/web-app/dist/assets/{server-CRFuXqDl.js → server-Cgf89eCI.js} +1 -1
  61. package/web-app/dist/assets/{shield-alert-CovSwZXg.js → shield-alert-CfnIh_vZ.js} +1 -1
  62. package/web-app/dist/assets/{thumbs-up-BEFq5soK.js → thumbs-up-DVWVUs2p.js} +1 -1
  63. package/web-app/dist/assets/{trash-2-B9iNMb4S.js → trash-2-C7y11wmM.js} +1 -1
  64. package/web-app/dist/assets/{trending-down-BKq1_nD2.js → trending-down-bTE7raGc.js} +1 -1
  65. package/web-app/dist/assets/{trending-up-Nh3ctb4g.js → trending-up-CWUE8let.js} +1 -1
  66. package/web-app/dist/assets/{upload-9_-yJdUU.js → upload-DV61LMnd.js} +1 -1
  67. package/web-app/dist/assets/{usePolling-B4AmNMKo.js → usePolling-CsmEvZkA.js} +1 -1
  68. package/web-app/dist/assets/{user-sdm2gqUI.js → user-JuKWf6JG.js} +1 -1
  69. 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.56.3
6
+ # Loki Mode v11.56.5
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.56.3 | [Autonomi](https://www.autonomi.dev/) flagship product | core skill**
479
+ **v11.56.5 | [Autonomi](https://www.autonomi.dev/) flagship product | core skill**
package/VERSION CHANGED
@@ -1 +1 @@
1
- 11.56.3
1
+ 11.56.5
package/autonomy/loki CHANGED
@@ -2848,9 +2848,10 @@ cmd_start() {
2848
2848
  fi
2849
2849
  return "$_ps_drc"
2850
2850
  fi
2851
- # P12-07b: a bare `loki start --resume [run-id]` goes to the same engine10
2852
- # resume path as `loki resume` (util/run_outputs.ts resumeMain), never into a
2853
- # new build. Exit codes go through _loki_e10_resume_map (0 and 4 -> 0, 5 -> 1); any other code, such as 3 for nothing to resume, is returned as is.
2851
+ # P12-07b, #352: a bare `loki start --resume [run-id]` goes to the engine10 stage
2852
+ # resume that `loki "<task>" --resume` uses (util/run_outputs.ts resumeFlag), never into a
2853
+ # new build and never to the reporter (resumeMain). The exit code is returned unchanged:
2854
+ # 3 nothing to resume, 2 refused, 4 blocked, 5 stalled; only `loki resume` maps codes.
2854
2855
  local _ps_resume=0 _ps_resume_args=() _ps_rskip=0 _ps_unknown=""
2855
2856
  for _ps_a in ${_ps_rest[@]+"${_ps_rest[@]}"}; do
2856
2857
  if [ "$_ps_rskip" = 1 ]; then _ps_rskip=0; continue; fi
@@ -2877,9 +2878,8 @@ cmd_start() {
2877
2878
  return 2 ;;
2878
2879
  esac
2879
2880
  done
2880
- ( _loki_bun_delegate engine10 resume ${_ps_resume_args[@]+"${_ps_resume_args[@]}"} ) || _ps_rrc=$?
2881
- _loki_e10_resume_map "$_ps_rrc" || true
2882
- return "$_LOKI_E10_RC"
2881
+ ( _loki_bun_delegate engine10 --resume ${_ps_resume_args[@]+"${_ps_resume_args[@]}"} ) || _ps_rrc=$?
2882
+ return "$_ps_rrc"
2883
2883
  fi
2884
2884
  set -- ${_ps_rest[@]+"${_ps_rest[@]}"}
2885
2885
 
@@ -19656,12 +19656,12 @@ cmd_verify() {
19656
19656
  # verified by the engine10 verifier directly; bin/loki sends a bare verify back here.
19657
19657
  for _pk_arg in "$@"; do
19658
19658
  case "$_pk_arg" in
19659
- --sign-deploy|--sign-provenance|--url|--receipt|composite.json|*/composite.json|--seal-composite|--seal-composite=*|--max-age|--max-age=*|.loki/groups/*/receipt.json|*/.loki/groups/*/receipt.json)
19659
+ --sign-deploy|--sign-provenance|--url|--receipt|composite.json|*/composite.json|--seal-composite|--seal-composite=*|--max-age|--max-age=*|.loki/groups/*/receipt.json|*/.loki/groups/*/receipt.json|.loki/runs/e10-*/receipt.json|*/.loki/runs/e10-*/receipt.json)
19660
19660
  _loki_bun_delegate engine10 verify "$@"
19661
19661
  return $? ;;
19662
- # A signed deploy record (.loki/deploys/*.json, schema loki.deploy/1) is re-checked by the same verifier.
19662
+ # A signed deploy record (.loki/deploys/*.json, schema loki.deploy/1) or a run receipt anywhere (schema loki.v10.receipt) is re-checked by the same verifier.
19663
19663
  *.json)
19664
- if [ -f "$_pk_arg" ] && grep -q 'loki\.deploy/1' "$_pk_arg" 2>/dev/null; then
19664
+ if [ -f "$_pk_arg" ] && grep -Eq 'loki\.deploy/1|"schema" *: *"loki\.v10\.receipt' "$_pk_arg" 2>/dev/null; then
19665
19665
  _loki_bun_delegate engine10 verify "$@"
19666
19666
  return $?
19667
19667
  fi ;;
@@ -7,6 +7,6 @@ Modules:
7
7
  control: Session control helpers (status, atomic writes, origin check)
8
8
  """
9
9
 
10
- __version__ = "11.56.3"
10
+ __version__ = "11.56.5"
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.56.3. Do not edit by hand.
3
+ Generated from `loki-ts/src/cli/registry.ts` by `scripts/generate-stale-zero.sh` for v11.56.5. 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.56.3
5
+ **Version:** v11.56.5
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
 
@@ -1506,3 +1506,19 @@ L0 review rule (ENGINE-LAWS.md L0): a fix that adds an `if` or a regex about the
1506
1506
 
1507
1507
  - Late materialization (recurrence 2026-10-23): the registry applies a publish 3 to 6 minutes after the client prints "+ loki-mode@X" (registry time field: 11.53.0 +4m10s, 11.53.1 +5m13s, 11.54.0 +6m12s). 11.54.1 uploaded 04:34:24Z, served 04:39:34Z; 11.54.2 uploaded 04:38:07Z, served 04:41:17Z, leaving latest=11.54.1 next=11.54.2. The 15s settle in the script is far shorter than the lag, so a write made in publish-npm can be overtaken after it settles (mechanism inferred, not directly observed). Fix: verify-npm-registry runs scripts/npm-dist-tags.sh again after loki-mode@VERSION resolves; the script is convergent (max stable, never lower), so it is safe outside the release-npm lock.
1508
1508
  - Fixture: tests/test-npm-dist-tags.sh (9 cases incl. latest dragged down after the first settle restored by a second run, a settled converge run writing nothing, late overtaking write restored and view outage error/empty with zero writes). Mutants (ignore tags, no re-read, target=VERSION, outage guard removed) each fail a case.
1509
+
1510
+ ## FC-THINKING-TYPE-ACCEPTED-BY-CLI-REJECTED-BY-API A thinking type the CLI accepted was a 400 for the model, and the usage error stated a rule the model did not have
1511
+ - User-visible vs raw: user-visible. `loki internal sdk-judge|sdk-text --model claude-sonnet-5-5 --thinking disabled` at effort high or below was sent as `thinking: {type: "disabled"}`, which the API rejects with a 400 at every effort for that model (claude-api skill, Thinking & Effort table: Sonnet 5.5 "disabled returns 400; to turn thinking off send between_tools"). The judge failed closed and the bash caller fell back. Separately, the usage error "disabled cannot combine with --effort xhigh or max" was printed for claude-opus-5 and claude-haiku-5-5, which #314 clamps instead of refusing.
1512
+ - Law: a request parameter is derived from the model catalog, never hand-written per model; a message never states a rule the catalog does not record.
1513
+ - Cause (measured): #314 encoded only the effort ceiling (thinking.max_effort) and kept one model-blind sentence in two callers; the catalog had no way to say that a type is never valid for a model and what replaces it.
1514
+ - Siblings swept: claude-opus-5-5, claude-fable-5-1 and claude-fable-5 list only adaptive in thinking.types, so disabled is a 400 at every effort for them (review of 37d4eb08d): claudeThinkingAccepted(model, type) is false for a type absent from types with no substitute, thinkingConflictsEffort refuses it at every effort, thinkingUsageError says "disabled is not accepted by <model>", and clampThinkingForEffort sends adaptive with a ledger record; claude-haiku-4-5 (no disabled substitute is invented), the max_effort clamp (still applied to the substituted type), thinkingConflictsEffort (a substituted model no longer conflicts), both callers of the usage error.
1515
+ - Mechanism: catalog thinking.substitute maps a requested type to the type sent (claude-sonnet-5-5: disabled to between_tools). clampThinkingForEffort applies the substitute, then the max_effort clamp to the substituted type, and the ledger thinking_clamp records `disabled->between_tools@<effort> (max high)` or `disabled->adaptive@<effort> (max high)`. thinkingUsageError builds the sentence from the substitute and max_effort of the resolved model.
1516
+ - Fixture: loki-ts/tests/providers/claude_flags.test.ts "thinking substitute and usage message (#314 follow-up)", loki-ts/tests/runner/sdk_invoker.test.ts "thinking substitute (#314)", tests/test-model-catalog-single-source.sh pins thinking.substitute. Three mutants (drop the catalog substitute, hand-write the message, clamp on the requested type) each turn them red.
1517
+
1518
+ ## FC-PRINTED-COMMAND-REACHES-WRONG-ENGINE The two commands the product prints for a user (`loki start --resume`, `loki verify <receipt path>`) were routed to an engine that could not do the job, and reported success or a wrong verdict
1519
+ - User-visible vs raw: user-visible. After a crash in implement, `loki start --resume` printed "phase implement is not auto-resumable ... start a new run", resumed nothing and exited 0 in 0.46s (the stage resume resumed the same crash in 20.8s through `loki "<task>" --resume`). `loki verify .loki/runs/<id>/receipt.json` on a VERIFIED run printed `VERDICT: CONCERNS` with the receipt path used as a git base ref ("Diff: 0 files"), where bare `loki verify` said VERIFIED.
1520
+ - Law: a command the product tells the user to run reaches the engine that owns the artifact it names, and its exit code is the engine's, never a success the engine did not report.
1521
+ - Cause (measured): the legacy start branch delegated `engine10 resume` (resumeMain, the reporter) instead of `engine10 --resume` (resumeFlag, the stage resume) and mapped its exit 4 to 0; cmd_verify routed only composite, group and deploy receipts to engine10, so a run receipt fell through to the diff verifier. tests/test-next-resume-agree.sh pinned `STUB-ARGV:engine10 resume` with a stub that exits 0, so it passed while the user path resumed nothing (a guard that passed its own mutation).
1522
+ - Siblings swept: `loki resume` (the reporter, keeps its 0/4/5 map), `loki "<task>" --resume` (already resumeFlag), bare `loki verify` and `loki verify e10-*` (already v10 in bin/loki), `--pubkey` verify (already v10), a git ref and a non-receipt .json (stay on the diff verifier, pinned as controls).
1523
+ - Mechanism: `start --resume` delegates `engine10 --resume [run-id]` and returns the code unchanged; cmd_verify sends `.loki/runs/e10-*/receipt.json` paths and any existing file whose schema starts `loki.v10.receipt` to `engine10 verify`.
1524
+ - Fixture: tests/test-next-resume-agree.sh drives the real Bun entry on a seeded interrupted run (asserts `engine10: resume from stage implement`, exit 2 not 0) and a stub that exits 4 (asserts 4); tests/test-verify-receipt-route.sh covers the path forms, a tampered receipt (TAMPERED, never CONCERNS) and the diff-verifier controls. Red on origin/main (17 and 4 failures), green after; mutants (delegate back to `resume`, schema route removed) turn them red.