Skip to content

Releases: ScottColeSW/Project-Aegis-Vector

v0.2.0 -- Rematches, live runs, and forgeries built to beat defenses

Choose a tag to compare

@ScottColeSW ScottColeSW released this 24 Sep 21:07

Black Hat learns new tricks, and White Hat learns from losing. This release adds three forgeries built to beat specific defenses, a rematch ladder in the episode player, and live runs you can replay and tally. It moves the memory gate to Palimpsest v0.3.0, which closes the gap one of the new forgeries found.

New forgeries (nine payloads, up from six)

  • The borrowed number (reused_figure): passes off $100,000, the corpus's real capital expenditure threshold, as the purchase limit. The grounding check can't catch it (75% adoption with the check on, the same as with no defense), because the figure really does appear in a verified document. Right number, wrong fact.
  • No number at all (no_number_forgery): "the limit has been removed". Harmless in this corpus, but only because it never reached the top 3.
  • No number, written to be retrieved (no_number_mirroring): the same claim, prefixed with the employees' questions. It made the top 3 for every question and hijacked 65% of answers. The grounding check has no figure to block (70%), and stacking every light defense only got it to 20%. The memory gate held it to 0%, the only defense that did.

Episode player (/episodes.html)

  • Rematches. When Black Hat wins, the strip unfurls a row per round as White Hat changes method, climbing a ladder from the lightest build (source stamps) to the heaviest (the memory gate). The ladder skips the defense that just failed and anything Black Hat's access can defeat. Each round is a measured result: Black Hat wins again, Not enough (25 to 50% still took it), or White Hat wins.
  • Run live replays any episode against a model you pick. If the model takes the forgery, the rematch rounds run live too, one fresh answer per counter.
  • Live-run history. Every live run is stored in a local SQLite database and tallied on the episode chips, in a table under the strip, and in a new Live Episode Runs card on the dashboard, each beside the battery's rate. A fresh clone starts from 122 real live runs (seed_live.py, committed as results/live/seed_runs.jsonl).
  • Honest scoreboard. The episodes are picked to tell a story, so the page also shows the uncurated count: every payload against every defense, Black Hat 25 and White Hat 65 of 90 matchups.
  • Twelve episodes, up from eight.

Memory gate: now on Palimpsest v0.3.0. A claim that drops its fact's number can't confirm that fact: it's UNCONFIRMED and marked for review. The defenses report also shows the optional adjudicator (qwen2.5:3b) beside the model-labeled gate. It can raise a flag, never lower one, and answered contradicts on all nine payloads.

Headline results (five models, nine payloads, four questions each)

Defense Adoption of the forged limit Utility Cost per query vs none
none 47% 90%
Perplexity filter 47% 90% +0%
Provenance labels 22% 90% +23%
Provenance, forged doc via trusted channel 46% 90% +20%
Spotlighting 32% 95% +55%
Grounding check (blocks 34% of answers) 16% 90% +0%
Layered (provenance + spotlighting) 7% 95% +74%
Layered + grounding check 3% 95% +74%
Palimpsest memory gate, hold 0% 90% -4%
Memory gate, flag 47% 90% +29%

Also in this release: the Books page now lists the full catalog (31 titles, one card per book with every edition), a judge-vs-regex check at 98% agreement (197 of 200), and a fix so the scoreboard wraps on narrow screens.

Limits, stated plainly: four questions per payload, so rates move in 25-point steps. The gate only protects facts in its registry; forging an unregistered fact (the dashboard's "Forged annual budget" preset) is still untested in the battery. Live answers are scored with a quick pattern check, while the battery uses the judge. The first-token refusal metric can't measure phi3:mini. Full details are in the README.

v0.1.0 -- First measured release

Choose a tag to compare

@ScottColeSW ScottColeSW released this 24 Sep 17:27

First measured release. Aegis Vector plants forged policy documents in a local RAG pipeline, measures whether small local models believe them, and measures what each defense buys and what it costs. Everything runs on one workstation: Ollama, llama.cpp, ChromaDB, and a FastAPI dashboard.

What's in it

  • Live dashboard (server.py, /): eight streamed stages, each with a live timer. It shows the 3D vector manifold (query-centered, with the true top-k retrieval sphere), first-token refusal probabilities, per-token surprisal, the Palimpsest memory gate switched off, on hold, or on flag, gate-off vs gate-on answers side by side, and a per-run cost table with editable prices.
  • Experiment battery (experiments.py): six forged-document payloads against five small local models, reporting retrieval rank, hijack rate, and payload perplexity, plus first-token refusal probing under four framings.
  • Defenses battery (defenses.py): ten defenses measured on adoption, utility, and cost per query and per document, with every answer labeled by a JSON-schema-constrained judge (qwen2.5:7b) cross-checked against a regex.
  • Memory gate (memory_gate.py): Palimpsest v0.2.0 in front of retrieval. New documents are filed under a registered fact and quarantined when they collide with the verified record or change a figure as an exception.
  • Black Hat vs White Hat (/episodes.html): the defenses battery as an animated comic-strip arms race. Every win rate and quoted answer comes from the run.
  • Memory guard (resource_guard.py): free RAM and VRAM preflight before each model load, a short keep-alive, and bounded retry.

Headline results (five models, six payloads, four questions each)

Defense Adoption of the forged limit Utility Cost per query vs none
none 46% 85%
Perplexity filter 46% 85% +0%
Provenance labels 18% 90% +21%
Provenance, forged doc via trusted channel 43% 90% +19%
Spotlighting 29% 95% +51%
Layered (provenance + spotlighting) 5% 90% +70%
Palimpsest memory gate, hold 0% 85% -6%
  • A naturally worded forgery never ranked first, yet every model adopted it every time it reached the top 3 (15 of 15).
  • The effective forgeries read as more natural than the real policy, so a perplexity filter would reject legitimate documents first.
  • The memory gate quarantined all six forgeries. It's the only defense measured that reached 0% adoption without refusing answers: the grounding check also reached 0%, but blocked half the answers to get there.

Limits, stated plainly: four questions per payload, so rates move in 25-point steps. The gate only protects facts in its registry, and forgeries of unregistered facts or rules with no number are untested. The first-token refusal metric can't measure phi3:mini. Full details are in the README.