loki-mode 9.34.1 → 9.36.0

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/mcp/__init__.py CHANGED
@@ -75,4 +75,4 @@ try:
75
75
  except ImportError:
76
76
  __all__ = ['mcp']
77
77
 
78
- __version__ = '9.34.1'
78
+ __version__ = '9.36.0'
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "loki-mode",
3
3
  "mcpName": "io.github.asklokesh/loki-mode",
4
- "version": "9.34.1",
4
+ "version": "9.36.0",
5
5
  "description": "Loki Mode by Autonomi. Autonomous spec-to-product system: takes a PRD, GitHub issue, OpenAPI/JSON/YAML, or one-line brief to a deployed app via the RARV-C closure loop with 8 quality gates. Provider-agnostic (Claude Code, OpenAI Codex, Cline, Aider, opencode).",
6
6
  "keywords": [
7
7
  "agent",
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
3
3
  "name": "loki-mode",
4
4
  "displayName": "Loki Mode",
5
- "version": "9.34.1",
5
+ "version": "9.36.0",
6
6
  "description": "Autonomous spec-to-product build system with a built-in trust layer (RARV-C closure loop, 8 quality gates, completion council). Ships Loki's spec-hardening, drift-detection, and deterministic PR verification commands plus the Loki MCP server.",
7
7
  "author": {
8
8
  "name": "Autonomi",
@@ -20,6 +20,12 @@ var EVENT_TO_AUDIT = {
20
20
  'session_end': { what: 'session_end', why: 'Loki session terminated' },
21
21
  'phase_change': { what: 'phase_change', why: 'RARV phase transition' },
22
22
  'policy_denied': { what: 'policy_violation', why: 'Policy engine blocked action' },
23
+ // The operator pinned one model and a different one was dispatched. The
24
+ // substitution may be legitimate (a model unavailable on this transport),
25
+ // but it must never be SILENT: without a record the receipt shows only the
26
+ // dispatched model, so the swap cannot be audited and its stated reason
27
+ // cannot be refuted by whoever has evidence against it.
28
+ 'model_substituted': { what: 'model_substituted', why: 'Pinned model was not the model dispatched' },
23
29
  // Distinct from policy_denied: the policy was never EVALUATED. A policy
24
30
  // file was present (so enforcement was intended) but node was unavailable,
25
31
  // so run.sh refused fail-closed rather than proceeding unenforced. The