loki-mode 11.17.45 → 11.17.46
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/autonomy/lib/secret-scan.sh +4 -0
- package/autonomy/loki +25 -6
- package/completions/_loki +6 -0
- package/completions/loki.bash +8 -0
- package/dashboard/__init__.py +1 -1
- package/docs/CLI-REFERENCE.md +1 -1
- package/docs/INSTALLATION.md +1 -1
- package/docs/v10/BOARD.md +30 -30
- package/docs/v10/FAILURE-CLASSES.md +8 -0
- package/docs/v10/PROGRESS.md +3 -0
- package/loki-ts/dist/loki.js +1267 -1252
- package/mcp/__init__.py +1 -1
- package/package.json +2 -2
- package/packages/control-plane/dist/server.js +1742 -1717
- package/plugins/loki-mode/.claude-plugin/plugin.json +1 -1
- package/web-app/dist/assets/{AdminPage-BCGIu6vt.js → AdminPage-DOQbb9S2.js} +1 -1
- package/web-app/dist/assets/{Avatar-FGro9b68.js → Avatar-DlCHpaY9.js} +1 -1
- package/web-app/dist/assets/{Badge-DZ0OOxdx.js → Badge-CsGRidkQ.js} +1 -1
- package/web-app/dist/assets/{Button-C702FTxi.js → Button-CaNiRTkv.js} +1 -1
- package/web-app/dist/assets/{CockpitPage-B1CZaaXx.js → CockpitPage-B8sezC-W.js} +1 -1
- package/web-app/dist/assets/{ComparePage-DRd-w9yO.js → ComparePage-B36mEWLR.js} +1 -1
- package/web-app/dist/assets/{ErrorBoundary-B9T1V8_Q.js → ErrorBoundary-BFGjCcE5.js} +1 -1
- package/web-app/dist/assets/{EvidenceReceiptPanel-CScPICN7.js → EvidenceReceiptPanel-mFXX7T0e.js} +1 -1
- package/web-app/dist/assets/{GitHubIssuesPanel-BL8nzIoH.js → GitHubIssuesPanel-BjUOWEuY.js} +1 -1
- package/web-app/dist/assets/{GitHubPRsPanel-W0FX5DSl.js → GitHubPRsPanel-CcLMzJZk.js} +1 -1
- package/web-app/dist/assets/{HomePage-_3jq9WUA.js → HomePage-9j8CciDG.js} +2 -2
- package/web-app/dist/assets/{LoginPage-DsPxoAOJ.js → LoginPage-BXEJEipC.js} +1 -1
- package/web-app/dist/assets/{MagicPage-nOER2-ZE.js → MagicPage-JJhHAzUo.js} +1 -1
- package/web-app/dist/assets/{MetricsPage-CoiAlCTC.js → MetricsPage-g2murSvE.js} +1 -1
- package/web-app/dist/assets/{NotFoundPage-l46SOx1i.js → NotFoundPage-D3fshofn.js} +1 -1
- package/web-app/dist/assets/{ProjectPage-DxO8dkf_.js → ProjectPage-B91c8gqI.js} +3 -3
- package/web-app/dist/assets/{ProjectsPage-DtNSAVm9.js → ProjectsPage-f-AqCLnm.js} +1 -1
- package/web-app/dist/assets/{SettingsPage-DbNetRfY.js → SettingsPage-xmKoxIhv.js} +1 -1
- package/web-app/dist/assets/{ShowcasePage-BSzhjOYS.js → ShowcasePage-DxPIEO67.js} +1 -1
- package/web-app/dist/assets/{SystemSettingsPage-DWrN72dn.js → SystemSettingsPage-Cm9Dy2-W.js} +1 -1
- package/web-app/dist/assets/{TeamsPage-CVFEOL9r.js → TeamsPage-xUmbM2Q6.js} +1 -1
- package/web-app/dist/assets/{TemplatesPage-IpcsZhEh.js → TemplatesPage-BF0atSP9.js} +1 -1
- package/web-app/dist/assets/{TerminalOutput-Bv9Zgwyj.js → TerminalOutput-BRR-hjM0.js} +1 -1
- package/web-app/dist/assets/{activity-CHgtGwwW.js → activity-bs7r0Zgu.js} +1 -1
- package/web-app/dist/assets/{bell-Ym0Mx2Xd.js → bell-BSBQU6oH.js} +1 -1
- package/web-app/dist/assets/{bot-C-6tA3JT.js → bot-IY1WHsy_.js} +1 -1
- package/web-app/dist/assets/{check-CyFyZ4Qi.js → check-BbLOs82D.js} +1 -1
- package/web-app/dist/assets/{chevron-left-B3SPNdcz.js → chevron-left-Dr_YJex2.js} +1 -1
- package/web-app/dist/assets/{circle-alert-DcKKeKmd.js → circle-alert-CdPabs5h.js} +1 -1
- package/web-app/dist/assets/{clock-CHLwYBFX.js → clock-DSSC0-0Q.js} +1 -1
- package/web-app/dist/assets/{cloud-CBE7j7iG.js → cloud-D_gWiz8h.js} +1 -1
- package/web-app/dist/assets/{code-xml-Cu-b65vO.js → code-xml-BeK0mcX9.js} +1 -1
- package/web-app/dist/assets/{database-DSJlQYxs.js → database-CcJkBSXN.js} +1 -1
- package/web-app/dist/assets/{dollar-sign-BcPFsZq0.js → dollar-sign-B0KTo6gY.js} +1 -1
- package/web-app/dist/assets/{file-code-corner-Dl_LDpv_.js → file-code-corner-Br9i1QUK.js} +1 -1
- package/web-app/dist/assets/{file-plus-BoLEmKCc.js → file-plus-Cntlx-H3.js} +1 -1
- package/web-app/dist/assets/{globe-4-KwsIUo.js → globe-BzTQwBst.js} +1 -1
- package/web-app/dist/assets/{hammer-CaG_crBz.js → hammer-DY5E-S_s.js} +1 -1
- package/web-app/dist/assets/{index-DD7FC7yd.js → index-D8iQaeY_.js} +3 -3
- package/web-app/dist/assets/{layers-BDQEO970.js → layers-fichWK2q.js} +1 -1
- package/web-app/dist/assets/{loader-circle-ENh48A-3.js → loader-circle-H4GEC-nt.js} +1 -1
- package/web-app/dist/assets/{lock-CcI4ltMK.js → lock-L2gybTp0.js} +1 -1
- package/web-app/dist/assets/{package-DA_Bt7Mx.js → package-C6GhNvrY.js} +1 -1
- package/web-app/dist/assets/{plus-r_jqdmwV.js → plus-C76f-H0b.js} +1 -1
- package/web-app/dist/assets/{refresh-cw-B0o3B073.js → refresh-cw-CYrIM5Gt.js} +1 -1
- package/web-app/dist/assets/{rotate-ccw-D5EyaAC-.js → rotate-ccw-DuVzPMTc.js} +1 -1
- package/web-app/dist/assets/{scroll-text-DKrZwpKk.js → scroll-text-Ou40WwYD.js} +1 -1
- package/web-app/dist/assets/{server-FMLinzaf.js → server-CY2Y_apg.js} +1 -1
- package/web-app/dist/assets/{shield-alert-C5YWhIfX.js → shield-alert-CNf-jmi3.js} +1 -1
- package/web-app/dist/assets/{thumbs-up-lWteH19H.js → thumbs-up-DNRc_NvO.js} +1 -1
- package/web-app/dist/assets/{trash-2-CTWsJujI.js → trash-2-CdzowWF_.js} +1 -1
- package/web-app/dist/assets/{trending-down-n969VpQb.js → trending-down-DtZEAOFe.js} +1 -1
- package/web-app/dist/assets/{trending-up-hNpwNjdL.js → trending-up-BwiPR3rB.js} +1 -1
- package/web-app/dist/assets/{upload-DmcM8inI.js → upload-BI_6o8oU.js} +1 -1
- package/web-app/dist/assets/{usePolling-CQCRI-UO.js → usePolling-TefZLSUZ.js} +1 -1
- package/web-app/dist/assets/{user-BCspLAnr.js → user-BzczgZi4.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: 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.
|
|
6
|
+
# Loki Mode v11.17.46
|
|
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.
|
|
486
|
+
**v11.17.46 | [Autonomi](https://www.autonomi.dev/) flagship product | core skill**
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
11.17.
|
|
1
|
+
11.17.46
|
|
@@ -46,6 +46,10 @@ _commit_scan_secret_file() {
|
|
|
46
46
|
'sk-ant-[A-Za-z0-9_-]{20,}' # Anthropic API key (hyphenated body)
|
|
47
47
|
'AIza[0-9A-Za-z_-]{35}' # Google API key
|
|
48
48
|
'glpat-[A-Za-z0-9_-]{20,}' # GitLab personal access token
|
|
49
|
+
'(^|[^A-Za-z0-9_])hf_[A-Za-z0-9]{34,}' # Hugging Face token
|
|
50
|
+
'(^|[^A-Za-z0-9])SG\.[A-Za-z0-9_-]{22}\.[A-Za-z0-9_-]{43}' # SendGrid API key
|
|
51
|
+
'(^|[^A-Za-z0-9])SK[0-9a-f]{32}([^A-Za-z0-9]|$)' # Twilio API key SID
|
|
52
|
+
'AccountKey=[A-Za-z0-9+/]{40,}={0,2}' # Azure storage account key
|
|
49
53
|
)
|
|
50
54
|
local p
|
|
51
55
|
for p in "${tier1[@]}"; do
|
package/autonomy/loki
CHANGED
|
@@ -1769,7 +1769,7 @@ _help_verify_pr() {
|
|
|
1769
1769
|
echo "PR code runs only in the container sandbox (scripts/verify-pr-sandbox.sh); set"
|
|
1770
1770
|
echo "LOKI_VPR_IMAGE to a locally present image."
|
|
1771
1771
|
echo ""
|
|
1772
|
-
echo "Exit codes: 0 verified, 2 usage or sandbox blocked, 4
|
|
1772
|
+
echo "Exit codes: 0 verified, 2 usage or sandbox blocked, 3 no proof to run (no linked issue or no trusted runnable check), 4 proof ran and failed."
|
|
1773
1773
|
}
|
|
1774
1774
|
|
|
1775
1775
|
# Appended to `loki help verify`: the v10 DSSE export flag (docs/exit-codes.md).
|
|
@@ -7514,7 +7514,17 @@ cmd_provider() {
|
|
|
7514
7514
|
models)
|
|
7515
7515
|
cmd_provider_models
|
|
7516
7516
|
;;
|
|
7517
|
+
help|--help|-h)
|
|
7518
|
+
_cmd_provider_help
|
|
7519
|
+
;;
|
|
7517
7520
|
*)
|
|
7521
|
+
echo "loki provider: unknown subcommand '${subcommand}' (see 'loki provider help')" >&2
|
|
7522
|
+
return 2
|
|
7523
|
+
;;
|
|
7524
|
+
esac
|
|
7525
|
+
}
|
|
7526
|
+
|
|
7527
|
+
_cmd_provider_help() {
|
|
7518
7528
|
echo -e "${BOLD}Loki Mode Provider Management${NC}"
|
|
7519
7529
|
echo ""
|
|
7520
7530
|
echo "Usage: loki provider <command>"
|
|
@@ -7543,8 +7553,6 @@ cmd_provider() {
|
|
|
7543
7553
|
echo " loki provider list"
|
|
7544
7554
|
echo " loki provider info codex"
|
|
7545
7555
|
echo " loki provider models"
|
|
7546
|
-
;;
|
|
7547
|
-
esac
|
|
7548
7556
|
}
|
|
7549
7557
|
|
|
7550
7558
|
cmd_provider_show() {
|
|
@@ -14141,7 +14149,7 @@ cmd_config() {
|
|
|
14141
14149
|
validate)
|
|
14142
14150
|
cmd_config_validate "$@"
|
|
14143
14151
|
;;
|
|
14144
|
-
|
|
14152
|
+
help|--help|-h)
|
|
14145
14153
|
echo -e "${YELLOW}Usage: loki config [show|list|init|edit|path|set|get|example|schema|validate]${NC}"
|
|
14146
14154
|
echo ""
|
|
14147
14155
|
echo " show Show current configuration (default)"
|
|
@@ -14171,6 +14179,10 @@ cmd_config() {
|
|
|
14171
14179
|
echo " notify.discord Discord webhook URL"
|
|
14172
14180
|
echo " budget Cost budget limit in USD"
|
|
14173
14181
|
;;
|
|
14182
|
+
*)
|
|
14183
|
+
echo "loki config: unknown subcommand '${subcommand}' (see 'loki config help')" >&2
|
|
14184
|
+
return 2
|
|
14185
|
+
;;
|
|
14174
14186
|
esac
|
|
14175
14187
|
}
|
|
14176
14188
|
|
|
@@ -15929,7 +15941,7 @@ cmd_api() {
|
|
|
15929
15941
|
fi
|
|
15930
15942
|
;;
|
|
15931
15943
|
|
|
15932
|
-
|
|
15944
|
+
help|--help|-h)
|
|
15933
15945
|
echo -e "${BOLD}Loki Mode Dashboard/API Server${NC}"
|
|
15934
15946
|
echo ""
|
|
15935
15947
|
echo "Usage: loki api <command>"
|
|
@@ -15952,6 +15964,10 @@ cmd_api() {
|
|
|
15952
15964
|
echo " POST /api/pause - Pause session"
|
|
15953
15965
|
echo " POST /api/resume - Resume session"
|
|
15954
15966
|
;;
|
|
15967
|
+
*)
|
|
15968
|
+
echo "loki api: unknown subcommand '${subcommand}' (see 'loki api help')" >&2
|
|
15969
|
+
return 2
|
|
15970
|
+
;;
|
|
15955
15971
|
esac
|
|
15956
15972
|
}
|
|
15957
15973
|
|
|
@@ -35041,7 +35057,10 @@ cmd_control() {
|
|
|
35041
35057
|
echo "Commands:"
|
|
35042
35058
|
echo " serve [--port N] [--db PATH] Run the control plane + UI on 127.0.0.1"
|
|
35043
35059
|
echo " backfill [DIR] Ship DIR/.loki/runs to the control plane"
|
|
35044
|
-
echo "
|
|
35060
|
+
echo " prune --repo OWNER/NAME | --before ISO_DATE [--dry-run] [--db PATH]"
|
|
35061
|
+
echo " Delete matching runs, their events and orphaned sources"
|
|
35062
|
+
echo " stop Stop the running control plane"
|
|
35063
|
+
echo " status [--json] Show whether the control plane is reachable (--json: one JSON object)"
|
|
35045
35064
|
return 0
|
|
35046
35065
|
;;
|
|
35047
35066
|
esac
|
package/completions/_loki
CHANGED
|
@@ -32,6 +32,12 @@ function _loki {
|
|
|
32
32
|
export)
|
|
33
33
|
_arguments '--sarif[Write findings.sarif for a run]'
|
|
34
34
|
;;
|
|
35
|
+
control)
|
|
36
|
+
_arguments \
|
|
37
|
+
'--port[Port for the control plane server]:port:' \
|
|
38
|
+
'--json[Output as JSON]' \
|
|
39
|
+
'1:subcommand:(serve status help)'
|
|
40
|
+
;;
|
|
35
41
|
config)
|
|
36
42
|
_loki_config
|
|
37
43
|
;;
|
package/completions/loki.bash
CHANGED
|
@@ -238,6 +238,14 @@ _loki_completion() {
|
|
|
238
238
|
fi
|
|
239
239
|
;;
|
|
240
240
|
|
|
241
|
+
control)
|
|
242
|
+
if [[ "$cur" == -* ]]; then
|
|
243
|
+
COMPREPLY=( $(compgen -W "--port --json --help" -- "$cur") )
|
|
244
|
+
return 0
|
|
245
|
+
fi
|
|
246
|
+
COMPREPLY=( $(compgen -W "serve status help" -- "$cur") )
|
|
247
|
+
;;
|
|
248
|
+
|
|
241
249
|
plan)
|
|
242
250
|
if [[ "$cur" == -* ]]; then
|
|
243
251
|
COMPREPLY=( $(compgen -W "--json --verbose --spec --requirements --help" -- "$cur") )
|
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.17.
|
|
3
|
+
Generated from `loki-ts/src/cli/registry.ts` by `scripts/generate-stale-zero.sh` for v11.17.46. 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.17.
|
|
5
|
+
**Version:** v11.17.46
|
|
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
|
|
package/docs/v10/BOARD.md
CHANGED
|
@@ -1182,36 +1182,36 @@ Source: ~/git/autonomi-dev/research/2026-09-30-adoption/SWARM-PROMPT-ADOPTION.md
|
|
|
1182
1182
|
| TEN-STABILITY-18 | P0 fix-forward: nightly 39016259458 reds still red on main e32ee1b5d (pr_body_golden not-recorded producer util/check_result.ts; sizing wall brief 726 vs cap 616; router_optout_golden wall stage haiku for development; verify.test uv resolution CI-only via Bun.which PATH; test-sigpipe-guard 1737 vs ceiling 1728; help-changelog-drift loki verify --require-exogenous; test-ui-bare-loki exact-match on new control lines; test-local-ci-gitleaks scope) | the failing tests, loki-ts/src/util/check_result.ts, loki-ts/src/engine10/stages/wall.ts, loki-ts/src/engine10/stages/verify.ts, verify help and completions, scripts/local-ci.sh, docs/v10/FAILURE-CLASSES.md | MEDIUM | red: each named test fails on e32ee1b5d; green: cd loki-ts && bun test tests/engine10/pr_body_golden.test.ts tests/engine10/sizing.test.ts tests/engine10/router_optout_golden.test.ts tests/engine10/verify.test.ts tests/util; bash tests/test-sigpipe-guard.sh; bash tests/test-help-changelog-drift.sh; bash tests/test-ui-bare-loki.sh; bash tests/test-local-ci-gitleaks.sh | released v11.17.42 | Diagnosis 2026-10-17 by nightly diag agent; one FAILURE-CLASSES row per class |
|
|
1183
1183
|
| TEN-STABILITY-19 | P0 fix-forward: moat P8.ablation-dead-code-not-sealed positive control headline VERIFIED WITH GAPS (expected VERIFIED) and first-run-gate --stub FAILED with dirty tracked tree M sum.js at intake.ts:61 | tests/moat/p8-*.sh or the ablation producer, scripts/first-run-gate.sh, loki-ts/src/engine10/stages/intake.ts only if the honest fix is there | HIGH | red: bash tests/moat/run.sh prints moat suite: FAIL (1 rule failure(s)); bash scripts/first-run-gate.sh --stub fails 7 assertions; green: both exit 0 | released v11.17.42 | Diagnosis 2026-10-17; never weaken a moat assertion to pass |
|
|
1184
1184
|
| TEN-STABILITY-20 | Fix help-changelog-drift red after v11.17.42: list report kpis --since and undo --list in Bun help, autonomy/loki help and both completions | completions/loki.bash, completions/_loki, loki-ts/src help, autonomy/loki, docs/v10/FAILURE-CLASSES.md | LOW | merged 3c4e2fcd9 | released v11.17.43 |
|
|
1185
|
-
| TEN-STABILITY-26 | fix: `loki control backfill --repo` with no value silently falls back to the first positional or cwd and ships that dir; fail with one error line naming --repo and exit 2 (same class as TEN-STABILITY-21) | loki-ts/src/commands/control.ts, loki-ts/tests/commands/control.test.ts | LOW | red: `cd loki-ts && bun test tests/commands/control.test.ts -t "backfill repo missing value"` fails (exit 0, ingests cwd); green: passes, `--repo DIR` and bare DIR unchanged |
|
|
1186
|
-
| TEN-UX-24 | fix: the second `control` help block in autonomy/loki (cmd_control, ~line 34902) lists only serve, backfill, status; add prune, stop and `status --json` so it matches the Bun usage in control.ts | autonomy/loki, tests/test-help-discoverability.sh | LOW | red: `bash tests/test-help-discoverability.sh` fails on a new assertion that bash `loki control --help` names prune, stop and status --json; green: passes and `bash tests/test-help-changelog-drift.sh` still exits 0 |
|
|
1187
|
-
| TEN-UX-25 | fix: bash `cmd_provider` default arm (autonomy/loki:7488) prints help and returns 0 for an unknown subcommand; return 2 with one "unknown subcommand" line (TS side fixed in TEN-UX-20); chain after TEN-UX-24 | autonomy/loki, tests/test-help-discoverability.sh | LOW | red: `bash tests/test-help-discoverability.sh` fails on `loki provider frobnicate` expecting exit 2; green: passes, `loki provider` and `loki provider --help` still exit 0 |
|
|
1188
|
-
| TEN-UX-26 | fix: sibling sweep of bash commands whose default arm prints help and exits 0 on an unknown subcommand (cmd_config ~14144 and cmd_api ~15932 are the first candidates; confirm each with a probe, skip any that already fail non-zero); make each exit 2 with an "unknown subcommand" line; chain after TEN-UX-25 | autonomy/loki, tests/test-help-discoverability.sh | LOW | red: `bash tests/test-help-discoverability.sh` fails on `loki config frobnicate` and `loki api frobnicate` expecting exit 2; green: passes, bare and --help forms still exit 0 |
|
|
1189
|
-
| TEN-UX-27 | fix: `loki doctor --quiet` writes `Install:` hint lines to stderr while the WARN/FAIL row goes to stdout, so the hint prints detached from its row; write each hint directly under its row on the same stream | loki-ts/src/commands/doctor.ts, loki-ts/tests/commands/doctor.test.ts | LOW | red: `cd loki-ts && bun test tests/commands/doctor.test.ts -t "install hint follows its row"` fails (hint absent from stdout); green: passes and `bunx tsc --noEmit` exits 0 |
|
|
1190
|
-
| TEN-QUALITY-22 | test: pin the doctor disk text-mode "on <name> volume" label (home, cwd, tmp) so the low-volume name cannot regress; chain after TEN-UX-27 | loki-ts/src/commands/doctor.ts, loki-ts/tests/commands/doctor.test.ts | LOW | red: mutate lowestVolume to return null low_volume and `cd loki-ts && bun test tests/commands/doctor.test.ts -t "disk text volume label"` fails; green: passes unmutated |
|
|
1191
|
-
| TEN-SPEED-10 | enhancement: `loki doctor --json` (buildDoctorJson) awaits checkSentrux, checkMemoryHealth and requirementsSection one after another; run them with Promise.all and keep output byte-identical; chain after TEN-QUALITY-22 | loki-ts/src/commands/doctor.ts, loki-ts/tests/commands/doctor.test.ts | MEDIUM | red: `cd loki-ts && bun test tests/commands/doctor.test.ts -t "json checks run concurrently"` fails (elapsed ~ sum of stubbed 200ms probes); green: passes and `bun test tests/commands/doctor_router.test.ts tests/commands/doctor_count.test.ts` exit 0 |
|
|
1192
|
-
| TEN-QUALITY-23 | test: help-changelog-drift guards exact completion cases; assert every `loki` subcommand and flag named in CHANGELOG appears as a literal case in completions/loki.bash and completions/_loki so a flag typo fails | tests/test-help-changelog-drift.sh, completions/loki.bash, completions/_loki | LOW | red: introduce a typo `--sinse` in completions/loki.bash and `bash tests/test-help-changelog-drift.sh` must exit 1 naming it; green: reverted typo exits 0 |
|
|
1193
|
-
| TEN-GATES-22 | feature: the per-run signed receipt (not only the composite) records the toolchain {bun,node,python3,git}, absent tools null, old receipts still verify (follow-up from the TEN-GATES-19 review) | loki-ts/src/util/receipt_signer.ts, loki-ts/tests/engine10/seal_group.test.ts | HIGH | red: `cd loki-ts && bun test tests/engine10/seal_group.test.ts -t "per-run receipt toolchain"` fails (no toolchain key); green: passes, `bun test tests/engine10 tests/util/receipt_bundle.test.ts` and `bunx tsc --noEmit` exit 0 |
|
|
1194
|
-
| TEN-COST-39 | fix: a malformed `.loki/metrics/budget.json` is discarded and returns null, so spend resets to zero and the cap is silently disarmed; rebuild budget_used from the efficiency records (readEfficiencyDir) and warn once | loki-ts/src/runner/budget.ts, loki-ts/tests/runner/budget.test.ts | MEDIUM | red: `cd loki-ts && bun test tests/runner/budget.test.ts -t "corrupt budget state rebuilds used"` fails (used 0); green: passes and `bun test tests/runner/autonomous_budget.test.ts` exit 0 |
|
|
1195
|
-
| TEN-COST-40 | fix: `loadDefaultMaxCostUsd` silently falls back to the literal 100 when model-pricing.json is unreadable; print one stderr warning naming the file and the fallback; chain after TEN-COST-39 | loki-ts/src/runner/budget.ts, loki-ts/tests/runner/budget.test.ts | LOW | red: `cd loki-ts && bun test tests/runner/budget.test.ts -t "pricing file missing warns"` fails (no warning); green: passes, warning emitted once per process |
|
|
1196
|
-
| TEN-STABILITY-27 | fix: `LOKI_E10_STALL_S=abc` or `LOKI_E10_STALL_KILL_S=-5` is silently ignored and the default applies; warn once on stderr naming the variable and the value used | loki-ts/src/runner/watchdog.ts, loki-ts/tests/runner/watchdog.test.ts | LOW | red: `cd loki-ts && bun test tests/runner/watchdog.test.ts -t "invalid stall env warns"` fails (no warning); green: passes, valid and unset values unchanged |
|
|
1197
|
-
| TEN-STABILITY-28 | fix: `loki undo <run> --bogus` ignores unknown flags and proceeds; validate against the known set (--list --plan --dry-run --json --allow-unsigned --yes --close-pr --help) and exit 2 with one line naming the flag | loki-ts/src/commands/undo.ts, loki-ts/tests/commands/undo.test.ts | MEDIUM | red: `cd loki-ts && bun test tests/commands/undo.test.ts -t "unknown flag"` fails (exit 0 or applies); green: passes, all valid combinations unchanged |
|
|
1198
|
-
| TEN-STABILITY-29 | fix: `loki rollback <id> --forse` and other unknown flags are ignored (the typo drops --force silently); validate against known flags and exit 2 | loki-ts/src/commands/rollback.ts, loki-ts/tests/commands/rollback.test.ts | LOW | red: `cd loki-ts && bun test tests/commands/rollback.test.ts -t "unknown flag"` fails; green: passes, --json and --force unchanged |
|
|
1199
|
-
| TEN-STABILITY-30 | fix: `loki start ./prd.md` with a mistyped or missing path treats the path string as an inline brief and starts a paid run on it; when the spec looks like a path (contains / or ends in .md/.txt/.yaml/.json) and does not exist, exit 2 "PRD file not found: <path>" | loki-ts/src/commands/start.ts, loki-ts/tests/commands/start.test.ts | MEDIUM | red: `cd loki-ts && bun test tests/commands/start.test.ts -t "missing prd path"` fails (run starts); green: passes, real files and plain briefs unchanged |
|
|
1200
|
-
| TEN-COST-41 | enhancement: `loki start` prints one line before the first iteration stating the effective per-run cap and where it came from (flag, env, loki.yaml, default $100) so a silent default cap is visible; skip if already printed (check first); chain after TEN-STABILITY-30 | loki-ts/src/commands/start.ts, loki-ts/tests/commands/start.test.ts | LOW | red: `cd loki-ts && bun test tests/commands/start.test.ts -t "cap source line"` fails (no line); green: passes for flag, env and default sources |
|
|
1201
|
-
| TEN-STABILITY-31 | fix: `listCheckpoints` silently skips a checkpoint whose metadata.json is corrupt or fails validation, so it vanishes from rollback choices with no trace; collect skipped ids and warn once on stderr | loki-ts/src/runner/checkpoint.ts, loki-ts/tests/runner/checkpoint.test.ts | MEDIUM | red: `cd loki-ts && bun test tests/runner/checkpoint.test.ts -t "corrupt metadata warns"` fails (no warning); green: passes, valid listing order unchanged |
|
|
1202
|
-
| TEN-QUALITY-25 | test: pin provider failover classification (rate limit vs outage vs killed vs clean exit) and nextProvider ordering with a fake installed() probe | loki-ts/src/runner/provider_failover.ts, loki-ts/tests/runner/provider_failover.test.ts | MEDIUM | red: mutate classifyOutage to return null for exit 137 and `cd loki-ts && bun test tests/runner/provider_failover.test.ts` fails; green: passes unmutated and `bunx tsc --noEmit` exits 0 |
|
|
1203
|
-
| TEN-UX-28 | enhancement: `loki queue run` prints a progress line `[n/m] <ref>` before each item and the digest links each item verdict; skip if already present (check first) | loki-ts/src/commands/queue.ts, loki-ts/tests/commands/queue.test.ts | LOW | red: `cd loki-ts && bun test tests/commands/queue.test.ts -t "progress line per item"` fails; green: passes and the existing digest test still exits 0 |
|
|
1204
|
-
| TEN-SPEED-11 | enhancement: `loki report kpis --since 7d` should skip run directories whose newest mtime is before the cutoff instead of parsing every run, with identical output | loki-ts/src/commands/kpis.ts, loki-ts/tests/commands/kpis.test.ts | LOW | red: `cd loki-ts && bun test tests/commands/kpis.test.ts -t "since skips old runs"` fails (old run files read, counted by a spy); green: passes and output byte-identical on the fixture |
|
|
1205
|
-
| TEN-SECURITY-11 | fix: the SARIF secret scan misses common token formats (Hugging Face `hf_`, SendGrid `SG.`, Twilio `SK`+32 hex, Azure storage `AccountKey=`); add Tier 1 patterns that report label only, never the matched text, and mirror them in autonomy/lib/secret-scan.sh in the same change | loki-ts/src/commands/export_sarif.ts, loki-ts/tests/commands/export_sarif.test.ts, autonomy/lib/secret-scan.sh | MEDIUM | red: `cd loki-ts && bun test tests/commands/export_sarif.test.ts -t "extra token formats"` fails (0 findings); green: passes with label-only output and `bash tests/test-secret-scan.sh` exits 0 |
|
|
1206
|
-
| TEN-DEPLOY-19 | fix: `loki start --deploy --health-url X --domain Y` accepts any string; validate --health-url is http or https with a host and --domain is a bare hostname, exit 2 with one line naming the flag, before any run work; chain after TEN-COST-41 | loki-ts/src/commands/start.ts, loki-ts/tests/commands/start.test.ts | MEDIUM | red: `cd loki-ts && bun test tests/commands/start.test.ts -t "deploy flag validation"` fails (exit 0); green: passes, valid URLs unchanged |
|
|
1207
|
-
| TEN-DEPLOY-20 | fix: `loki start --deploy --env-file ./missing.env` is accepted and fails only after the build; check the file exists and is readable up front and exit 2; chain after TEN-DEPLOY-19 | loki-ts/src/commands/start.ts, loki-ts/tests/commands/start.test.ts | LOW | red: `cd loki-ts && bun test tests/commands/start.test.ts -t "env-file missing"` fails (exit 0); green: passes, existing file unchanged |
|
|
1208
|
-
| TEN-ADOPTION-22 | enhancement: `loki provider list` marks each provider CLI as installed or missing and prints the install command for a missing one (reuse the table doctor.ts providerInstall) | loki-ts/src/commands/provider.ts, loki-ts/tests/commands/provider.test.ts | LOW | red: `cd loki-ts && bun test tests/commands/provider.test.ts -t "list shows install hint"` fails; green: passes with a stubbed which() and `bunx tsc --noEmit` exits 0 |
|
|
1209
|
-
| TEN-ADOPTION-23 | fix: `loki completion fish` or an unknown shell must print the supported shells and exit 2; `loki completion` with no shell prints usage; check current behaviour first and drop if already correct | loki-ts/src/commands/completion.ts, loki-ts/tests/commands/cli_help_routes.test.ts | LOW | red: `cd loki-ts && bun test tests/commands/cli_help_routes.test.ts -t "completion unknown shell"` fails; green: passes, bash and zsh output unchanged |
|
|
1210
|
-
| TEN-GATES-23 | enhancement: record each quality gate's wall-clock duration in the gate result so `loki status` and the receipt can show which gate dominates a slow run; additive field only, old readers ignore it | loki-ts/src/runner/quality_gates.ts, loki-ts/tests/runner/quality_gates.test.ts | MEDIUM | red: `cd loki-ts && bun test tests/runner/quality_gates.test.ts -t "gate duration recorded"` fails (no duration_ms); green: passes and `bun test tests/runner/quality_gates_inconclusive.test.ts` exits 0 |
|
|
1211
|
-
| TEN-GATES-24 | fix: `loki verify-pr` on a PR with no receipt must exit with a code distinct from "receipt present, verdict fail" and say which it is; check current exit codes first and drop if already distinct | loki-ts/src/commands/verify_pr.ts, loki-ts/tests/commands/verify_pr.test.ts | MEDIUM | red: `cd loki-ts && bun test tests/commands/verify_pr.test.ts -t "no receipt exit code"` fails; green: passes, existing verdict exits unchanged |
|
|
1212
|
-
| TEN-SPEED-12 | enhancement: cache the repo profile (LOKI_REPO_PROFILE=1 path) keyed on HEAD sha and dirty flag so a resumed run does not rescan the tree | loki-ts/src/runner/repo_profile.ts, loki-ts/tests/runner/autonomous.test.ts | MEDIUM | red: `cd loki-ts && bun test tests/runner/autonomous.test.ts -t "repo profile cache hit"` fails (scan runs twice); green: passes, cache invalidates on a new commit |
|
|
1213
|
-
| TEN-QUALITY-26 | fix: `loki wiki show <bad-section>` should list the valid sections (architecture, modules, data-flow) in the error and exit 2; extend the wiki test | loki-ts/src/commands/wiki.ts, loki-ts/tests/commands/wiki.test.ts | LOW | red: `cd loki-ts && bun test tests/commands/wiki.test.ts -t "bad section lists valid"` fails; green: passes, valid sections unchanged |
|
|
1214
|
-
| TEN-UX-29 | fix: `loki report kpis --since` with no value, or followed by another flag, reports an empty invalid value and consumes the next flag; print "--since requires a value" and exit 1 without swallowing the next token; chain after TEN-SPEED-11 | loki-ts/src/commands/kpis.ts, loki-ts/tests/commands/kpis.test.ts | LOW | red: `cd loki-ts && bun test tests/commands/kpis.test.ts -t "since missing value"` fails (message names an empty value); green: passes, `--since 7d` and `--since=7d` unchanged |
|
|
1185
|
+
| TEN-STABILITY-26 | fix: `loki control backfill --repo` with no value silently falls back to the first positional or cwd and ships that dir; fail with one error line naming --repo and exit 2 (same class as TEN-STABILITY-21) | loki-ts/src/commands/control.ts, loki-ts/tests/commands/control.test.ts | LOW | red: `cd loki-ts && bun test tests/commands/control.test.ts -t "backfill repo missing value"` fails (exit 0, ingests cwd); green: passes, `--repo DIR` and bare DIR unchanged | released v11.17.46 | Gap: control.ts:234 `flag(rest, "--repo") ?? rest.find(...) ?? cwd`; flag() at :33 returns undefined for a trailing flag, missingValue() at :38 exists but is not applied here |
|
|
1186
|
+
| TEN-UX-24 | fix: the second `control` help block in autonomy/loki (cmd_control, ~line 34902) lists only serve, backfill, status; add prune, stop and `status --json` so it matches the Bun usage in control.ts | autonomy/loki, tests/test-help-discoverability.sh | LOW | red: `bash tests/test-help-discoverability.sh` fails on a new assertion that bash `loki control --help` names prune, stop and status --json; green: passes and `bash tests/test-help-changelog-drift.sh` still exits 0 | released v11.17.46 | Gap: control.ts:22 documents prune --repo/--before; the bash fallback help (LOKI_LEGACY_BASH) omits it |
|
|
1187
|
+
| TEN-UX-25 | fix: bash `cmd_provider` default arm (autonomy/loki:7488) prints help and returns 0 for an unknown subcommand; return 2 with one "unknown subcommand" line (TS side fixed in TEN-UX-20); chain after TEN-UX-24 | autonomy/loki, tests/test-help-discoverability.sh | LOW | red: `bash tests/test-help-discoverability.sh` fails on `loki provider frobnicate` expecting exit 2; green: passes, `loki provider` and `loki provider --help` still exit 0 | released v11.17.46 | Gap: the `*)` arm at autonomy/loki ~7517 echoes the help block with no return code; chain after TEN-UX-24 |
|
|
1188
|
+
| TEN-UX-26 | fix: sibling sweep of bash commands whose default arm prints help and exits 0 on an unknown subcommand (cmd_config ~14144 and cmd_api ~15932 are the first candidates; confirm each with a probe, skip any that already fail non-zero); make each exit 2 with an "unknown subcommand" line; chain after TEN-UX-25 | autonomy/loki, tests/test-help-discoverability.sh | LOW | red: `bash tests/test-help-discoverability.sh` fails on `loki config frobnicate` and `loki api frobnicate` expecting exit 2; green: passes, bare and --help forms still exit 0 | released v11.17.46 | Gap: FAILURE-CLASSES row required (siblings exist); chain after TEN-UX-25 |
|
|
1189
|
+
| TEN-UX-27 | fix: `loki doctor --quiet` writes `Install:` hint lines to stderr while the WARN/FAIL row goes to stdout, so the hint prints detached from its row; write each hint directly under its row on the same stream | loki-ts/src/commands/doctor.ts, loki-ts/tests/commands/doctor.test.ts | LOW | red: `cd loki-ts && bun test tests/commands/doctor.test.ts -t "install hint follows its row"` fails (hint absent from stdout); green: passes and `bunx tsc --noEmit` exits 0 | released v11.17.46 | Gap: doctor.ts:1276 `process.stderr.write(... Install: ...)` after `process.stdout.write(formatToolLine(c))` at :1274 |
|
|
1190
|
+
| TEN-QUALITY-22 | test: pin the doctor disk text-mode "on <name> volume" label (home, cwd, tmp) so the low-volume name cannot regress; chain after TEN-UX-27 | loki-ts/src/commands/doctor.ts, loki-ts/tests/commands/doctor.test.ts | LOW | red: mutate lowestVolume to return null low_volume and `cd loki-ts && bun test tests/commands/doctor.test.ts -t "disk text volume label"` fails; green: passes unmutated | released v11.17.46 | Gap: doctor.test.ts:161 covers the JSON low_volume only; no test renders the text line; chain after TEN-UX-27 |
|
|
1191
|
+
| TEN-SPEED-10 | enhancement: `loki doctor --json` (buildDoctorJson) awaits checkSentrux, checkMemoryHealth and requirementsSection one after another; run them with Promise.all and keep output byte-identical; chain after TEN-QUALITY-22 | loki-ts/src/commands/doctor.ts, loki-ts/tests/commands/doctor.test.ts | MEDIUM | red: `cd loki-ts && bun test tests/commands/doctor.test.ts -t "json checks run concurrently"` fails (elapsed ~ sum of stubbed 200ms probes); green: passes and `bun test tests/commands/doctor_router.test.ts tests/commands/doctor_count.test.ts` exit 0 | released v11.17.46 | Gap: doctor.ts:940-946 serial awaits; the text path already batches runAllToolChecks; chain after TEN-QUALITY-22 |
|
|
1192
|
+
| TEN-QUALITY-23 | test: help-changelog-drift guards exact completion cases; assert every `loki` subcommand and flag named in CHANGELOG appears as a literal case in completions/loki.bash and completions/_loki so a flag typo fails | tests/test-help-changelog-drift.sh, completions/loki.bash, completions/_loki | LOW | red: introduce a typo `--sinse` in completions/loki.bash and `bash tests/test-help-changelog-drift.sh` must exit 1 naming it; green: reverted typo exits 0 | released v11.17.46 | Gap: current test greps for substrings loosely, a misspelled flag in a different case arm still passes |
|
|
1193
|
+
| TEN-GATES-22 | feature: the per-run signed receipt (not only the composite) records the toolchain {bun,node,python3,git}, absent tools null, old receipts still verify (follow-up from the TEN-GATES-19 review) | loki-ts/src/util/receipt_signer.ts, loki-ts/tests/engine10/seal_group.test.ts | HIGH | red: `cd loki-ts && bun test tests/engine10/seal_group.test.ts -t "per-run receipt toolchain"` fails (no toolchain key); green: passes, `bun test tests/engine10 tests/util/receipt_bundle.test.ts` and `bunx tsc --noEmit` exit 0 | released v11.17.46 | Gap: collectToolchain is used only by composite_seal.ts:54; receipt_signer.ts has no toolchain reference |
|
|
1194
|
+
| TEN-COST-39 | fix: a malformed `.loki/metrics/budget.json` is discarded and returns null, so spend resets to zero and the cap is silently disarmed; rebuild budget_used from the efficiency records (readEfficiencyDir) and warn once | loki-ts/src/runner/budget.ts, loki-ts/tests/runner/budget.test.ts | MEDIUM | red: `cd loki-ts && bun test tests/runner/budget.test.ts -t "corrupt budget state rebuilds used"` fails (used 0); green: passes and `bun test tests/runner/autonomous_budget.test.ts` exit 0 | released v11.17.46 | Gap: budget.ts:305-318 returns null on parse failure and the caller treats null as no spend |
|
|
1195
|
+
| TEN-COST-40 | fix: `loadDefaultMaxCostUsd` silently falls back to the literal 100 when model-pricing.json is unreadable; print one stderr warning naming the file and the fallback; chain after TEN-COST-39 | loki-ts/src/runner/budget.ts, loki-ts/tests/runner/budget.test.ts | LOW | red: `cd loki-ts && bun test tests/runner/budget.test.ts -t "pricing file missing warns"` fails (no warning); green: passes, warning emitted once per process | released v11.17.46 | Gap: budget.ts:24-33 swallows every read error; chain after TEN-COST-39 |
|
|
1196
|
+
| TEN-STABILITY-27 | fix: `LOKI_E10_STALL_S=abc` or `LOKI_E10_STALL_KILL_S=-5` is silently ignored and the default applies; warn once on stderr naming the variable and the value used | loki-ts/src/runner/watchdog.ts, loki-ts/tests/runner/watchdog.test.ts | LOW | red: `cd loki-ts && bun test tests/runner/watchdog.test.ts -t "invalid stall env warns"` fails (no warning); green: passes, valid and unset values unchanged | released v11.17.46 | Gap: watchdog.ts:8-17 return the default with no diagnostic |
|
|
1197
|
+
| TEN-STABILITY-28 | fix: `loki undo <run> --bogus` ignores unknown flags and proceeds; validate against the known set (--list --plan --dry-run --json --allow-unsigned --yes --close-pr --help) and exit 2 with one line naming the flag | loki-ts/src/commands/undo.ts, loki-ts/tests/commands/undo.test.ts | MEDIUM | red: `cd loki-ts && bun test tests/commands/undo.test.ts -t "unknown flag"` fails (exit 0 or applies); green: passes, all valid combinations unchanged | released v11.17.46 | Gap: undo.ts:218-238 uses args.includes for each flag with no unknown-flag check; a typo such as `--dry-rn` falls through to apply |
|
|
1198
|
+
| TEN-STABILITY-29 | fix: `loki rollback <id> --forse` and other unknown flags are ignored (the typo drops --force silently); validate against known flags and exit 2 | loki-ts/src/commands/rollback.ts, loki-ts/tests/commands/rollback.test.ts | LOW | red: `cd loki-ts && bun test tests/commands/rollback.test.ts -t "unknown flag"` fails; green: passes, --json and --force unchanged | rejected (already shipped by 8d630fa59 TEN-DEPLOY-16) | Gap: rollback.ts:77,116,128 use rest.includes only |
|
|
1199
|
+
| TEN-STABILITY-30 | fix: `loki start ./prd.md` with a mistyped or missing path treats the path string as an inline brief and starts a paid run on it; when the spec looks like a path (contains / or ends in .md/.txt/.yaml/.json) and does not exist, exit 2 "PRD file not found: <path>" | loki-ts/src/commands/start.ts, loki-ts/tests/commands/start.test.ts | MEDIUM | red: `cd loki-ts && bun test tests/commands/start.test.ts -t "missing prd path"` fails (run starts); green: passes, real files and plain briefs unchanged | released v11.17.46 | Gap: start.ts:376 `existsSync(spec) ? readFileSync : spec` falls through to the literal string; verify the same fall-through on the --prd flag before building |
|
|
1200
|
+
| TEN-COST-41 | enhancement: `loki start` prints one line before the first iteration stating the effective per-run cap and where it came from (flag, env, loki.yaml, default $100) so a silent default cap is visible; skip if already printed (check first); chain after TEN-STABILITY-30 | loki-ts/src/commands/start.ts, loki-ts/tests/commands/start.test.ts | LOW | red: `cd loki-ts && bun test tests/commands/start.test.ts -t "cap source line"` fails (no line); green: passes for flag, env and default sources | released v11.17.46 | Gap: capNote exists in e10ext/budget_cap.ts (start.ts:425); confirm it covers the legacy default path; chain after TEN-STABILITY-30 |
|
|
1201
|
+
| TEN-STABILITY-31 | fix: `listCheckpoints` silently skips a checkpoint whose metadata.json is corrupt or fails validation, so it vanishes from rollback choices with no trace; collect skipped ids and warn once on stderr | loki-ts/src/runner/checkpoint.ts, loki-ts/tests/runner/checkpoint.test.ts | MEDIUM | red: `cd loki-ts && bun test tests/runner/checkpoint.test.ts -t "corrupt metadata warns"` fails (no warning); green: passes, valid listing order unchanged | released v11.17.46 | Gap: checkpoint.ts:414-436 readCheckpointSafe returns null in a bare catch |
|
|
1202
|
+
| TEN-QUALITY-25 | test: pin provider failover classification (rate limit vs outage vs killed vs clean exit) and nextProvider ordering with a fake installed() probe | loki-ts/src/runner/provider_failover.ts, loki-ts/tests/runner/provider_failover.test.ts | MEDIUM | red: mutate classifyOutage to return null for exit 137 and `cd loki-ts && bun test tests/runner/provider_failover.test.ts` fails; green: passes unmutated and `bunx tsc --noEmit` exits 0 | released v11.17.46 | Gap: no tests/runner file names provider_failover; new test file justified because no existing file owns it (verify with grep first) |
|
|
1203
|
+
| TEN-UX-28 | enhancement: `loki queue run` prints a progress line `[n/m] <ref>` before each item and the digest links each item verdict; skip if already present (check first) | loki-ts/src/commands/queue.ts, loki-ts/tests/commands/queue.test.ts | LOW | red: `cd loki-ts && bun test tests/commands/queue.test.ts -t "progress line per item"` fails; green: passes and the existing digest test still exits 0 | released v11.17.46 | Gap: queue.ts run loop (~line 290-320) records results only in the final digest |
|
|
1204
|
+
| TEN-SPEED-11 | enhancement: `loki report kpis --since 7d` should skip run directories whose newest mtime is before the cutoff instead of parsing every run, with identical output | loki-ts/src/commands/kpis.ts, loki-ts/tests/commands/kpis.test.ts | LOW | red: `cd loki-ts && bun test tests/commands/kpis.test.ts -t "since skips old runs"` fails (old run files read, counted by a spy); green: passes and output byte-identical on the fixture | released v11.17.46 | Gap: kpis.ts:96 computeKpis receives sinceMs; confirm it filters after reading (read computeKpis first, drop if already pruned by mtime) |
|
|
1205
|
+
| TEN-SECURITY-11 | fix: the SARIF secret scan misses common token formats (Hugging Face `hf_`, SendGrid `SG.`, Twilio `SK`+32 hex, Azure storage `AccountKey=`); add Tier 1 patterns that report label only, never the matched text, and mirror them in autonomy/lib/secret-scan.sh in the same change | loki-ts/src/commands/export_sarif.ts, loki-ts/tests/commands/export_sarif.test.ts, autonomy/lib/secret-scan.sh | MEDIUM | red: `cd loki-ts && bun test tests/commands/export_sarif.test.ts -t "extra token formats"` fails (0 findings); green: passes with label-only output and `bash tests/test-secret-scan.sh` exits 0 | released v11.17.46 | Gap: export_sarif.ts:12-24 lists 12 formats; none cover those four; parity with secret-scan.sh required |
|
|
1206
|
+
| TEN-DEPLOY-19 | fix: `loki start --deploy --health-url X --domain Y` accepts any string; validate --health-url is http or https with a host and --domain is a bare hostname, exit 2 with one line naming the flag, before any run work; chain after TEN-COST-41 | loki-ts/src/commands/start.ts, loki-ts/tests/commands/start.test.ts | MEDIUM | red: `cd loki-ts && bun test tests/commands/start.test.ts -t "deploy flag validation"` fails (exit 0); green: passes, valid URLs unchanged | released v11.17.46 | Gap: start.ts:158 lists the deploy flags as value flags with no validation; verify on the Bun route and the bash route; chain after TEN-COST-41 |
|
|
1207
|
+
| TEN-DEPLOY-20 | fix: `loki start --deploy --env-file ./missing.env` is accepted and fails only after the build; check the file exists and is readable up front and exit 2; chain after TEN-DEPLOY-19 | loki-ts/src/commands/start.ts, loki-ts/tests/commands/start.test.ts | LOW | red: `cd loki-ts && bun test tests/commands/start.test.ts -t "env-file missing"` fails (exit 0); green: passes, existing file unchanged | released v11.17.46 | Gap: start.ts:158 --env-file is passed through unchecked; chain after TEN-DEPLOY-19 |
|
|
1208
|
+
| TEN-ADOPTION-22 | enhancement: `loki provider list` marks each provider CLI as installed or missing and prints the install command for a missing one (reuse the table doctor.ts providerInstall) | loki-ts/src/commands/provider.ts, loki-ts/tests/commands/provider.test.ts | LOW | red: `cd loki-ts && bun test tests/commands/provider.test.ts -t "list shows install hint"` fails; green: passes with a stubbed which() and `bunx tsc --noEmit` exits 0 | released v11.17.46 | Gap: check provider.ts list output first; doctor.ts:1263 holds the only install-hint table, move it to a shared export rather than copying |
|
|
1209
|
+
| TEN-ADOPTION-23 | fix: `loki completion fish` or an unknown shell must print the supported shells and exit 2; `loki completion` with no shell prints usage; check current behaviour first and drop if already correct | loki-ts/src/commands/completion.ts, loki-ts/tests/commands/cli_help_routes.test.ts | LOW | red: `cd loki-ts && bun test tests/commands/cli_help_routes.test.ts -t "completion unknown shell"` fails; green: passes, bash and zsh output unchanged | rejected (already correct on read, dropped per row note) | Gap: completion.ts has no dedicated test file; extend cli_help_routes.test.ts rather than add one |
|
|
1210
|
+
| TEN-GATES-23 | enhancement: record each quality gate's wall-clock duration in the gate result so `loki status` and the receipt can show which gate dominates a slow run; additive field only, old readers ignore it | loki-ts/src/runner/quality_gates.ts, loki-ts/tests/runner/quality_gates.test.ts | MEDIUM | red: `cd loki-ts && bun test tests/runner/quality_gates.test.ts -t "gate duration recorded"` fails (no duration_ms); green: passes and `bun test tests/runner/quality_gates_inconclusive.test.ts` exits 0 | released v11.17.46 | Gap: grep duration in quality_gates.ts first; if present, narrow the row to surfacing it in status |
|
|
1211
|
+
| TEN-GATES-24 | fix: `loki verify-pr` on a PR with no receipt must exit with a code distinct from "receipt present, verdict fail" and say which it is; check current exit codes first and drop if already distinct | loki-ts/src/commands/verify_pr.ts, loki-ts/tests/commands/verify_pr.test.ts | MEDIUM | red: `cd loki-ts && bun test tests/commands/verify_pr.test.ts -t "no receipt exit code"` fails; green: passes, existing verdict exits unchanged | released v11.17.46 | Gap: a CI caller cannot tell missing proof from failed proof if both exit 1 |
|
|
1212
|
+
| TEN-SPEED-12 | enhancement: cache the repo profile (LOKI_REPO_PROFILE=1 path) keyed on HEAD sha and dirty flag so a resumed run does not rescan the tree | loki-ts/src/runner/repo_profile.ts, loki-ts/tests/runner/autonomous.test.ts | MEDIUM | red: `cd loki-ts && bun test tests/runner/autonomous.test.ts -t "repo profile cache hit"` fails (scan runs twice); green: passes, cache invalidates on a new commit | released v11.17.46 | Gap: autonomous.ts:633 calls the profiler each start; read repo_profile.ts first and drop if a cache exists |
|
|
1213
|
+
| TEN-QUALITY-26 | fix: `loki wiki show <bad-section>` should list the valid sections (architecture, modules, data-flow) in the error and exit 2; extend the wiki test | loki-ts/src/commands/wiki.ts, loki-ts/tests/commands/wiki.test.ts | LOW | red: `cd loki-ts && bun test tests/commands/wiki.test.ts -t "bad section lists valid"` fails; green: passes, valid sections unchanged | released v11.17.46 | Gap: wiki.ts:51 prints the section list only in the usage branch; check the unknown-section branch first |
|
|
1214
|
+
| TEN-UX-29 | fix: `loki report kpis --since` with no value, or followed by another flag, reports an empty invalid value and consumes the next flag; print "--since requires a value" and exit 1 without swallowing the next token; chain after TEN-SPEED-11 | loki-ts/src/commands/kpis.ts, loki-ts/tests/commands/kpis.test.ts | LOW | red: `cd loki-ts && bun test tests/commands/kpis.test.ts -t "since missing value"` fails (message names an empty value); green: passes, `--since 7d` and `--since=7d` unchanged | released v11.17.46 | Gap: kpis.ts:87 `args[++i] ?? ""` eats the next token; chain after TEN-SPEED-11 |
|
|
1215
1215
|
| TEN-COST-35 | fix: `loki start --budget-limit=5` (and --provider=, --session-model=, --prd=, --brief=) is accepted by the flag validator then silently ignored, so the default $100 cap and default provider apply; read the `=` form everywhere argVal reads a flag | loki-ts/src/commands/start.ts, loki-ts/tests/commands/start.test.ts | MEDIUM | red: bun test tests/commands/start.test.ts -t "equals form" fails (cap stays default); green: same test passes and `cd loki-ts && bunx tsc --noEmit` exits 0 | released v11.17.44 | Gap: start.ts:23 argVal matches only exact args via indexOf; start.ts:212 validator splits on "=" so the form is accepted; only --cost and --attempts parse "=" |
|
|
1216
1216
|
| TEN-COST-36 | fix: `loki start --budget-limit abc`, `--max-iterations -1`, `--budget-limit 0x` and a trailing value flag with no value are silently dropped so the default cap applies; print one error line naming the flag and exit 2 | loki-ts/src/commands/start.ts, loki-ts/tests/commands/start.test.ts | MEDIUM | red: bun test tests/commands/start.test.ts -t "invalid numeric" fails (exit 0, no message); green: passes, valid values unchanged | released v11.17.44 | Gap: start.ts:123 posNum returns undefined for non-numeric, zero or negative with no diagnostic; chain after TEN-COST-35 |
|
|
1217
1217
|
| TEN-STABILITY-21 | fix: control `--port` with no value or a non-numeric value silently falls back to the default port; reject with a usage line and exit 2 | loki-ts/src/commands/control.ts, loki-ts/tests/commands/control.test.ts | LOW | red: bun test tests/commands/control.test.ts -t "port without value" fails; green: passes and existing control tests stay green | released v11.17.44 | Gap: control.ts:33 flag() returns args[i+1] unchecked (undefined or the next flag) and callers fall through to the default |
|
|
@@ -1089,3 +1089,11 @@ L0 review rule (ENGINE-LAWS.md L0): a fix that adds an `if` or a regex about the
|
|
|
1089
1089
|
- Siblings: swept the other newest-window invocations (proof list --json, proof share --dry-run, queue add, start --help, status --probe/--json); all already pass. completions/_loki carries no per-flag lists for report or undo; its undo description now names --list.
|
|
1090
1090
|
- Mechanism: autonomy/loki help text lists both flags; completions/loki.bash gains report and undo cases. The drift test already guards both.
|
|
1091
1091
|
- Fixture: tests/test-help-changelog-drift.sh (22 passed, 0 failed); removing the `undo --list` help line turns it red.
|
|
1092
|
+
|
|
1093
|
+
## FC-TEN-UX-26 Bash commands whose default case arm printed help and exited 0 on an unknown subcommand
|
|
1094
|
+
|
|
1095
|
+
- User-visible vs raw: user-visible. `loki config frobnicate` and `loki api frobnicate` printed usage and returned 0, so scripts could not detect a typo (same class as `loki provider`, TEN-UX-25).
|
|
1096
|
+
- Law broken: an unknown subcommand must fail non-zero with a one-line error; help stays reachable via help, --help and -h.
|
|
1097
|
+
- Siblings: swept 24 bash commands with `<cmd> frobnicate`; only config and api (fixed here) returned 0, plus `loki voice`, a stub with no subcommands that prints a planned-feature notice (left as is).
|
|
1098
|
+
- Mechanism: explicit help|--help|-h arm, default arm prints `loki <cmd>: unknown subcommand` to stderr and returns 2.
|
|
1099
|
+
- Fixture: tests/test-help-discoverability.sh; restoring the old default arm turns the frobnicate assertions red.
|
package/docs/v10/PROGRESS.md
CHANGED
|
@@ -2515,3 +2515,6 @@ v11.17.21 published (Release success on 462fbc40a; npm latest 11.17.21, next 11.
|
|
|
2515
2515
|
|
|
2516
2516
|
## 2026-10-17T10:17Z (CoS) v11.17.45
|
|
2517
2517
|
- Released TEN-DEPLOY-03 (wave AH fix round, APPROVE fe1026bf1). Board refilled with 30 TEN rows for wave AM (fbde018b2).
|
|
2518
|
+
|
|
2519
|
+
## 2026-10-17T11:21Z (CoS) v11.17.46
|
|
2520
|
+
- Released wave AM: 28 slices APPROVE across 19 chains; TEN-STABILITY-29 and TEN-ADOPTION-23 dropped as already fixed. Combined main: tsc rc 0; bun 593/0 and 449/0; help-changelog-drift, help-discoverability, secret-scan rc 0.
|