loki-mode 11.66.0 → 11.66.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SKILL.md +2 -2
- package/VERSION +1 -1
- package/dashboard/__init__.py +1 -1
- package/docs/CLI-REFERENCE.md +1 -1
- package/docs/INSTALLATION.md +1 -1
- package/docs/dev/release-checklist.md +2 -0
- package/docs/v10/FAILURE-CLASSES.md +16 -0
- package/docs/v10/GUARDS.md +1 -1
- package/loki-ts/dist/loki.js +949 -948
- package/mcp/__init__.py +1 -1
- package/package.json +2 -2
- package/packages/control-plane/dist/server.js +102 -2
- package/plugins/loki-mode/.claude-plugin/plugin.json +1 -1
- package/web-app/dist/assets/{AdminPage-BBYeUnTs.js → AdminPage-DUUSP-zy.js} +1 -1
- package/web-app/dist/assets/{Avatar-CWXCQBxg.js → Avatar-B8BH9fQZ.js} +1 -1
- package/web-app/dist/assets/{Badge-sSTd2Tl2.js → Badge-BXVq433G.js} +1 -1
- package/web-app/dist/assets/{Button-h6C6bAox.js → Button-BFK_qowE.js} +1 -1
- package/web-app/dist/assets/{CockpitPage-DEEh4dja.js → CockpitPage-B5uaJ0Z_.js} +1 -1
- package/web-app/dist/assets/{ComparePage-NeGmyg7p.js → ComparePage-BOJidJKo.js} +1 -1
- package/web-app/dist/assets/{ErrorBoundary-DXxZ6xis.js → ErrorBoundary-BSDwUoJy.js} +1 -1
- package/web-app/dist/assets/{EvidenceReceiptPanel-6-B3WDSp.js → EvidenceReceiptPanel-DFIrryk0.js} +1 -1
- package/web-app/dist/assets/{GitHubIssuesPanel-Bg-Imz7E.js → GitHubIssuesPanel-Bpy9Q7KU.js} +1 -1
- package/web-app/dist/assets/{GitHubPRsPanel-C6UF2egi.js → GitHubPRsPanel-C40Uwyjl.js} +1 -1
- package/web-app/dist/assets/{HomePage-tHz0VUyN.js → HomePage-CrKeQ9kt.js} +2 -2
- package/web-app/dist/assets/{LoginPage-BUrFUkVY.js → LoginPage-DZLHMRAF.js} +1 -1
- package/web-app/dist/assets/{MagicPage-DJHKJ1S5.js → MagicPage-wSsYtbHa.js} +1 -1
- package/web-app/dist/assets/{MetricsPage-C-aid1J1.js → MetricsPage-DKzav4Xg.js} +1 -1
- package/web-app/dist/assets/{NotFoundPage-B8oimTY-.js → NotFoundPage-tFWP8KUK.js} +1 -1
- package/web-app/dist/assets/{ProjectPage-DcOZ13UG.js → ProjectPage-52h79KFr.js} +3 -3
- package/web-app/dist/assets/{ProjectsPage-CLFzR2_3.js → ProjectsPage-DRSpM7E2.js} +1 -1
- package/web-app/dist/assets/{SettingsPage-DKoDgZ3m.js → SettingsPage-B5_eQXf1.js} +1 -1
- package/web-app/dist/assets/{ShowcasePage-L-F_ZaPC.js → ShowcasePage-mlk1VZ5N.js} +1 -1
- package/web-app/dist/assets/{SystemSettingsPage-ugeNas-Q.js → SystemSettingsPage-L7NP65y7.js} +1 -1
- package/web-app/dist/assets/{TeamsPage-DEZUIzDz.js → TeamsPage-C5gbHIhR.js} +1 -1
- package/web-app/dist/assets/{TemplatesPage-CQ4i4huW.js → TemplatesPage-CpRsgu5-.js} +1 -1
- package/web-app/dist/assets/{TerminalOutput-DKYLcRWE.js → TerminalOutput-C_tCR_Km.js} +1 -1
- package/web-app/dist/assets/{activity-tEb4XOjN.js → activity-DDAkha-U.js} +1 -1
- package/web-app/dist/assets/{bell-BZgbrH6r.js → bell-d3C_NwgU.js} +1 -1
- package/web-app/dist/assets/{bot-VISRZvfz.js → bot-xx2FrcyK.js} +1 -1
- package/web-app/dist/assets/{check-mIxOO8jC.js → check-B1wjphtz.js} +1 -1
- package/web-app/dist/assets/{chevron-left-DloVNQpO.js → chevron-left-CxIjKCcc.js} +1 -1
- package/web-app/dist/assets/{circle-alert-CCGiyFvp.js → circle-alert-BkUkszys.js} +1 -1
- package/web-app/dist/assets/{clock-awsUBGuf.js → clock-Da0Cxc6b.js} +1 -1
- package/web-app/dist/assets/{cloud-DuwmM2-B.js → cloud-CemmtpAa.js} +1 -1
- package/web-app/dist/assets/{code-xml-DZHt_K3g.js → code-xml-D1PFPtf5.js} +1 -1
- package/web-app/dist/assets/{database-gQaj-XpB.js → database-4tOYZHTT.js} +1 -1
- package/web-app/dist/assets/{dollar-sign-Dr4jGFHz.js → dollar-sign-CGwkXp1P.js} +1 -1
- package/web-app/dist/assets/{file-code-corner-CD4LK9eo.js → file-code-corner-Cv3xwFb6.js} +1 -1
- package/web-app/dist/assets/{file-plus-BOLAJKe6.js → file-plus-DR0S1Q6M.js} +1 -1
- package/web-app/dist/assets/{globe-zCQy732n.js → globe-CnM5-QEh.js} +1 -1
- package/web-app/dist/assets/{hammer-CFS2XFmB.js → hammer-BybFanZ-.js} +1 -1
- package/web-app/dist/assets/{index-PPqdaerE.js → index-CsEKqPjD.js} +3 -3
- package/web-app/dist/assets/{layers-DvcmuU0R.js → layers-AsoI5QVF.js} +1 -1
- package/web-app/dist/assets/{loader-circle-BsNNgiMk.js → loader-circle-BP-Dgm4_.js} +1 -1
- package/web-app/dist/assets/{lock-Dmabwnn6.js → lock-9heWJfZK.js} +1 -1
- package/web-app/dist/assets/{package-CYl8YMYR.js → package-B3oxVBPu.js} +1 -1
- package/web-app/dist/assets/{plus-DtFSgnIf.js → plus-Dk3jSp9T.js} +1 -1
- package/web-app/dist/assets/{refresh-cw-DEYRPf_y.js → refresh-cw-D_EqfAM1.js} +1 -1
- package/web-app/dist/assets/{rotate-ccw-Bp33HBGy.js → rotate-ccw-BYWk_Sh7.js} +1 -1
- package/web-app/dist/assets/{scroll-text-Ca2_3pvT.js → scroll-text-CLU6QkSK.js} +1 -1
- package/web-app/dist/assets/{server-DiB3A38g.js → server-BQVeYEi-.js} +1 -1
- package/web-app/dist/assets/{shield-alert-BHhePU1D.js → shield-alert-CGdnbbuO.js} +1 -1
- package/web-app/dist/assets/{thumbs-up-8_lqI39R.js → thumbs-up-CqAiD7w7.js} +1 -1
- package/web-app/dist/assets/{trash-2-Z5jfNIfx.js → trash-2-DOZ4MX9o.js} +1 -1
- package/web-app/dist/assets/{trending-down-njKI24Nx.js → trending-down-vm1A3ywr.js} +1 -1
- package/web-app/dist/assets/{trending-up-OoZ3cz7H.js → trending-up-CdGlmr5H.js} +1 -1
- package/web-app/dist/assets/{upload-BeMykif9.js → upload--DV5H13K.js} +1 -1
- package/web-app/dist/assets/{usePolling-DO482myz.js → usePolling-CTvwKWlp.js} +1 -1
- package/web-app/dist/assets/{user-DOGPTYgb.js → user-CQ-pSxyg.js} +1 -1
- package/web-app/dist/index.html +1 -1
package/SKILL.md
CHANGED
|
@@ -3,7 +3,7 @@ name: loki-mode
|
|
|
3
3
|
description: 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.66.
|
|
6
|
+
# Loki Mode v11.66.2
|
|
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.66.
|
|
479
|
+
**v11.66.2 | [Autonomi](https://www.autonomi.dev/) flagship product | core skill**
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
11.66.
|
|
1
|
+
11.66.2
|
package/dashboard/__init__.py
CHANGED
package/docs/CLI-REFERENCE.md
CHANGED
|
@@ -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.66.
|
|
3
|
+
Generated from `loki-ts/src/cli/registry.ts` by `scripts/generate-stale-zero.sh` for v11.66.2. 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 |
|
package/docs/INSTALLATION.md
CHANGED
|
@@ -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.66.
|
|
5
|
+
**Version:** v11.66.2
|
|
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
|
|
|
@@ -127,6 +127,8 @@ For a manual push (`git push origin main`), run `bash scripts/local-ci.sh` first
|
|
|
127
127
|
npm, then creates the tag and GitHub Release, builds/pushes Docker (including `:latest`), and updates the Homebrew tap. Do not manually
|
|
128
128
|
create tags.
|
|
129
129
|
|
|
130
|
+
Before any release merge or push to main, run `bash scripts/release-approval-gate.sh --range origin/main..<sha>` (FC-RELEASE-UNNAMED-STACKED-PARENT): every commit in the range must be named by a `TL|HIGH|CTO|tl-x|rev-x APPROVE <sha>` line in docs/v10/BOARD.md, be rebase-equal by `git patch-id --stable`, or be an exempt clean merge or release commit; a held slice denies. Exit 1 lists each unapproved SHA with its reason, and `LOKI_RELEASE_APPROVED` does not bypass it.
|
|
131
|
+
|
|
130
132
|
Before pushing the release commit, run `bash scripts/release.sh --check-clean` (E-151): it exits 1 naming any tracked file (for example a stamped `loki-ts/dist/loki.js.map`) the commit left modified; `--bump-only` prints the "stage these files:" list.
|
|
131
133
|
|
|
132
134
|
### 5. Verify ALL Distribution Channels
|
|
@@ -1882,3 +1882,19 @@ L0 review rule (ENGINE-LAWS.md L0): a fix that adds an `if` or a regex about the
|
|
|
1882
1882
|
- Siblings swept (`grep -n "group:" docs/examples/loki-issue-to-pr.yml.example`): four jobs carry a group; only the two publish jobs shared one.
|
|
1883
1883
|
- Mechanism: the stub records its subcommand and the tests require `reseal` for fix and `explain` for explain; groups are now `loki-issue-`, `loki-issue-publish-`, `loki-pr-fix-`, `loki-pr-publish-`, and a guard requires four distinct groups.
|
|
1884
1884
|
- Fixture: tests/test-issue-to-pr-action.sh; mutants: drop `SUB="reseal"` (2 failures), make the publish group equal the agent group (guard red).
|
|
1885
|
+
|
|
1886
|
+
## FC-RELEASE-UNNAMED-STACKED-PARENT A release merge shipped stacked parent commits that no reviewer had approved by SHA, including slices on hold, because the approval gate only checked the VERSION line (#436)
|
|
1887
|
+
- User-visible vs raw: users received v11.58.0 containing cw20-r2 parents e4c445b73 and 13b46699d, plus cw15/ux350/roadmap100 parents 9bf08f534, dc2e16314, 64e9f1a09 and cf177adf5, while the slice hold stood. Raw: the range held commits no TL or HIGH APPROVE line named; a rebase had also changed f8f263627 after approval.
|
|
1888
|
+
- Law broken: D12/D13 (a release carries only what a named reviewer approved); a hold is a block (OPERATING-MODEL.md, Release Manager).
|
|
1889
|
+
- Sibling sweep: scripts/release-approval-gate.sh (VERSION-only), scripts/train-cycle.sh phase_b (pushes a SHA to main), scripts/release.sh (stages release commits). Phase B is the only other push-to-main path.
|
|
1890
|
+
- Mechanism: one default-deny check inside scripts/release-approval-gate.sh, run on every invocation before the VERSION check: each commit is named by an approval line, rebase-equal by git patch-id --verbatim (indentation edits are content), or exempt (clean merge, release-files-only release commit whose dist files are exactly release.sh RELEASE_DIST_FILES); a held slice id denies; an approval line with no board row is denied by name (holds cannot be checked); an unreadable range exits 1, never ALLOWED. LOKI_RELEASE_APPROVED and --approve do not reach it. train-cycle.sh phase B calls the same script.
|
|
1891
|
+
- Fixture: tests/test-release-approval-gate.sh (stacked A,B,C; clean rebase; changed rebase; hold; exemptions; env bypass; replay 9556d6f16..8aad0307f; indentation-only rebase; bad range; 6-column parked row; dist/loki.js exempt vs dist/evil.js denied; rowless approval denied) plus one mutant per rule.
|
|
1892
|
+
|
|
1893
|
+
## FC-FULLSUITE-GO-CARGO-IDS A Go or Rust full suite already red on base was charged to the change because failIds knew only pytest, jest, vitest and node ids (FULLSUITE-GO-CARGO-IDS)
|
|
1894
|
+
- User-visible vs raw: user-visible. FULL_SUITE_CMD runs `go test -json ./...` and `cargo test`, but failIds returned [] for both, and attributeFullSuite treats "no known ids" as nothing excused, so any base-red Go or Rust repo blocked the change for failures it did not cause.
|
|
1895
|
+
- Law broken: a failure the change did not cause is never charged to the change (same law as FC-BASELINE-PER-PACKAGE).
|
|
1896
|
+
- Siblings: pytest, jest, vitest and node ids (unchanged); the Rust Wall runner (FC-WALL-FILE-NOT-DISCOVERED-BY-RUNNER, guessRunner has no `.rs` mapping and cargo test takes no file argument; NOT closed here, gated on pd/wallfile merging); cargo's `--no-fail-fast` and doc-test ids.
|
|
1897
|
+
- Mechanism: failures.ts goCargoIds, ahead of the generic ID_LINE path. go -json: id `pkg::Test` per Action=fail with a Test, the package for a package-only fail; count is the `--- FAIL:` output lines plus package-only fails. go plain: `--- FAIL:` names plus `FAIL<TAB>pkg` lines no test explains. cargo: `test x ... FAILED` against the summed `N failed`. Every branch stays fail-closed (ids fewer than the count returns []).
|
|
1898
|
+
- Fixture: loki-ts/tests/engine10/verify_prered.test.ts "FC-FULLSUITE-GO-CARGO-IDS"; loki-ts/tests/runner/harness_intelligence.test.ts "FC-FULLSUITE-GO-CARGO-IDS: a go or cargo full suite red on base is excused for the same failing id, not for a new one".
|
|
1899
|
+
| FC-GO-PACKAGE-ID-CHANGED-FILE | A go full suite fails on base and head with a package id ("pkg" build failure or "pkg::Test") and the change edits a .go file in that package; the id excuses itself as pre-existing though the change touched the failing code | user-visible: a verdict excuses a red the change may own | Engine Law 1 (no excuse without proof): an id excuses only if no changed file maps to it | Siblings: cargo ids (closed by FC-CARGO-ID-CHANGED-CRATE below); pytest, jest, vitest ids use the changed-file substring check already | Mechanism: repo_profile.ts goIdTouched walks up from each changed .go file to its nearest go.mod (nested modules and go.work members included) and compares the id to that module path plus the file's directory below it (suffix match only when no go.mod exists); a changed go.mod or go.sum touches every package of its module (id equal to the module path or under it); a changed go.work or go.work.sum touches every go id; attributeFullSuite eligibility requires !goIdTouched and the line gains "NOT PROVEN: package <p> did not build on base or head; its tests ran on neither" | Fixture (module-root M2 and non-.go M4 mutants): loki-ts/tests/runner/harness_intelligence.test.ts "FC-GO-PACKAGE-ID-CHANGED-FILE: the module-root package is touched only by a root .go file, and only a .go file touches a package"; also loki-ts/tests/runner/harness_intelligence.test.ts "FC-GO-PACKAGE-ID-CHANGED-FILE" (mutant dropping the check goes red) |
|
|
1900
|
+
| FC-CARGO-ID-CHANGED-CRATE | A cargo full suite fails on base and head with the same test id and the change edits Rust source or a manifest; the id (a module path with no crate or file) excuses itself as pre-existing though the edited crate may own it | user-visible: a verdict excuses a red the change may own | Engine Law 1 (no excuse without proof): fail closed when the id cannot be mapped to the change | Siblings: go ids (FC-GO-PACKAGE-ID-CHANGED-FILE); pytest, jest, vitest ids use the changed-file substring check | Mechanism: repo_profile.ts cargoTouched makes every failing full-suite check ineligible, whatever its command (make test and npm test wrap cargo), when any changed file is .rs, Cargo.toml, Cargo.lock or build.rs, and the line gains "NOT PROVEN: <name> may run cargo tests and the diff edits Rust source or a manifest" | Fixture: loki-ts/tests/runner/harness_intelligence.test.ts "FC-CARGO-ID-CHANGED-CRATE"; mutants: drop the cargoTouched term, or key it on the command name again (wrapper fixture goes red); walk only the root go.mod (nested-module fixture goes red); ignore go.mod and go.sum edits (module-file fixture goes red) |
|
package/docs/v10/GUARDS.md
CHANGED
|
@@ -880,4 +880,4 @@ previously mismarked two merged guards (S-16, S-74) as PENDING.
|
|
|
880
880
|
|
|
881
881
|
### 2026-10-23: release manager shipped unnamed stacked parents
|
|
882
882
|
- **Incident:** rm-1 shipped unnamed stacked parents (cw20-r2 e4c445b73 13b46699d; cw15/ux350/roadmap100 parents 9bf08f534, dc2e16314, 64e9f1a09, cf177adf5). cw20-r2 shipped as v11.58.0 while a hold on that slice stood.
|
|
883
|
-
- **Guard:** the approval line must name every shipped SHA and its reviewer; holds match by slice name, not SHA; a queue order is never an approval.
|
|
883
|
+
- **Guard:** the approval line must name every shipped SHA and its reviewer; holds match by slice name, not SHA; a queue order is never an approval. The check is scripted: `scripts/release-approval-gate.sh` denies any range commit not named by SHA, rebase-equal by patch-id or exempt, and any commit whose slice is held; `scripts/train-cycle.sh` phase B calls it. Proof: `bash tests/test-release-approval-gate.sh` (stacked parents, clean and changed rebase, hold, exemptions, env bypass, and mutants that must go red).
|