A3E9 logoA3E9
// AUDIENCE_FILTERShowing content for NIST / standards conformance. De-emphasized: Competitive positioning, the industry-landscape framing, and on-chain market operations — none of it is conformance evidence.

// A3E9 · INTERACTION_TIME_ASSURANCE

Every security vendor makes your code safe to ship. Almost none make other people's code safe to touch.

Audit firms, contest platforms, bug bounties and CI scanners are all real, all good, and all answer the same question: is the code I am about to deploy safe? They work on your repository, around launch, for the team that ships. a3e9 answers a question none of them does — should my desk touch this contract, right now, at the moment I connect and sign — and has something I already trusted changed underneath me? Different question, different customer, different moment.

Build time · protects the builder

Audits, contests, CI scanners, bounties. The whole audit market lives left of the line, and the work is necessary.

Interaction time · protects whoever connects and signs

TINL, Pathfinder, Governance Sentry, Oracle Governor and the ledger. a3e9 lives on the line, and after it — and keeps watching.

TINL

Transaction Intent Normalization Layer

Decodes what a transaction or signature actually does before it is signed, and applies policy to the decoded intent.

Pathfinder

Execution-path assurance

Evaluates contract execution paths and issues verdicts, with decision memory and revalidation.

Sentry

Governance Sentry

Watches pre-proposal state through destination-chain execution to catch capture inside the timelock window.

Governor

Oracle Governor

Owns the inputs — what each source may establish, how fresh, how independent, and what happens when it goes dark.

a3e9-ledger

The evidence chain

The append-only record every verdict, correction and expiry is written to.

Read this before the numbers

These figures are quoted from the brief and its cited producer artifacts (out/coverage_manifest.json, out/gold_pocs.json, out/incident_catalogue.csv). That producer does not run in this repository, so unlike the ACVP vector counts and the CBOM on the evidence pages, these numbers are not synced byte-identical from their source on every build. They are re-derivable by re-running the producer, and they are stated here as documented rather than as re-verified.

// FIVE_CASES

Five cases that end the argument.

Each one is a real failure mode where the code was fine and the person was not protected. That gap is the whole product.

deny

Audius was audited. It was captured anyway.

The audit was fine. The governance proxy was upgraded to attacker control after sign-off. No audit re-checks every proxy each time it changes — Pathfinder does. The exploit is reproduced against the real on-chain code at its pre-exploit block.

block 15201799 · reproduced on pinned bytecode

deny

The token is safe. The signature is the exploit.

USDC is audited many times over. A user signs one malicious permit and the wallet is drained. Producer-side tooling does not look at the transaction a person is about to sign. TINL does.

permit / approval phishing · a leading loss driver in 2025

deny

The contract is fine. The front-end lied.

A hijacked site serves malicious calldata over a perfectly safe contract. There is no bug in the code for a producer-side tool to find. TINL reads the decoded intent before the signature lands.

DNS / front-end hijack · no line of contract code touched

block

The signature never happens. The wallet never connects.

On Solana, most token scams live for minutes — often less time than it takes a site to reach a blocklist. The attack is not the contract; it is the connection. A hijacked social account posts a lookalike site, and a blocklist can only stop it once it is listed. The Connection Trust Layer evaluates the site itself before the connection exists.

connection-time gating · verified / unknown / suspicious / blocked

deny

The multisig is valid. The signing ceremony was captured.

AI-assisted recruiter lures, deepfake executives, compromised chat, poisoned Safe interfaces and plausible “retry” instructions target the people and systems that produce valid signatures. Three separate facts are verified before approval: identity, intent, and authority.

signer integrity · Safe configuration · message hash · reachable authority

The nearest real competitor — and the line

BUILD TIME · protects the builderINTERACTION TIME · protects whoever connects and signsauditscontestsCI scannersbounties (after launch, still your code)CONNECT · SIGNa3e9TINL · Pathfinder · Sentry · Governor · ledger…and keeps watching
The whole audit market lives left of the line. a3e9 lives on it, and after it.

Monitoring and response

They watch the attack.

These tools watch live transactions for an attack under way. The strongest do more than alert: they respond automatically, and some land a transaction of their own ahead of the attacker's to stop it. That is response once an attack has started.

a3e9

It decides before anyone interacts.

A fail-closed verdict — allow, deny or review — is asked for before a desk interacts with a contract, and one observed compromise flips the whole desk before the next person touches it. It does not front-run or stop an attack already in progress.

The auditors are not the competition. The closest players are the on-chain monitoring and response platforms, several of which block attacks automatically; they are useful, and the line between responding to an attack and deciding before the interaction is drawn above rather than blurred.

// CONNECTION_TRUST_LAYER

Blocklists stop a site before the connection, once it is on the list. This evaluates the site itself.

On Solana most token scams live for minutes — often less time than it takes a site to reach a blocklist. The attack is not the contract; it is the connection. A hijacked social account posts a lookalike site, and a blocklist can only stop it once it is listed. Verdicts are verified, unknown, suspicious and blocked.

What it checksWhat it checks One signal the Connection Trust Layer reads about a site before a wallet connects to it. The checks look at the site and the channel that sent you there, not at an address reputation list.What it catchesWhat it catches The attack pattern that signal is aimed at. Each check narrows one route; none of them is a verdict on its own.
Proof of Assurance attestationProof of Assurance attestation The signed, expiring mark described under Proof of Assurance below. It is bound to specific contracts, so it cannot be copied onto a clone site.Does the site hold a valid, current mark bound to the contracts it fronts for? A clone site cannot hold the real project's attestation.
Domain age and registrationDomain age and registration How recently the domain was registered. A new domain is not proof of a scam, but a new domain claiming to be an old protocol is the pattern this row is for.A domain registered hours ago claiming to be an established protocol is the classic emergency-migration scam pattern.
Lookalike spellingLookalike spelling Domain names built to be misread: swapped characters from other alphabets (homoglyphs) or near-miss spellings (typosquats) of a known project's domain.Homoglyph and typosquat variants of known project domains — the clone that looks right at a glance.
Drainer-kit fingerprintsDrainer-kit fingerprints Traces of reused scam tooling. A drainer kit is packaged code that asks a visitor to sign away tokens; it tends to be redeployed on fresh domains with the same scripts and hosting.Recycled scam infrastructure: known drainer scripts, reused hosting patterns, redirect chains through disposable domains.
Behavioral signalsBehavioral signals How the site behaves rather than what it is: pushing you to connect or sign before it shows any content, and manufacturing urgency.Connection pressure, signing urgency, and immediate signature requests before any content is shown.
Channel compromiseChannel compromise Whether the project's own announcement channels, such as its X or Discord account, have been reported hijacked. A real account posting a fake link is how many of these attacks start.Reported hijacks of a project's X or Discord — the hijacked megaphone that starts the attack chain.

What a connection verdict is not

An address blocklist is structurally behind the attacker — a drainer deployed this morning has no reputation to look up — which is why these checks are about the site and the channel rather than a reputation lookup. They do not screen destinations, do not stop address poisoning or a fake airdrop the user chooses to interact with, and the wallet confirmation screen remains the backstop.

// REKT_BASELINE

Proof, not promises: every assurance claim is tested against history.

The baseline corpus is built from four complementary oracles, and every incident becomes a regression test the system has to keep passing.

OracleOracle A historical-incident source the baseline corpus is built from. Here “oracle” means a source of ground truth about past exploits, not a price feed.What it contributesWhat it contributes The part of the evidence this source supplies that the others do not. The four are complementary: none is complete alone.ScaleScale The size of the source as documented in the brief. Where a note sits under the figure, it is the count taken from the file actually delivered.
Rekt.news corpusRekt.news corpus Rekt.news publishes post-mortems of DeFi exploits. Its corpus supplies the contract-level facts a test needs to load the victim code as it stood before the exploit.Contract-level ground truth: victim/exploit addresses, roles, pre-state block numbers, code hashes at incident time266 incidents · 1,284 addressesverified 2026-09-08 against the delivered CSV
DeFiLlama HacksDeFiLlama Hacks DeFiLlama's public list of hacks. It is used for how incidents are classified, which maps onto Pathfinder's finding categories.Classification and technique taxonomy — maps onto Pathfinder finding categories$20B+ tracked · 134 chains
SlowMist HackedSlowMist Hacked SlowMist's public incident list. It adds volume and chains where Rekt is thin, such as Solana, Cosmos and Stellar.Incident volume and non-EVM coverage — Solana, Cosmos, Stellar, where Rekt is thin2,235 events · $38B trackeddelivered CSV: 2,252 rows through 2026-09-07
DeFiHackLabsDeFiHackLabs A public collection of exploit reproductions written as Foundry tests. It supplies the working exploit, forked at the incident block, that turns a record into executable proof.Executable proof: working Foundry exploit reproductions forked at the incident blockhundreds of PoCs

Incidents with both a Rekt corpus row and a DeFiHackLabs reproduction become gold-standard tests — pre-state code hash plus a working exploit. The claim stops being “we think we would have caught this” and becomes “here is the test that catches it.”

The evidence base, counted

“Tested against history” is a claim, so here are the counts behind it — including the row that is a gap rather than a win.

WhatWhat The thing being counted. Rows run from raw source material down to what is actually armed, and end with the gap.CountCount The figure as documented in the brief and its producer artifacts. These are quoted, not re-derived on every build of this site.MeaningMeaning What one unit of the count is, so a reader can tell a row of a spreadsheet from a running test.
SlowMist incident rowsSlowMist incident rows Lines in the delivered SlowMist file. One row is one reported incident, not one verified exploit.2,252Through 2026-09-07. Date, target, attack method, loss, description, reference.
Rekt contract-version rowsRekt contract-version rows Lines in the delivered Rekt file. One incident can involve several contracts, so there are more rows than incidents.1,284Across 266 incidents and 12 chains — chain, address, role, exploit tx, pre-state block.
DeFiHackLabs PoCs scannedDeFiHackLabs PoCs scanned Proof-of-concept exploit reproductions that were read and matched to corpus incidents. Scanned is not the same as armed.860Working Foundry reproductions read and matched against the corpus.
Incident addresses in the coverage manifestIncident addresses in the coverage manifest Contract addresses the coverage manifest tracks. Each is a place a detection could be pointed; most have none yet.303Each one an address a detection could be aimed at.
…with a pre-state code hash…with a pre-state code hash How many of those addresses have their exact bytecode pinned as it stood the block before the exploit. That hash is what stops a test running against patched code.303 / 303100%. The exact bytecode as it stood at the block before the exploit.
Victim contracts still live and unchangedVictim contracts still live and unchanged Victim contracts whose deployed bytecode today is identical to the exploited version. They are live code, not historical artifacts.57Same bytecode, still deployed. These are not historical artifacts.
Gold-standard incidentsGold-standard incidents Incidents that have both halves of proof: a pinned pre-state code hash and an archived mainnet-fork reproduction of the exploit.30Pre-state code hash and an archived mainnet-fork reproduction. Both halves present.
Generated incident test filesGenerated incident test files Test files generated from the manifest, one per incident address. A generated file is scaffolding; it is not an armed detection until it asserts a finding.285One Solidity test per incident address, forked at its own pre-state block.
Per-incident finding recordsPer-incident finding records Records linking an incident to a vulnerability class, a test template and the code it ran against.577Routed vulnerability class, template, runtime code hash, exploit tx.
Armed regression testsArmed regression tests Tests where a named control produces a finding against the pinned pre-incident code, re-run in CI. This is the row the covered-loss figure rests on.13Covering 10 incidents. Run in CI against pinned pre-incident state.
Recorded coverage gapsRecorded coverage gaps Addresses with evidence and no test yet. Published in the same manifest as the armed tests, so the coverage number cannot be read without it.290Addresses with evidence and no test yet — published in the same manifest.

The corpus is about 10 MB, and that is the point. Each incident is stored as a pinned pointer — chain, address, pre-state block number, and the keccak-256 hash of the runtime bytecode at that block — and the state itself is re-fetched on demand from archive RPC endpoints, the Etherscan V2 API and Sourcify. The evidence is the hash and the block number, not a copy, which is what makes a result reproducible by a third party rather than dependent on a snapshot only a3e9 holds. Multi-gigabyte build directories exist on disk; they are compiler output and are excluded from every count above.

a3e9 “Safe to Touch” positioning brief v2, reviewed 2026-09-09. Counts as of 2026-09-08.

// NOT_HINDSIGHT

A detector written after reading the post-mortem will always pass.

That is the failure mode any backtest has to defend against, and the defences are structural rather than promised.

01

Every test forks at the block before the exploit.

The fixture pins the pre-state block number and the keccak-256 hash of the runtime bytecode as it stood at that block. A detection cannot be quietly tuned against the patched contract, because the patched contract is not what the test loads — and if the pinned hash ever stops matching, the test fails rather than passing on the wrong code.

02

The gaps are published in the same file as the wins.

The coverage manifest records 13 armed tests and 290 uncovered addresses, in one artifact, generated by one script. There is no separate document where the coverage number is larger.

03

The evidence grades itself.

Of 270 catalogued incidents, only 30 carry an archived mainnet-fork reproduction; 24 are marked candidate and 216 none. Loss figures carry their basis — sole_amount, loss_context, ambiguous, or none — so a number sourced from a sentence is never presented as a measurement. 150 rows are flagged no_code_evidence and excluded from ancestry analysis rather than counted anyway.

04

What cannot be derived is labelled, not inferred.

The patch_scope column reads not_derivable for all 270 incidents. Whether a given remediation was narrow or complete is not knowable from on-chain evidence alone, so the corpus declines to say rather than guessing and calling it a finding.

05

Null results are recorded.

A run pointed the production pre-interaction engine at 109 historical incident transactions to ask whether it recognised them at all. It assessed none of them: 94 decoded but were not swap paths, 15 had no transaction to read. That engine evaluates what a user is about to sign, and a confirmed historical exploit is not that shape — so the honest outcome is not_assessable, and it is written into the artifact instead of omitted from it.

The fifth is the one worth dwelling on. It would have been easy to leave that run out. Keeping it is what makes the other four worth reading — a corpus that only ever reports success has stopped being a measurement.

// THE_COUNTERFACTUAL

If we had been on this, would it have mattered?

For ten incidents the answer is not an opinion — a detection exists, it is armed in CI, and it runs against the contract as it stood at the block before the exploit. Here is the whole list, with nothing left off.

IncidentIncident A historical exploit with an armed detection: a test loads the victim contract at its pinned pre-exploit block and the named control produces a finding.Recorded lossRecorded loss The loss figure the corpus holds for the incident. Where the corpus holds none, the row says so and adds nothing to the total, even if a number is widely reported.Failure familyFailure family The class of failure the incident belongs to. One armed control can cover several incidents in the same family.Armed controlArmed control The detection template that fires on this incident's real pre-exploit code in CI. A fired detection is a verdict, not an intervention: acting on it stays the subscriber's decision.
NomadNomad Failure family: bridge. AccessControlTxOrigin is the template for authorization failures: a sensitive function callable by the wrong party, including authorization through tx.origin instead of the direct caller.$190,000,000bridgeAccessControlTxOrigin
Curve (Vyper)Curve (Vyper) Failure family: reentrancy. Reentrancy is the template for a contract that makes an external call before its own accounting is updated, so a callback can re-enter and act on stale balances.$69,000,000reentrancyReentrancy
DAO MakerDAO Maker Failure family: rug / privileged drain. PrivilegedDrain drives every privileged path as the admin and asks whether a depositor is still whole. Its rule: privilege must be explicit, constrained and disclosed, and a cap the capped party can raise is not a cap.$7,000,000rug / privileged drainPrivilegedDrain
AudiusAudius Failure family: proxy upgrade. InitProxyTakeover is the template for proxy abuse: an initializer that can be run again, or an upgrade slot a non-admin can change. Audius's governance proxy was upgraded to attacker control after its audit.$6,000,000proxy upgradeInitProxyTakeover
Gravity BridgeGravity Bridge Failure family: price / AMM. OracleSpotPrice is the template for a contract that trusts a price or balance that can be moved inside one transaction, typically with a flash loan.$5,400,000price / AMMOracleSpotPrice
SocketSocket Failure family: bridge. AccessControlTxOrigin is the template for authorization failures: a sensitive function callable by the wrong party, including authorization through tx.origin instead of the direct caller.$3,300,000bridgeAccessControlTxOrigin
Sushi (Yoink)Sushi (Yoink) Failure family: price / AMM. OracleSpotPrice is the template for a contract that trusts a price or balance that can be moved inside one transaction, typically with a flash loan.$3,300,000price / AMMOracleSpotPrice
Aztec ConnectAztec Connect Failure family: proxy upgrade. InitProxyTakeover is the template for proxy abuse: an initializer that can be run again, or an upgrade slot a non-admin can change.$2,280,000proxy upgradeInitProxyTakeover
Sir TradingSir Trading Failure family: proxy upgrade. InitProxyTakeover is the template for proxy abuse: an initializer that can be run again, or an upgrade slot a non-admin can change.$355,000proxy upgradeInitProxyTakeover
BeanstalkBeanstalk Failure family: flash-loan governance. OracleSpotPrice is the template for a contract that trusts a price or balance that can be moved inside one transaction, typically with a flash loan. Here the balance that moved was flash-loaned voting power. The corpus holds no loss figure for Beanstalk, so it adds nothing to the covered total.no figure in corpusflash-loan governanceOracleSpotPrice

$286,635,000 of recorded loss sits behind detections that are armed today and run against pre-incident state. Beanstalk is in the list and contributes nothing to that total, because the corpus holds no loss figure for it — the widely-reported number is not in the evidence, so it is not in the arithmetic. Nine incidents carry the whole sum. That is the difference between a total and a headline.

What is proven

The detection fires on the real code.

For each row, a test loads the victim contract at its pinned pre-exploit block, verified by bytecode hash, and the named control produces a finding. It re-runs in CI, so it is a standing claim rather than a demonstration.

What is not claimed

A verdict is not an intervention.

a3e9 produces a fail-closed verdict at the moment of interaction or on the control plane. Acting on it — pausing, cancelling, refusing to sign — remains the subscriber's decision and the subscriber's authority. An armed detection in the harness is not the same thing as a deployed, monitored subscription at the victim on the day. 290 addresses in the same corpus have no armed detection at all.

The denominator: $8.9 billion catalogued, 290 addresses uncovered

Set against the catalogue as a whole — $8.9 billion of recorded loss across the 229 incidents that carry a figure — $286,635,000 is roughly three percent. Published deliberately. The honest headline is not “we would have stopped it all”; it is that the covered slice is named, listed and testable, the uncovered remainder is counted in the same file, and the number moves as detections are armed. A coverage figure you cannot audit is a marketing figure.

Incident list, losses, families and controls from a3e9-tinl-assurance-test out/coverage_manifest.json and out/incident_catalogue.csv. Loss figures carry a loss_basis in the source; the total sums only rows that carry one.

// HISTORY_BECOMES_COVERAGE

One historical exploit is never one test. It is a family.

Beanstalk was not a Beanstalk bug — it was a governance-capture pattern: flash-loan voting power, pass a malicious proposal, drain the treasury, repay the loan. A zero-day is unknown to everyone. A 1-day is disclosed and patched, and still works everywhere the patch did not reach. An n-day is the state this industry actually lives in. So the defensive question is deliberately not “has this contract been patched?” It is:

Which safety invariant failed, where else does the same invariant exist, and can the exploit be reconstructed through another function, asset, market, deployment, chain, signer, or administrative path?

Every incident in the corpus is reduced to that invariant, then re-aimed along eight variant axes. This is the mechanism that turns a one-off into coverage: one historical exploit is never one test, it is a family, and the family is what gets run against the contracts a desk is about to touch.

01

Abstract the pattern.

Strip each incident to its mechanics: abused power, precondition, attack sequence, blast radius, missing control.

02

Mutate the pattern.

Generate concrete variants — same power, different entry point; same entry point, different asset; same attack, different timing.

03

Aim variants at the target.

A coverage matrix: variant × contract, with attack paths and existing mitigations.

04

Convert survivors into patches.

Every applicable variant becomes a Foundry test and a Pathfinder monitoring rule — before an attacker finds it.

05

Propagate the class.

Search every fork, chain, market, deployment script, integration and administrative path that inherited the failed invariant.

Variant axisVariant axis One direction in which a known exploit can be varied and still work. Variants are generated along each axis and aimed at the contracts in scope.How one incident becomes a familyHow one incident becomes a family What changes between the original exploit and its variant along this axis.Why the original patch misses itWhy the original patch misses it The assumption in a narrow fix that this variant breaks.
Exact code cloneExact code clone The same vulnerable code, copied. The simplest variant, and the one a byte-for-byte search can find.The same vulnerable implementation deployed by another project or on another chain.The downstream team never received or applied the upstream fix.
Semantic cloneSemantic clone Different code with the same broken rule inside it. Finding it means comparing what code does, not what it looks like.Source differs, but the same accounting or authorization invariant is present.Hash and signature matching miss logically equivalent code.
Sibling entry pointSibling entry point Another door into the same room: a different function that reaches the state change the patched function guarded.The patched function is safe; another function reaches the same state transition.The team patched deposit but not mint, a router but not direct calls.
Cross-function / cross-contractCross-function / cross-contract An attack that spreads across functions or contracts sharing the same state, so a guard on one of them is not enough.The attacker moves between functions or contracts that share state.The reentrancy guard exists only on the function that was originally exploited.
Parameter or assetParameter or asset The same mechanism against a different token, market or setting that the original fix never considered.A different reserve, collateral, decimals setting, liquidity level, or fee behavior.The fix assumes the first incident's token and market conditions.
Temporal or orderingTemporal or ordering An attack that depends on when something happens, such as before initialization finishes or during a migration.Initialization, migration, governance execution, liquidation, or a deployment window.The production code is safe only after setup has completed.
Economic compositionEconomic composition Several individually safe primitives combined, for example through flash liquidity or several markets at once.Known primitives combined through flash liquidity, recursive leverage, MEV, or several markets.Each component looks safe when tested independently.
Operational hybridOperational hybrid A code weakness paired with an attack on people or process: phishing, a stolen key, a malicious dependency or a misleading signing screen.A code weakness combined with phishing, a stolen deploy key, a malicious dependency, or a misleading signing interface.A contract patch does not secure the human, build, governance, or signing plane.

How a “bypass” claim is graded before anyone repeats it

“A patched protocol got hit again” is four different claims wearing one sentence. Each incident carries an explicit evidence grade, so a fork inheriting a known class is never reported as a novel defence bypass.

GradeGrade The evidence grade a “patched protocol hit again” incident carries. It fixes in advance which claim the evidence can support.What it meansWhat it means The situation that earns the grade.What it actually provesWhat it actually proves The strongest conclusion the grade allows, and no stronger.
A — Confirmed defense bypassA — Confirmed defense bypass The only grade that supports saying a specific defence was bypassed. It needs evidence the victim had a mitigation for this exact class.The victim had a specific mitigation for the exploit class, and the attacker used a related path that remained possible.The remediation was narrower than the failed invariant.
B — Known class inheritedB — Known class inherited A fork or related deployment exposed to a flaw that was already public. It is a failure to propagate a fix, not a novel bypass.The class and its mitigations were public, but a fork, new market, or related deployment stayed exposed.Patch knowledge did not propagate across the deployment family.
C — Governance delay neutralizedC — Governance delay neutralized A voting period or timelock existed and did not help. It shows a timer alone is not a security boundary.A voting period or timelock existed, but mutable code, temporary voting power, low participation, or captured execution defeated its purpose.A timer is not a security boundary unless payload identity, voting legitimacy, detection and cancellation all hold.
D — Repeated incident, different root causeD — Repeated incident, different root cause Hit again, but for an unrelated reason. It says something about the protocol's security lifecycle and nothing about a patch being bypassed.The same protocol was attacked again through an unrelated flaw.A weak security lifecycle — but not evidence that a narrow patch was bypassed.

Narrow patches are now an attack surface

a3e9 distinguishes a true defense bypass from a known class left unpropagated, and from governance whose timer worked while its security purpose failed.

Historical testHistorical test A historical incident or group of forks kept as a test case, because the fix that followed it was narrower than the failure.What the narrow assumption missedWhat the narrow assumption missed The route that stayed open after the original fix.a3e9 regressiona3e9 regression The broader rule a3e9 tests for instead, so the same family cannot pass by avoiding the one patched path.
Wise LendingWise Lending A lending protocol where donation limits were in place and rounding still let value be moved in small repeated steps.Donation limits did not stop repeated sub-limit rounding from creating “stealth donations.”Bound exchange-rate movement across arbitrary accounting sequences.
Hundred and related forksHundred and related forks Hundred Finance and other Compound- and Aave-derived deployments that shared a known empty-market precision risk.Known empty-market precision risk survived across Compound- and Aave-derived deployments.Atomic initialization, permanent minimum liquidity, conservative rounding, and fork-wide discovery.
Tornado CashTornado Cash A governance case where a proposal's address stayed the same while the code behind it changed before execution.The proposal address stayed constant while metamorphic code changed before execution.Bind and re-check payload, dependencies, chain domain and runtime code at queue and execution.
BeanstalkBeanstalk A governance case where borrowed voting power voted and executed in one transaction despite a proposal-age delay.A proposal-age delay existed, but temporary voting power voted and executed atomically.Separate voting-power maturation, snapshot, quorum, queue, execution and cancellation.
Build FinanceBuild Finance A governance case where the timelock worked as designed and faithfully executed a decision captured through low participation.The timelock faithfully executed a governance decision captured through low participation.Compare capture cost with reachable value; treat authority transfers as critical.

The historical transaction is the first test, not the last. a3e9 names the failed invariant, mutates equivalent paths, and monitors the conditions that make the exploit family viable again.

a3e9 forked-exploit and narrow-patch risk analysis, 2026-09-04. SCONE-bench figures as published by Anthropic; that study was confined to simulators and did not touch live assets.

// WHERE_THE_AI_IS

a3e9 uses models heavily and trusts them with nothing.

Seven roles are pinned across five providers, each with a written constraint, and the constraints are the product: a model can read, search, propose, translate and argue. It cannot admit evidence, approve a control, change a policy, or move value.

Where this stands: a model sorts incoming security alerts into exploit families today, as a note on an unconfirmed record. Variants are generated by rules, and Pathfinder matches exact copies of exploited code. Models proposing variants, and matching forks and patched copies, are not built yet. What follows is the design those steps are held to.

Frontier models are demonstrably capable of generating working exploits for this class of target: in Anthropic's controlled SCONE-bench study over 405 contracts with real-world exploits, several frontier models produced profitable simulated exploits against post-cutoff cases — and in a separate simulation over 2,849 recently deployed contracts with no known vulnerabilities, two novel exploitable cases were found. Two out of 2,849 is a small number and an honest one. It is also the number that decides the question: the capability is real, it is cheap, and it is available to whoever wants it. SCONE-bench figures are as published by Anthropic; that study was confined to simulators and did not touch live assets.

The model does

Propose the family.

Abstract the failed invariant, enumerate variants across the eight axes, and aim them at the specific contracts, roles and markets in scope — including the deployment family a fork belongs to.

The model never does

Decide anything.

A generated variant is a hypothesis. It becomes a Foundry test forked at a real block and a Pathfinder monitoring rule. The verdict comes from the deterministic run. A model answer is never a finding, and never a source in its own right. Coding agents are named explicitly as not independent evidence verifiers, so a review generated by one can never stand in for the human one.

The verifier is never the generator. Whoever proposed a conclusion cannot be the one that checks it. A run is rejected outright if the verifier shares an independence group with the generator — the same origin-counting rule applied to models. Final verification runs with search disabled, on frozen evidence: a checker that can go find fresh support for the thing it is checking is not a checker.

RoleRole A job a model is assigned in a3e9's research workflow. Roles are split across providers on purpose so no single model is the authority.ProviderProvider The provider and model assigned to the role in the architecture. An assignment, not an endorsement by the provider.SearchSearch Whether the role may search the live web. On is limited to discovery; final verification runs with search off, on frozen evidence.Written constraintWritten constraint The boundary written for this role. Every role also falls under the global deny list below: no model can sign, move funds or promote evidence.
Raw current web discoveryRaw current web discovery Finds current sources and returns them ranked. Its URLs and snippets are discovery metadata; the underlying page is retrieved and checked independently.Perplexity — Search APIonmay not promote evidence; returns ranked sources for quarantine, not prose to accept
Web-grounded discovery synthesisWeb-grounded discovery synthesis Summarizes web research with citations when a synthesis is useful. Used in discovery only, with the actual returned model recorded.Perplexity — Agent APIonno automatic model fallback during high-assurance work
Emerging signal scoutEmerging signal scout Watches for early signals, such as researcher posts on X, that appear before formal reports. Those signals remain assertions until verified elsewhere.xAI — Grokonmay not verify its own hypotheses
Architecture & adversarial criticArchitecture & adversarial critic Challenges authority paths, assumptions, bypasses and false positives. It does not search live during final verification and cannot approve a control it proposed.Anthropic — Claudeoffmay not approve its own control
Multimodal & large-artifact examinerMultimodal & large-artifact examiner Reads diagrams, screenshots, logs, PDFs and repository-scale comparisons. Its reading cannot override chain, signature, compiler or executable evidence.Google — Geminioffpreview models require a release gate
Deterministic test & code engineerDeterministic test & code engineer Turns a hypothesis into a repeatable test instead of a prose conclusion. Generated code runs in isolation, and its tests get independent review.OpenAI — GPT-5offno production credentials, ever
High-volume triageHigh-volume triage Low-cost sorting: removing duplicates, tagging artifacts and routing hard cases upward. It cannot close a contradiction or authorize policy.OpenAI — GPT-5-minioffmay not promote evidence

Globally forbidden to every model, agent and connector

signsend_transactionbroadcastunlock_walletexport_keywithdrawbridge_executeswap_executepromote_evidencedelete_evidencelower_incident_state

No model can merge code, release a policy, promote evidence or sign a transaction.

Do not invoke a reasoning model when an unchanged deterministic poll returns no new object. It is a cost rule and a security rule at once: 15-minute advisory checks and per-block chain reads run as plain deterministic jobs, and model work begins only when there is a new or changed object, a meaningful correlation, a scheduled threat-hunting cycle, or a specific analyst request. A regression test asserts it directly.

Release requirements are explicit: different generator and verifier providers, frozen evidence handed to the verifier, verifier search disabled, no automatic training on raw updates, and no model override of policy. The gateway rejects a run for an unpinned or unexpected returned model, a silent provider fallback during high-assurance work, a tool inventory that differs from the manifest, a verifier sharing an independence group with the generator, or final verification with search left on.

a3e9 model routing manifest v1.3, as of 2026-09-07. Model identifiers are configuration and are re-validated against the provider catalog at runtime.

// SIGNER_ASSURANCE

A multisig proves a threshold of keys signed particular bytes. It does not prove independent humans understood the same operation.

PlanePlane One of three separate facts verified before a signature is approved. A valid multisig signature proves none of them on its own.Question answeredQuestion answered The question that must have a verified answer on this plane.Controls enforcedControls enforced The controls used to answer it.
IdentityIdentity Who is asking and who is signing. It exists because voice, video and chat can now be convincingly faked.Is the requester, signer, device, domain and service the expected party?FIDO2/WebAuthn, signed change records, callback rosters, session monitoring, and no authorization by voice, video, chat or urgency.
IntentIntent What the signature will actually do. Every approver must be looking at the same decoded operation, not a summary of it.Do the signed bytes produce the state change every approver reviewed?Canonical manifest, independent calldata decoding, simulation, hardware-wallet message-hash comparison, and stop-on-anomaly.
AuthorityAuthority What power the action hands out beyond the transfer itself, such as a new owner, role, module or upgrade path.What can the action create beyond its immediate transfer?Owner, role, proxy, module, approval, mint, oracle, bridge, timelock and cross-chain capability analysis.

Safe multisig hardening

Separate power by consequence.

Routine operations, upgrades, treasury, emergency pause and timelock cancellation use separate authority sets. Modules default to denied. Owners, threshold, singleton, proxy code, nonce, modules, guards, fallback handler and pending transactions are continuously attested.

Administrative-key hardening

Non-exportable is not enough.

HSM or MPC custody protects key material. a3e9 adds chain and destination allowlists, ABI-aware function policy, value and velocity limits, exact EIP-712 domains, short-lived workload identity, separated approvals and immutable evidence.

  • —No unrestricted administrative EOA. Material ownership, upgrades, treasury, minting, oracle, bridge and role administration terminate in constrained multisig or threshold authority.
  • —Timelock before critical authority. The upgrade Safe proposes; a separate group cancels; a pause-only guardian reduces risk but cannot transfer, upgrade, mint, unpause or change owners.
  • —Every signature is independently intelligible. The manifest includes chain, Safe, nonce, target, value, operation, calldata, nested calls, state changes, implementation hashes, source commit, simulation block, expiry and safeTxHash.
  • —Dedicated signer devices. No email, chat, development tools, recruiter tests, package installation, remote support or personal trading.
  • —AI never becomes an authority source. Generated summaries assist review but never replace deterministic decoding. Seeds, keys, recovery material, sessions and production payloads stay out of prompts and copilots.

// GOVERNANCE_SENTRY

A timelock creates time. It is only useful if someone can act inside the window.

A timelock is useful only when the exact payload remains stable, detection is fast, cancellation remains independent, and responders can act inside the window. Governance Sentry watches pre-proposal state through destination-chain execution.

HeuristicHeuristic A pattern Governance Sentry watches for between a proposal and its execution.SignalSignal What on-chain state triggers the heuristic.DecisionDecision What Sentry's policy calls for when the signal fires. Any automated response is bounded by consequence, as described further down this section.
Capture-cost deficitCapture-cost deficit Buying enough votes to pass a proposal is cheaper than what the proposal can take. That makes capture profitable.Decisive voting power costs materially less than the authority or value the proposal can reach.Deny execution; assemble canceller.
Abrupt voting powerAbrupt voting power Voting power that appears suddenly near the snapshot, often borrowed or moved in from an exchange or bridge.Delegation or balances spike near snapshot from lending, exchanges, bridges or new clusters.Review within one finalized block.
Text–payload mismatchText–payload mismatch The proposal's description says one thing and its code does another, such as a “parameter update” that changes ownership.“Parameter update” changes ownership, implementation, role administration, modules or spend authority.Hard stop.
Mutable or unknown codeMutable or unknown code The code a proposal will execute can still change, or cannot be identified, so what was reviewed may not be what runs.Code-hash drift, storage-layout change, self-destruction, or unrestricted delegatecall.Hard stop and re-simulate.
Timelock weakeningTimelock weakening A change that shortens the delay or changes who can propose, execute or cancel. It removes the safety window before any funds move.Delay reduction, or proposer, executor, canceller, administrator or predecessor change.SEV-0 even when no funds move.
Multisig regressionMultisig regression A change that makes a multisig easier to control: a new owner, a lower threshold, or a new module or guard.Owner change, lower threshold, new module or guard, handler change, or anomalous nonce replacement.Page on proposal and confirmation.
Capability stagingCapability staging A step that moves no funds itself but enables the next transaction to, such as an unlimited approval or mint authority.Unlimited approval, mint authority, arbitrary call, bridge fan-out or cross-chain message.Model and block the enabled next transaction.

Objectives are explicit. Concentration and queue events within one finalized block; decoded authority impact within two; human acknowledgement under five minutes; independent simulation under fifteen; defensive finality before half of the usable timelock expires.

Monitoring integrated into the control model

OpenZeppelin Monitor

Contract events, function calls, ownership, roles, upgrades, pause, mint and timelock triggers.

Safe Transaction Service

Pending transactions, confirmations, Safe configuration, nonce alternatives, rejections and executions — checked against direct chain state.

Tenderly

Proposal and transaction simulation, state overrides, asset movement and storage-change preview.

Forta

Flash-loan voting, suspicious proposals, thin-voter quorum and governance behavior detections.

Hypernative or equivalent

Cross-protocol anomalies and pre-authorized bounded response; a3e9 remains the decision and evidence layer.

Active AI-driven signer attack: the response path

The runbook assumes the primary chat, identity account, workstation, Safe interface, RPC or transaction service may be hostile. Identity containment and on-chain containment run in parallel.

01

Declare and freeze.

Stop signing, transaction construction, deployments, key rotation from suspect devices and routine retries. Move responders to a clean channel.

02

Map the blast radius.

Enumerate signers, endpoints, sessions, Safes, modules, pending nonces, roles, timelocks, bridges, registrar, CI/CD, cloud, package registry and vendor access.

03

Contain identity.

Revoke sessions and OAuth grants, isolate endpoints, lock help-desk recovery, preserve logs, and restore privileged access with clean FIDO2-backed identities.

04

Contain on-chain authority.

Reject or replace malicious Safe nonces, cancel queued operations, invoke bounded pauses, reduce limits and isolate bridge routes from clean infrastructure.

05

Verify live state.

Re-read owners, threshold, modules, guards, handlers, roles, implementations, timelock, approvals, oracles and cross-chain executors through independent RPCs.

06

Preserve evidence.

Record payloads, hashes, confirmations, telemetry, identity logs, messages, DNS changes, builds and exact block state without contaminating originals.

07

Rotate from clean state.

Replace owners and keys only after clean devices and intent are established; invalidate pending signatures and revoke old roles, sessions, backups and approvals.

08

Reopen by proof.

Reconcile assets and authority, test cancellation and recovery, replay the attack safely, and add it to the permanent regression baseline.

Automation is bounded by consequence

Automation is bounded by consequence. a3e9 can freeze its signing workflow, reject, cancel, reduce a limit, narrowly pause, or isolate a bridge route. The monitor never receives unrestricted treasury movement, ownership replacement, arbitrary upgrade, or broad cross-chain authority.

// ORACLE_GOVERNOR

Everything above depends on inputs — the part most security products never show you.

The Oracle Governor owns them: what a source is allowed to establish, how fresh it has to be, how many genuinely independent origins a claim needs, and what happens when a source goes dark. The advisory layer is not scraped news but a fixed set of registered public feeds, polled on a signed schedule with conditional requests, durable cursors, overlap windows and an explicit health event for every miss.

Registered sourceRegistered source A public advisory feed registered with the Oracle Governor. Every one of them sits in the discovery-only class: it can raise a state and page a human, never clear a transaction.EndpointEndpoint Where the feed is read from. The endpoints were verified by the specification author, not by an automated agent, and runtime onboarding rechecks them.CadenceCadence How often the feed is polled, and how. ETag and If-Modified-Since are conditional requests: the server answers “nothing new” instead of resending the whole feed.
FBI IC3 — public service announcementsFBI IC3 — public service announcements Public service announcements from the FBI's Internet Crime Complaint Center. Registered to one operator together with the IC3 advisories, so the two count as one origin.ic3.gov/PSA/RSS900 s · ETag / If-Modified-Since
FBI IC3 — cybersecurity advisoriesFBI IC3 — cybersecurity advisories Cybersecurity advisories from the same IC3 site. Same operator as the announcements feed, so it never counts as a second independent origin.ic3.gov/CSA/RSS900 s
FBI cyber alerts indexFBI cyber alerts index The FBI's public cyber alerts page. It is an index page, not a feed, so it is used only to reconcile and discover.fbi.gov/investigate/cyber/alertshourly · reconciliation and discovery only
CISA advisoriesCISA advisories Public advisories from the US Cybersecurity and Infrastructure Security Agency. Revisions and co-sealing agencies are kept, not overwritten.cisa.gov/cybersecurity-advisories/all.xml900 s · co-sealers and revisions preserved
CISA Known Exploited VulnerabilitiesCISA Known Exploited Vulnerabilities CISA's public catalog of vulnerabilities known to be exploited in the wild. The full catalog is also compared nightly against its previous digest.…/known_exploited_vulnerabilities.json900 s + nightly full-catalog digest diff
NIST NVD — CVE APINIST NVD — CVE API The public CVE records in NIST's National Vulnerability Database. Polled by modified time with an overlap, so a late update is not skipped.services.nvd.nist.gov/rest/json/cves/2.01800 s modified-time overlap + nightly
GitHub Global AdvisoriesGitHub Global Advisories GitHub's public advisory database for open-source packages. Polled by a modified cursor, with a daily full pass.api.github.com/advisories900 s by modified cursor + daily
Vendor PSIRT feedsVendor PSIRT feeds Security advisories published by individual vendors' product security teams. Each vendor's feed is registered separately.registered per vendor900 s critical · hourly otherwise
Authenticated evidence uploadAuthenticated evidence upload Evidence someone submits directly. It is quarantined on arrival and has to pass intake before it can establish anything.Governor intake endpointimmediate · quarantined on arrival

Consuming a public feed is not a relationship

Consuming a public feed is not a relationship. These are published sources that anyone may retrieve. a3e9 reads them; it does not represent, and is not endorsed by, the FBI, CISA, NIST or any other agency, and it claims no privileged or non-public access. Where privileged access has been suggested — for example automated delivery of non-public FBI reporting through InfraGard or Cyber Shield — that claim is recorded in the evidence ledger with status unresolved, and nothing depends on it.

Feed endpoints are author-verified, not machine-verified. The registered advisory endpoints were verified by the specification author on 2026-09-08. They were not retrieved by an automated agent, because the environment that produced the specification had no network access — so the specification says so, in the specification. Runtime onboarding rechecks transport, media type, schema, ownership and terms before any source is activated.

A worked example: a wrong fact about a government source, stopped at intake

Supplied documents carry confident errors, and the ones that read most authoritatively are the ones that get copied forward unchecked. So every document that enters is untrusted on arrival — including a3e9's own fixtures, which the bundle deliberately ranks at the bottom of its precedence order rather than the top.

A fixture asserted that the FBI's IC3 /PSA and /CSA pages are RSS feeds. They are not — they are HTML index pages, and the real feeds end in /RSS. The claim was recorded as contradicted, the correction bound to it, and both retained. No collector was ever pointed at a wrong endpoint, and no verdict was ever built on the claim.

That is the whole design in one artifact: precedence, not plausibility, decides what a document can establish. A confident, well-formatted, wrong statement about a government source is precisely the input this pipeline exists to stop — and it does not get a pass for looking official.

How a feed becomes evidence

01

An RSS item is a pointer, not evidence.

A successful feed retrieval without successful retrieval of the linked object is recorded as incomplete. The linked PSA, advisory or indicator file is fetched separately and its exact bytes are hashed.

02

Removals count as much as additions.

The KEV catalog is diffed by catalog version and CVE ID; additions, changed fields and removals all become new immutable versions. A retraction reevaluates every dependent claim rather than quietly disappearing.

03

Severity is not applicability.

A high CVSS score cannot by itself drive an action — the Governor rejects severity-only action without proof that the affected component is actually present and reachable in the deployment under evaluation.

04

Corrections never overwrite.

The original object stays immutable; a correction is a new version linked with supersedes. A validated_source status means provenance and parsing were verified. It does not mean the statement is true.

05

Nothing enters the prompt.

Articles, advisories, PDFs, screenshots and uploads go through immutable raw object → quarantine → active-content checks → sandboxed parsing → origin verification → atomic candidate claims → lineage and contradiction checks → frozen evidence manifest. The corpus updates continuously; the models are not fine-tuned on it.

a3e9 oracle feed manifest v1.1 (as of 2026-09-08) and the evidence intake contract. Endpoints were verified by the specification author on 2026-09-08 and are re-checked for transport, media type, schema, ownership and terms at runtime onboarding.

Eighteen oracle classes, each with its own failure rule

A source is not trusted in general; it is trusted for a specific job. Every input is declared into one of eighteen classes, and the class fixes four things in advance: what the source may establish, how many independent origins a material claim needs, how stale it may be, and what happens when it stops answering.

Seven classes fail closed. None of the eighteen fails open, because the governing rule is written into the manifest as policy rather than left to a runbook: loss of a critical oracle never becomes permission. An outage is a reason to stop, never a reason to proceed.

Oracle classOracle class A kind of source the Oracle Governor may rely on, with a fixed job. A source is trusted only for its class's job, never in general. Choose a class's ? for what it establishes and what it cannot.RequiredRequired Always: the class must be active before a policy can run even in shadow or canary. Conditional: needed when a desk's activity involves it, such as bridges or an exchange. Either way every class is declared in every cycle; one that does not apply is marked not applicable with a reason, never left out.TierTier How far the Governor trusts what the class reports. Deterministic control can remove authority on its own. Deterministic and attested observations establish chain, code, identity or service facts. Aggregated and corroborating observations give market or impersonation context under stated limits. Discovery only can point at possible evidence and never admit it. Authorized judgment is a recorded human decision.OriginsOrigins The minimum number of independent origins a material claim needs. Independence is counted by who operates the source, not by how many endpoints answer: two keys at one provider are one origin.FreshnessFreshness How old the latest valid observation may be. Past this, the source is stale and the rule in On failure applies.On failureOn failure What the Oracle Governor does with the controls that depend on this source when it goes missing, stale or untrusted. Fail closed: the dependent action is held. Degrade to restricted: authority is reduced, with an explicit restriction. Alert only: people are notified and authority does not change. Research only: an input for investigation that cannot deny or approve evidence. This is the Governor's internal rule for a desk's controls. It is not what TINL shows a wallet user, and it is not TINL stopping a transaction: when TINL cannot check a request, it warns and the person decides.
asset_authority_registryasset_authority_registry The inventory of what is protected: assets, signers, contracts, endpoints, governance rights and recovery paths, and who can move or change each one. Cannot establish: Whether any of those endpoints, identities or keys is compromised right now.alwaysdeterministic control11 hdegrade to restricted
direct_chain_statedirect_chain_state Reads the chain itself: blocks, transactions, logs, contract code, storage, balances, token allowances and reorganizations. Cannot establish: Who owns an address, what they intended, or whether their device is compromised.alwaysdeterministic observation230 sdegrade to restricted
chain_finality_timechain_finality_time Decides whether a transaction is final, still reversible, challenged or reorganized, using each chain's own rules and trusted time. Cannot establish: Whether the signer or recipient is legitimate.alwaysdeterministic observation130 sfail closed
custody_signing_intentcustody_signing_intent What the custody system is about to sign: signer status, key use, destination, amount, simulation result, approvals and the policy version in force. Cannot establish: Facts outside the custody system, or whether an outside caller is who they claim.alwaysdeterministic control12 sfail closed
endpoint_securityendpoint_security What is happening on the operator's machine: remote control, screen or input takeover, suspicious processes, clipboard and file transfer, device posture. Cannot establish: Chain finality, or who a remote operator really is.alwaysdeterministic control12 sfail closed
identity_accessidentity_access Sign-ins, new devices, passkey and factor changes, app grants, recovery changes and privileged-role changes. Cannot establish: Whether a transaction is final, or whether a public article is accurate.alwaysdeterministic control160 sdegrade to restricted
cloud_secret_accesscloud_secret_access Access to wallet backups, recovery documents, seed images, key files, secret managers, shared drives and email. Cannot establish: Whether exposed secret material was actually copied by an attacker.conditionaldeterministic observation160 sdegrade to restricted
code_supply_chaincode_supply_chain Where deployed code came from: commits, releases, dependencies, build attestations, package signatures, CI results, and whether deployed bytecode matches. Cannot establish: Whether a person or runtime identity is compromised right now.alwaysattested primary25 mindegrade to restricted
governance_privilegegovernance_privilege Proposals, votes, timelocks, proxy upgrades, admin roles, multisig membership, delegates and emergency powers. Cannot establish: Whether a governance decision is wise, legal or beneficial.conditionaldeterministic observation260 sdegrade to restricted
cross_chaincross_chain Links a movement on one chain to its other side: bridge messages, burns and locks, attestations, solver fills and exchange deposits. Cannot establish: Common ownership, when the link rests only on timing and amount.conditionaldeterministic or inferred160 sdegrade to restricted
market_referencemarket_reference Price, volatility, liquidity, exchange rates and market depth, as context for economic risk. Cannot establish: Whether code is correct, who owns what, legal status, or why a price moved.conditionalaggregated observation260 sfail closed *
exchange_custodianexchange_custodian What an exchange or custodian reports: sessions, API keys, withdrawal requests, allowlists, holds, deposits and freeze confirmations. Cannot establish: Anything outside that service, or who owns a public address without authenticated records.conditionalattested primary130 sdegrade to restricted
domain_communications_impersonationdomain_communications_impersonation Look-alike domains, new certificates, spoofed email, failed caller verification and fake support channels. Cannot establish: A caller's real identity from a displayed number or message alone.conditionalcorroborating observation25 minalert only
external_threat_discoveryexternal_threat_discovery Watches the outside world: advisories, disclosures, incident claims, research, project statements, posts on X and submitted files or links. Cannot establish: Establish any claim until its source is independently retrieved, validated and bound to evidence. It can raise a flag; it can never clear anything.alwaysdiscovery only215 minresearch only
human_attestationhuman_attestation Recorded human decisions: analyst review, incident command, legal interpretation, recovery approval and two-person release decisions. Cannot establish: A chain, code, cryptographic or arithmetic fact by opinion alone.alwaysauthorized judgment2n/afail closed
evidence_provenanceevidence_provenance Where each piece of evidence came from: content hashes, source identity, lineage, timestamps, validity windows and contradictions. Cannot establish: That an authentic statement is true, without further evidence.alwaysdeterministic control160 sfail closed
model_runtimemodel_runtime Records every model call: which model was asked for and which answered, provider, tools, search setting, and hashes of request and response. Cannot establish: Whether the model's answer is correct.alwaysdeterministic control130 dfail closed
oracle_healthoracle_health Monitors every other source: freshness, signatures, agreement between endpoints, independence, schema drift, lag and provider substitution. Cannot establish: The underlying fact, while the source it monitors is unhealthy.alwaysdeterministic control115 sfail closed

One failure rule is an open decision, and is published as one

* Stated openly: the failure semantics for market_reference are an open architecture decision — the manifest and the implementation prompt disagree, the conflict is recorded, and it is deliberately not resolved by guessing. A market oracle outage must never become permission, which is the one thing both readings agree on.

external_threat_discovery is always required, and discovery-only. The Governor is obliged to watch the outside world and forbidden to let what it finds approve anything. Every source in the feed table sits in that class. It can raise a state, open an investigation and page a human. It cannot clear a transaction.

Health is evaluated in a fixed order, worst first: quarantined → untrusted → unavailable → stale → degraded → healthy. Integrity is checked before freshness on purpose — evaluating freshness first would let a well-timed forgery read as healthy. Sources have a lifecycle too: proposed → vetting → shadow → active → degraded → suspended → retired. Nothing leaves quarantine by waiting, and nothing returns from suspended on its own.

Independence is declared, never inferred

“Two independent sources agreed” is the most-abused sentence in security tooling. Two API keys at the same provider agree. A provider and its reseller agree. Three news sites repeating one press release agree. Counting interfaces manufactures confidence that was never there.

Two endpoints operated by the same provider are one administrative origin — however many URLs are configured. Every source declares its independence group, and the policy engine counts administratively independent origins, never endpoints. The FBI's IC3 PSA and CSA feeds are registered to a single operator precisely so they collapse to one. Two search tools that both surface the same underlying article are one evidence lineage, not two.

Written from a finding against ourselves

The rule is written from a real finding, not a whiteboard. Adversarial review of a3e9's own detectors is standing practice, and it is what produced this control: a probe reporting “two independent providers agreed” was found to be counting endpoints rather than operators. Two keys at one vendor, or a vendor and a reseller of it, would have produced the identical agreed result. The finding was written up against ourselves. Where a second genuinely independent provider is still owed, the backlog says so rather than the dashboard implying otherwise — and two providers that disagree produce a finding, not an average.

This is enforced in code rather than asserted in a policy document. The counting function cannot return a bare number: it returns what it counted and what it refused to count, with the reason — not registered, same operator as an already-counted group, or empty. Three negative controls in CI fail the build if an unregistered group ever counts, if two same-operator sources ever fail to collapse, or if an empty group is ever scored. The property the tests pin is blunt: adding duplicate endpoints from one independence group must not increase confidence.

Sources are graded — and a grade never opens a gate

Every source carries a rolling 30-day reliability grade across eight weighted dimensions. It is a record of how a feed has behaved, published so that a source's history is visible rather than assumed.

DimensionDimension One thing a source is graded on. A grade measures reliability; it never grants authority.WeightWeight How many of the 100 points this dimension is worth. The weights sum to 100.What it measuresWhat it measures The ratio or record behind the dimension's score.
Integrity & authenticated originIntegrity & authenticated origin Whether what arrives is intact and provably from the source it claims. A confirmed forgery quarantines the source outright.25Share of received objects that were authenticated and intact. A confirmed forgery is a hard quarantine, not a deduction.
Freshness complianceFreshness compliance Whether the source delivers inside the freshness limit its class sets.20Objects arriving inside the class SLO, adjusted for heartbeats.
AvailabilityAvailability Whether the source answers when polled, or sends its expected heartbeat.15Successful collection or heartbeat intervals against expected.
Completeness & coherenceCompleteness & coherence Whether each object has the fields it must have, and whether they agree with each other.10Required fields present and internally consistent.
Administrative independenceAdministrative independence Whether the source brings the independent operators its class requires. Two endpoints at one operator count as one.10Effective independent groups against required. Endpoint count is irrelevant.
Agreement with comparable sourcesAgreement with comparable sources Whether the source agrees, within tolerance, with other current sources reporting the same thing.10Non-stale comparable sources within tolerance.
Parser & schema stabilityParser & schema stability Whether objects still parse with an approved parser, or the format has drifted.5Objects parsed by an approved parser without schema drift.
Correction & false-admission historyCorrection & false-admission history How often something admitted from this source later turned out false.5Confirmed false admissions against claims admitted.

The rules around the number matter more than the number. Never round upward across a grade boundary. A grade change never expands allowed uses. A good grade never overrides a current hard failure. No model-generated confidence value contributes to a grade. And a discovery-only source can earn a perfect score and still be unable to approve a single piece of evidence — reliability and authority are different axes, deliberately.

Bands are A 90–100, B 80–89.99, C 70–79.99, D 50–69.99, F below 50, plus Q for hard-gate quarantine and N for insufficient history. Scores are computed in integer basis points — 10,000 bp = 100.00 points — with integer division throughout and no floating point anywhere, so a grade is reproducible byte-for-byte by anyone re-running it. A zero denominator contributes zero, not full marks: a source with no observations does not get credit for a clean record it never earned.

a3e9 Oracle Governor grading model (ADR-0003) and the governor-core implementation.

Early warning: the alert pipeline

Research-quality sources are slow by design — they publish after verification. The alert pipeline watches the fastest primary sources instead, and feeds the ledger as provisional records that verified sources later supersede.

LayerLayer A stage of the alert pipeline, fastest first. Early layers trigger watch states only, never verdicts.SourceSource Where records at this layer come from.LatencyLatency Typical time from an incident to a record at this layer. Faster sources are less verified.
Primary alertsPrimary alerts Posts from security firms' alert accounts, which often report an exploit within minutes. Accounts are pinned by numeric ID, so a renamed handle cannot repoint the feed.X API — security-firm alert accounts (PeckShield, Blockaid, SlowMist and peers), polled with dedupminutes
CorroborationCorroboration A second source that cites the primary alerts, confirming a report exists before it is verified.SlowMist Hacked page — cites the primary alertshours
Verified corpusVerified corpus Researched incident records. When one lands it supersedes the provisional record, and the ledger keeps both.Rekt, DeFiLlama, DeFiHackLabs — supersede provisional records when publisheddays–weeks

News-derived records can trigger watch states — never verdicts. The model categorizes; Pathfinder decides. When the verified record lands it supersedes the provisional one, and the ledger keeps both: the detection-latency delta is itself evidence.

The default watchlist is fixed, versioned, and pinned by numeric account ID rather than handle — a handle can be renamed or sold, and a renamed handle must never silently repoint a feed at someone else's account. Polling is budgeted: a since_id cursor, dedup across accounts reporting the same incident, and a hold until the rate-limit reset on a 429 rather than a retry storm.

// SCOPE_AND_CHAINS

A chain a3e9 can observe is not a chain it can assess, and neither implies it can construct and sign.

Two questions get asked together and answered as one, which is how vendors end up overstating both. They are separate. “Release 1” is a capability boundary, not a chain list — and “supported” means something different on each of the three planes a3e9 operates.

Ethereum, Base and BNB Smart Chain are hunted for verdicts today, with Solana running as a separate process. Ethereum, Base, Arbitrum One, BNB and OP Mainnet have built execution-path assessment. Signing adapters cover EVM, Solana, Stellar, Bitcoin and Litecoin. And every armed detection listed above runs on Ethereum — coverage follows the chain the evidence is deepest on, not the chain list that markets best.

Release 1

Execution-path assurance

Contract execution paths, trap and foul-play review, policy verdicts, decision memory, evidence recording and the ledger schema. Assurance levels 0 (Registered) and 1 (Path-Verified). The Release 1 scope statement explicitly freezes the chain set: no new venue family, no new chain adapter.

Release 2

Control-plane assurance

Admin-key compromise, governance capture, bridge trust, oracle abuse and the operational telemetry around them. This is where assurance level 2 lives.

Release 3

The packaged product

Licensable deployment, outage alerting and the commercial surface.

ColumnColumn One of three separate pieces of software. A chain appearing in one row says nothing about the other two.Enforced whereEnforced where Where the chain list for this capability is enforced in code.ChainsChains The chains this capability covers today, with what is present but not built named as such.Signature schemeSignature scheme The signature algorithm used. Read-only means the capability does not sign at all.What “supported” meansWhat “supported” means The limit of the capability. Read this cell before reading the chain list.
Hunt & issue verdictsHunt & issue verdicts Observing contracts on-chain and issuing verdicts. It watches; it does not send transactions.A hard allowlist in code, with testsEthereum, Base, BNB — plus Solana as a separate binaryread-onlyDry-run observation and verdicts. It does not send.
Assess execution pathsAssess execution paths Evaluating what a contract call would do before it happens. Read-only by design.A typed chain registry with per-chain capability flagsBuilt: Ethereum, Base, Arbitrum One, BNB, OP Mainnet. Present but not built: Polygon, Avalanche C-Chain, Mantle, Blast. Solana is intercept-only.read-onlyRead-only assessment. It does not sign or broadcast — a deliberate boundary, not a gap being closed.
Construct & signConstruct & sign Building transactions and having an HSM sign them. The key stays in the HSM, and the service does not broadcast.Four signing adaptersEVM (Ethereum, Polygon, Arbitrum, Base, Avalanche C-Chain), Solana, Stellar, Bitcoin, Litecoinsecp256k1 for EVM and Bitcoin/Litecoin; Ed25519 for Solana and StellarBuilds broadcast-ready bytes. The HSM holds the key; the service never does, and does not broadcast.

Naming a chain is not implementing a desk. That sentence is a comment in a3e9's own source, above the function that maps chain IDs to names, and it is the rule this table follows. Several chains are named in code — Arbitrum, Optimism, Polygon, Avalanche, Mantle, Blast — while the hunting allowlist refuses them at startup. Two of them have no execution-simulation endpoint available at all, so they get identity and price-impact analysis and nothing deeper.

What is explicitly not built

  • —Avalanche Subnet support — no code, no design, re-verified as absent on 2026-08-15.
  • —BIP-340 / Schnorr / Taproot — absent; the HSM has no Schnorr capability, so Taproot is out of scope for both Bitcoin and Litecoin.
  • —Cosmos, Polkadot, Sui and Aptos — named as future adapters, with no code behind them today. Any marketing surface that implies otherwise is wrong and is being corrected.
  • —The Ed25519 path is a non-FIPS HSM path. Solana and Stellar signing does not run through a FIPS-validated boundary. FIPS 205 / SLH-DSA is not implemented and is not claimed as a capability.
  • —Key-handle retrieval is EVM-only. The HSM exposes no way to resolve a public key from a key label outside the secp256k1 path, so Solana, Stellar, Bitcoin and Litecoin all require a caller-supplied public key — and their success paths have not yet run end to end against a live module. EVM has.
  • —Non-EVM threat-intelligence wiring is incomplete. The indicator normalisation path is EVM-only today; whether Solana indicators come into scope is an open, recorded decision rather than an assumed yes.
  • —Block time is a real constraint, measured not estimated. A full snapshot costs roughly 231 ms per pool. Ethereum at ~12 s per block has room. Base and OP at ~2 s are tight. BNB at ~0.4 s and Arbitrum at ~0.25 s do not fit yet at wider pool counts. The internal verdict is one sentence long — “we are not good yet” — and the throughput work is scheduled rather than claimed.
  • —Reorgs are replayed, not deduplicated. Default reorg window is 12 blocks; reorganised blocks are re-ingested rather than dropped. Finality uses each chain's registered rule — never one universal confirmation count — and chain_finality_time is a fail-closed oracle class.

The Pathfinder chain allowlist, the TINL chain registry and README, the chain-router status table and release checklist, and the nine-chain scale analysis.

// PROOF_OF_ASSURANCE

One artifact a protocol can display and anyone can verify.

Not a static badge: a signed, evidence-anchored attestation that expires, downgrades and revokes automatically when the underlying state changes.

0

Registered

Known to the ledger. No evaluation claimed.

1

Path-Verified

Execution-path assurance performed on the contracts in scope.

2

Control-Plane Verified

Admin keys, governance, upgrades, oracle and bridge trust evaluated.

3

Continuously Assured

Live monitoring. Revalidates on code change or expiry. Alerting wired.

4

Incident-Validated

Detections proven against the Rekt baseline corpus.

Why the mark is non-transferable

The mark is issued as a soul-bound token on Solana. That single property is what makes the system enforceable.

It cannot be sold or moved.

A mark earned by a protocol that passed evaluation can never be bought by one that did not. There is no secondary market for trust.

It can be revoked in place.

Because the token never leaves the subject's wallet, the issuer's update authority can downgrade or burn it the moment Pathfinder's verdict changes — a governance capture, an admin-key compromise, an expired revalidation. The badge on the dApp's site reads the live on-chain state, so a revoked mark stops verifying everywhere it is displayed, without the holder's cooperation.

It carries the evidence pointer.

The token's metadata references the ledger record — verdicts, findings, policy version, expiry — so anyone can walk from the badge to the evidence chain behind it.

It expires by default.

Marks carry a validity window. Silence is not safety: a mark that is not revalidated lapses, and the display reflects it.

A static badge says “we were once looked at.” A soul-bound, revocable mark says “we are being watched right now, and here is the proof.” That is the difference between marketing and assurance.

Where this stands

The engine behind the mark is built and running: TINL evaluates transaction intent and connection trust; Pathfinder evaluates execution paths and exploit variants; Governance Sentry watches voting, timelocks, Safe authority and administrative state; and the a3e9-ledger stores the append-only evidence chain. The Rekt baseline corpus — 266 incidents with pre-state code hashes — is wired in as the regression test set. Badge issuance, expiry, downgrade and revocation run on the same evidence-backed stack.

The lineage is honest: this concept began as a self-attested badge submitted to a Solana hackathon in 2025 — a badge with no engine behind it, and the judges saw that. The badge was right; the engine did not exist yet. Now it does. The mark is the output; the service is what stands behind it.

// WHAT_KEEPS_THIS_HONEST

The limits, in the same place as the pitch.

a3e9 does not replace audits — said out loud.

Audits are necessary. a3e9 exists because audited code still drains people: an audit protects the builder, cannot protect every party who later interacts, and cannot see a contract that changed after sign-off. Keep your audit. a3e9 is the seatbelt for everyone who drives the car afterwards.

It is built — and it is still being hardened.

The engine runs today: path evaluation, connection trust, verdicts, decision memory, the evidence ledger and the Rekt baseline tests are working software. What remains is scale-out and the commercial packaging. The demonstration is the system itself — the Audius reproduction, the live detector baseline, the corpus tests.

Off-chain compromise stays off-chain.

Signer theft, phishing emails and CI/CD compromise are not derivable from contract state. a3e9 consumes verified identity, endpoint, domain, session and vendor signals where available, then detects and blocks the on-chain consequences. It does not claim to see every private off-chain event.

Two different questions get sold as one product.

“Is this counterparty sanctioned?” and “will this signature drain me?” are answered by different machinery, and a3e9 answers only the second. There is no sanctions or AML oracle class in the Governor's feed manifest — no OFAC or SDN screening, no chain-analytics attribution, no wallet risk-labelling feed. A desk with a sanctions-compliance obligation does not get it here, and that is recorded as a missing oracle class rather than implied by adjacency to the advisory feeds that are wired in.

TINL is equally plain about its own edges.

It normalizes what a signature actually does — an unlimited approve, a malicious EIP-2612 permit, setApprovalForAll over a whole collection, the SPL equivalent on Solana — and applies policy to the decoded intent, with every ALLOW, WARN, BLOCK or NORMALIZE written to an HMAC-chained log before the call returns. It does not screen destinations, does not stop address poisoning or a fake airdrop the user chooses to interact with, and the wallet confirmation screen remains the backstop.

A digest that verifies is not a thing that is current.

This is the failure mode the whole product is built around, and a3e9 holds itself to it: a consumer was serving a monitoring-rule corpus whose signature verified perfectly — digest e37585e1…, 14 rules — while the producer's live output had moved to 881537e8…, 15 rules. Integrity passed; currency failed; only the producer's drift gate could tell the two apart. That finding is why every mark expires, why silence is not treated as safety, and why the ledger separates “this is authentic” from “this is current.”

a3e9 “Safe to Touch” positioning brief v2, reviewed 2026-09-09. Counts as of 2026-09-08.

// SAY_IT_IN_ONE_LINE

Audits make code safe to ship. a3e9 makes it safe to touch.

They protect the builder. We protect everyone who presses “connect” and “sign.”

Your audit is a snapshot. a3e9 is the live feed.

Every Rekt incident is a test we have to pass — forever.

A timelock creates time. a3e9 makes that time actionable.

A multisig proves signatures. a3e9 verifies identity, intent and authority.

A badge that cannot be bought — and can be revoked.

An oracle outage never creates permission.

Independence is declared, never inferred. Two keys at one vendor is one source.

Obliged to watch the outside world. Forbidden to let it approve anything.

The model proposes the attack. The deterministic test decides.

A digest that verifies is not a thing that is current.

a3e9 · TINL · Pathfinder · Governance Sentry · Oracle Governor · ledger · Proof of Assurance — interaction-time assurance, fail-closed by design.