Skip to content

Loki Mode v7.108.0

Choose a tag to compare

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

Accuracy: two additive verification gates (runtime boot smoke + annotate-before-act ledger)

Two independent, fail-open additions to the verification layer. Both are strictly
additive: on the common path (no app to boot, no expectation ledger present) verify
output is byte-identical to before, so neither can regress an existing run.

Runtime boot smoke gate (loki verify) -- "it actually runs":

  • A new runtime gate detects an app's start command, boots it bounded by a timeout,
    probes a health/root path, records the HTTP status + a reproducible runtime.json
    artifact (and a playwright screenshot when available), and tears the app down.
  • 5xx (server error) or no-answer for a detected app -> High finding -> NOT VERIFIED.
    A detected app that cannot be booted safely (no timeout binary) -> inconclusive ->
    CONCERNS (never an unbounded boot / hang; mirrors the v7.106.0 liveness discipline).
  • FALSE-POSITIVE GUARD: a project is only treated as a bootable HTTP app when there is
    a POSITIVE HTTP signal -- a web-framework/server dependency, or a listen()/
    createServer()/serve() call in source. A plain CLI or library that ships a
    conventional "start"/"dev" script (e.g. "start":"node cli.js", "dev":"tsc --watch")
    is NOT booted and emits no gate row, so it never gets a false-RED block.
  • Opt-out: LOKI_RUNTIME_GATE=0. Boot timeout / health path configurable
    (LOKI_RUNTIME_BOOT_TIMEOUT, LOKI_RUNTIME_HEALTH_PATH).
  • KNOWN LIMITATION (honest): the probe trusts whatever answers on the resolved port,
    so on a local machine with a pre-existing server on that port a failed boot could
    read as green. Clean in CI; a follow-up will confirm the boot PID owns the listener.
  • Coverage: tests/test-runtime-gate.sh (14 cases): boot-pass, boot-fail->BLOCKED,
    library byte-identity, default-port PORT-export, Node-CLI false-RED discriminator,
    and real-server-still-detected.

Annotate-before-act expectation ledger (loki verify):

  • A tamper-evident ledger of EXPECTED observable outcomes can be sealed before
    verification (.loki/expectations/.json), canonicalized + sha256-hashed the
    SAME way proof-generator.py hashes proof.json. At verify time each expectation is
    compared to reality: a contradicted expectation -> High finding (BLOCKED); a
    dropped/unexecuted one -> Medium finding (CONCERNS); an unevaluable one ->
    inconclusive -> CONCERNS (never a false VERIFIED). The ledger hash is embedded in
    evidence.json so an edited-after-the-fact expectation is detectable.
  • SCOPE (honest, PARTIAL): this ships the WRITE library/CLI + the verify-time
    READ/COMPARE + tamper-hash embedding, with a full test suite. The run-loop wiring
    that auto-writes predictions before each act, and deriving "observed" from real
    execution (the strong reality-anchor that would make tamper-evidence adversary-proof
    rather than casual-edit-proof), are tracked follow-ups. Opt-out:
    LOKI_EXPECTATION_LEDGER=0. Absent ledger -> byte-identical to before.
  • Coverage: tests/test-expectation-ledger.sh (15 cases): met/contradicted/dropped/
    unevaluable, tamper detection, canonical parity with proof-generator, absent-ledger
    byte-identity, and opt-out.