loki-mode 10.8.0 → 10.10.1
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 +2 -2
- package/README.md +11 -5
- package/SKILL.md +12 -2
- package/VERSION +1 -1
- package/autonomy/lib/proof-generator.py +1 -0
- package/autonomy/loki +55 -40
- package/autonomy/receipt_jwt.py +46 -1
- package/autonomy/run.sh +1 -1
- package/autonomy/telemetry.sh +1 -1
- package/autonomy/trigger-server.py +1 -0
- package/autonomy/tui.sh +5 -1
- package/bin/loki +12 -1
- package/bin/loki-postinstall.js +12 -0
- package/dashboard/__init__.py +1 -1
- package/dashboard/api_phases.py +1 -1
- package/dashboard/api_start.py +0 -1
- package/dashboard/server.py +22 -138
- package/docs/CLI-REFERENCE.md +139 -0
- package/docs/COCKPIT-SPEC.md +3 -1
- package/docs/DASHBOARD-9.12-EVIDENCE.md +1 -1
- package/docs/DASHBOARD-ARCHITECTURE.md +13 -11
- package/docs/DASHBOARD_V2_CHECKLIST.md +2 -0
- package/docs/INSTALLATION.md +12 -11
- package/docs/LOKI-10-BUILD-PROMPT.md +2 -2
- package/docs/MERGE-DEDUP-MAP.md +1 -1
- package/docs/MERGE-ROUTE-MAP.md +1 -1
- package/docs/MERGE3-PLAN.md +2 -2
- package/docs/PLANS-INDEX.md +2 -3
- package/docs/R3-COST-OBSERVABILITY-DESIGN.md +2 -2
- package/docs/R4-TRUST-TRAJECTORY-DESIGN.md +1 -1
- package/docs/R5-AUTO-WIKI-DESIGN.md +1 -1
- package/docs/R6-ROLLBACK-CHECKPOINT-PLAN.md +1 -1
- package/docs/RARV-C-100X-PLAN.md +3 -3
- package/docs/SLO.md +3 -3
- package/docs/SONNET5-DEFAULT-PLAN.md +2 -2
- package/docs/SYNERGY-TASKS.md +1 -1
- package/docs/TOOL-INTEGRATION.md +1 -1
- package/docs/TOP-100-BACKLOG.md +1 -1
- package/docs/alternative-installations.md +2 -2
- package/docs/architecture/ADR-001-runtime-migration.md +1 -1
- package/docs/architecture/DASHBOARD_V2_ARCHITECTURE.md +2 -0
- package/docs/audit-logging.md +2 -0
- package/docs/authentication.md +2 -0
- package/docs/authorization.md +2 -0
- package/docs/bug-fixes/agent-04-memory-fixes.md +1 -1
- package/docs/certification/02-enterprise-features/lab.md +2 -0
- package/docs/certification/02-enterprise-features/lesson.md +2 -0
- package/docs/certification/04-production-deployment/lab.md +2 -0
- package/docs/certification/04-production-deployment/lesson.md +2 -0
- package/docs/control-plane-migration.md +97 -0
- package/docs/dashboard-guide.md +6 -7
- package/docs/dev/release-checklist.md +10 -12
- package/docs/enterprise/integration-cookbook.md +2 -0
- package/docs/enterprise/migration.md +1 -1
- package/docs/enterprise/performance.md +3 -1
- package/docs/enterprise/sdk-guide.md +2 -0
- package/docs/enterprise/security.md +2 -0
- package/{.github/workflows/loki-issue-to-pr.yml → docs/examples/loki-issue-to-pr.yml.example} +2 -0
- package/docs/{ONE-RUN-AUDIT.md → history/one-run-audit.md} +6 -0
- package/docs/{BUG-AUDIT-v6.61.0.md → history/v6.61.0-audit.md} +6 -0
- package/docs/{V8-AGENT-SDK-PLAN.md → history/v8-agent-sdk-plan.md} +6 -0
- package/docs/{CONFIG-FILE-PLAN.md → history/v8-config-plan.md} +6 -0
- package/docs/plans/FORGE-AUTONOMOUS-QUEUE.md +2 -2
- package/docs/research-2026-07/OBSERVABILITY-TOOL-SPEC.md +1 -1
- package/docs/retrospectives/v7.5.15-honesty-audit.md +2 -2
- package/docs/test-scenarios/enterprise-scenarios.md +3 -3
- package/docs/v10/ARCHITECT-CUTS.md +9 -9
- package/docs/v10/BACKLOG.md +7 -7
- package/docs/v10/BOARD.md +28 -25
- package/docs/v10/CLI-MODERN.md +190 -0
- package/docs/v10/CONTROL-PLANE.md +4 -4
- package/docs/v10/CP-ENTERPRISE-UI.md +66 -66
- package/docs/v10/D51-PHASE-B.md +1 -1
- package/docs/v10/DECISIONS.md +3 -3
- package/docs/v10/DEPS.md +148 -169
- package/docs/v10/FAILURE-CLASSES.md +63 -1
- package/docs/v10/LEGACY-REMOVAL.md +335 -26
- package/docs/v10/PROGRESS.md +15 -0
- package/docs/v10/SWARM.md +2 -2
- package/loki-ts/dist/cockpit.js +11 -11
- package/loki-ts/dist/loki.js +1610 -1813
- package/magic/core/design_tokens.py +1 -2
- package/magic/core/generator.py +2 -2
- package/magic/tokens/README.md +1 -3
- package/mcp/__init__.py +1 -1
- package/package.json +4 -8
- package/packages/control-plane/dist/server.js +1956 -1019
- package/packages/control-plane/src/db/fixture-cleanup.ts +47 -0
- package/packages/control-plane/src/server/app.ts +2 -0
- package/packages/control-plane/src/server/integrity.ts +48 -9
- package/packages/control-plane/src/server/legacy/routes-audit.ts +50 -0
- package/packages/control-plane/src/server/legacy/routes-control.ts +26 -0
- package/packages/control-plane/src/server/legacy/routes-memory.ts +30 -0
- package/packages/control-plane/src/server/legacy/routes.ts +58 -58
- package/packages/control-plane/src/server/legacy/shim.ts +10 -4
- package/packages/control-plane/src/server/routes/checkpoints.ts +171 -0
- package/packages/control-plane/src/server/routes/index.ts +4 -1
- package/packages/control-plane/src/server/routes/memory.ts +219 -0
- package/packages/control-plane/src/server/routes/session_control.ts +155 -0
- package/packages/control-plane/src/server/routes/stats.ts +16 -5
- package/packages/control-plane/src/server/runs.ts +16 -4
- package/packages/control-plane/ui/dist/assets/index-NAMkcA9N.js +165 -0
- package/packages/control-plane/ui/dist/index.html +1 -1
- package/plugins/loki-mode/.claude-plugin/plugin.json +1 -1
- package/references/magic-modules-patterns.md +2 -2
- package/schemas/status-result.schema.json +13 -22
- package/skills/factory-operations.md +3 -3
- package/skills/magic-modules.md +1 -1
- package/skills/release-cadence.md +6 -6
- package/tools/audit-docs.py +1 -1
- package/tools/index-codebase.py +1 -1
- package/web-app/dist/assets/{AdminPage-DDDvUz0N.js → AdminPage-B8RjG3sy.js} +1 -1
- package/web-app/dist/assets/{Avatar-Dcdz46i6.js → Avatar-Dttmvqc-.js} +1 -1
- package/web-app/dist/assets/{Badge-BB24cCpK.js → Badge-Bvyp8VrD.js} +1 -1
- package/web-app/dist/assets/{Button-D0-DmPZL.js → Button-DtY5ZrZw.js} +1 -1
- package/web-app/dist/assets/{CockpitPage-CdjpU2JW.js → CockpitPage-B2gbOwRp.js} +1 -1
- package/web-app/dist/assets/{ComparePage-DT5U0y0d.js → ComparePage-CHi5nZTU.js} +1 -1
- package/web-app/dist/assets/{ErrorBoundary-lEHcl0EO.js → ErrorBoundary-BUuTj-OQ.js} +1 -1
- package/web-app/dist/assets/{EvidenceReceiptPanel-GpnWvdCr.js → EvidenceReceiptPanel-C5aOn4ES.js} +1 -1
- package/web-app/dist/assets/{GitHubIssuesPanel-C7VOh1B7.js → GitHubIssuesPanel-isVxxHXb.js} +1 -1
- package/web-app/dist/assets/{GitHubPRsPanel-G_kOuINv.js → GitHubPRsPanel-DtDpxyQl.js} +1 -1
- package/web-app/dist/assets/{HomePage-PqRisOny.js → HomePage-Casf-LUB.js} +2 -2
- package/web-app/dist/assets/{LoginPage-DU7pFAkf.js → LoginPage-DvB78691.js} +1 -1
- package/web-app/dist/assets/{MagicPage-C5JWIWMk.js → MagicPage-DU6hmbnC.js} +1 -1
- package/web-app/dist/assets/{MetricsPage-CbIGS_qo.js → MetricsPage-DcPwzoS8.js} +1 -1
- package/web-app/dist/assets/{NotFoundPage-vU1pvdSt.js → NotFoundPage-Bs6WxAZ8.js} +1 -1
- package/web-app/dist/assets/{ProjectPage-SsixIPPv.js → ProjectPage-RBIqC-DJ.js} +3 -3
- package/web-app/dist/assets/{ProjectsPage-BfQKSR9k.js → ProjectsPage-CogXD7jM.js} +1 -1
- package/web-app/dist/assets/{SettingsPage-B8YfXAom.js → SettingsPage-pAyJAfPt.js} +1 -1
- package/web-app/dist/assets/{ShowcasePage-Ba407f2-.js → ShowcasePage-D6bT2bDd.js} +1 -1
- package/web-app/dist/assets/{SystemSettingsPage-DzNQhhBS.js → SystemSettingsPage-CE8xiJRh.js} +1 -1
- package/web-app/dist/assets/{TeamsPage-tqUnpZ15.js → TeamsPage-wMS55TDT.js} +1 -1
- package/web-app/dist/assets/{TemplatesPage-ClB5EpI3.js → TemplatesPage-COJNVQqu.js} +1 -1
- package/web-app/dist/assets/{TerminalOutput-CBvpYfEu.js → TerminalOutput-Cc2XASxd.js} +1 -1
- package/web-app/dist/assets/{activity-C1s0L_X9.js → activity-C6eHFDjL.js} +1 -1
- package/web-app/dist/assets/{bell-DMEiXr73.js → bell-BJpVYj4n.js} +1 -1
- package/web-app/dist/assets/{bot-BF_xIOxu.js → bot-BwRVVUQL.js} +1 -1
- package/web-app/dist/assets/{check-Dv1Ynvrs.js → check-CGDwoKy8.js} +1 -1
- package/web-app/dist/assets/{chevron-left-Ddhsod7S.js → chevron-left-CF2Nilj6.js} +1 -1
- package/web-app/dist/assets/{circle-alert-OATHUkBZ.js → circle-alert-D0RyRec1.js} +1 -1
- package/web-app/dist/assets/{clock-C1Ltva07.js → clock-xeF3gW0W.js} +1 -1
- package/web-app/dist/assets/{cloud-B-S4oOy9.js → cloud-D5Sy69ZZ.js} +1 -1
- package/web-app/dist/assets/{code-xml-D3Femn_F.js → code-xml-C6-5Ql9I.js} +1 -1
- package/web-app/dist/assets/{database-DBSeFgO3.js → database-BSjG1_z0.js} +1 -1
- package/web-app/dist/assets/{dollar-sign-sgDgNuGE.js → dollar-sign-FnDR2QUu.js} +1 -1
- package/web-app/dist/assets/{file-code-corner-C-MbdZEc.js → file-code-corner-BiOK9vR6.js} +1 -1
- package/web-app/dist/assets/{file-plus-CCB6yqXv.js → file-plus-3WALQDEE.js} +1 -1
- package/web-app/dist/assets/{globe-DlbrNAj1.js → globe-vUdUrQqp.js} +1 -1
- package/web-app/dist/assets/{hammer-B-DWm695.js → hammer-0VwHUEpa.js} +1 -1
- package/web-app/dist/assets/{index-Dvny-1SU.js → index-BMKIwteZ.js} +3 -3
- package/web-app/dist/assets/{layers-99qsKpOT.js → layers-C6q8kzST.js} +1 -1
- package/web-app/dist/assets/{loader-circle-ZvZyZl3J.js → loader-circle-B4Tz724d.js} +1 -1
- package/web-app/dist/assets/{lock-DosGjcxP.js → lock-yxvEA65n.js} +1 -1
- package/web-app/dist/assets/{package-C-PumesN.js → package-BpKD0Ot0.js} +1 -1
- package/web-app/dist/assets/{plus-CTYYskTB.js → plus-Ibqx_Vo9.js} +1 -1
- package/web-app/dist/assets/{refresh-cw-qW2ztTFS.js → refresh-cw-C9auyvi-.js} +1 -1
- package/web-app/dist/assets/{rotate-ccw-ZIKrf-vO.js → rotate-ccw-2cEiXm6O.js} +1 -1
- package/web-app/dist/assets/{scroll-text-BamlXjAT.js → scroll-text-BPAWML-w.js} +1 -1
- package/web-app/dist/assets/{server-BljXb79I.js → server-CZh6B1zx.js} +1 -1
- package/web-app/dist/assets/{shield-alert-Dr6eT9c_.js → shield-alert-CivolUIx.js} +1 -1
- package/web-app/dist/assets/{thumbs-up-v3oBXZgU.js → thumbs-up-BP9covEH.js} +1 -1
- package/web-app/dist/assets/{trash-2-BOuIrCpi.js → trash-2-BCDfTcNx.js} +1 -1
- package/web-app/dist/assets/{trending-down-Dp7jMCgH.js → trending-down-5LypivXh.js} +1 -1
- package/web-app/dist/assets/{trending-up-CDiur-nP.js → trending-up-DNt4SFdk.js} +1 -1
- package/web-app/dist/assets/{upload-DxIHXhNE.js → upload-DBmHbY6y.js} +1 -1
- package/web-app/dist/assets/{usePolling-D2Uu-YZb.js → usePolling-DOPZcbUL.js} +1 -1
- package/web-app/dist/assets/{user-BVWCUAfF.js → user-BQTJJDCG.js} +1 -1
- package/web-app/dist/index.html +1 -1
- package/dashboard/static/assets/mermaid.min.js +0 -2030
- package/dashboard/static/cost.html +0 -344
- package/dashboard/static/favicon.svg +0 -5
- package/dashboard/static/index.html +0 -15577
- package/dashboard/static/proofs.html +0 -194
- package/dashboard/static/start.html +0 -131
- package/dashboard/static/trust.html +0 -325
- package/docs/BRANCH-LIFECYCLE-PLAN.md +0 -354
- package/docs/EXECUTION-COCKPIT-PLAN.md +0 -289
- package/packages/control-plane/ui/dist/assets/index-Dbhu244h.js +0 -155
package/docs/v10/DECISIONS.md
CHANGED
|
@@ -451,18 +451,18 @@ Loki's definition: "autonomous software factory that runs with the knowledge of
|
|
|
451
451
|
4. Order: P0 first-run bugs, first run end to end with a recorded demo, PR body and cost cap, D51 Phase B, D51 Phase C. D50 continues only where it raises completion or merge rate. Every release note leads with the user-visible v1 change.
|
|
452
452
|
|
|
453
453
|
## D55 (CTO, 2026-10-01; reversible via repo variable LOKI_E160_REUSE=0): a push to main reuses a train's verdict for the identical SHA
|
|
454
|
-
1. Rule (E-160, scripts/ci/train-verdict-reuse.sh). A push to refs/heads/main skips the heavy jobs only when ALL hold: LOKI_E160_REUSE is not 0; the workflow-runs listing for the SHA has total_count of 100 or less; among completed push runs of the same workflow file, other than this run, whose head_branch starts with train/, there is at least one success and no failure, timed_out or startup_failure (cancelled, skipped and neutral count for nothing); and, for Tests only, BEFORE is not all zeros and the BEFORE...SHA compare succeeded, lists fewer than 300 files and touches none of loki-ts/bun.lock, requirements-test.txt,
|
|
454
|
+
1. Rule (E-160, scripts/ci/train-verdict-reuse.sh). A push to refs/heads/main skips the heavy jobs only when ALL hold: LOKI_E160_REUSE is not 0; the workflow-runs listing for the SHA has total_count of 100 or less; among completed push runs of the same workflow file, other than this run, whose head_branch starts with train/, there is at least one success and no failure, timed_out or startup_failure (cancelled, skipped and neutral count for nothing); and, for Tests only, BEFORE is not all zeros and the BEFORE...SHA compare succeeded, lists fewer than 300 files and touches none of loki-ts/bun.lock, requirements-test.txt, legacy-ui/package-lock.json. Any parse or API error means reuse=false and the full suite runs. The newest success by created_at is recorded (run id, attempt, branch) in the step summary and a notice; attempts above 1 are accepted.
|
|
455
455
|
2. Wiring. test.yml: the version-bump-gate skip output is true when either the S-132 gate or the reuse step says so. bun-parity, coverage, first-run-gate and security-audit get a first job train-reuse; every other job needs it and runs under `!cancelled() && needs.train-reuse.outputs.reuse != 'true'`. security-audit sast (CodeQL) is never gated: it always runs on main. coverage and first-run-gate take test.yml's concurrency block (per-ref with cancel for pull_request and train/**, per-SHA without cancel on main).
|
|
456
456
|
3. Rationale: D28 and D46 item 4 (same SHA means same tree means same workflow YAML). required-ci, train-cycle, the pulse and the version-bump gate already read the train run by head_sha, so no gate gains new trust. Dependency lockfiles are excluded because a fast-forward from an older main can change resolved dependencies that the train run did not see.
|
|
457
457
|
## D56 (founder, relayed 15:40Z; numbered D56 because D55 is the E-160 CTO ruling): the Loki Control Plane replaces the dashboards
|
|
458
|
-
1. One service plus one UI, `loki control`, replaces dashboard/,
|
|
458
|
+
1. One service plus one UI, `loki control`, replaces dashboard/, legacy-ui/ and engine10/dashboard. It runs locally with zero config or is deployed once for many runs. It is stateless and horizontally scalable, keeps all state in a DB (SQLite locally, Postgres via DATABASE_URL), and is self-healing (/health, /ready, migrations on boot, spool replay, CLI restart of a dead local instance, k8s probes, version-checked reuse).
|
|
459
459
|
2. Stack: TypeScript on Bun with Hono and Drizzle; React, Vite and Tailwind built into static assets served by the same service; one container image.
|
|
460
460
|
3. Ingest: engine10 ships batched events with idempotent ids to LOKI_CONTROL_URL, with retry; the run's own events.jsonl is the spool. `loki control backfill` imports existing runs.
|
|
461
461
|
4. Every number comes from ingested events; no placeholders or invented data; an empty panel says so. Localhost-only by default, token auth when bound non-local, no secrets in events.
|
|
462
462
|
5. Built in packages/control-plane/ behind LOKI_CONTROL=1 until it passes its acceptance tests (real runs in, correct counts out), then the default flips and the old UIs are deleted. v0 (service, SQLite, ingest, shipper, Runs list and detail) ships on D46 trains first; the other views follow train by train.
|
|
463
463
|
6. Design: docs/v10/CONTROL-PLANE.md (architect slice in progress). Old-dashboard bug work is retired, except the P0 that shipped in 10.5.34.
|
|
464
464
|
## D55 (CTO, 2026-10-01; reversible via repo variable LOKI_E160_REUSE=0): a push to main reuses a train's verdict for the identical SHA
|
|
465
|
-
1. Rule (E-160, scripts/ci/train-verdict-reuse.sh). A push to refs/heads/main skips the heavy jobs only when ALL hold: LOKI_E160_REUSE is not 0; the workflow-runs listing for the SHA has total_count of 100 or less; among completed push runs of the same workflow file, other than this run, whose head_branch starts with train/, there is at least one success and no failure, timed_out or startup_failure (cancelled, skipped and neutral count for nothing); and, for Tests only, BEFORE is not all zeros and the BEFORE...SHA compare succeeded, lists fewer than 300 files and touches none of loki-ts/bun.lock, requirements-test.txt,
|
|
465
|
+
1. Rule (E-160, scripts/ci/train-verdict-reuse.sh). A push to refs/heads/main skips the heavy jobs only when ALL hold: LOKI_E160_REUSE is not 0; the workflow-runs listing for the SHA has total_count of 100 or less; among completed push runs of the same workflow file, other than this run, whose head_branch starts with train/, there is at least one success and no failure, timed_out or startup_failure (cancelled, skipped and neutral count for nothing); and, for Tests only, BEFORE is not all zeros and the BEFORE...SHA compare succeeded, lists fewer than 300 files and touches none of loki-ts/bun.lock, requirements-test.txt, legacy-ui/package-lock.json. Any parse or API error means reuse=false and the full suite runs. The newest success by created_at is recorded (run id, attempt, branch) in the step summary and a notice; attempts above 1 are accepted.
|
|
466
466
|
2. Wiring. test.yml: the version-bump-gate skip output is true when either the S-132 gate or the reuse step says so. bun-parity, coverage, first-run-gate and security-audit get a first job train-reuse; every other job needs it and runs under `!cancelled() && needs.train-reuse.outputs.reuse != 'true'`. security-audit sast (CodeQL) is never gated: it always runs on main. coverage and first-run-gate take test.yml's concurrency block (per-ref with cancel for pull_request and train/**, per-SHA without cancel on main).
|
|
467
467
|
3. Rationale: D28 and D46 item 4 (same SHA means same tree means same workflow YAML). required-ci, train-cycle, the pulse and the version-bump gate already read the train run by head_sha, so no gate gains new trust. Dependency lockfiles are excluded because a fast-forward from an older main can change resolved dependencies that the train run did not see.
|
|
468
468
|
|