loki-mode 11.3.0 → 11.3.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/README.md +68 -650
- package/SKILL.md +4 -4
- package/VERSION +1 -1
- package/autonomy/completion-council.sh +2 -2
- package/autonomy/context-tracker.py +4 -4
- package/autonomy/council-v2.sh +1 -1
- package/autonomy/grill.sh +1 -1
- package/autonomy/lib/done-recognition.sh +1 -1
- package/autonomy/lib/prd-enrich.sh +1 -1
- package/autonomy/lib/voter-agents.sh +1 -1
- package/autonomy/loki +99 -75
- package/autonomy/run.sh +30 -18
- package/autonomy/sandbox.sh +1 -1
- package/autonomy/tui.sh +6 -5
- package/autonomy/verify.sh +1 -1
- package/bin/loki +166 -59
- package/completions/_loki +2 -0
- package/completions/loki.bash +2 -2
- package/dashboard/__init__.py +1 -1
- package/dashboard/server.py +25 -31
- package/docs/ARCHITECTURE.md +337 -0
- package/docs/BRANDING.md +124 -0
- package/docs/CLI-REFERENCE.md +7 -1
- package/docs/COMPONENTS.md +447 -0
- package/docs/DEPLOYMENT.md +9 -9
- package/docs/DOCKER.md +469 -0
- package/docs/INSTALLATION.md +67 -1045
- package/docs/KNOWN-ISSUES.md +11 -35
- package/docs/TESTING.md +161 -0
- package/docs/air-gapped.md +1 -2
- package/docs/alternative-installations.md +14 -24
- package/docs/architecture/DECISIONS.md +333 -0
- package/docs/audit-logging.md +7 -7
- package/docs/authentication.md +3 -3
- package/docs/authorization.md +1 -1
- package/docs/certification/04-production-deployment/lab.md +6 -6
- package/docs/certification/04-production-deployment/lesson.md +4 -4
- package/docs/certification/README.md +1 -1
- package/docs/control-plane-container.md +2 -2
- package/docs/dev/real-run.md +34 -0
- package/docs/dev/release-checklist.md +2 -2
- package/docs/exit-codes.md +3 -3
- package/docs/git-workflow.md +3 -3
- package/docs/metrics.md +37 -55
- package/docs/network-security.md +1 -1
- package/docs/siem-integration.md +5 -5
- package/docs/v10/CLI-MODERN.md +4 -3
- package/docs/v10/DECISIONS.md +44 -0
- package/docs/v10/DEPS.md +22 -22
- package/docs/v10/ENGINE.md +1 -1
- package/docs/v10/FAILURE-CLASSES.md +118 -1
- package/docs/v10/FOUNDER-QUEUE.md +1 -0
- package/docs/v10/GUARDS.md +13 -0
- package/docs/v10/LEGACY-REMOVAL.md +4 -6
- package/docs/v10/METRICS.md +2 -2
- package/docs/v10/MODERNIZE.md +1 -1
- package/docs/v10/OPERATING-MODEL.md +2 -1
- package/docs/v10/PROGRESS.md +29 -0
- package/docs/v11/COST-HALF.md +352 -0
- package/docs/v11/MARKET-SLICES.md +315 -0
- package/docs/v11/REGISTRIES.md +730 -0
- package/loki-ts/data/model-pricing.json +52 -24
- package/loki-ts/dist/loki.js +1036 -957
- package/mcp/__init__.py +1 -1
- package/package.json +1 -1
- package/packages/control-plane/dist/server.js +2467 -736
- package/plugins/loki-mode/.claude-plugin/plugin.json +1 -1
- package/src/protocols/mcp-client.js +6 -2
- package/src/protocols/mcp-server.js +13 -3
- package/tools/audit-docs.py +1 -1
- package/web-app/dist/assets/{AdminPage-D_e45uTw.js → AdminPage-CMkHNJbF.js} +1 -1
- package/web-app/dist/assets/{Avatar-T3nIpoaf.js → Avatar-BJyjV7Zi.js} +1 -1
- package/web-app/dist/assets/{Badge-BKqb59pP.js → Badge-D572l0uq.js} +1 -1
- package/web-app/dist/assets/{Button-DjVlkh8_.js → Button-T4BnOZgl.js} +1 -1
- package/web-app/dist/assets/{CockpitPage-DXJgLGmh.js → CockpitPage-Cj_GFsNn.js} +1 -1
- package/web-app/dist/assets/{ComparePage-BRP_eVc_.js → ComparePage-A8m4ZXak.js} +1 -1
- package/web-app/dist/assets/{ErrorBoundary-CLjpGLjC.js → ErrorBoundary-hugCg5yg.js} +1 -1
- package/web-app/dist/assets/{EvidenceReceiptPanel-DX-vb4Xy.js → EvidenceReceiptPanel-CuJKDC2G.js} +1 -1
- package/web-app/dist/assets/{GitHubIssuesPanel-214HVHtX.js → GitHubIssuesPanel-BYGKjarC.js} +1 -1
- package/web-app/dist/assets/{GitHubPRsPanel-BEiZKc4t.js → GitHubPRsPanel-c7sFIJlf.js} +1 -1
- package/web-app/dist/assets/{HomePage-VvMHS5ga.js → HomePage-A1MIkG2P.js} +2 -2
- package/web-app/dist/assets/{LoginPage-5WD-v7n3.js → LoginPage-8KQMRhtR.js} +1 -1
- package/web-app/dist/assets/{MagicPage-DUQT_Jye.js → MagicPage-C05QW2Lx.js} +1 -1
- package/web-app/dist/assets/{MetricsPage-lga-z79v.js → MetricsPage-Oukv5hme.js} +1 -1
- package/web-app/dist/assets/{NotFoundPage-CGhBX3G1.js → NotFoundPage-DKIwsawz.js} +1 -1
- package/web-app/dist/assets/{ProjectPage-CdzF2GzZ.js → ProjectPage-DwFRPLCG.js} +3 -3
- package/web-app/dist/assets/{ProjectsPage-DRG64N8s.js → ProjectsPage-CgY4YYDX.js} +1 -1
- package/web-app/dist/assets/{SettingsPage-5fzW9Frb.js → SettingsPage-BpfcSjUA.js} +1 -1
- package/web-app/dist/assets/{ShowcasePage-DrTdxO4y.js → ShowcasePage-BqBakC4K.js} +1 -1
- package/web-app/dist/assets/{SystemSettingsPage-C9Mqs6Rd.js → SystemSettingsPage-CZLu5VB0.js} +1 -1
- package/web-app/dist/assets/{TeamsPage-CUGPdSWo.js → TeamsPage-D55S1jKz.js} +1 -1
- package/web-app/dist/assets/{TemplatesPage-CNraDY0F.js → TemplatesPage-D3SydvxN.js} +1 -1
- package/web-app/dist/assets/{TerminalOutput-BIu_6Pea.js → TerminalOutput-hNg8G1-e.js} +1 -1
- package/web-app/dist/assets/{activity-Bk-kgqaf.js → activity-D2C0VagO.js} +1 -1
- package/web-app/dist/assets/{bell-BXmUdmo8.js → bell-CMvYi36w.js} +1 -1
- package/web-app/dist/assets/{bot-CiuzXxUR.js → bot-BvtQ6lmo.js} +1 -1
- package/web-app/dist/assets/{check-BEzjXppd.js → check-B13xkXed.js} +1 -1
- package/web-app/dist/assets/{chevron-left-AYWCXHf8.js → chevron-left-emu6r49E.js} +1 -1
- package/web-app/dist/assets/{circle-alert-BNg2uSRq.js → circle-alert-CExlwjuy.js} +1 -1
- package/web-app/dist/assets/{clock-DTj0kkGT.js → clock-D7Uas3oL.js} +1 -1
- package/web-app/dist/assets/{cloud-x4nTDBLT.js → cloud-CkB4S86C.js} +1 -1
- package/web-app/dist/assets/{code-xml-BVh_MLrk.js → code-xml-SL9IIWIn.js} +1 -1
- package/web-app/dist/assets/{database-DdfBaowG.js → database-BQFkd7t1.js} +1 -1
- package/web-app/dist/assets/{dollar-sign-XuYFmAOY.js → dollar-sign-qHmnNYsU.js} +1 -1
- package/web-app/dist/assets/{file-code-corner-D4cRnmeL.js → file-code-corner-C2YUDP0K.js} +1 -1
- package/web-app/dist/assets/{file-plus-CyoVlHc_.js → file-plus-C_ooIkDe.js} +1 -1
- package/web-app/dist/assets/{globe-Y6IK2RPW.js → globe-CQ-GL485.js} +1 -1
- package/web-app/dist/assets/{hammer-BKzr9VZI.js → hammer-U05L_D7V.js} +1 -1
- package/web-app/dist/assets/{index-B20cSx5G.js → index-CooHd7I-.js} +3 -3
- package/web-app/dist/assets/{layers-DebNOhGS.js → layers-Buo17rjW.js} +1 -1
- package/web-app/dist/assets/{loader-circle-DyGbrEgd.js → loader-circle-15vK3oV1.js} +1 -1
- package/web-app/dist/assets/{lock-BKPpyt20.js → lock-BeXLebuJ.js} +1 -1
- package/web-app/dist/assets/{package-egF5Wi4y.js → package-MVh_6-6R.js} +1 -1
- package/web-app/dist/assets/{plus-OiEgKIc-.js → plus-Dh_nd9vS.js} +1 -1
- package/web-app/dist/assets/{refresh-cw-CzKvrONq.js → refresh-cw-C9cBJEAT.js} +1 -1
- package/web-app/dist/assets/{rotate-ccw-Bu2mII0p.js → rotate-ccw-D3PAtzST.js} +1 -1
- package/web-app/dist/assets/{scroll-text-CSkiyax8.js → scroll-text-DZCoXQjo.js} +1 -1
- package/web-app/dist/assets/{server-DlPthJFw.js → server-OCOLI5J_.js} +1 -1
- package/web-app/dist/assets/{shield-alert-CbpHWQQX.js → shield-alert-oVhmf1_h.js} +1 -1
- package/web-app/dist/assets/{thumbs-up-DgGpZe-Q.js → thumbs-up-B-kbX4vN.js} +1 -1
- package/web-app/dist/assets/{trash-2-BV3GlCB-.js → trash-2-EL6moveW.js} +1 -1
- package/web-app/dist/assets/{trending-down-Y4TJtXhD.js → trending-down-Cl3kjpsx.js} +1 -1
- package/web-app/dist/assets/{trending-up-DsDNoHZY.js → trending-up-DST7I6M2.js} +1 -1
- package/web-app/dist/assets/{upload-gkThrc_I.js → upload-CUOT780G.js} +1 -1
- package/web-app/dist/assets/{usePolling-jpNSeNAe.js → usePolling-Djmt90eb.js} +1 -1
- package/web-app/dist/assets/{user-3Zez1WOK.js → user-BRBohA6J.js} +1 -1
- package/web-app/dist/index.html +1 -1
- package/docs/ARCHITECTURE-OVERVIEW.md +0 -209
- package/docs/AUTONOMI-ECOSYSTEM.md +0 -107
- package/docs/COCKPIT-SPEC.md +0 -72
- package/docs/COCKPIT-UX-MANDATE.md +0 -53
- package/docs/COMPETITIVE-ANALYSIS.md +0 -303
- package/docs/COMPETITIVE-NEXT-10.md +0 -316
- package/docs/COMPETITIVE-RALPH-ZEROSHOT-2026-07-08.md +0 -81
- package/docs/DASHBOARD-9.12-EVIDENCE.md +0 -97
- package/docs/DASHBOARD-ARCHITECTURE.md +0 -425
- package/docs/DASHBOARD_V2_CHECKLIST.md +0 -243
- package/docs/DEMOS.md +0 -63
- package/docs/ENTERPRISE-IDENTITY-ROADMAP.md +0 -206
- package/docs/EVIDENCE-RECEIPT-BUILD-APPLICABILITY.md +0 -79
- package/docs/FEAT-PRDREUSE-DOCKER-PLAN.md +0 -144
- package/docs/GATE-FAILURE-TRIAGE.md +0 -254
- package/docs/HANDOFF-2026-08-03.md +0 -439
- package/docs/LOOP-CANDIDATE-PROPOSAL-v1.md +0 -167
- package/docs/LOOP-HARNESS-AUDIT.md +0 -684
- package/docs/MERGE-DEDUP-MAP.md +0 -420
- package/docs/MERGE-ROUTE-MAP.md +0 -139
- package/docs/MODEL-REGISTRY-PLAN.md +0 -155
- package/docs/OUTCOME-FRONTIER.md +0 -536
- package/docs/P2-SPEC-ROBUSTNESS-PLAN.md +0 -192
- package/docs/PLANS-INDEX.md +0 -32
- package/docs/PRD-REUSE-DONE-RECOGNITION-PLAN.md +0 -536
- package/docs/PROMPT-ABLATION-RESULT.md +0 -97
- package/docs/R4-TRUST-TRAJECTORY-DESIGN.md +0 -127
- package/docs/R5-AUTO-WIKI-DESIGN.md +0 -137
- package/docs/R6-ROLLBACK-CHECKPOINT-PLAN.md +0 -107
- package/docs/R7-ZERO-CONFIG-FIRST-RUN-PLAN.md +0 -137
- package/docs/R8-SHAREABLE-TEAM-ASSETS-PLAN.md +0 -129
- package/docs/R9-OPEN-CORE-HOOKS-PLAN.md +0 -113
- package/docs/RARV-C-100X-PLAN.md +0 -286
- package/docs/RARV-C-LOOP-EFFICIENCY-PLAN.md +0 -470
- package/docs/SHAREABLE-PROOF-PLAN.md +0 -194
- package/docs/SONNET5-DEFAULT-PLAN.md +0 -157
- package/docs/SPEED-AND-FIRST-PASS-PLAN.md +0 -281
- package/docs/STALE-STATE-AUDIT.md +0 -174
- package/docs/SYNERGY-TASKS.md +0 -143
- package/docs/TASKLIST-ACCURACY-PLAN.md +0 -355
- package/docs/TOP-100-BACKLOG.md +0 -159
- package/docs/V8-ACCEPTANCE-TRIAGE-2026-07-24.md +0 -114
- package/docs/V8-COMPLEXITY-AUDIT-2026-07-24.md +0 -45
- package/docs/V8-MAJOR-RELEASE-PLAN.md +0 -137
- package/docs/V8-OVERNIGHT-PLAN-2026-07-25.md +0 -82
- package/docs/V8-SDK-RESEARCH-RAW.md +0 -129
- package/docs/WELCOME-OPENER-PLAN.md +0 -106
- package/docs/adoption-baseline-2026-07-31.md +0 -84
- package/docs/architecture/bmad-integration-epic.md +0 -271
- package/docs/architecture/bmad-integration-review.md +0 -86
- package/docs/architecture/bmad-integration-validation.md +0 -249
- package/docs/architecture/bmad-loki-voice-agent-council-analysis.md +0 -61
- package/docs/auto-claude-comparison.md +0 -250
- package/docs/bug-fixes/agent-01-cli-fixes.md +0 -101
- package/docs/bug-fixes/agent-02-purplelab-fixes.md +0 -88
- package/docs/bug-fixes/agent-03-dashboard-fixes.md +0 -119
- package/docs/bug-fixes/agent-04-memory-fixes.md +0 -105
- package/docs/bug-fixes/agent-05-provider-fixes.md +0 -86
- package/docs/bug-fixes/agent-06-integration-fixes.md +0 -101
- package/docs/bug-fixes/agent-07-dash-run-fixes.md +0 -101
- package/docs/bug-fixes/agent-08-docker-fixes.md +0 -164
- package/docs/bug-fixes/agent-09-e2e-build-fixes.md +0 -69
- package/docs/bug-fixes/agent-10-e2e-fullstack-fixes.md +0 -102
- package/docs/bug-fixes/agent-11-e2e-session-fixes.md +0 -70
- package/docs/bug-fixes/agent-12-scenario-fixes.md +0 -120
- package/docs/bug-fixes/agent-13-enterprise-fixes.md +0 -143
- package/docs/bug-fixes/agent-14-uat-newuser-fixes.md +0 -88
- package/docs/bug-fixes/agent-15-uat-poweruser-fixes.md +0 -132
- package/docs/bug-fixes/agent-19-code-review.md +0 -316
- package/docs/bug-fixes/agent-20-architecture-review.md +0 -331
- package/docs/competitive/bolt-new-analysis.md +0 -579
- package/docs/competitive/emergence-others-analysis.md +0 -605
- package/docs/competitive/replit-lovable-analysis.md +0 -622
- package/docs/dashboard-guide.md +0 -487
- package/docs/enterprise/migration.md +0 -265
- package/docs/history/one-run-audit.md +0 -304
- package/docs/plans/FORGE-AUTONOMOUS-QUEUE.md +0 -312
- package/docs/plans/ULTRAPLAN-FORGE-BAAS.md +0 -612
- package/docs/plans/UT2-6-LSP-DIAGNOSTIC-BROADCAST.md +0 -394
- package/docs/prd-purple-lab-ide.md +0 -152
- package/docs/prd-purple-lab-platform-v2.md +0 -223
- package/docs/prd-purple-lab-platform.md +0 -319
- package/docs/retrospectives/v7.5.15-fleet-postmortem.md +0 -325
- package/docs/retrospectives/v7.5.15-honesty-audit.md +0 -136
- package/docs/retrospectives/v7.5.15-llm-failure-modes.md +0 -49
- package/docs/show-hn-post.md +0 -46
- package/docs/test-scenarios/enterprise-scenarios.md +0 -732
- package/docs/thick2thin.md +0 -173
|
@@ -1,192 +0,0 @@
|
|
|
1
|
-
# P2 Spec Robustness Plan (P2-1 spec interrogation gate + P2-2 assumption ledger)
|
|
2
|
-
|
|
3
|
-
Status: design for implementation. No version bump, no commit in this arc.
|
|
4
|
-
|
|
5
|
-
## Goal
|
|
6
|
-
|
|
7
|
-
Loki must stay accurate even when the input spec is WRONG, ambiguous, or
|
|
8
|
-
incomplete. Today two building blocks already detect spec defects but neither
|
|
9
|
-
feeds the autonomous loop:
|
|
10
|
-
|
|
11
|
-
- `autonomy/grill.sh` invokes the provider once with a Devil's-Advocate prompt
|
|
12
|
-
and writes 10-15 hardest spec questions to `.loki/grill/report.md`. It is
|
|
13
|
-
CLI-only (`grep grill autonomy/run.sh` = 0 invocations) and nothing reads its
|
|
14
|
-
output.
|
|
15
|
-
- `autonomy/prd-analyzer.py` detects missing PRD dimensions and has a
|
|
16
|
-
deterministic `_make_assumption()` map, writing `.loki/prd-observations.md`,
|
|
17
|
-
which nothing reads. Its interactive Q&A is inert in non-TTY (autonomous) runs.
|
|
18
|
-
|
|
19
|
-
The fix: run interrogation automatically in DISCOVERY, classify the findings,
|
|
20
|
-
record every spec gap as a first-class ASSUMPTION in a tracked ledger, BLOCK
|
|
21
|
-
completion while high-severity assumptions are unconfirmed-and-unacknowledged,
|
|
22
|
-
and surface the ledger in the proof-of-done output. Defects are SURFACED as
|
|
23
|
-
recorded assumptions, never silently autocorrected.
|
|
24
|
-
|
|
25
|
-
## Core design decision: auto-acknowledgment lifecycle (prevents the trap)
|
|
26
|
-
|
|
27
|
-
A naive "block completion while any high-severity assumption is unconfirmed"
|
|
28
|
-
hard-blocks EVERY ambiguous run to max-iterations, because in autonomous
|
|
29
|
-
(non-TTY) mode no human can ever set `confirmed=yes`. We never reach the
|
|
30
|
-
"done, plus here is what I assumed" output the goal demands.
|
|
31
|
-
|
|
32
|
-
Resolution: split the gate from the lifecycle.
|
|
33
|
-
|
|
34
|
-
- The gate `council_assumption_ledger_gate` is a PURE function of ledger state.
|
|
35
|
-
It blocks iff an entry has `severity=high AND confirmed=false AND
|
|
36
|
-
acknowledged=false`.
|
|
37
|
-
- The auto-acknowledgment lifecycle lives in run.sh (NOT in the gate). Once an
|
|
38
|
-
assumption has been written into the ledger AND injected into the build prompt
|
|
39
|
-
at least once, run.sh marks it `acknowledged=true`. Default-on; opt-out
|
|
40
|
-
`LOKI_ASSUMPTIONS_REQUIRE_CONFIRM=1` keeps a human-in-the-loop path where only
|
|
41
|
-
`confirmed=true` clears the block.
|
|
42
|
-
|
|
43
|
-
This is the OPPOSITE of silent autocorrect: the assumption is recorded,
|
|
44
|
-
injected into the agent's prompt, and surfaced in proof-of-done. Acknowledgment
|
|
45
|
-
records "Loki has SEEN this gap and proceeded with a stated default", not "Loki
|
|
46
|
-
hid it". The gate still has teeth on the first iteration (high-sev unacknowledged
|
|
47
|
-
blocks) and in the require-confirm path.
|
|
48
|
-
|
|
49
|
-
## Severity rule (deterministic, no LLM)
|
|
50
|
-
|
|
51
|
-
grill emits no severity. Classify by section / keyword on the read side:
|
|
52
|
-
|
|
53
|
-
- HIGH: security blind spots; scale/reliability blind spots; missing or
|
|
54
|
-
untestable acceptance criteria; any line containing contradiction keywords
|
|
55
|
-
(contradict, conflict, inconsistent, mutually exclusive).
|
|
56
|
-
- MEDIUM: ambiguities; unstated assumptions; underspecified behavior; all
|
|
57
|
-
prd-analyzer missing-dimension assumptions.
|
|
58
|
-
|
|
59
|
-
This guarantees a HIGH tier exists (so the gate has teeth) and is fully
|
|
60
|
-
deterministic (so tests are reproducible).
|
|
61
|
-
|
|
62
|
-
## Taxonomy mapping (classification, read-side only)
|
|
63
|
-
|
|
64
|
-
grill section -> finding class:
|
|
65
|
-
- "Ambiguities and missing acceptance criteria" -> ambiguous (HIGH if the line
|
|
66
|
-
references acceptance criteria / testable / measurable; else MEDIUM)
|
|
67
|
-
- "Unstated assumptions" -> underspecified (MEDIUM)
|
|
68
|
-
- "Security blind spots" -> missing (HIGH)
|
|
69
|
-
- "Scale and reliability blind spots" -> missing (HIGH)
|
|
70
|
-
- any line with a contradiction keyword (any section) -> contradictory (HIGH)
|
|
71
|
-
- prd-analyzer missing dimensions -> missing (MEDIUM, deterministic default)
|
|
72
|
-
|
|
73
|
-
"None identified." lines are skipped (no fabricated findings).
|
|
74
|
-
|
|
75
|
-
grill output contract is NOT changed (it is parsed by the loki-grill skill).
|
|
76
|
-
We classify a COPY of its markdown; grill.sh stays byte-identical.
|
|
77
|
-
|
|
78
|
-
## No-fabrication rule for ledger content
|
|
79
|
-
|
|
80
|
-
A grill finding is a QUESTION, not a resolution. The ledger `assumption` field
|
|
81
|
-
for a grill-derived gap is an honest "spec gives no answer; proceeding with the
|
|
82
|
-
implementer default for <area>" plus `affects=<area>`. We do NOT invent a
|
|
83
|
-
specific resolution the build will not actually follow. prd-analyzer assumptions
|
|
84
|
-
reuse its existing deterministic `_make_assumption()` text verbatim.
|
|
85
|
-
|
|
86
|
-
## Ledger schema (`.loki/assumptions/`)
|
|
87
|
-
|
|
88
|
-
One JSON file per assumption: `.loki/assumptions/<id>.json`, plus a
|
|
89
|
-
human-readable `.loki/assumptions/ledger.md` rollup regenerated on each write.
|
|
90
|
-
Each entry:
|
|
91
|
-
|
|
92
|
-
```json
|
|
93
|
-
{
|
|
94
|
-
"id": "a-0001",
|
|
95
|
-
"gap": "<the spec defect / unanswered question, verbatim>",
|
|
96
|
-
"assumption": "<honest stated default Loki proceeds with>",
|
|
97
|
-
"why": "<why this assumption / where the gap came from: grill|prd-analyzer>",
|
|
98
|
-
"severity": "high|medium",
|
|
99
|
-
"class": "ambiguous|contradictory|underspecified|missing",
|
|
100
|
-
"affects": "<area, e.g. security, acceptance-criteria, data-model>",
|
|
101
|
-
"source": "grill|prd-analyzer",
|
|
102
|
-
"confirmed": false,
|
|
103
|
-
"acknowledged": false,
|
|
104
|
-
"created_at": "<iso8601>"
|
|
105
|
-
}
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
Stable id = `a-` + zero-padded counter over existing files (idempotent: a second
|
|
109
|
-
DISCOVERY run with the same findings does not duplicate; dedupe on the `gap`
|
|
110
|
-
text hash).
|
|
111
|
-
|
|
112
|
-
## Build surface (files + functions)
|
|
113
|
-
|
|
114
|
-
1. NEW `autonomy/spec-interrogation.sh` (sourced by run.sh; standalone-testable):
|
|
115
|
-
- `spec_interrogation_classify_report <report.md path>`: pure classifier.
|
|
116
|
-
Reads grill markdown, emits one TSV/JSON finding per question line with
|
|
117
|
-
class + severity. Takes a file so a fixture report drives the test with no
|
|
118
|
-
`claude` call.
|
|
119
|
-
- `spec_interrogation_severity_for <section> <line>`: deterministic severity.
|
|
120
|
-
- `spec_ledger_write <gap> <assumption> <why> <severity> <class> <affects>
|
|
121
|
-
<source>`: idempotent writer (dedupe on gap hash) -> `.loki/assumptions/`.
|
|
122
|
-
- `spec_ledger_rebuild_md`: regenerate `.loki/assumptions/ledger.md`.
|
|
123
|
-
- `spec_ledger_high_unresolved_count`: count entries with
|
|
124
|
-
`severity=high AND confirmed=false AND acknowledged=false` (gate input;
|
|
125
|
-
also reused by the summary).
|
|
126
|
-
- `spec_ledger_acknowledge_all`: set `acknowledged=true` on all entries
|
|
127
|
-
(auto-ack lifecycle helper; default path).
|
|
128
|
-
- `spec_interrogation_run <spec_path>`: orchestrator. Default-on
|
|
129
|
-
(`LOKI_SPEC_GRILL=0` opts out). Provider-aware: source grill.sh, call
|
|
130
|
-
`grill_check_provider`; if provider absent, log honest message, skip the
|
|
131
|
-
grill subcall (NO fabricated questions), but STILL fold prd-analyzer
|
|
132
|
-
missing-dimension assumptions into the ledger so degrade surfaces something
|
|
133
|
-
non-blocking. On provider present: run `grill_main` (writes report.md),
|
|
134
|
-
classify it, write ledger entries. Always non-fatal to the run.
|
|
135
|
-
|
|
136
|
-
2. `autonomy/run.sh` DISCOVERY (~13056, after prd-analyzer + council_init,
|
|
137
|
-
before the iteration loop): source spec-interrogation.sh and call
|
|
138
|
-
`spec_interrogation_run "$prd_path"`. This is the grep-able grill invocation
|
|
139
|
-
the task requires. Best-effort (`|| true`), never blocks startup.
|
|
140
|
-
|
|
141
|
-
3. `autonomy/run.sh` auto-ack lifecycle: after the build prompt is constructed
|
|
142
|
-
each iteration (assumptions are injected into the prompt via build_prompt),
|
|
143
|
-
call `spec_ledger_acknowledge_all` UNLESS
|
|
144
|
-
`LOKI_ASSUMPTIONS_REQUIRE_CONFIRM=1`. Inject the high-severity assumption
|
|
145
|
-
list into the build prompt (so the agent sees the gaps it must respect).
|
|
146
|
-
|
|
147
|
-
4. `autonomy/completion-council.sh` `council_assumption_ledger_gate` (new),
|
|
148
|
-
slotted into `council_evaluate` right after `council_evidence_gate`
|
|
149
|
-
(mirrors 2510-2513). Same defensive `COUNCIL_STATE_DIR` default, opt-out
|
|
150
|
-
`LOKI_ASSUMPTION_GATE=0`. Blocks iff `spec_ledger_high_unresolved_count > 0`.
|
|
151
|
-
Writes `.loki/council/assumption-block.json` on block, removes it on pass.
|
|
152
|
-
Also wired into the completion-promise route in run.sh (~14525 pattern) and
|
|
153
|
-
the code_review gate chain (~15013) so the promise path cannot bypass it.
|
|
154
|
-
|
|
155
|
-
5. `autonomy/run.sh` `build_completion_summary` (~2637): emit an
|
|
156
|
-
"Assumptions recorded: N (M high-severity)" block into COMPLETION.txt and the
|
|
157
|
-
ledger list, plus the count into completion.json. So "done" means "done, plus
|
|
158
|
-
here are the N places your spec was ambiguous and what I assumed."
|
|
159
|
-
|
|
160
|
-
6. NEW `tests/test-spec-interrogation.sh` (bash convention, ok/bad counters,
|
|
161
|
-
source the module, mktemp fixtures):
|
|
162
|
-
- (a) classifier on a fixture grill report writes classified findings to the
|
|
163
|
-
ledger (ambiguous/contradictory/underspecified/missing + high/medium).
|
|
164
|
-
- (b) a ledger with one high/confirmed:false/acknowledged:false entry makes
|
|
165
|
-
`council_assumption_ledger_gate` return 1 (BLOCK) and write
|
|
166
|
-
assumption-block.json.
|
|
167
|
-
- (c) clean spec (no high-sev entries, or all acknowledged) -> gate returns 0
|
|
168
|
-
(no spurious block), no block file.
|
|
169
|
-
- (d) no provider -> `spec_interrogation_run` degrades cleanly: honest
|
|
170
|
-
message, prd-analyzer assumptions still folded (medium, non-blocking), run
|
|
171
|
-
proceeds, gate passes.
|
|
172
|
-
|
|
173
|
-
## Gate reachability (resolved open question)
|
|
174
|
-
|
|
175
|
-
The existing gates fire from THREE sites: `council_evaluate` (~2510), the
|
|
176
|
-
completion-promise route (~14525), and the code_review gate chain (~15013). The
|
|
177
|
-
new gate is wired into all three so high-sev unacknowledged assumptions cannot
|
|
178
|
-
slip through the promise path.
|
|
179
|
-
|
|
180
|
-
## Opt-out knobs (all default-on, intelligent)
|
|
181
|
-
|
|
182
|
-
- `LOKI_SPEC_GRILL=0` -> skip interrogation entirely.
|
|
183
|
-
- `LOKI_ASSUMPTION_GATE=0` -> gate is pass-through.
|
|
184
|
-
- `LOKI_ASSUMPTIONS_REQUIRE_CONFIRM=1` -> require human `confirmed=true`
|
|
185
|
-
(disables auto-ack); the human-in-the-loop path.
|
|
186
|
-
|
|
187
|
-
No "user must decide the type" knob. Classification + severity are automatic.
|
|
188
|
-
|
|
189
|
-
## Constraints
|
|
190
|
-
|
|
191
|
-
No emojis, no em dashes, no version bump, no commit, no push. Provider-aware,
|
|
192
|
-
degrade cleanly, no fabricated questions when provider absent.
|
package/docs/PLANS-INDEX.md
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
# Plans Index
|
|
2
|
-
|
|
3
|
-
This index maps each historical plan doc to its status. Plan docs are kept as design history; a 'shipped' plan's feature is live in the code.
|
|
4
|
-
|
|
5
|
-
| Plan | Status | Notes |
|
|
6
|
-
|---|---|---|
|
|
7
|
-
| BUILD-HUD-PLAN.md | shipped | Live in-terminal build HUD; `LOKI_HUD` / `[HUD]` in `autonomy/run.sh`, CHANGELOG "Live in-terminal build HUD". |
|
|
8
|
-
| history/v8-config-plan.md | shipped | Unified config file; `--config` / `--vars` / `--env-file` flags in `autonomy/loki`. |
|
|
9
|
-
| CRASH-REPORTING-PLAN.md | shipped | Crash-reporting + auto-fix; `cmd_crash()` in `autonomy/loki` (`loki crash`). |
|
|
10
|
-
| DEPLOY-PLAN.md | shipped | `loki deploy` advisory print-only; CHANGELOG "`loki deploy`: advisory, print-only deploy guidance". |
|
|
11
|
-
| FAILURE-MEMORY-PLAN.md | shipped | Failure-memory loop; `FailureMode` schema in `memory/schemas.py`. |
|
|
12
|
-
| FEAT-PRDREUSE-DOCKER-PLAN.md | shipped | PRD-reuse + Docker batch; Docker dashboard/port + PRD-reuse present in `autonomy/loki`. |
|
|
13
|
-
| MERGE3-PLAN.md | shipped | Purple-Lab-into-Dashboard integration; `/lab/` mount in `dashboard/server.py`. |
|
|
14
|
-
| P0-SWEEP-PLAN.md | shipped | Verification-credibility sweep; wired detectors are part of the 8-gate system. |
|
|
15
|
-
| P2-SPEC-ROBUSTNESS-PLAN.md | shipped | Spec interrogation gate + assumption ledger; part of quality-gates spec robustness. |
|
|
16
|
-
| PRD-REUSE-DONE-RECOGNITION-PLAN.md | shipped | PRD-reuse done-recognition gate; reuse-then-verify behavior in the engine. |
|
|
17
|
-
| PREVIEW-LINK-PLAN.md | shipped | `loki preview --public`; `_preview_public` in `autonomy/loki`, CHANGELOG "`loki preview --public`". |
|
|
18
|
-
| R10-MARKETPLACE-PLAN.md | shipped | Agent/template marketplace (install-from-source); `loki template` marketplace in `autonomy/loki`. |
|
|
19
|
-
| R6-ROLLBACK-CHECKPOINT-PLAN.md | shipped | 1-click rollback + checkpoint UX; `cmd_rollback()` / `rollback)` dispatch in `autonomy/loki`. |
|
|
20
|
-
| R7-ZERO-CONFIG-FIRST-RUN-PLAN.md | shipped | Zero-config first run; welcome/first-run path in `autonomy/loki`. |
|
|
21
|
-
| R8-SHAREABLE-TEAM-ASSETS-PLAN.md | shipped | Exportable/importable team assets; `cmd_export()` / `cmd_import()` in `autonomy/loki`. |
|
|
22
|
-
| R9-OPEN-CORE-HOOKS-PLAN.md | shipped | Open-core seams (BUSL-1.1); open-core seam references in `autonomy/loki`. Seams only; no hosted backend (by design). |
|
|
23
|
-
| RARV-C-100X-PLAN.md | active | v8.0.0 native-primitives arc; v8 lives on the `feature/v8-agent-sdk` branch, not yet merged to main. |
|
|
24
|
-
| RARV-C-LOOP-EFFICIENCY-PLAN.md | superseded | Self-marked SUPERSEDED by RARV-C-100X-PLAN.md (v8.0.0 arc); anchors drifted, kept as history. |
|
|
25
|
-
| SHAREABLE-PROOF-PLAN.md | shipped | Opt-in shareable proof-of-run (v7.19.3) preserving zero-egress posture. |
|
|
26
|
-
| SONNET5-DEFAULT-PLAN.md | shipped | Sonnet 5 default execution model; `v7.104.0: Sonnet 5 is the default` in `providers/claude.sh`. |
|
|
27
|
-
| TASKLIST-ACCURACY-PLAN.md | shipped | Dashboard task-list accuracy fix; task-list handling in `dashboard/server.py`, CHANGELOG v7.104.x task-list fixes. |
|
|
28
|
-
| UNCERTAINTY-ESCALATION-PLAN.md | shipped | Uncertainty-gated escalation (v7.19.2); uncertainty escalation logic in `autonomy/run.sh`. |
|
|
29
|
-
| VERIFIED-COMPLETION-PLAN.md | shipped | Verified completion (v7.19.1); verified-completion gate in `autonomy/run.sh` + `autonomy/completion-council.sh`. |
|
|
30
|
-
| WELCOME-OPENER-PLAN.md | shipped | Welcome opener ("magic opener"); `welcome` path in `autonomy/loki`. |
|
|
31
|
-
| history/v8-agent-sdk-plan.md | shipped | The v8 Anthropic SDK runtime migration; shipped on `feature/v8-agent-sdk` as v8.0.0 + v8.1 (`loki-ts/src/runner/sdk_invoker.ts`, `sdk_mode.ts`, CHANGELOG v8.0.0/v8.1). Feature-branch-only, not yet merged to main. |
|
|
32
|
-
| V8-SDK-RESEARCH-RAW.md | shipped | Research notes underpinning V8-AGENT-SDK-PLAN; design history for the v8 SDK arc. |
|