loki-mode 11.3.0 → 11.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +68 -650
- package/SKILL.md +5 -5
- 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/efficiency_cost.py +8 -0
- package/autonomy/lib/engine10-push.sh +22 -8
- package/autonomy/lib/prd-enrich.sh +1 -1
- package/autonomy/lib/voter-agents.sh +1 -1
- package/autonomy/loki +161 -105
- 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 +195 -59
- package/completions/_loki +8 -0
- package/completions/loki.bash +3 -3
- package/dashboard/__init__.py +1 -1
- package/dashboard/server.py +47 -45
- package/docs/AGENT-CHANGE-RECEIPT.md +2 -2
- package/docs/ARCHITECTURE.md +337 -0
- package/docs/BRANDING.md +124 -0
- package/docs/CLI-REFERENCE.md +11 -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/OTEL-COLLECTOR.md +24 -0
- package/docs/ROUTING-EVIDENCE.md +32 -0
- 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/environment-variables.md +1 -0
- 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/spec-first-intent.md +28 -0
- package/docs/v10/CLI-MODERN.md +7 -3
- package/docs/v10/DECISIONS.md +59 -0
- package/docs/v10/DEPS.md +22 -22
- package/docs/v10/ENGINE.md +1 -1
- package/docs/v10/FAILURE-CLASSES.md +212 -1
- package/docs/v10/FOUNDER-QUEUE.md +1 -0
- package/docs/v10/GUARDS.md +31 -0
- package/docs/v10/GUIDE.md +7 -5
- package/docs/v10/LEGACY-REMOVAL.md +4 -6
- package/docs/v10/METRICS.md +14 -2
- package/docs/v10/MODERNIZE.md +1 -1
- package/docs/v10/OPERATING-MODEL.md +4 -3
- package/docs/v10/PROGRESS.md +35 -0
- package/docs/v11/COST-HALF.md +352 -0
- package/docs/v11/INTOTO-AGENT-CHANGE-PREDICATE.md +77 -0
- package/docs/v11/MARKET-SLICES.md +315 -0
- package/docs/v11/MCP-2026-07-28.md +55 -0
- package/docs/v11/REGISTRIES.md +730 -0
- package/docs/v11/VERIFY-PR-SANDBOX.md +41 -0
- package/loki-ts/data/model-pricing.json +52 -24
- package/loki-ts/dist/loki.js +1185 -945
- package/mcp/__init__.py +1 -1
- package/mcp/v10_tools.py +29 -0
- package/package.json +9 -11
- package/packages/control-plane/dist/ask-tools-server.js +8 -2
- package/packages/control-plane/dist/server.js +15832 -12361
- package/packages/control-plane/drizzle/0006_token_sessions.sql +1 -0
- package/packages/control-plane/drizzle/meta/0006_snapshot.json +807 -0
- package/packages/control-plane/drizzle/meta/_journal.json +7 -0
- package/packages/control-plane/src/db/schema.ts +1 -0
- package/packages/control-plane/src/server/routes/cost.ts +4 -3
- package/packages/control-plane/src/server/runs.ts +3 -3
- package/packages/control-plane/ui/dist/assets/index-DbLzr87u.js +190 -0
- package/packages/control-plane/ui/dist/index.html +1 -1
- package/plugins/loki-mode/.claude-plugin/plugin.json +1 -1
- package/providers/opencode.sh +2 -3
- package/src/observability/genai-spans.js +104 -0
- package/src/observability/otel-bridge.js +49 -1
- package/src/observability/otel.js +2 -2
- package/src/protocols/mcp-client.js +6 -2
- package/src/protocols/mcp-server.js +191 -6
- package/src/protocols/transport/sse.js +23 -2
- package/tools/audit-docs.py +1 -1
- package/web-app/dist/assets/{AdminPage-D_e45uTw.js → AdminPage-DuRQZsF9.js} +1 -1
- package/web-app/dist/assets/{Avatar-T3nIpoaf.js → Avatar-7GtOQvsO.js} +1 -1
- package/web-app/dist/assets/{Badge-BKqb59pP.js → Badge-CYgTnIxj.js} +1 -1
- package/web-app/dist/assets/{Button-DjVlkh8_.js → Button-rYSyIu7X.js} +1 -1
- package/web-app/dist/assets/{CockpitPage-DXJgLGmh.js → CockpitPage-9adANY4o.js} +1 -1
- package/web-app/dist/assets/{ComparePage-BRP_eVc_.js → ComparePage-DEG2oA-R.js} +1 -1
- package/web-app/dist/assets/{ErrorBoundary-CLjpGLjC.js → ErrorBoundary-CwtvY4xs.js} +1 -1
- package/web-app/dist/assets/{EvidenceReceiptPanel-DX-vb4Xy.js → EvidenceReceiptPanel-DTT73pPB.js} +1 -1
- package/web-app/dist/assets/{GitHubIssuesPanel-214HVHtX.js → GitHubIssuesPanel-CpWZLz2x.js} +1 -1
- package/web-app/dist/assets/{GitHubPRsPanel-BEiZKc4t.js → GitHubPRsPanel-H293R7E2.js} +1 -1
- package/web-app/dist/assets/{HomePage-VvMHS5ga.js → HomePage-B11Imp9k.js} +2 -2
- package/web-app/dist/assets/{LoginPage-5WD-v7n3.js → LoginPage-BZBgx5Jr.js} +1 -1
- package/web-app/dist/assets/{MagicPage-DUQT_Jye.js → MagicPage-B27S4_X8.js} +1 -1
- package/web-app/dist/assets/{MetricsPage-lga-z79v.js → MetricsPage-CfbJWNDG.js} +1 -1
- package/web-app/dist/assets/{NotFoundPage-CGhBX3G1.js → NotFoundPage-Tp_4zMSm.js} +1 -1
- package/web-app/dist/assets/{ProjectPage-CdzF2GzZ.js → ProjectPage-CM4fgMsV.js} +3 -3
- package/web-app/dist/assets/{ProjectsPage-DRG64N8s.js → ProjectsPage-DP2Fvsrd.js} +1 -1
- package/web-app/dist/assets/{SettingsPage-5fzW9Frb.js → SettingsPage-C4G9-EAy.js} +1 -1
- package/web-app/dist/assets/{ShowcasePage-DrTdxO4y.js → ShowcasePage-Dj-n4dwu.js} +1 -1
- package/web-app/dist/assets/{SystemSettingsPage-C9Mqs6Rd.js → SystemSettingsPage-BqMLpuGt.js} +1 -1
- package/web-app/dist/assets/{TeamsPage-CUGPdSWo.js → TeamsPage-mIH8H96m.js} +1 -1
- package/web-app/dist/assets/{TemplatesPage-CNraDY0F.js → TemplatesPage-BagW-v4n.js} +1 -1
- package/web-app/dist/assets/{TerminalOutput-BIu_6Pea.js → TerminalOutput-CTQRHhnK.js} +1 -1
- package/web-app/dist/assets/{activity-Bk-kgqaf.js → activity-DNQiBDDL.js} +1 -1
- package/web-app/dist/assets/{bell-BXmUdmo8.js → bell-Coiwdad1.js} +1 -1
- package/web-app/dist/assets/{bot-CiuzXxUR.js → bot-Cou-rTgR.js} +1 -1
- package/web-app/dist/assets/{check-BEzjXppd.js → check-CsF-XtQp.js} +1 -1
- package/web-app/dist/assets/{chevron-left-AYWCXHf8.js → chevron-left-BJiy55Ht.js} +1 -1
- package/web-app/dist/assets/{circle-alert-BNg2uSRq.js → circle-alert-D6-pQQWq.js} +1 -1
- package/web-app/dist/assets/{clock-DTj0kkGT.js → clock-BOGqwgt9.js} +1 -1
- package/web-app/dist/assets/{cloud-x4nTDBLT.js → cloud-DsxhTtf5.js} +1 -1
- package/web-app/dist/assets/{code-xml-BVh_MLrk.js → code-xml-CxJDHUlE.js} +1 -1
- package/web-app/dist/assets/{database-DdfBaowG.js → database-BJePscl_.js} +1 -1
- package/web-app/dist/assets/{dollar-sign-XuYFmAOY.js → dollar-sign-6qWGAkZo.js} +1 -1
- package/web-app/dist/assets/{file-code-corner-D4cRnmeL.js → file-code-corner-DcOtYeDb.js} +1 -1
- package/web-app/dist/assets/{file-plus-CyoVlHc_.js → file-plus-WuRyLFo0.js} +1 -1
- package/web-app/dist/assets/{globe-Y6IK2RPW.js → globe-r-xCP4DE.js} +1 -1
- package/web-app/dist/assets/{hammer-BKzr9VZI.js → hammer-DTt0SsCB.js} +1 -1
- package/web-app/dist/assets/{index-B20cSx5G.js → index-BkbXyH8y.js} +3 -3
- package/web-app/dist/assets/{layers-DebNOhGS.js → layers-BvZhvSMY.js} +1 -1
- package/web-app/dist/assets/{loader-circle-DyGbrEgd.js → loader-circle-3gosTei9.js} +1 -1
- package/web-app/dist/assets/{lock-BKPpyt20.js → lock-CZZMxP0U.js} +1 -1
- package/web-app/dist/assets/{package-egF5Wi4y.js → package-C5A8CkJr.js} +1 -1
- package/web-app/dist/assets/{plus-OiEgKIc-.js → plus-Btv7tTIF.js} +1 -1
- package/web-app/dist/assets/{refresh-cw-CzKvrONq.js → refresh-cw-DsWLXgs_.js} +1 -1
- package/web-app/dist/assets/{rotate-ccw-Bu2mII0p.js → rotate-ccw-DOVDjway.js} +1 -1
- package/web-app/dist/assets/{scroll-text-CSkiyax8.js → scroll-text-smySzlrX.js} +1 -1
- package/web-app/dist/assets/{server-DlPthJFw.js → server-b5PHsqAU.js} +1 -1
- package/web-app/dist/assets/{shield-alert-CbpHWQQX.js → shield-alert-BD7FDlh-.js} +1 -1
- package/web-app/dist/assets/{thumbs-up-DgGpZe-Q.js → thumbs-up-CAsFzbyE.js} +1 -1
- package/web-app/dist/assets/{trash-2-BV3GlCB-.js → trash-2-BJ35qHgl.js} +1 -1
- package/web-app/dist/assets/{trending-down-Y4TJtXhD.js → trending-down-Ozrd26cZ.js} +1 -1
- package/web-app/dist/assets/{trending-up-DsDNoHZY.js → trending-up-BhnMcM32.js} +1 -1
- package/web-app/dist/assets/{upload-gkThrc_I.js → upload-JVHfdwoA.js} +1 -1
- package/web-app/dist/assets/{usePolling-jpNSeNAe.js → usePolling-CTzbDV-e.js} +1 -1
- package/web-app/dist/assets/{user-3Zez1WOK.js → user-Bks3-GYv.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
- package/packages/control-plane/ui/dist/assets/index-DcBJXjCJ.js +0 -190
package/docs/metrics.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Metrics Guide
|
|
2
2
|
|
|
3
|
-
Prometheus and OpenMetrics monitoring for Loki Mode
|
|
3
|
+
Prometheus and OpenMetrics monitoring for Loki Mode.
|
|
4
4
|
|
|
5
5
|
## Overview
|
|
6
6
|
|
|
@@ -15,28 +15,28 @@ Loki Mode exposes a `/metrics` endpoint that returns production-ready metrics in
|
|
|
15
15
|
|
|
16
16
|
## Quick Start
|
|
17
17
|
|
|
18
|
-
The
|
|
19
|
-
Start the
|
|
18
|
+
The metrics endpoint is served by the Control Plane and needs no enabling flag.
|
|
19
|
+
Start the Control Plane and scrape it.
|
|
20
20
|
|
|
21
21
|
```bash
|
|
22
|
-
# Start the
|
|
23
|
-
loki
|
|
22
|
+
# Start the Control Plane (serves /v1/metrics, and /metrics for older scrapers)
|
|
23
|
+
loki control serve
|
|
24
24
|
|
|
25
25
|
# View metrics
|
|
26
|
-
curl http://
|
|
26
|
+
curl http://127.0.0.1:47821/v1/metrics
|
|
27
27
|
|
|
28
|
-
# Or use CLI
|
|
29
|
-
loki metrics
|
|
28
|
+
# Or use the CLI session report
|
|
29
|
+
loki report metrics
|
|
30
30
|
```
|
|
31
31
|
|
|
32
32
|
## Metrics Endpoint
|
|
33
33
|
|
|
34
34
|
```
|
|
35
|
-
GET http://
|
|
35
|
+
GET http://127.0.0.1:47821/v1/metrics
|
|
36
36
|
Content-Type: text/plain; version=0.0.4
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
-
Returns metrics in OpenMetrics text format.
|
|
39
|
+
Returns metrics in OpenMetrics text format. Without `LOKI_CONTROL_TOKEN` the endpoint answers loopback requests only (403 otherwise); with a token set, send it as a bearer token.
|
|
40
40
|
|
|
41
41
|
## Available Metrics
|
|
42
42
|
|
|
@@ -121,19 +121,15 @@ Metrics are derived from `.loki/` flat files:
|
|
|
121
121
|
## CLI Usage
|
|
122
122
|
|
|
123
123
|
```bash
|
|
124
|
-
# Fetch all metrics
|
|
125
|
-
|
|
124
|
+
# Fetch all metrics from a running Control Plane
|
|
125
|
+
curl -s http://127.0.0.1:47821/v1/metrics
|
|
126
126
|
|
|
127
|
-
# Filter
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
# Watch metrics in real-time
|
|
131
|
-
watch -n 5 loki metrics
|
|
132
|
-
|
|
133
|
-
# Custom dashboard host/port
|
|
134
|
-
loki metrics --host 192.168.1.100 --port 8080
|
|
127
|
+
# Filter one metric
|
|
128
|
+
curl -s http://127.0.0.1:47821/v1/metrics | grep loki_cost_usd
|
|
135
129
|
```
|
|
136
130
|
|
|
131
|
+
`loki report metrics` is a separate session productivity report, not the Prometheus text.
|
|
132
|
+
|
|
137
133
|
## Prometheus Configuration
|
|
138
134
|
|
|
139
135
|
### Basic Scrape Config
|
|
@@ -145,7 +141,7 @@ scrape_configs:
|
|
|
145
141
|
- job_name: 'loki-mode'
|
|
146
142
|
scrape_interval: 15s
|
|
147
143
|
static_configs:
|
|
148
|
-
- targets: ['
|
|
144
|
+
- targets: ['127.0.0.1:47821']
|
|
149
145
|
labels:
|
|
150
146
|
environment: 'production'
|
|
151
147
|
project: 'my-app'
|
|
@@ -160,7 +156,7 @@ scrape_configs:
|
|
|
160
156
|
tls_config:
|
|
161
157
|
insecure_skip_verify: true # For self-signed certs
|
|
162
158
|
static_configs:
|
|
163
|
-
- targets: ['
|
|
159
|
+
- targets: ['127.0.0.1:47821']
|
|
164
160
|
```
|
|
165
161
|
|
|
166
162
|
### With Authentication (via reverse proxy)
|
|
@@ -190,7 +186,7 @@ scrape_configs:
|
|
|
190
186
|
regex: loki-mode
|
|
191
187
|
- source_labels: [__meta_kubernetes_pod_ip]
|
|
192
188
|
target_label: __address__
|
|
193
|
-
replacement: $1:
|
|
189
|
+
replacement: $1:47821
|
|
194
190
|
```
|
|
195
191
|
|
|
196
192
|
## Grafana Integration
|
|
@@ -287,7 +283,7 @@ Create `/etc/datadog-agent/conf.d/openmetrics.d/loki_mode.yaml`:
|
|
|
287
283
|
|
|
288
284
|
```yaml
|
|
289
285
|
instances:
|
|
290
|
-
- prometheus_url: http://
|
|
286
|
+
- prometheus_url: http://127.0.0.1:47821/v1/metrics
|
|
291
287
|
namespace: loki
|
|
292
288
|
metrics:
|
|
293
289
|
- loki_session_status
|
|
@@ -394,15 +390,10 @@ Configure alerts in Grafana panels:
|
|
|
394
390
|
|
|
395
391
|
## Environment Variables
|
|
396
392
|
|
|
397
|
-
There are none
|
|
398
|
-
(`
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
code, so the endpoint cannot be turned off, moved, or re-pathed by environment.
|
|
402
|
-
|
|
403
|
-
To change the port, change the dashboard port. To restrict access, put the
|
|
404
|
-
dashboard behind a reverse proxy: unlike the `/api/*` routes, `/metrics` has no
|
|
405
|
-
auth scope dependency, so anything that can reach the port can read it.
|
|
393
|
+
There are none specific to metrics. The endpoint follows the Control Plane
|
|
394
|
+
port (`LOKI_CONTROL_PORT`, default 47821) and its token (`LOKI_CONTROL_TOKEN`).
|
|
395
|
+
`LOKI_METRICS_ENABLED`, `LOKI_METRICS_PORT` and `LOKI_METRICS_PATH` are not read
|
|
396
|
+
by any code.
|
|
406
397
|
|
|
407
398
|
## Best Practices
|
|
408
399
|
|
|
@@ -434,19 +425,13 @@ auth scope dependency, so anything that can reach the port can read it.
|
|
|
434
425
|
### Metrics Endpoint Returns Empty
|
|
435
426
|
|
|
436
427
|
```bash
|
|
437
|
-
# Check LOKI_METRICS_ENABLED is set
|
|
438
|
-
echo $LOKI_METRICS_ENABLED
|
|
439
|
-
|
|
440
|
-
# Verify LOKI_DIR is set (required for dashboard)
|
|
441
|
-
echo $LOKI_DIR
|
|
442
|
-
|
|
443
428
|
# Check dashboard-state.json exists and is updating
|
|
444
429
|
ls -la .loki/dashboard-state.json
|
|
445
430
|
watch -n 2 cat .loki/dashboard-state.json
|
|
446
431
|
|
|
447
|
-
# Check
|
|
448
|
-
loki
|
|
449
|
-
curl http://
|
|
432
|
+
# Check the Control Plane is running
|
|
433
|
+
loki control status
|
|
434
|
+
curl http://127.0.0.1:47821/health
|
|
450
435
|
```
|
|
451
436
|
|
|
452
437
|
### Metrics Show Zero Values
|
|
@@ -468,27 +453,24 @@ ls -la .loki/events.jsonl
|
|
|
468
453
|
### Connection Refused
|
|
469
454
|
|
|
470
455
|
```bash
|
|
471
|
-
# Verify
|
|
472
|
-
curl http://
|
|
473
|
-
|
|
474
|
-
# Check if another process is using port 57374
|
|
475
|
-
lsof -ti:57374
|
|
456
|
+
# Verify the Control Plane is running on the expected port
|
|
457
|
+
curl http://127.0.0.1:47821/health
|
|
458
|
+
loki control status
|
|
476
459
|
|
|
477
|
-
#
|
|
478
|
-
loki
|
|
479
|
-
loki dashboard start
|
|
460
|
+
# Start it (an explicit --port never falls back to another port)
|
|
461
|
+
loki control serve --port 47821
|
|
480
462
|
```
|
|
481
463
|
|
|
482
464
|
### Prometheus Cannot Scrape
|
|
483
465
|
|
|
484
466
|
```bash
|
|
485
467
|
# Test endpoint manually
|
|
486
|
-
curl http://
|
|
468
|
+
curl http://127.0.0.1:47821/v1/metrics
|
|
487
469
|
|
|
488
470
|
# Check Prometheus targets page
|
|
489
471
|
open http://prometheus-server:9090/targets
|
|
490
472
|
|
|
491
|
-
# Verify network connectivity from Prometheus to
|
|
473
|
+
# Verify network connectivity from Prometheus to the Control Plane
|
|
492
474
|
# (firewall, security groups, etc.)
|
|
493
475
|
|
|
494
476
|
# Check Prometheus logs
|
|
@@ -503,7 +485,7 @@ kubectl logs -f prometheus-server-xyz
|
|
|
503
485
|
# Set up budget alert
|
|
504
486
|
cat > /tmp/budget_check.sh <<'EOF'
|
|
505
487
|
#!/bin/bash
|
|
506
|
-
COST=$(curl -s http://
|
|
488
|
+
COST=$(curl -s http://127.0.0.1:47821/v1/metrics | grep loki_cost_usd | awk '{print $2}')
|
|
507
489
|
if (( $(echo "$COST > 4.5" | bc -l) )); then
|
|
508
490
|
echo "CRITICAL: Cost $COST exceeds budget!"
|
|
509
491
|
loki stop
|
|
@@ -522,7 +504,7 @@ import requests
|
|
|
522
504
|
import json
|
|
523
505
|
|
|
524
506
|
def get_loki_metrics():
|
|
525
|
-
response = requests.get("http://
|
|
507
|
+
response = requests.get("http://127.0.0.1:47821/v1/metrics")
|
|
526
508
|
metrics = {}
|
|
527
509
|
for line in response.text.splitlines():
|
|
528
510
|
if line.startswith("loki_"):
|
|
@@ -553,6 +535,6 @@ EOF
|
|
|
553
535
|
## See Also
|
|
554
536
|
|
|
555
537
|
- [Audit Logging](audit-logging.md) - Track agent actions
|
|
556
|
-
- [
|
|
538
|
+
- [Control Plane](control-plane-migration.md) - The local UI and `/v1/*` API
|
|
557
539
|
- [Enterprise Features](../wiki/Enterprise-Features.md) - Complete enterprise guide
|
|
558
540
|
- [Prometheus Metrics](../wiki/Prometheus-Metrics.md) - Detailed wiki documentation
|
package/docs/network-security.md
CHANGED
package/docs/siem-integration.md
CHANGED
|
@@ -21,7 +21,7 @@ Supported SIEM platforms:
|
|
|
21
21
|
- LogRhythm
|
|
22
22
|
- SumoLogic
|
|
23
23
|
|
|
24
|
-
## Syslog Forwarding
|
|
24
|
+
## Syslog Forwarding
|
|
25
25
|
|
|
26
26
|
### Enable Syslog
|
|
27
27
|
|
|
@@ -108,7 +108,7 @@ spec, so events cannot break the record framing. Failed events
|
|
|
108
108
|
(`success: false`) are elevated to severity 8.
|
|
109
109
|
|
|
110
110
|
```
|
|
111
|
-
CEF:0|Autonomi|Loki Mode|
|
|
111
|
+
CEF:0|Autonomi|Loki Mode|X.Y.Z|revoke_token|revoke_token|8|rt=2026-02-15T14:30:00.000Z suser=alice src=10.0.0.4 cs1=token cs1Label=resourceType outcome=failure msg=expired credential loki.provider=claude loki.cost=4.25
|
|
112
112
|
```
|
|
113
113
|
|
|
114
114
|
Nested `details` are flattened under the `loki.` namespace. Standard CEF keys
|
|
@@ -326,7 +326,7 @@ export LOKI_CEF_VENDOR=Autonomi
|
|
|
326
326
|
export LOKI_CEF_PRODUCT="Loki Mode"
|
|
327
327
|
|
|
328
328
|
# CEF message example:
|
|
329
|
-
# CEF:0|Autonomi|Loki Mode|
|
|
329
|
+
# CEF:0|Autonomi|Loki Mode|X.Y.Z|session.start|Session Started|3|
|
|
330
330
|
# rt=2026-02-15T14:30:00Z suser=user cs1=claude cs1Label=Provider
|
|
331
331
|
```
|
|
332
332
|
|
|
@@ -428,13 +428,13 @@ Notifications: PagerDuty, Slack #incidents
|
|
|
428
428
|
### CEF (Common Event Format)
|
|
429
429
|
|
|
430
430
|
```
|
|
431
|
-
CEF:0|Autonomi|Loki Mode|
|
|
431
|
+
CEF:0|Autonomi|Loki Mode|X.Y.Z|session.start|Session Started|3|rt=2026-02-15T14:30:00Z suser=user cs1=claude cs1Label=Provider
|
|
432
432
|
```
|
|
433
433
|
|
|
434
434
|
### LEEF (Log Event Extended Format)
|
|
435
435
|
|
|
436
436
|
```
|
|
437
|
-
LEEF:1.0|Autonomi|Loki Mode|
|
|
437
|
+
LEEF:1.0|Autonomi|Loki Mode|X.Y.Z|session.start|devTime=2026-02-15T14:30:00Z usrName=user provider=claude
|
|
438
438
|
```
|
|
439
439
|
|
|
440
440
|
## Event Correlation
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Spec-first intent
|
|
2
|
+
|
|
3
|
+
The intent card (`LOKI_INTENT_CARD`, `LOKI_CONFIRM`) shows what the plan model thinks you want and the acceptance checks it will hold itself to. Spec-first intent turns those checks into a file you can edit before any code is written.
|
|
4
|
+
|
|
5
|
+
## Flow
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
loki plan "add search ranking" --spec # or: loki start --spec-first "add search ranking"
|
|
9
|
+
# edit .loki/specs/add-search-ranking.md
|
|
10
|
+
loki start --spec .loki/specs/add-search-ranking.md
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
1. `loki plan <task> --spec` runs one model session. The model writes the intent sentence and 2 to 6 criteria as JSON; the engine checks that JSON against a schema and renders `.loki/specs/<slug>.md`. The model never writes the markdown itself. An existing spec is never overwritten unless you pass `--force`.
|
|
14
|
+
2. You edit the file. Keep the marker comment on line 1 and the three headings (`## Task`, `## Intent`, `## Acceptance criteria`). Task lines start with `> `; criteria are `- ` bullets.
|
|
15
|
+
3. `loki start --spec FILE` parses the file and treats it as the authoritative intent: the implement brief carries the intent and every criterion, and wins over the task text where they differ. A positional task, if given, replaces the task text but not the spec.
|
|
16
|
+
|
|
17
|
+
## Refusals
|
|
18
|
+
|
|
19
|
+
A spec that does not parse exits 2 before any run state is created, naming the file and line, for example `engine10: .loki/specs/a.md: line 14: criteria must be bullet lines starting with "- "`. `--spec` and `--spec-first` cannot be combined.
|
|
20
|
+
|
|
21
|
+
## Evidence
|
|
22
|
+
|
|
23
|
+
- The receipt gains an additive `spec` block: `{ "path": ".loki/specs/<slug>.md", "sha256": "<hex>" }`. The hash covers the exact bytes the run started from (the engine snapshots them into the run directory), so later edits to the file do not change what the receipt vouches for. Runs without `--spec` have no `spec` key and their receipt hashes are unchanged.
|
|
24
|
+
- The PR body gains a `Spec:` line linking the file with the first 12 hex characters of its hash, next to the `## Intent` section.
|
|
25
|
+
|
|
26
|
+
## Unchanged without the flags
|
|
27
|
+
|
|
28
|
+
Without `--spec` or `--spec-first`, `loki plan` stays on its existing route, `loki start` behaves as before, and the plan and implement briefs are byte-identical (pinned by golden fixtures in `loki-ts/tests/engine10/fixtures`).
|
package/docs/v10/CLI-MODERN.md
CHANGED
|
@@ -6,12 +6,12 @@ Classes: KEEP-MODERN (v10-native or engine-neutral), UPDATE (live but needs mode
|
|
|
6
6
|
|
|
7
7
|
## Counts
|
|
8
8
|
|
|
9
|
-
- KEEP-MODERN:
|
|
9
|
+
- KEEP-MODERN: 64
|
|
10
10
|
- UPDATE: 22
|
|
11
11
|
- DROP-LEGACY: 31
|
|
12
12
|
- DELETE: 14
|
|
13
|
-
- Total rows:
|
|
14
|
-
- Registry paths (commands and nested subcommands):
|
|
13
|
+
- Total rows: 131
|
|
14
|
+
- Registry paths (commands and nested subcommands): 181
|
|
15
15
|
|
|
16
16
|
## Commands
|
|
17
17
|
|
|
@@ -35,6 +35,10 @@ Classes: KEEP-MODERN (v10-native or engine-neutral), UPDATE (live but needs mode
|
|
|
35
35
|
| contract | loki-ts/src/cli.ts | KEEP-MODERN | v10 delivery contract |
|
|
36
36
|
| start | bun route, bash fallthrough | UPDATE | Forks between v10 and the SDK loop; flags still legacy-shaped |
|
|
37
37
|
| slack | loki-ts/src/cli.ts | KEEP-MODERN | Bun-native integration |
|
|
38
|
+
| queue | loki-ts/src/cli.ts | KEEP-MODERN | Governor-aware batch of issue-mode runs |
|
|
39
|
+
| issues | loki-ts/src/cli.ts | KEEP-MODERN | Mass issue pickup on the T7 queue |
|
|
40
|
+
| undo | loki-ts/src/cli.ts | KEEP-MODERN | UNDO-1/2: --plan is read-only, apply behind LOKI_UNDO=1 |
|
|
41
|
+
| verify-pr | loki-ts/src/cli.ts | KEEP-MODERN | VPR-2: fail-to-pass check, LOKI_VERIFY_PR=1 |
|
|
38
42
|
| answer | loki-ts/src/cli.ts | KEEP-MODERN | v10 blocked-run flow |
|
|
39
43
|
| engine10 | loki-ts/src/cli.ts | KEEP-MODERN | The v10 engine |
|
|
40
44
|
| internal (hidden) | loki-ts/src/cli.ts | KEEP-MODERN | Hidden plumbing |
|
package/docs/v10/DECISIONS.md
CHANGED
|
@@ -733,3 +733,62 @@ PROGRESS.md (the FC-25 P9 entry) cites a D88 CI waiver that was never recorded i
|
|
|
733
733
|
Amendment to D89 (2026-10-07 21:40Z, CTO decision, refined by the founder at 21:45Z, CoS records). This amends only R1-19, the default-on flip that follows the CTO gate; 11.1.0 and 11.2.0 still ship the router OFF. (1) The default executor is Sonnet 5.5; Haiku 5.5 per work unit when Opus assigns it. (2) Roles: Opus 5.5 is the architect, router and advisor, plans and assigns each unit, and is consulted on hard calls. Sonnet is the senior engineer and the default for implementation and fixes. Haiku does tests, docs and small low-risk changes only when Opus assigns them in the plan. Haiku is never the blanket default. (3) L0 holds: the harness never routes by task type or path regex; it only executes, verifies and escalates. (4) The route schema is `units: [{id, kind, executor, reason}]` plus a run default of sonnet; a missing or invalid unit route goes to sonnet with NOT PROVEN. A haiku unit that fails a code-owned check is redone on sonnet, then escalates to opus; a Wall assigned to haiku gets an Opus review before implement. The receipt lists the executor, assigner and reason per unit. The per-unit schema lands in 11.2.0 or 11.2.1 depending on what is merged. (5) Escalation stays evidence-gated (haiku -> sonnet -> opus, and sonnet -> opus), and `LOKI_ROUTER=0` equals pre-router behavior exactly (the R1-21 golden). (6) The R1-16 shape-defaults semantics are inverted (a shape is listed as `haiku` once it has earned it; an absent listing means Sonnet), and R1-16 history is an input to Opus, not a harness rule. Rationale: a wrong PR costs the user far more than the token savings, B9 covers only about 5 of 14 shapes (item 10), and under L0 a model earns the cheaper tier with evidence. Items 3, 5, 7 and 9 above are read with this amendment; their text is kept as recorded. See docs/v11/ROUTER-1.md sections 4.1, 4.3 and 4.6.
|
|
734
734
|
|
|
735
735
|
Amendment 2 to D89 (2026-10-08 00:15Z, steering finding, CoS records; tightens a gate, so it binds until the CTO relaxes it). R1-19 gains one more gate line: on the trivial fixture (the steering Node off-by-one fixture), router-on cost must be <= router-off cost x 1.05, measured with n>=3 per arm and recorded per arm as cache-read input tokens, fresh input tokens, output tokens, dollars and wall time (R1-17 B9). Evidence that prompted it (n=1, may be variance): 11.2.0 smoke, router on cost +15% tokens, +27% dollars and +38s with zero advisor calls and no route change. If the advisor tool definition costs tokens on sessions that never consult it, the advisor is enabled only on the sessions Opus marks as needing it (plan and fix rounds), not on every stage. Measure before changing code.
|
|
736
|
+
|
|
737
|
+
## D90 (2026-10-08, founder directive, CoS records; CTO approved): the push and release gate is the fast gate, full suites run nightly
|
|
738
|
+
Founder directive, verbatim: "why tests take 15 to 20min? cut it down to only needed ones and keep only less than 2min total in git".
|
|
739
|
+
|
|
740
|
+
1. This supersedes D55 for the release gate. D55 required a full Tier B verdict on the exact tree of every main commit. The blocking gate on slice-*, train/**, main and PRs (test.yml, name "Tests") is now: tsc plus the dist build once (reused as an artifact), the moat P9 case only (tests/moat/p9-rule-of-two.sh, with every registered P9 id required to PASS), the structural guards, and the impacted bun and shell suites selected from the diff since the last release tag by scripts/ci/fast-gate.sh (it wraps scripts/select-tests.sh and adds path-to-guard mapping for the paths the selector sends to R0: workflows, Dockerfiles, package manifests, tests/lib, dist, VERSION). Shards are packed to stay under 90s each.
|
|
741
|
+
2. Fail safe: if the diff cannot be computed, the planner selects the FULL set (test.yml calls full-suite.yml).
|
|
742
|
+
3. Deferral: any selected suite estimated over 80s (from tests/shard-durations.tsv) is not run in the push gate; it is listed in deferred.tsv and covered by the nightly.
|
|
743
|
+
4. Backstop: full-suite.yml (all 8 shell shards, full bun, python matrix, helm, Node 20/24, the full moat registry) runs from nightly.yml on a schedule and by workflow_dispatch. It is non-blocking for the push. A red nightly opens a FAILURE-CLASSES fix slice and blocks the NEXT release: release.yml required-ci fails while the latest completed nightly on main is red and newer than the previous release tag, until a newer nightly is green. The block fails closed if the API cannot be read.
|
|
744
|
+
5. Removed as duplicates: tier-a.yml (its job is now the fast gate in test.yml, same triggers), first-run-gate.yml (moved to a continue-on-error job in nightly.yml; promote.yml and the post-release smoke already run an installed first-run check), and tests/test-tier-a-r0-timeout-budget.sh (its workflow no longer exists).
|
|
745
|
+
6. Release: publish-npm packs once, verifies the PACKED tarball, uploads it and publishes that tarball with no second prepack build; the registry-visibility wait is its own job (npm-visible) so the publish job ends when the publish does. Post-Release Smoke npm leg shrinks to a fresh install plus loki version plus the doctor assertion with a short backoff.
|
|
746
|
+
7. Not done here, tracked as deferred: publishing the tarball built by the Tests run across workflows, the stubbed-run smoke step, and the full moat registry ratchet in the push gate (kept nightly).
|
|
747
|
+
8. Risks accepted: selected tests are an estimate of impact, not proof; the nightly is the proof, and the NEXT release pays for a miss. Timings are estimates until measured on push.
|
|
748
|
+
|
|
749
|
+
## D91 (2026-10-08, founder directive relayed by the CTO at 04:35Z, CoS records): releases by clock, continuous merge, hotspot registries
|
|
750
|
+
Founder directive, verbatim: "faster faster, increase velocity and releases and feature count in each release and updates/enhancements/bug-fixes in each release, strategize and steer that way".
|
|
751
|
+
|
|
752
|
+
1. Releases by clock, not scope (amends D25 and D37). From 11.3.2 on, the Release Manager cuts a release every 45 minutes from whatever is approved and green on main. No cut waits for a slice; a slice that misses a cut takes the next one. Each release targets at least 3 user-visible features plus at least 5 enhancements or fixes, with a user-facing CHANGELOG. A cut short of that target still ships what is green; the shortfall is recorded in METRICS.md and the backlog is refilled.
|
|
753
|
+
2. Continuous merge to main. An approved slice rebases and merges right away behind tsc, its impacted tests, the always-run global guards and moat P9. Long-lived train branches end after 11.3.1. Risky features merge flag-gated and default off, never held.
|
|
754
|
+
3. Hotspot registries (pure refactor, goldens byte-identical). The seal verdict chain, the PR body, the supervisor start line, plan output and start dispatch each become a registry of contributors, so a new feature adds one file plus one registry line. One Opus architect plus 2 engineers own it.
|
|
755
|
+
4. Pipeline budget: push to npm latest under 10 minutes; publish-npm under 1 minute; smoke plus promote under 3 minutes. Measured on every release and reported to steering.
|
|
756
|
+
5. Backlog: at least 30 specced ready slices at all times, split evenly between features, enhancements and fixes, each with acceptance tests. Seat cap 14 while weekly usage is under 50%.
|
|
757
|
+
6. Dogfood: once MASS-1 ships, Loki runs `loki issues run --label bug --draft` against asklokesh/loki-mode's own issues; each VERIFIED PR is a candidate fix for the next cut, reviewed like any slice.
|
|
758
|
+
7. Host: local gates are tsc, impacted tests and global guards; remote CI is the authority. Worktrees stay under 40, pruned by recorded path on every merge (never by timestamp).
|
|
759
|
+
8. Reviews keep the bar (D12/D13) and run in pair mode for every HIGH slice: the reviewer reviews live as commits land, not serially after the build. Unchanged: moat > Seal accuracy, a moat regression still blocks a cut (it is never waived by the clock), and Tier B on the release SHA is still required (D90).
|
|
760
|
+
9. Amendments relayed by steering, 04:40Z to 04:55Z. The cadence drops to 30 minutes once CI-FAST is live (from 11.3.2), and each cut carries 3+ features and 8+ enhancements or fixes. The seat cap rises to 20 once the hotspot registries land. Acceptance-first: an Opus-written acceptance test is committed before the code of every feature slice. Real-run harness: `scripts/real-run.sh <scenario>` installs the packed tarball into a temp prefix and asserts on receipt.json plus the console contract; Post-Release Smoke runs trivial-sum. Finding-to-guard: every review finding becomes an FC row plus an automated guard test.
|
|
761
|
+
10. 10x rule. Each release names one headline metric measured 10x better than a named competitor baseline, and publishes it only when measured: 11.3.2 unattended throughput (MASS-1), 11.3.3 cost per verified fix, 11.3.4 human review time, 11.3.5 babysitting interventions, 11.3.6 time to first verified PR.
|
|
762
|
+
11. COST-HALF. Loki's dollars per VERIFIED task must be at most 0.5x raw `claude -p` on the B9 set (n>=3, with intervals), measured and published every release. Levers: one warm session, model-decided stage skipping (verify and seal never skip), per-unit Haiku, the advisor only where Opus marks it, a context diet under 100K, a byte-identical cache prefix with a test, and harness prefetch of the repomap, test command and failing output. B9 gains a raw arm and a loki arm.
|
|
763
|
+
|
|
764
|
+
## D92 (2026-10-08, founder directive relayed by steering at 05:00Z, CoS records): 40x efficiency in 12 hours
|
|
765
|
+
Founder directive, verbatim: "research and update all things in loki mode per latest docs, features, updates in the industry, latest standards and much better ways of doing things so our efficiency increases by 40 times overall by tomorrow morning, all should complete in 12hrs, run everything like a software company including researchers and scientists ... consider us to become the best for next 5yrs right now".
|
|
766
|
+
|
|
767
|
+
1. Definition: EFFICIENCY = verified tasks / (dollars x wall-minutes x human-minutes), measured with B9 raw-vs-loki on a fixed set (trivial-sum, two-bug, one medium real issue, a 10-issue mass run). Baseline is 11.3.1, measured the moment it ships. Target by about 17:00Z: 40x, as a product of factors (about 2x cost, 2x wall time, 10x human-minutes), each reported separately in METRICS.md every release.
|
|
768
|
+
2. Organization: a research division (paper-scout, docs-scout, market-scout; Opus with web access) feeds slice specs through steering. Engineering programs with named owners: COST-HALF, SPEED, HUMAN-TIME, REGISTRIES, ACCURACY, PLATFORM-UPDATE, STANDARDS. One measurement owner runs the B9 raw arm and the 40x scoreboard script. Seat cap 20 while weekly usage is under 50%.
|
|
769
|
+
3. Cadence and bar: a release every 30 minutes once CI-FAST is live, each with 3+ features, 8+ fixes or enhancements and a scoreboard row. A moat regression blocks a cut, P9 is never waived, and nothing unmeasured is claimed.
|
|
770
|
+
|
|
771
|
+
## D93 (2026-10-08, CTO amendment relayed by the CoS, Architect records): the router plan becomes a routing call; the full plan is conditional
|
|
772
|
+
Amends FC-35 (the router-on plan no longer skips small tasks) and D89 Amendment 2 for COST-HALF (D91 item 11).
|
|
773
|
+
|
|
774
|
+
1. Under LOKI_ROUTER=1, Opus ALWAYS makes the routing decision, as one short structured-output call: cache-stable prefix (COST-HALF CP-01), effort low, output {size: trivial|small|medium|large, units[], needs_full_plan: bool}. Measured target cost: under $0.01 per run.
|
|
775
|
+
2. The full Opus plan session runs only when needs_full_plan is true. Trivial and small tasks go straight to the routed executor on the lean path.
|
|
776
|
+
3. One plan gate. The implement session's LOKI_NEED_PLAN marker is a second input to the same gate: it can raise it (plan runs once, implement resumes), never lower it. With the router off, the gate's inputs are the marker and the Project Model. The receipt records the reason: route_call, marker, project_model or skipped.
|
|
777
|
+
4. FC-35 R-B holds unchanged: always emit a route or a recorded reason. A failed, timed-out or malformed routing call writes routed:false with the reason to route.json and runs the full plan as before (fail-safe toward more planning, never less). Wall, verify, commit, seal and pr never skip.
|
|
778
|
+
5. Measurement gate: the B9 row on trivial-sum shows the routing call below 10% of total run cost (n>=3), and router-on cost at most 1.05x router-off (D89 Amendment 2). Router-off output stays byte-identical with the flags off.
|
|
779
|
+
6. Slices: COST-HALF LD-01 (gate plus routing call) and LD-02 (marker as a late input), HIGH tier.
|
|
780
|
+
|
|
781
|
+
## D94 (2026-10-08, CTO ruling relayed by the CoS): main holds the last pushed release until npm has it; RG-06 contrib cap
|
|
782
|
+
1. Main stays at the last pushed release commit until that version is on npm. Later approved slices merge onto a train branch (train-<version>), which fast-forwards or merges into main only after the cut is published. Origin: 11.3.2 train merges sat on main while 11.3.1 was blocked on a red nightly (NIGHTLY-BLOCK), which forced a cherry-pick-only push.
|
|
783
|
+
2. Line budgets are never raised to admit a feature. Overflow is extracted along docs/v11/REGISTRIES.md.
|
|
784
|
+
3. RG-06 approved: loki-ts/src/contrib/ with a 1200-line cap and the D66 import rules. Binding guards: core (engine10) never imports contrib; each contrib module is optional (deleting one leaves core compiling and flag-off goldens unchanged); no verdict logic in contrib (D42); the cap failure lists per-file line counts.
|
|
785
|
+
|
|
786
|
+
## D96 (2026-10-08, founder directive relayed by steering at 17:45Z, CoS records): every approved slice is a release; next by merge, latest by promotion
|
|
787
|
+
Founder: "you are taking hours long for releases, I wanted 3 releases to 10 releases per hour ... release asap to accommodate that many". Supersedes D94 point 1 (trains) and the D91 clock cut; D90 moves from publish to promotion. D94 points 2 and 3 stand.
|
|
788
|
+
1. A slice that passes merge-gate merges straight to main, and main publishes a PATCH to npm `next` within 15 minutes. There are no trains and no batching. Target: 3 or more releases per hour, 10 when the queue allows.
|
|
789
|
+
2. `next` gate (budget 10 min from push to npm): tsc, impacted tests plus always-run guards, moat P9 (never waived), dist guard, pack smoke.
|
|
790
|
+
3. `latest` is promotion only, never a separate build. promote.yml moves `latest` to the newest `next` version whose SHA, or a descendant of it, has a green full-suite backstop and a green Post-Release Smoke. The backstop runs on main HEAD every 60 minutes. A red backstop blocks promotion, not publishing, and opens a P0 fix slice within the hour.
|
|
791
|
+
4. Pipeline: the workflow bumps the version on push to main (no human bump), CHANGELOG lines come from slice cards and verdicts, the backstop runs hourly, and promotion is driven by a green backstop. Every existing release guard stays: never-backwards, the gitHead stamp, the release-actor tag check. First slice: D96-GATE (move the red-nightly block from release.yml to promote.yml).
|
|
792
|
+
5. Slices are 20-40 minutes of build, one concern, with a user-visible line on the card. Large features ship as a sequence of small flag-gated slices.
|
|
793
|
+
6. HIGH reviews run in pair mode. A TL reviews LOW and MEDIUM with the machine gate, and merge-gate is the hard check. There is no serial review queue.
|
|
794
|
+
7. Every tick reports merge-to-`next` minutes for each release and releases per hour.
|
package/docs/v10/DEPS.md
CHANGED
|
@@ -151,9 +151,16 @@ Inventory only. No dependency, lockfile, workflow or image was changed to produc
|
|
|
151
151
|
| `.github/workflows/coverage.yml` | `oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6` | `0c5077e51419868618aeaa5fe8019c62421857d6 # v2` | `v2.2.0` | minor | SHA-pinned |
|
|
152
152
|
| `.github/workflows/coverage.yml` | `actions/setup-python@v5` | `v5 (resolves to v5.6.0)` | `v7.0.0` | MAJOR | tag-pinned (not SHA-pinned); floating tag v5 resolves to v5.6.0 (commit a26af69be951), behind latest release v7.0.0 (commit 5fda3b95a4ea); action.yml declares `using: node20` -- this action IS the deprecated Node 20 runtime |
|
|
153
153
|
| `.github/workflows/coverage.yml` | `actions/upload-artifact@v4` | `v4 (resolves to v4.6.2)` | `v7.0.1` | MAJOR | tag-pinned (not SHA-pinned); floating tag v4 resolves to v4.6.2 (commit ea165f8d65b6), behind latest release v7.0.1 (commit 043fb46d1a93); action.yml declares `using: node20` -- this action IS the deprecated Node 20 runtime |
|
|
154
|
-
| `.github/workflows/
|
|
155
|
-
| `.github/workflows/
|
|
156
|
-
| `.github/workflows/
|
|
154
|
+
| `.github/workflows/docker-build-check.yml` | `actions/checkout@v4` | `v4 (resolves to v4.4.0)` | `v7.0.1` | MAJOR | tag-pinned (not SHA-pinned); floating tag v4 resolves to v4.4.0 (commit 11d5960a3267), behind latest release v7.0.1 (commit 3d3c42e5aac5); action.yml declares `using: node20` -- this action IS the deprecated Node 20 runtime |
|
|
155
|
+
| `.github/workflows/docker-build-check.yml` | `oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6` | `0c5077e51419868618aeaa5fe8019c62421857d6 # v2` | `v2.2.0` | minor | SHA-pinned |
|
|
156
|
+
| `.github/workflows/docker-build-check.yml` | `docker/setup-buildx-action@v3` | `v3 (resolves to v3.12.0)` | `v4.4.1` | MAJOR | tag-pinned (not SHA-pinned); floating tag v3 resolves to v3.12.0 (commit 8d2750c68a42), behind latest release v4.4.1 (commit f87e5991a6d7); action.yml declares `using: node20` -- this action IS the deprecated Node 20 runtime |
|
|
157
|
+
| `.github/workflows/docker-build-check.yml` | `docker/build-push-action@v5` | `v5 (resolves to v5.4.0)` | `v7.4.0` | MAJOR | tag-pinned (not SHA-pinned); floating tag v5 resolves to v5.4.0 (commit ca052bb54ab0), behind latest release v7.4.0 (commit c3c9e263c25d); action.yml declares `using: node20` -- this action IS the deprecated Node 20 runtime |
|
|
158
|
+
| `.github/workflows/full-suite.yml` | `actions/checkout@v4` | `v4 (resolves to v4.4.0)` | `v7.0.1` | MAJOR | tag-pinned (not SHA-pinned); floating tag v4 resolves to v4.4.0 (commit 11d5960a3267), behind latest release v7.0.1 (commit 3d3c42e5aac5); action.yml declares `using: node20` -- this action IS the deprecated Node 20 runtime |
|
|
159
|
+
| `.github/workflows/full-suite.yml` | `actions/setup-node@v4` | `v4 (resolves to v4.4.0)` | `v7.0.0` | MAJOR | tag-pinned (not SHA-pinned); floating tag v4 resolves to v4.4.0 (commit 49933ea5288c), behind latest release v7.0.0 (commit 820762786026); action.yml declares `using: node20` -- this action IS the deprecated Node 20 runtime |
|
|
160
|
+
| `.github/workflows/full-suite.yml` | `actions/setup-python@v5` | `v5 (resolves to v5.6.0)` | `v7.0.0` | MAJOR | tag-pinned (not SHA-pinned); floating tag v5 resolves to v5.6.0 (commit a26af69be951), behind latest release v7.0.0 (commit 5fda3b95a4ea); action.yml declares `using: node20` -- this action IS the deprecated Node 20 runtime |
|
|
161
|
+
| `.github/workflows/full-suite.yml` | `oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6` | `0c5077e51419868618aeaa5fe8019c62421857d6 # v2` | `v2.2.0` | minor | SHA-pinned |
|
|
162
|
+
| `.github/workflows/full-suite.yml` | `actions/cache@v4` | `v4 (resolves to v4.3.0)` | `v6.1.0` | MAJOR | tag-pinned (not SHA-pinned); floating tag v4 resolves to v4.3.0 (commit 0057852bfaa8), behind latest release v6.1.0 (commit 55cc8345863c); action.yml declares `using: node20` -- this action IS the deprecated Node 20 runtime |
|
|
163
|
+
| `.github/workflows/full-suite.yml` | `azure/setup-helm@v4` | `v4 (resolves to v4.3.1)` | `v5.0.1` | MAJOR | tag-pinned (not SHA-pinned); floating tag v4 resolves to v4.3.1 (commit 1a275c3b6953), behind latest release v5.0.1 (commit 9bc31f4ebc9c); action.yml declares `using: node20` -- this action IS the deprecated Node 20 runtime |
|
|
157
164
|
| `.github/workflows/integrity-audit.yml` | `actions/checkout@v4` | `v4 (resolves to v4.4.0)` | `v7.0.1` | MAJOR | tag-pinned (not SHA-pinned); floating tag v4 resolves to v4.4.0 (commit 11d5960a3267), behind latest release v7.0.1 (commit 3d3c42e5aac5); action.yml declares `using: node20` -- this action IS the deprecated Node 20 runtime |
|
|
158
165
|
| `.github/workflows/integrity-audit.yml` | `actions/setup-node@v4` | `v4 (resolves to v4.4.0)` | `v7.0.0` | MAJOR | tag-pinned (not SHA-pinned); floating tag v4 resolves to v4.4.0 (commit 49933ea5288c), behind latest release v7.0.0 (commit 820762786026); action.yml declares `using: node20` -- this action IS the deprecated Node 20 runtime |
|
|
159
166
|
| `.github/workflows/integrity-audit.yml` | `actions/setup-python@v5` | `v5 (resolves to v5.6.0)` | `v7.0.0` | MAJOR | tag-pinned (not SHA-pinned); floating tag v5 resolves to v5.6.0 (commit a26af69be951), behind latest release v7.0.0 (commit 5fda3b95a4ea); action.yml declares `using: node20` -- this action IS the deprecated Node 20 runtime |
|
|
@@ -210,10 +217,6 @@ Inventory only. No dependency, lockfile, workflow or image was changed to produc
|
|
|
210
217
|
| `.github/workflows/test.yml` | `oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6` | `0c5077e51419868618aeaa5fe8019c62421857d6 # v2` | `v2.2.0` | minor | SHA-pinned |
|
|
211
218
|
| `.github/workflows/test.yml` | `actions/cache@v4` | `v4 (resolves to v4.3.0)` | `v6.1.0` | MAJOR | tag-pinned (not SHA-pinned); floating tag v4 resolves to v4.3.0 (commit 0057852bfaa8), behind latest release v6.1.0 (commit 55cc8345863c); action.yml declares `using: node20` -- this action IS the deprecated Node 20 runtime |
|
|
212
219
|
| `.github/workflows/test.yml` | `azure/setup-helm@v4` | `v4 (resolves to v4.3.1)` | `v5.0.1` | MAJOR | tag-pinned (not SHA-pinned); floating tag v4 resolves to v4.3.1 (commit 1a275c3b6953), behind latest release v5.0.1 (commit 9bc31f4ebc9c); action.yml declares `using: node20` -- this action IS the deprecated Node 20 runtime |
|
|
213
|
-
| `.github/workflows/tier-a.yml` | `actions/checkout@v4` | `v4 (resolves to v4.4.0)` | `v7.0.1` | MAJOR | tag-pinned (not SHA-pinned); floating tag v4 resolves to v4.4.0 (commit 11d5960a3267), behind latest release v7.0.1 (commit 3d3c42e5aac5); action.yml declares `using: node20` -- this action IS the deprecated Node 20 runtime |
|
|
214
|
-
| `.github/workflows/tier-a.yml` | `actions/setup-python@v5` | `v5 (resolves to v5.6.0)` | `v7.0.0` | MAJOR | tag-pinned (not SHA-pinned); floating tag v5 resolves to v5.6.0 (commit a26af69be951), behind latest release v7.0.0 (commit 5fda3b95a4ea); action.yml declares `using: node20` -- this action IS the deprecated Node 20 runtime |
|
|
215
|
-
| `.github/workflows/tier-a.yml` | `oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6` | `0c5077e51419868618aeaa5fe8019c62421857d6 # v2` | `v2.2.0` | minor | SHA-pinned |
|
|
216
|
-
| `.github/workflows/tier-a.yml` | `actions/setup-node@v4` | `v4 (resolves to v4.4.0)` | `v7.0.0` | MAJOR | tag-pinned (not SHA-pinned); floating tag v4 resolves to v4.4.0 (commit 49933ea5288c), behind latest release v7.0.0 (commit 820762786026); action.yml declares `using: node20` -- this action IS the deprecated Node 20 runtime |
|
|
217
220
|
| `action.yml` | `actions/setup-node@v4` | `v4 (resolves to v4.4.0)` | `v7.0.0` | MAJOR | tag-pinned (not SHA-pinned); floating tag v4 resolves to v4.4.0 (commit 49933ea5288c), behind latest release v7.0.0 (commit 820762786026); action.yml declares `using: node20` -- this action IS the deprecated Node 20 runtime |
|
|
218
221
|
| `.github/actions/issue-to-pr/action.yml` | `(none found)` | `` | `-` | n/a | no `uses:` step found in this workflow/action file |
|
|
219
222
|
| `.github/actions/receipt-check/action.yml` | `(none found)` | `` | `-` | n/a | no `uses:` step found in this workflow/action file |
|
|
@@ -243,14 +246,12 @@ Node.js current stable: 26.10.0 (cycle 26); Python current stable: 3.14.8 (cycle
|
|
|
243
246
|
|
|
244
247
|
| File | Name | Current | Latest stable | Bump | Note |
|
|
245
248
|
|---|---|---|---|---|---|
|
|
246
|
-
| `Dockerfile` | `oven/bun:${BUN_VERSION}` | `oven/bun:${BUN_VERSION}` | `-` | unknown | floating tag or no endoflife.date product mapped for this image (own product image, or an unmapped base) |
|
|
247
|
-
| `Dockerfile` | `ubuntu:24.04` | `ubuntu:24.04` | `24.04.5 (newest line 26.04.1)` | MAJOR | EOL 2029-05-31 (not yet); patch in line; MAJOR to newest line |
|
|
248
|
-
| `Dockerfile.control-plane` | `oven/bun:${BUN_VERSION}` | `oven/bun:${BUN_VERSION}` | `-` | unknown | floating tag or no endoflife.date product mapped for this image (own product image, or an unmapped base) |
|
|
249
|
-
| `Dockerfile.control-plane` | `oven/bun:${BUN_VERSION}-slim` | `oven/bun:${BUN_VERSION}-slim` | `-` | unknown | floating tag or no endoflife.date product mapped for this image (own product image, or an unmapped base) |
|
|
250
|
-
| `Dockerfile.
|
|
251
|
-
| `Dockerfile.sandbox` | `debian:bookworm-slim` | `debian:bookworm-slim` | `12.15 (newest line 13.7)` | MAJOR | EOL 2028-06-30 (not yet); minor in line; MAJOR to newest line |
|
|
252
|
-
| `Dockerfile.sandbox` | `debian:bookworm-slim` | `debian:bookworm-slim` | `12.15 (newest line 13.7)` | MAJOR | EOL 2028-06-30 (not yet); minor in line; MAJOR to newest line |
|
|
253
|
-
| `Dockerfile.test-runner` | `python:3.12-slim` | `python:3.12-slim` | `3.12.15 (newest line 3.14.8)` | minor | EOL 2028-10-31 (not yet); patch in line; minor to newest line |
|
|
249
|
+
| `docker/Dockerfile` | `oven/bun:${BUN_VERSION}` | `oven/bun:${BUN_VERSION}` | `-` | unknown | floating tag or no endoflife.date product mapped for this image (own product image, or an unmapped base) |
|
|
250
|
+
| `docker/Dockerfile` | `ubuntu:24.04` | `ubuntu:24.04` | `24.04.5 (newest line 26.04.1)` | MAJOR | EOL 2029-05-31 (not yet); patch in line; MAJOR to newest line |
|
|
251
|
+
| `docker/Dockerfile.control-plane` | `oven/bun:${BUN_VERSION}` | `oven/bun:${BUN_VERSION}` | `-` | unknown | floating tag or no endoflife.date product mapped for this image (own product image, or an unmapped base) |
|
|
252
|
+
| `docker/Dockerfile.control-plane` | `oven/bun:${BUN_VERSION}-slim` | `oven/bun:${BUN_VERSION}-slim` | `-` | unknown | floating tag or no endoflife.date product mapped for this image (own product image, or an unmapped base) |
|
|
253
|
+
| `docker/Dockerfile.sandbox` | `debian:bookworm-slim` | `debian:bookworm-slim` | `12.15 (newest line 13.7)` | MAJOR | EOL 2028-06-30 (not yet); minor in line; MAJOR to newest line |
|
|
254
|
+
| `docker/Dockerfile.sandbox` | `debian:bookworm-slim` | `debian:bookworm-slim` | `12.15 (newest line 13.7)` | MAJOR | EOL 2028-06-30 (not yet); minor in line; MAJOR to newest line |
|
|
254
255
|
| `artifacts/observability/Dockerfile` | `nginx:1.27-alpine` | `nginx:1.27-alpine` | `1.27.5 (newest line 1.31.6)` | EOL | EOL 2025-06-24 (past); EOL in current line; newest line is 1.31.6 |
|
|
255
256
|
| `dashboard/Dockerfile` | `python:3.11-slim-bookworm` | `python:3.11-slim-bookworm` | `3.11.17 (newest line 3.14.8)` | minor | EOL 2027-10-31 (not yet); patch in line; minor to newest line |
|
|
256
257
|
| `web-app/Dockerfile` | `node:22-alpine` | `node:22-alpine` | `22.23.3 (newest line 26.10.0)` | MAJOR | EOL 2027-04-30 (not yet); minor in line; MAJOR to newest line |
|
|
@@ -259,14 +260,13 @@ Node.js current stable: 26.10.0 (cycle 26); Python current stable: 3.14.8 (cycle
|
|
|
259
260
|
| `deploy/docker-compose/docker-compose.yml` | `asklokesh/loki-mode:latest` | `asklokesh/loki-mode:latest` | `-` | unknown | floating tag or no endoflife.date product mapped for this image (own product image, or an unmapped base) |
|
|
260
261
|
| `deploy/docker-compose/docker-compose.yml` | `otel/opentelemetry-collector-contrib:0.96.0` | `otel/opentelemetry-collector-contrib:0.96.0` | `-` | unknown | floating tag or no endoflife.date product mapped for this image (own product image, or an unmapped base) |
|
|
261
262
|
| `deploy/docker-compose/docker-compose.yml` | `jaegertracing/all-in-one:1.54` | `jaegertracing/all-in-one:1.54` | `-` | unknown | floating tag or no endoflife.date product mapped for this image (own product image, or an unmapped base) |
|
|
262
|
-
| `docker-compose.yml` | `loki-mode:latest` | `loki-mode:latest` | `-` | unknown | floating tag or no endoflife.date product mapped for this image (own product image, or an unmapped base) |
|
|
263
|
-
| `docker-compose.yml` | `chromadb/chroma:latest` | `chromadb/chroma:latest` | `-` | unknown | floating tag or no endoflife.date product mapped for this image (own product image, or an unmapped base) |
|
|
264
|
-
| `docker-compose.yml` | `loki-mode:latest` | `loki-mode:latest` | `-` | unknown | floating tag or no endoflife.date product mapped for this image (own product image, or an unmapped base) |
|
|
265
|
-
| `docker-compose.yml` | `loki-mode:latest` | `loki-mode:latest` | `-` | unknown | floating tag or no endoflife.date product mapped for this image (own product image, or an unmapped base) |
|
|
266
|
-
| `docker-compose.yml` | `redis:7-alpine` | `redis:7-alpine` | `7.4.11 (newest line 8.10.2)` | MAJOR | EOL 2029-12-01 (not yet); resolved floating tag '7' to cycle 7.4; minor in line; MAJOR to newest line |
|
|
263
|
+
| `docker/docker-compose.yml` | `loki-mode:latest` | `loki-mode:latest` | `-` | unknown | floating tag or no endoflife.date product mapped for this image (own product image, or an unmapped base) |
|
|
264
|
+
| `docker/docker-compose.yml` | `chromadb/chroma:latest` | `chromadb/chroma:latest` | `-` | unknown | floating tag or no endoflife.date product mapped for this image (own product image, or an unmapped base) |
|
|
265
|
+
| `docker/docker-compose.yml` | `loki-mode:latest` | `loki-mode:latest` | `-` | unknown | floating tag or no endoflife.date product mapped for this image (own product image, or an unmapped base) |
|
|
266
|
+
| `docker/docker-compose.yml` | `loki-mode:latest` | `loki-mode:latest` | `-` | unknown | floating tag or no endoflife.date product mapped for this image (own product image, or an unmapped base) |
|
|
267
|
+
| `docker/docker-compose.yml` | `redis:7-alpine` | `redis:7-alpine` | `7.4.11 (newest line 8.10.2)` | MAJOR | EOL 2029-12-01 (not yet); resolved floating tag '7' to cycle 7.4; minor in line; MAJOR to newest line |
|
|
267
268
|
| `web-app/docker-compose.purple-lab.yml` | `postgres:16-alpine` | `postgres:16-alpine` | `16.15 (newest line 18.6)` | MAJOR | EOL 2028-11-09 (not yet); minor in line; MAJOR to newest line |
|
|
268
269
|
| `web-app/docker-compose.purple-lab.yml` | `redis:7-alpine` | `redis:7-alpine` | `7.4.11 (newest line 8.10.2)` | MAJOR | EOL 2029-12-01 (not yet); resolved floating tag '7' to cycle 7.4; minor in line; MAJOR to newest line |
|
|
269
|
-
| `docker-compose.test.yml` | `(none found)` | `` | `-` | n/a | no `FROM` / `image:` line found (build-context-only service, or a multi-stage FROM this pass did not match) |
|
|
270
270
|
|
|
271
271
|
## Helm (every `Chart.yaml` found via `git ls-files`, any directory)
|
|
272
272
|
|
|
@@ -367,7 +367,7 @@ Counts are all from the single `Bump` column (current line vs newest line in the
|
|
|
367
367
|
| Python (pyproject) | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 |
|
|
368
368
|
| GitHub Actions | 0 | 11 | 0 | 59 | 0 | 0 | 2 | 2 | 2 |
|
|
369
369
|
| Runtimes | 0 | 4 | 0 | 2 | 2 | 0 | 1 | 0 | 0 |
|
|
370
|
-
| Docker/Compose | 0 |
|
|
370
|
+
| Docker/Compose | 0 | 2 | 0 | 7 | 1 | 0 | 11 | 0 | 0 |
|
|
371
371
|
| Helm | 0 | 0 | 0 | 0 | 0 | 3 | 5 | 0 | 42 |
|
|
372
372
|
| Terraform | 0 | 0 | 0 | 4 | 0 | 0 | 0 | 0 | 15 |
|
|
373
373
|
| Homebrew | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
|
package/docs/v10/ENGINE.md
CHANGED
|
@@ -107,7 +107,7 @@ Every claim below comes from reading main at 84c22568. I edited no files.
|
|
|
107
107
|
- The dry-run list contains the three files.
|
|
108
108
|
- **Deps:** E-14, E-TG.
|
|
109
109
|
|
|
110
|
-
### E-33:
|
|
110
|
+
### E-33: gate report generator (EV-6)
|
|
111
111
|
- **Files:** `eval/loki10/gate_report.py` (new), `eval/loki10/test-gate-report.sh` (new), `eval/loki10/fixtures/gate/` (new subdir).
|
|
112
112
|
- **Tier:** HIGH. Its marker controls E-31.
|
|
113
113
|
- **Contents:**
|