Skip to content

Loki Mode v7.111.0

Choose a tag to compare

@github-actions github-actions released this 02 Jul 11:29
Immutable release. Only release title and notes can be modified.

Trust-core fixes (bug-hunt wave 3) + honesty relabel of the proof non-forgeability claim

Wave-3 adversarial bug-hunt found two HIGH trust-core bugs and a CRITICAL honesty defect.
Each fix ships with a RED/GREEN regression test.

  • FIX (HIGH, anti-sycophancy backstop was a silent no-op): in completion-council.sh the
    Devil's-Advocate veto on a unanimous COMPLETE was captured as multi-line stdout (log lines
    are echoed to stdout), so the exact-string compare [ "$da_result" = "OVERRIDE_CONTINUE" ]
    NEVER matched. A DA that found a real blocking issue was ignored and the council approved
    anyway. Now compares the LAST line (tail -n1), so the veto forces CONTINUE. Proven: OLD
    stops despite a real veto, NEW continues (tests/test-da-veto.sh 9/0).
  • FIX (HIGH, Bun-route completion parity): the Bun runner's checkCompletionPromise ignored
    the .loki/signals/COMPLETION_REQUESTED fallback that the prompt tells the model to use. For
    degraded providers (Codex/Aider) that lack the MCP completion tool, that fallback is the ONLY
    completion signal, so completion-by-claim was fully broken on the Bun route for them; all
    providers wasted iterations. Now honored + consumed (both signals), matching bash.
  • HONESTY (CRITICAL relabel, NOT a forgery fix): the proof rail claimed in shipped code that
    a green Evidence Receipt is "impossible to forge" / "a forger cannot turn green" /
    "non-forgeable". That is FALSE on the unsigned local path: a forger who rewrites the facts,
    flips the headline, and recomputes the hash passes proof-verify.py. All such claims are
    removed (dashboard/server.py, proof-verify.py, proof-generator.py, autonomy/loki, proof.ts,
    proof-pr.sh) and replaced with an accurate statement: the integrity hash proves
    bytes-unedited-since-hashing and the git diff is re-derived, but on the UNSIGNED path the
    generator is trusted; neutral non-forgeability requires the signed record (founder-gated).
    DEFENSE-IN-DEPTH added (honestly labeled): proof-verify.py now re-derives the headline from
    the recorded facts and reports headline_consistent + generator_trusted; an INCONSISTENT
    forgery (headline says VERIFIED but facts say not_run) is caught and ok=false. A CONSISTENT
    forger is NOT blocked (documented; needs the signed record). tests/test-proof-forgery-defense.sh 7/0.
  • FIX (MED security): GitHub fine-grained PATs (github_pat_...) leaked into proof.json diffs;
    the redactor now masks them (tests/test-proof-pat-redaction.py).
  • FIX (LOW): stale claude-opus-4-7 runtime fallbacks -> claude-opus-4-8 (providers/cline.sh,
    aider.sh); app-runner compose port-range parse now returns the first (published) port, not
    the last; docker-compose.yml healthcheck start-period -> start_period (was rejected by Compose).