loki-mode 10.6.6 → 10.6.8
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/.github/actions/issue-to-pr/action.yml +25 -11
- package/.github/workflows/loki-issue-to-pr.yml +21 -10
- package/README.md +138 -54
- package/SKILL.md +11 -8
- package/VERSION +1 -1
- package/autonomy/lib/workspace.py +290 -0
- package/autonomy/lib/worktree_prep.py +143 -0
- package/autonomy/loki +68 -5
- package/autonomy/run.sh +26 -1
- package/bin/loki +9 -1
- package/completions/_loki +1 -0
- package/completions/loki.bash +1 -2
- package/dashboard/__init__.py +1 -1
- package/docs/AUDIT-CHAIN-THREAT-MODEL.md +1 -1
- package/docs/DEMOS.md +11 -26
- package/docs/EVALUATING.md +2 -3
- package/docs/INSTALLATION.md +2 -2
- package/docs/TOOLS.md +1 -1
- package/docs/WANG-PRINCIPLES-PLAN.md +1 -1
- package/docs/WORKSPACES.md +29 -0
- package/docs/air-gapped.md +1 -1
- package/docs/alternative-installations.md +3 -1
- package/docs/control-plane-container.md +45 -0
- package/docs/dashboard-guide.md +2 -0
- package/docs/dev/architecture-reference.md +4 -0
- package/docs/dev/project-structure.md +2 -2
- package/docs/dev/release-checklist.md +1 -2
- package/docs/enterprise/architecture.md +1 -1
- package/docs/siem-integration.md +2 -2
- package/docs/slack.md +26 -0
- package/docs/v10/BOARD.md +26 -1
- package/docs/v10/CONTROL-PLANE.md +4 -0
- package/docs/v10/D61-SPEED.md +83 -0
- package/docs/v10/DECISIONS.md +33 -0
- package/docs/v10/DEPS.md +6 -2
- package/docs/v10/E2E-D65.md +87 -0
- package/docs/v10/GUIDE.md +63 -1
- package/docs/v10/HANDOFF-NEXT-WEEK.md +40 -0
- package/docs/v10/PROGRESS.md +13 -0
- package/docs/v10/ROADMAP-D63.md +35 -0
- package/loki-ts/dist/loki.js +593 -569
- package/mcp/__init__.py +1 -1
- package/mcp/server.py +76 -0
- package/mcp/tests/test_v10_tools.py +137 -0
- package/mcp/v10_tools.py +172 -0
- package/package.json +1 -1
- package/packages/control-plane/dist/server.js +56 -4
- package/packages/control-plane/src/server/answer.ts +33 -0
- package/packages/control-plane/src/server/app.ts +17 -1
- package/packages/control-plane/src/server/runs.ts +2 -0
- package/packages/control-plane/src/server/serve.ts +2 -2
- package/packages/control-plane/ui/dist/assets/index-53E32yrO.js +114 -0
- package/packages/control-plane/ui/dist/assets/{index-BH3LtKcG.css → index-CFfrqCx2.css} +1 -1
- package/packages/control-plane/ui/dist/index.html +2 -2
- package/plugins/loki-mode/.claude-plugin/plugin.json +1 -1
- package/web-app/dist/assets/{AdminPage-CH-bmw4l.js → AdminPage-DN_pe8vo.js} +1 -1
- package/web-app/dist/assets/{Avatar-Bos-ky_x.js → Avatar-BnQsr8z-.js} +1 -1
- package/web-app/dist/assets/{Badge-DNJyHg9Y.js → Badge-DzERiZn2.js} +1 -1
- package/web-app/dist/assets/{Button-KqD3Tt-I.js → Button-CaaoxQAt.js} +1 -1
- package/web-app/dist/assets/{CockpitPage-l6oTsRaL.js → CockpitPage-SXhnysJA.js} +1 -1
- package/web-app/dist/assets/{ComparePage-DN6uxXko.js → ComparePage-krxTCFJY.js} +1 -1
- package/web-app/dist/assets/{ErrorBoundary-CKQhnvU9.js → ErrorBoundary-BL96ESMc.js} +1 -1
- package/web-app/dist/assets/{EvidenceReceiptPanel-CzSIqLmy.js → EvidenceReceiptPanel-PUiGSpkB.js} +1 -1
- package/web-app/dist/assets/{GitHubIssuesPanel-YJUcDezn.js → GitHubIssuesPanel-C0hPs-P2.js} +1 -1
- package/web-app/dist/assets/{GitHubPRsPanel-Bv7xFvJN.js → GitHubPRsPanel-CLvqNUlu.js} +1 -1
- package/web-app/dist/assets/{HomePage-CJsxBbii.js → HomePage-X-sq_Rc9.js} +2 -2
- package/web-app/dist/assets/{LoginPage-D1V2Ag0s.js → LoginPage-DhQuwdua.js} +1 -1
- package/web-app/dist/assets/{MagicPage-BBVNMEr5.js → MagicPage-CP2ODjfn.js} +1 -1
- package/web-app/dist/assets/{MetricsPage-CtHM-IlA.js → MetricsPage-C6SYiQES.js} +1 -1
- package/web-app/dist/assets/{NotFoundPage-BBEEJLj5.js → NotFoundPage-CCDxxYc-.js} +1 -1
- package/web-app/dist/assets/{ProjectPage-BVRJoEaQ.js → ProjectPage-yDF--8FQ.js} +3 -3
- package/web-app/dist/assets/{ProjectsPage-DqaA9rUa.js → ProjectsPage-BBLspdLn.js} +1 -1
- package/web-app/dist/assets/{SettingsPage-B_RQV_vF.js → SettingsPage-C_sWbQRw.js} +1 -1
- package/web-app/dist/assets/{ShowcasePage-DqN-mrZ8.js → ShowcasePage-xCMuL0N8.js} +1 -1
- package/web-app/dist/assets/{SystemSettingsPage-D-CvuL-K.js → SystemSettingsPage-DnJKGCx7.js} +1 -1
- package/web-app/dist/assets/{TeamsPage-CzkkDcPj.js → TeamsPage-BBXdhrSs.js} +1 -1
- package/web-app/dist/assets/{TemplatesPage-Bbchk7YQ.js → TemplatesPage-AZ1Lr1rn.js} +1 -1
- package/web-app/dist/assets/{TerminalOutput-B32BAX--.js → TerminalOutput-CtIm9tXc.js} +1 -1
- package/web-app/dist/assets/{activity-C9vnEmhG.js → activity-Dk1FK25Q.js} +1 -1
- package/web-app/dist/assets/{bell-XsIhkyjq.js → bell-dhqXyzP4.js} +1 -1
- package/web-app/dist/assets/{bot-CvQhqBws.js → bot-CExHd4Kf.js} +1 -1
- package/web-app/dist/assets/{check-HmG8WcD-.js → check-D51zaA1a.js} +1 -1
- package/web-app/dist/assets/{chevron-left-C1KNgnbD.js → chevron-left-DEwnQzH1.js} +1 -1
- package/web-app/dist/assets/{circle-alert-DSmCvZju.js → circle-alert-C6U90Msk.js} +1 -1
- package/web-app/dist/assets/{clock-CPhE3RXd.js → clock-6mFbMzzH.js} +1 -1
- package/web-app/dist/assets/{cloud-29lwqocB.js → cloud-BrZZtE7F.js} +1 -1
- package/web-app/dist/assets/{code-xml-4jZUzbPt.js → code-xml-DTFzeepP.js} +1 -1
- package/web-app/dist/assets/{database-H0Ct2r-8.js → database-B5rEiTre.js} +1 -1
- package/web-app/dist/assets/{dollar-sign-DsXkO0yT.js → dollar-sign-bQs4rlS_.js} +1 -1
- package/web-app/dist/assets/{file-code-corner-BM8w_nvX.js → file-code-corner-Mo6e6qbf.js} +1 -1
- package/web-app/dist/assets/{file-plus-BWkYTJ4D.js → file-plus-DzHZ0jpP.js} +1 -1
- package/web-app/dist/assets/{globe-FOFDl_8Z.js → globe-DYN9UhTa.js} +1 -1
- package/web-app/dist/assets/{hammer-orm5gvky.js → hammer-bB0hSRcJ.js} +1 -1
- package/web-app/dist/assets/{index-B6juCuPX.js → index-CIH5CqZB.js} +3 -3
- package/web-app/dist/assets/{layers-DUQPkPAl.js → layers-qhFkY8Nu.js} +1 -1
- package/web-app/dist/assets/{loader-circle-Deq6bDar.js → loader-circle-BGBkaYH7.js} +1 -1
- package/web-app/dist/assets/{lock-CSzWTPRC.js → lock-DIcsNFum.js} +1 -1
- package/web-app/dist/assets/{package-CmACgZuF.js → package-BdIIbZhS.js} +1 -1
- package/web-app/dist/assets/{plus-BjPW5v3A.js → plus-Co1Bv8zT.js} +1 -1
- package/web-app/dist/assets/{refresh-cw-DhI1sHaj.js → refresh-cw-CGF4ABWH.js} +1 -1
- package/web-app/dist/assets/{rotate-ccw-Byi2ouWB.js → rotate-ccw-BX10Q79h.js} +1 -1
- package/web-app/dist/assets/{scroll-text-gq7bJ81H.js → scroll-text-CbXDlpGp.js} +1 -1
- package/web-app/dist/assets/{server-YbY5s1-X.js → server-CIhi6yUO.js} +1 -1
- package/web-app/dist/assets/{shield-alert-DhKjtwZt.js → shield-alert-DJ5fB6Dg.js} +1 -1
- package/web-app/dist/assets/{thumbs-up-D2X5JR-5.js → thumbs-up-BEft2T94.js} +1 -1
- package/web-app/dist/assets/{trash-2-BHAmMxTq.js → trash-2-CWGUPn7Y.js} +1 -1
- package/web-app/dist/assets/{trending-down-C41kQa-Q.js → trending-down-CjqstvxQ.js} +1 -1
- package/web-app/dist/assets/{trending-up-M-OK_9DC.js → trending-up-CTyLjMzE.js} +1 -1
- package/web-app/dist/assets/{upload-CarpPiGw.js → upload-BmRx-uv4.js} +1 -1
- package/web-app/dist/assets/{usePolling-rJ7rM7R0.js → usePolling-ChHkSJye.js} +1 -1
- package/web-app/dist/assets/{user-cBhWpZen.js → user-ZXh_f35z.js} +1 -1
- package/web-app/dist/index.html +1 -1
- package/docs/walkthrough/README.md +0 -44
- package/packages/control-plane/ui/dist/assets/index-B6EiyukW.js +0 -114
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# D65 Phase 2 end-to-end pass: plan, stub-leg results, bugs, operator commands
|
|
2
|
+
|
|
3
|
+
Status: stub legs run 2026-10-02 (loki-mode 10.6.7 from npm `latest`, macOS arm64, bun 1.x on PATH).
|
|
4
|
+
Real-provider legs are PENDING: they need `~/.config/loki/e2e.env`, which this document's author
|
|
5
|
+
never read or loaded. No leg here used real provider auth.
|
|
6
|
+
|
|
7
|
+
## 1. Plan
|
|
8
|
+
|
|
9
|
+
Every leg starts from a clean install and never touches the operator's real HOME or any remote.
|
|
10
|
+
|
|
11
|
+
1. Clean install: `npm i -g --prefix <run>/p loki-mode@<version>` with `HOME=<run>/home`,
|
|
12
|
+
`npm_config_cache=<run>/npmcache`. Record install seconds and `loki version`.
|
|
13
|
+
2. Three repos:
|
|
14
|
+
- `asklokesh/augmentiq#52` (private, expected ALREADY_SATISFIED, needs gh token and provider auth: PENDING auth).
|
|
15
|
+
- `octocat/Hello-World` (tiny public repo, stub leg 1).
|
|
16
|
+
- `sindresorhus/is-plain-obj` (small public repo, stub leg 2).
|
|
17
|
+
- The gate proper (`scripts/real-repo-gate.sh`) also runs the two corpus rows (humanize-333, click) from `scripts/real-repo-gate.repos`.
|
|
18
|
+
3. Push disabled: shallow clone (`--depth 1`), `git remote set-url --push origin no-push`, `GIT_CONFIG_GLOBAL=/dev/null`, `--no-pr`. Gate clones additionally set `remote.origin.pushurl=invalid://push-disabled-by-real-repo-gate`.
|
|
19
|
+
4. Stub legs: a stub `claude` on PATH, `LOKI_NO_BROWSER=1`, `LOKI_DASHBOARD=false`, no API key variables. Real legs: credentials only through `LOKI_E2E_ENV_FILE` (below).
|
|
20
|
+
5. Evidence per leg: exit codes, wall seconds, receipt presence, `loki verify` verdict, `loki proof verify`, diff.
|
|
21
|
+
|
|
22
|
+
## 2. Stub-leg results (loki-mode 10.6.7)
|
|
23
|
+
|
|
24
|
+
Install: `npm i -g --prefix ... loki-mode@latest` rc=0, 5 s (warm npm cache directory was empty, so a cold fetch), `loki version` = `Loki Mode v10.6.7`.
|
|
25
|
+
|
|
26
|
+
| Leg | Repo @ SHA | Command | Exit | Wall | Receipt | `loki verify` | Notes |
|
|
27
|
+
|---|---|---|---|---|---|---|---|
|
|
28
|
+
| A | octocat/Hello-World @ 7fd1a60b01f91b314f59955a4e4d4e80d8edf11d | `loki start ./task.md --no-pr` (file task, exactly what the gate runs for corpus rows) | 1 | 1 s | none | rc=1, CONCERNS (empty diff) | `Unknown option: --no-pr` (BUG-1) |
|
|
29
|
+
| B | octocat/Hello-World @ 7fd1a60b | `loki start "Add a short Contributing note to the README" --no-pr` (v10 route) | 1 | 4 s | yes, `.loki/runs/e10-20261003T020630Z-9ab3/receipt.json` (sha256:321a4232...) | rc=4, `NOT VERIFIED (run outcome FAILED; receipt integrity intact)` | `Not logged in` from the SDK loop; stub `claude` on PATH ignored by the v10 engine (BUG-2, BUG-3). Outcome FAILED, no diff |
|
|
30
|
+
| C | sindresorhus/is-plain-obj @ 666df7c10035f7e26f27ec214fe5ae3173435f34 | `LOKI_ENGINE=legacy LOKI_MAX_ITERATIONS=1 LOKI_SDK_MODE=off LOKI_SKIP_AUTH_PREFLIGHT=1 loki start ./task.md` | 0 | 71 s | yes, `.loki/proofs/run-20261003020703-25030-19911` | rc=0, `VERDICT: VERIFIED` (2 files, +122) | `loki proof verify` rc=0 (hash_ok, headline_consistent); receipt body says `quality_gate:code_review: failed` (BUG-4) |
|
|
31
|
+
| C0 | is-plain-obj @ 666df7c1 | same as C without `LOKI_SKIP_AUTH_PREFLIGHT=1` | 1 | 1 s | none | CONCERNS | Legacy auth preflight stops with `Claude Code is installed but not logged in`; correct behaviour |
|
|
32
|
+
|
|
33
|
+
Push check: after every leg `git remote get-url --push origin` = `no-push`; nothing left the machine.
|
|
34
|
+
|
|
35
|
+
## 3. Bugs
|
|
36
|
+
|
|
37
|
+
BUG-1 (gate blocker, P1): `loki start <file> --no-pr` is rejected by the legacy parser.
|
|
38
|
+
`bin/loki` routes `start` to the v10 engine only for issue refs, issue URLs and multi-word tasks (`bin/loki` start case); a path to a file stays legacy, and the legacy `cmd_start` has no `--no-pr`. `scripts/real-repo-gate.sh` runs corpus rows as `loki start <T>/issue-NAME.md --no-pr`, so both corpus rows (humanize-333, click) die in 1 s with `Unknown option: --no-pr` on a real install. The stub-`loki` test hides it because the stub accepts anything.
|
|
39
|
+
Repro: `loki start ./task.md --no-pr` in any git clone; exit 1.
|
|
40
|
+
Fix options: route `start <file>.md --no-pr` to v10, or accept and ignore `--no-pr` in legacy `cmd_start`, or have the gate pass the issue text as a multi-word task. Add a gate test that uses the real routing.
|
|
41
|
+
|
|
42
|
+
BUG-2 (P2): the v10 engine does not use a `claude` found on PATH, so a stub provider cannot drive it.
|
|
43
|
+
The SDK loop spawns its own Claude Code and reports `Not logged in` even with a stub first on PATH. The legacy engine does honor PATH `claude`. Result: v10 stub legs are impossible, so no hermetic v10 e2e exists beyond unit tests. Suggest an env override (an executable path for the SDK loop) for tests.
|
|
44
|
+
Repro: Leg B.
|
|
45
|
+
|
|
46
|
+
BUG-3 (P2): an unauthenticated provider is reported as a generic failure by v10.
|
|
47
|
+
`loki-ts/src/engine10/machine.ts` matches only `Failed to authenticate|API key is invalid` and the credit-balance wording. The SDK's `Not logged in - Please run /login` is not matched, so the run ends `Outcome: FAILED Reason: exit 1 (general error)` plus four NOT PROVEN items, with no pointer to the login fix. Legacy prints an actionable message.
|
|
48
|
+
Repro: Leg B stderr log `.loki/runs/*/..-impl.stderr.log` contains `[sdk-loop error: Claude Code returned an error result: Not logged in ...]`.
|
|
49
|
+
|
|
50
|
+
BUG-4 (P3, wording): after a legacy run whose receipt lists `quality_gate:code_review: failed` under "Not yet verified", bare `loki verify` prints `VERDICT: VERIFIED`, because it is the diff-scope deterministic verify, while the receipt headline is not a full pass. Two commands, two meanings of VERIFIED. Operators should read the receipt headline, not only `loki verify`. Repro: Leg C.
|
|
51
|
+
|
|
52
|
+
Observation, not a Loki bug: my first stub appended to `README.md` on every invocation, including the auth probe, so the stub must only write on a real `-p` call.
|
|
53
|
+
|
|
54
|
+
## 4. Gate script change (this commit)
|
|
55
|
+
|
|
56
|
+
`scripts/real-repo-gate.sh` accepts `LOKI_E2E_ENV_FILE` (default unset, behaviour unchanged when unset). When set it requires a regular non-symlink file owned by the current user with mode 0600 (refuses with exit 2 otherwise), then loads it with `set -a; . file; set +a` inside the gate process only, output discarded, never echoed. Tested in `tests/test-real-repo-gate.sh` (0644 refused, 0600 loads, dummy value absent from stdout, stderr and logs). Caveat: the gate's per-repo log captures `loki` output, so a provider that echoes its own key would land in the log; the gate itself never writes values.
|
|
57
|
+
|
|
58
|
+
## 5. Operator commands once `~/.config/loki/e2e.env` exists
|
|
59
|
+
|
|
60
|
+
Create it with `umask 077` and put only the provider variables in it (`ANTHROPIC_API_KEY` or `CLAUDE_CODE_OAUTH_TOKEN`; `GH_TOKEN` for the private augmentiq repo, or rely on `gh auth login`).
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
chmod 600 ~/.config/loki/e2e.env
|
|
64
|
+
stat -f '%Lp %Su' ~/.config/loki/e2e.env # expect: 600 <you>
|
|
65
|
+
|
|
66
|
+
# 0. Do not run until BUG-1 is fixed, or the two corpus rows fail on the file-task route.
|
|
67
|
+
cd <loki-mode checkout>
|
|
68
|
+
|
|
69
|
+
# 1. Local gate on the published latest (clean install, throwaway HOME, push disabled, all three repos)
|
|
70
|
+
LOKI_E2E_ENV_FILE=$HOME/.config/loki/e2e.env \
|
|
71
|
+
bash scripts/real-repo-gate.sh --version "$(npm view loki-mode version)" \
|
|
72
|
+
--results "$HOME/loki-ci-logs/real-repo-gate-e2e.results"
|
|
73
|
+
echo "gate exit: $?" # 0 pass, 1 repo failed or nothing ran, 2 setup error
|
|
74
|
+
|
|
75
|
+
# 2. augmentiq#52 alone, for a clearer log
|
|
76
|
+
LOKI_E2E_ENV_FILE=$HOME/.config/loki/e2e.env \
|
|
77
|
+
bash scripts/real-repo-gate.sh --version "$(npm view loki-mode version)" --repo 'asklokesh/augmentiq#52'
|
|
78
|
+
|
|
79
|
+
# 3. Inspect: results table and per-repo logs (logs are in the .logs dir next to the results file)
|
|
80
|
+
cat "$HOME/loki-ci-logs/real-repo-gate-e2e.results"
|
|
81
|
+
ls "$HOME/loki-ci-logs/real-repo-gate-e2e.logs"
|
|
82
|
+
|
|
83
|
+
# 4. Confirm no push happened and nothing leaked
|
|
84
|
+
grep -rIl -E 'sk-ant-|oat01-' "$HOME/loki-ci-logs/real-repo-gate-e2e.logs" || echo "no key material in logs"
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Pass criteria per repo are in `scripts/real-repo-gate.repos` (expected outcome, allowed diff paths, max seconds); evidence to record for the log: exit code, wall seconds, Outcome line, receipt path, `loki verify` verdict.
|
package/docs/v10/GUIDE.md
CHANGED
|
@@ -6,7 +6,8 @@ Loki 10 is the rewritten engine (docs/v10/ENGINE.md). Since the D48 flip it
|
|
|
6
6
|
is the default for three entry points: `loki "<task>"`, `loki owner/repo#N`
|
|
7
7
|
(issue mode) and `loki quick "<task>"`. Each prints one start line,
|
|
8
8
|
`Loki 10 engine (set LOKI_ENGINE=legacy or run 'loki legacy' for the previous
|
|
9
|
-
engine)`, then the summary below.
|
|
9
|
+
engine)`, then the summary below. `loki start <issue ref | issue URL | "multi-word task">` takes the same
|
|
10
|
+
v10 path as `loki <ref>`. Everything else (`loki start ./prd.md`, `loki
|
|
10
11
|
status`, `loki dashboard` and the rest) is unchanged unless you set
|
|
11
12
|
LOKI_ENGINE=v10 explicitly, which also routes status, verify and dashboard
|
|
12
13
|
to the v10 commands. Bare `loki verify` (no LOKI_ENGINE) follows the newest
|
|
@@ -16,6 +17,12 @@ missing or LOKI_PROVIDER is unsupported, the default mode falls back to the
|
|
|
16
17
|
legacy engine and prints one stderr line saying why. The previous engine stays one step away:
|
|
17
18
|
`loki legacy <args>` and LOKI_ENGINE=legacy.
|
|
18
19
|
|
|
20
|
+
`loki start owner/repo#N`, `loki start <issue URL>` and `loki start "<multi-word
|
|
21
|
+
task>"` run Loki 10, the same as `loki owner/repo#N` and `loki "<task>"`. A PRD
|
|
22
|
+
file, a flag-first call (`loki start --simple prd.md`) and a one-word start stay
|
|
23
|
+
on the legacy engine. The legacy engine is being removed (planned work
|
|
24
|
+
resumes 2026-10-07, see docs/v10/LEGACY-REMOVAL.md).
|
|
25
|
+
|
|
19
26
|
Some pieces named in this guide are still being built. Each one below says
|
|
20
27
|
so plainly instead of describing a finished feature.
|
|
21
28
|
|
|
@@ -66,6 +73,14 @@ Flags, from the engine's own `--help`:
|
|
|
66
73
|
from 480s to 1800s (`loki-ts/src/engine10/types.ts`).
|
|
67
74
|
- `--provider <name>`: pick the coding provider for this run. See the
|
|
68
75
|
provider table below.
|
|
76
|
+
- `--max-cost <usd>`: per-run cost cap in dollars. Without the flag the cap is
|
|
77
|
+
`budgets.per_run` in the repo's `loki.yaml` (for example
|
|
78
|
+
`budgets:` then ` per_run: 5`), else the default of $20.00. The flag wins over
|
|
79
|
+
the file. The start line shows the cap in force, for example
|
|
80
|
+
`... previous engine), cap $20.00 (default)`. Once priced cost reaches the cap
|
|
81
|
+
the running stage is stopped, no later stage starts, and the run ends
|
|
82
|
+
BUDGET_STOP with exit code 3. Sessions with no provider price never count
|
|
83
|
+
toward the cap.
|
|
69
84
|
|
|
70
85
|
`--no-pr`, `--deep` and `--provider` are parsed by the supervisor
|
|
71
86
|
(`loki-ts/src/engine10/supervisor.ts`) and take effect on a real run.
|
|
@@ -102,6 +117,36 @@ Time: 4m12s (intake 11s, plan 20s, implement 3m10s, verify 31s)
|
|
|
102
117
|
- **PR**: the opened pull request URL, or `none` when the run used
|
|
103
118
|
`--no-pr` or never got that far. A draft PR adds the draft reason in
|
|
104
119
|
parentheses.
|
|
120
|
+
|
|
121
|
+
The PR body is reviewable in 60 seconds. It leads with what the issue asked,
|
|
122
|
+
then what changed and why, how it was tested, NOT PROVEN, and the receipt digest
|
|
123
|
+
with the `loki verify` command. A field the run did not record reads "not
|
|
124
|
+
recorded", never a number:
|
|
125
|
+
|
|
126
|
+
```
|
|
127
|
+
## What the issue asked
|
|
128
|
+
- handles empty input
|
|
129
|
+
- rejects bad tokens
|
|
130
|
+
|
|
131
|
+
## What changed and why
|
|
132
|
+
- Why: Fix the parser
|
|
133
|
+
- src/parser.ts
|
|
134
|
+
- tests/parser.test.ts
|
|
135
|
+
|
|
136
|
+
## How it was tested
|
|
137
|
+
- Verdict: VERIFIED
|
|
138
|
+
- Checks: 2 passed, 0 failed, 0 not run, 0 flaky (4 individual tests counted)
|
|
139
|
+
- Command: `bun test tests/parser.test.ts` -> pass
|
|
140
|
+
- Target tests (written before the fix): parser.test.ts
|
|
141
|
+
- Before the fix: 2 failing, 0 passing on base; after: pass
|
|
142
|
+
|
|
143
|
+
## NOT PROVEN
|
|
144
|
+
- none
|
|
145
|
+
|
|
146
|
+
## Receipt
|
|
147
|
+
- Digest: sha256:ab12... (signed)
|
|
148
|
+
- Verify: `loki verify run-1`
|
|
149
|
+
```
|
|
105
150
|
- **Verdict**: one of VERIFIED, PARTIAL, ALREADY_SATISFIED, SPEC_CONFLICT or
|
|
106
151
|
FAILED.
|
|
107
152
|
- **NOT PROVEN**: everything the run did not check, comma-joined. Never
|
|
@@ -124,6 +169,23 @@ called by the supervisor at the end of every run, so a real `loki "<task>"`
|
|
|
124
169
|
or `loki <issue-ref>` run prints this block on completion. The block above
|
|
125
170
|
is that function's real output, not a mockup.
|
|
126
171
|
|
|
172
|
+
## Triggers without a cloud
|
|
173
|
+
|
|
174
|
+
Both run on your own GitHub Actions minutes; there is no hosted service.
|
|
175
|
+
|
|
176
|
+
- Issue to PR: copy `.github/workflows/loki-issue-to-pr.yml` into your repository. Label an issue `loki`, or comment `/loki` as an owner, member or collaborator, and it runs `loki owner/repo#N` (the Loki 10 engine) and opens a pull request with an evidence receipt. The agent job holds a read-only token; a separate publish job opens the PR. Set `ANTHROPIC_API_KEY` in repository secrets.
|
|
177
|
+
- Nightly backlog: copy `examples/loki-nightly-backlog.yml` into `.github/workflows/`. Its `schedule:` trigger runs `loki backlog owner/repo --label loki`, one Loki 10 run per labeled open issue:
|
|
178
|
+
|
|
179
|
+
```yaml
|
|
180
|
+
on:
|
|
181
|
+
schedule:
|
|
182
|
+
- cron: '17 3 * * *' # nightly, 03:17 UTC
|
|
183
|
+
# ...
|
|
184
|
+
- run: loki backlog "${GITHUB_REPOSITORY}" --label loki --concurrency 2
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
`loki backlog` also takes `--all`, `--issues 1,2,3` and `--dry-run`. The nightly job runs the agent and a write token together, so label only issues you trust.
|
|
188
|
+
|
|
127
189
|
## NOT PROVEN
|
|
128
190
|
|
|
129
191
|
NOT PROVEN lists what a run did not verify, so a passing run is never read
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Handoff state (D59 pause ended early by D62 on 2026-10-03 about 00:05Z; work resumed, see DECISIONS D62)
|
|
2
|
+
|
|
3
|
+
## On npm now (updated 2026-10-02T23:52Z after the D60 sprint)
|
|
4
|
+
- latest and next: 10.6.7 (`npm view loki-mode dist-tags` gave latest 10.6.7, next 10.6.7 at 23:51Z; moved by the D49 auto-promote after Post-Release Smoke passed on bfce1db12; the D58 real-repo gate is still not wired into promote).
|
|
5
|
+
|
|
6
|
+
## Releases this window and their CI
|
|
7
|
+
- 10.6.0 (9f9569c35, tree d922ef170): Tests, Bun Parity, Coverage, Security Audit all green on train/72 and on main. Published.
|
|
8
|
+
- 10.6.1 (9bc3cfcc7): Tests red, shard 7, `test-engine10-docs.sh` (the D57 docs pass removed the README loki10-default marker). Not published.
|
|
9
|
+
- 10.6.2 (5c1e3324d): Tests red from W1-ROUTE (moat P5 egress-blocked-start-seal-verify, P5 local-provider-no-claude-sidecalls, P9 injection-cannot-reach-token; `loki run --help` flags; UI bare loki; progressive isolation help; platform-divergent construct; docs-drift `loki agent` in docs/R10-MARKETPLACE-PLAN.md). Not published; W1-ROUTE reverted (30096450f).
|
|
10
|
+
- 10.6.3 (f289f8bf2): Tests red, shard 7, `test-ui-bare-loki` (LEAK3 prints http://127.0.0.1:57374/start where the test expects otherwise). Not published; LEAK3 reverted (05410c554).
|
|
11
|
+
- 10.6.4 (3a4df211c): every Tests job failed installing deps (npm 404 on baseline-browser-mapping-2.11.27.tgz, a fresh publish not yet propagated; 200 a few minutes later). Not published; content carried into 10.6.5.
|
|
12
|
+
- 10.6.5 (0472f306a): Moat suite red, P9 injection-cannot-reach-token regressed by the minimal `loki start <ref>` route (b2e3afc43): the P9 probe drives `loki start <issue>` and expects a provider session; engine10 exited rc=2 first. Not published; start route reverted (621437c0a).
|
|
13
|
+
- 10.6.6 (456058bae): scope control, Control Plane v0, train-cycle fix, docs. Tests, Bun Parity, Coverage, Security Audit all green; Release succeeded. Published.
|
|
14
|
+
|
|
15
|
+
## D60 sprint (2026-10-02, one hour, all five slices in 10.6.7)
|
|
16
|
+
- 10.6.7 (bfce1db12, train/79 1917333e1): Tests, Bun Parity, Coverage, Security Audit, First-run gate, SBOM, Release, Post-Release Smoke, Promote all success.
|
|
17
|
+
- Shipped: `loki start` runs Loki 10 (moat P9 probe ported, moat rc=0); dashboard prints the bound port (LEAK3, test-ui-bare-loki rc=0); reviewer-first PR body; issue-to-PR Action on Loki 10 plus nightly `loki backlog` example; visible cost cap ($20 default, `--max-cost`, loki.yaml `budgets.per_run`, BUDGET_STOP exit 3).
|
|
18
|
+
- Open: no real end-to-end exit 3 run of the cost cap yet; root action.yml still uses `loki start --simple`.
|
|
19
|
+
- D61 (speed, docs/v10/D61-SPEED.md) resumed under D62. Worktree agent-ad890c5afa3648ae6 held no saved slice 17 work (clean, no commits), so slice 17 restarts. Peer GO covers slices 1, 2, 7, 8, 17 behind LOKI_SPEED=1.
|
|
20
|
+
- D58 basics 1 and 2 below are superseded by 10.6.7 (now PASS on CI; still unproven on a real repo).
|
|
21
|
+
|
|
22
|
+
## D58 basics
|
|
23
|
+
1. `loki start` runs v10: FAIL. Both the minimal route (b2e3afc43, a 7-line bin/loki start arm) and the full re-route regress moat P9, because tests/moat P9 drives `loki start <issue>` through the legacy path; port that probe to the v10 issue path first, then re-land b2e3afc43. The full re-route W1-ROUTE is built (branch slice-D57-W1-ROUTE, commit a8ed5461a, which is based on the old main that still has the CP-00 JWT commits, so cherry-pick it, never merge it) but turned Tests red as listed above. Its docs follow-up is f001bc0f1.
|
|
24
|
+
2. Dashboard: FAIL. LEAK3 (bound URL, scoped reuse, 57374-57399 guard; branch slice-P0-DASH-LEAK3, ceba8a6de) failed `test-ui-bare-loki` in CI and was reverted. The Control Plane v0 live view (CP-RELAND) ships in 10.6.6, off unless LOKI_CONTROL_URL is set.
|
|
25
|
+
3. Scope control: SHIPPED in 10.6.6 (D58-SCOPE, reverts unrelated edits, lists them in NOT PROVEN). Unproven on a real repo.
|
|
26
|
+
4. Clean install: PASS on 10.6.0 (per-platform @oven/bun-* deps; post-release smoke passed, which is what fired the promote).
|
|
27
|
+
5. Real-repo gate before latest moves: FAIL. `scripts/real-repo-gate.sh` exists but promote does not call it, and it needs operator provider auth (ANTHROPIC_API_KEY or CLAUDE_CODE_OAUTH_TOKEN, plus GH_TOKEN) that this session does not have. Not run against latest.
|
|
28
|
+
|
|
29
|
+
## NOT DONE and why
|
|
30
|
+
- W1-ROUTE and its docs cleanup: red CI (above); dropped per D46 rule 2.
|
|
31
|
+
- LEAK3 dashboard fix: red CI (`test-ui-bare-loki`); dropped. Its test expectation and the new bound-URL output disagree; decide which is right.
|
|
32
|
+
- Real-repo gate run: no provider auth in the session; never reads stored keys.
|
|
33
|
+
- Coverage W1-ROUTE removed and must be replaced when it re-lands: `why --json` schema test, eval harness cost checks (R2, S41-01), five trust-core probe cases (CTO sign-off).
|
|
34
|
+
- Wiring the real-repo gate into promote.yml (so latest cannot move without it).
|
|
35
|
+
|
|
36
|
+
## Founder queue
|
|
37
|
+
- Re-land W1-ROUTE with the moat P5/P9 regressions fixed first (moat outranks everything).
|
|
38
|
+
- Decide whether promote must call the real-repo gate, and supply provider auth for it.
|
|
39
|
+
- The D59 override (release without waiting for CI) expired at 20:10Z; the Release workflow's required-ci still enforced green Tests throughout.
|
|
40
|
+
- Housekeeping: about 43 worktrees under .claude/worktrees (cap 15); backup branches backup/train-67..70 and backup/main-pre-rebuild hold the CP-00 JWT lineage, so never push them.
|
package/docs/v10/PROGRESS.md
CHANGED
|
@@ -1898,3 +1898,16 @@ The swarm is stopped: .loki/V10-STOP exists, the loop has no wake-ups, and the c
|
|
|
1898
1898
|
- NPM-LAG guard row: publish, smoke and promote wait up to 45 min for the version and re-trigger promote; train-cycle merges origin/main back after each release (it stalled at 16:20Z, merged by hand as cc3e1392).
|
|
1899
1899
|
- E-160 (D55, train verdict reuse on main; CodeQL always runs; kill switch LOKI_E160_REUSE=0) merged locally after an opus APPROVE.
|
|
1900
1900
|
- D56 Control Plane: design (docs/v10/CONTROL-PLANE.md, 19 slices), CP-00 corpus, CP-01 service (Hono, Drizzle, bun:sqlite; idempotent ingest, 409 on conflict, fold-derived runs), CP-02 shipper (no-op unless LOKI_CONTROL_URL; exactly-once backfill; redaction) and CP-03 UI (runs list and detail; unpriced never shown as 0) merged locally. CP-04 (wire loki control, packaging, CI, test isolation) and BUN-OPT (npm 11 allow-scripts warning: per-platform @oven/bun packages) building.
|
|
1901
|
+
|
|
1902
|
+
## 2026-10-02T23:24Z D60 sprint: v10.6.7 cut with all five slices; D61 paused by the governor
|
|
1903
|
+
- v10.6.7 (release commit bfce1db12, train/79 at 1917333e1): `loki start owner/repo#N` runs Loki 10 (D60-1, merge 1e6cbeb65, moat P9 probe ported, moat run rc=0 "no rule failed (4 of 9 proven)"), dashboard prints the port it bound (D60-2, test-ui-bare-loki rc=0), reviewer-first PR body (D60-3, merge 6cfabcf8b), issue-to-PR Action on Loki 10 plus nightly `loki backlog` example (D60-4, test-issue-to-pr-action rc=0), visible cost cap with $20 default and BUDGET_STOP exit 3 (D60-5, merge 34c007e9e).
|
|
1904
|
+
- train/79 CI: Tier A, Bun Parity, First-run gate, Coverage, Security Audit, Tests all success. train-cycle phase B "PROMOTED train/79 -> main" 23:21:15Z; phase C "RELEASED v10.6.7" 23:21:26Z. On bfce1db12 so far: Bun Parity, First-run gate, SBOM success; Release and npm `next` pending.
|
|
1905
|
+
- train/78 (4da502a47) was red on Tier A "emoji/dash on changes" (literal dashes in reviewer_body.test.ts regex); fixed forward with unicode escapes (1917333e1). e10ext budget 1520 > 1500 fixed by trimming blank lines in assert_delta.ts (4da502a47; engine10 1032 pass, 0 fail).
|
|
1906
|
+
- Not done: a real end-to-end exit 3 run for the cost cap (unit-tested only); the root action.yml still uses `loki start --simple`.
|
|
1907
|
+
- D61 (speed, docs/v10/D61-SPEED.md): paused, governor max engineers 0 (weekly projected 167.8%). Slice 17 engineer stopped; partial work in worktree agent-ad890c5afa3648ae6.
|
|
1908
|
+
- 23:51Z: Post-Release Smoke and Promote success on bfce1db12; npm latest and next both 10.6.7. Sprint closed. (The pause was lifted by D62 at about 00:05Z on 2026-10-03.)
|
|
1909
|
+
|
|
1910
|
+
## 2026-10-03T01:56Z D62 resume, D63 roadmap, D64 withdrawn; 4 builders on D63 order
|
|
1911
|
+
- D62 (resume now) and D63 (roadmap, docs/v10/ROADMAP-D63.md) recorded and pushed (main 49a940d81). D64 (max pace, all Vorflux rows) arrived at 00:20Z and was withdrawn at 00:25Z; recorded as WITHDRAWN, no builder started.
|
|
1912
|
+
- Building (sonnet, worktrees): D61-17 large eval tier, D61-01 pre-model timer, D61-08 decomposer, D62-FIX (action.yml to Loki 10 plus real BUDGET_STOP exit 3 test). Ready next: D61-02, D61-07, D62-VIS, D62-JIRA.
|
|
1913
|
+
- Governor: weekly projected 57.4% at 01:55Z; pace target about 0.5% of the week per hour at 4 engineers.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Roadmap D63: the industry-standard autonomous software factory
|
|
2
|
+
|
|
3
|
+
Founder directive D63 (2026-10-03 00:15Z, relayed by the autonomi-dev session). This page sets the roadmap that D50, D51, D56 and D61 slot into. The measurable bars below are the only claim we make. User-facing text makes no "superintelligence" or benchmark claims, and no row is done without a test or an eval row in METRICS.
|
|
4
|
+
|
|
5
|
+
## Pillars: the bar to match, and how we beat it
|
|
6
|
+
|
|
7
|
+
| # | Pillar | Bar to match | How we beat it | Done when (test or eval row) |
|
|
8
|
+
|---|---|---|---|---|
|
|
9
|
+
| 1 | Autonomy | Devin, Factory Droids: an issue, backlog or spec goes in; merge-ready PRs come out; no babysitting | Proof plus lift | D50 lift on the eval, never below raw on the same model; D61 speed targets; a BLOCKED run asks exactly one question |
|
|
10
|
+
| 2 | Speed at scale | Factory: parallel units with an integrator; warm start | Same or fewer tokens than one sequential session | D61 large-arm eval holds (section 5 of D61-SPEED.md) before the default flips |
|
|
11
|
+
| 3 | Evidence | Devin, Vorflux: PR bodies with tests, screenshots of changed pages, HTTP transcripts for APIs | A signed receipt covers all of it | Screenshots are generated locally (Playwright) and hashed into the receipt; `loki verify` fails if one is altered |
|
|
12
|
+
| 4 | Control Plane UI | Devin web app, Factory dashboard | Every number links to its receipt | D56 is the default: live runs, history, PRs and issues, cost, compare, and a BLOCKED question answerable in the UI; one container with Helm and ECS examples; the old dashboard retired once at parity |
|
|
13
|
+
| 5 | Connections | Devin, Factory integrations | Intake is the same v10 run with the same receipt | GitHub (PAT now, GitHub App next) and GitLab; Jira and Linear intake; two-way Slack (`@loki` in a thread starts a run, BLOCKED answers come back); issue-to-PR Action; an MCP server exposing run, status and verify; VS Code and JetBrains via ACP later |
|
|
14
|
+
| 6 | Spec to software | 8090 | Every acceptance criterion traced to code and a check in the receipt | A spec or PRD file becomes a delivery contract, decomposed (D61) into units and then PRs; replaces the legacy PRD path (D57) |
|
|
15
|
+
| 7 | Legacy and modernization | 8090, Factory | Proof of function on legacy code | `loki modernize` stays hidden until it passes a real-repo eval; not this week |
|
|
16
|
+
| 8 | Claude Code parity | Claude Code | Runs inside it with a receipt | loki-seal plus a /loki command that runs the v10 engine on the current task; CLAUDE.md and .claude/skills honoured in the context pack |
|
|
17
|
+
| 9 | Enterprise | Devin and Factory enterprise tiers | Audit from the receipt chain | An audit log of model calls; budgets per team; SSO for the Control Plane later; never certification claims |
|
|
18
|
+
|
|
19
|
+
## Order this week (under the usage governor)
|
|
20
|
+
1. D61 eval arm (slice 17), then warm start (slices 5 and 6), with slices 1, 2, 7 and 8 in parallel.
|
|
21
|
+
2. Visual evidence in PRs (pillar 3).
|
|
22
|
+
3. Control Plane as the default, with the BLOCKED answer UI (pillar 4).
|
|
23
|
+
4. Two-way Slack (pillar 5).
|
|
24
|
+
5. Jira and Linear intake (pillar 5).
|
|
25
|
+
6. Spec to contract (pillar 6).
|
|
26
|
+
7. Multi-repo workspaces (D51 Phase B, behind LOKI_WORKSPACES).
|
|
27
|
+
8. MCP run, status and verify server (pillar 5).
|
|
28
|
+
9. Containers (pillar 4).
|
|
29
|
+
|
|
30
|
+
Also from D62: root action.yml routes to Loki 10; one real end-to-end BUDGET_STOP exit 3 test; project memory (D50 item 3). Later: merge queue, PR review with a risk score, REST API.
|
|
31
|
+
|
|
32
|
+
## Rules
|
|
33
|
+
- Each item ships on its own train, behind a flag where it changes defaults, with README and docs updated in the same slice.
|
|
34
|
+
- Each release reports its version and what users can now do to the autonomi-dev session.
|
|
35
|
+
- Pacing follows the governor (about 0.5% of the weekly window per hour); seats scale only with live /usage.
|