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 — far shorter than a blocklist's update cycle. The attack is not the contract; it is the connection. A hijacked social account posts a lookalike site and the wallet connects before anything evaluates the site at all. The Connection Trust Layer evaluates the site 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 / alerting

They alert.

A dashboard tells a human something looks wrong — usually after it already happened. Someone still has to see it, believe it and act in time.

a3e9

It decides, and blocks.

A fail-closed verdict sits in the transaction path. It is a gate, not a dashboard — and one observed compromise flips the whole desk before the next person touches it.

The auditors are not the competition. The closest players are the on-chain monitoring and alerting tools; they exist, they are useful, and the line between them and a gate is drawn above rather than blurred.

// CONNECTION_TRUST_LAYER

Every wallet tool waits for the signature request. This evaluates the site before the connection exists.

On Solana most token scams live for minutes — far shorter than any blocklist's update cycle. The attack is not the contract; it is the connection. A hijacked social account posts a lookalike site, and the wallet connects before anything has evaluated the site at all. Verdicts are verified, unknown, suspicious and blocked.

What it checksWhat it catches
Proof of Assurance attestationDoes 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 registrationA domain registered hours ago claiming to be an established protocol is the classic emergency-migration scam pattern.
Lookalike spellingHomoglyph and typosquat variants of known project domains — the clone that looks right at a glance.
Drainer-kit fingerprintsRecycled scam infrastructure: known drainer scripts, reused hosting patterns, redirect chains through disposable domains.
Behavioral signalsConnection pressure, signing urgency, and immediate signature requests before any content is shown.
Channel compromiseReported 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.

OracleWhat it contributesScale
Rekt.news corpusContract-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 HacksClassification and technique taxonomy — maps onto Pathfinder finding categories$20B+ tracked · 134 chains
SlowMist HackedIncident volume and non-EVM coverage — Solana, Cosmos, Stellar, where Rekt is thin2,235 events · $38B trackeddelivered CSV: 2,252 rows through 2026-09-07
DeFiHackLabsExecutable 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.

WhatCountMeaning
SlowMist incident rows2,252Through 2026-09-07. Date, target, attack method, loss, description, reference.
Rekt contract-version rows1,284Across 266 incidents and 12 chains — chain, address, role, exploit tx, pre-state block.
DeFiHackLabs PoCs scanned860Working Foundry reproductions read and matched against the corpus.
Incident addresses in the coverage manifest303Each one an address a detection could be aimed at.
…with a pre-state code hash303 / 303100%. The exact bytecode as it stood at the block before the exploit.
Victim contracts still live and unchanged57Same bytecode, still deployed. These are not historical artifacts.
Gold-standard incidents30Pre-state code hash and an archived mainnet-fork reproduction. Both halves present.
Generated incident test files285One Solidity test per incident address, forked at its own pre-state block.
Per-incident finding records577Routed vulnerability class, template, runtime code hash, exploit tx.
Armed regression tests13Covering 10 incidents. Run in CI against pinned pre-incident state.
Recorded coverage gaps290Addresses 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.

IncidentRecorded lossFailure familyArmed control
Nomad$190,000,000bridgeAccessControlTxOrigin
Curve (Vyper)$69,000,000reentrancyReentrancy
DAO Maker$7,000,000rug / privileged drainPrivilegedDrain
Audius$6,000,000proxy upgradeInitProxyTakeover
Gravity Bridge$5,400,000price / AMMOracleSpotPrice
Socket$3,300,000bridgeAccessControlTxOrigin
Sushi (Yoink)$3,300,000price / AMMOracleSpotPrice
Aztec Connect$2,280,000proxy upgradeInitProxyTakeover
Sir Trading$355,000proxy upgradeInitProxyTakeover
Beanstalkno 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 axisHow one incident becomes a familyWhy the original patch misses it
Exact code cloneThe same vulnerable implementation deployed by another project or on another chain.The downstream team never received or applied the upstream fix.
Semantic cloneSource differs, but the same accounting or authorization invariant is present.Hash and signature matching miss logically equivalent code.
Sibling entry pointThe 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-contractThe attacker moves between functions or contracts that share state.The reentrancy guard exists only on the function that was originally exploited.
Parameter or assetA different reserve, collateral, decimals setting, liquidity level, or fee behavior.The fix assumes the first incident's token and market conditions.
Temporal or orderingInitialization, migration, governance execution, liquidation, or a deployment window.The production code is safe only after setup has completed.
Economic compositionKnown primitives combined through flash liquidity, recursive leverage, MEV, or several markets.Each component looks safe when tested independently.
Operational hybridA 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.

GradeWhat it meansWhat it actually proves
A — Confirmed defense bypassThe 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 inheritedThe 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 neutralizedA 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 causeThe 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 testWhat the narrow assumption misseda3e9 regression
Wise LendingDonation limits did not stop repeated sub-limit rounding from creating “stealth donations.”Bound exchange-rate movement across arbitrary accounting sequences.
Hundred and related forksKnown empty-market precision risk survived across Compound- and Aave-derived deployments.Atomic initialization, permanent minimum liquidity, conservative rounding, and fork-wide discovery.
Tornado CashThe 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.
BeanstalkA proposal-age delay existed, but temporary voting power voted and executed atomically.Separate voting-power maturation, snapshot, quorum, queue, execution and cancellation.
Build FinanceThe 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.

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.

RoleProviderSearchWritten constraint
Raw current web discoveryPerplexity — Search APIonmay not promote evidence; returns ranked sources for quarantine, not prose to accept
Web-grounded discovery synthesisPerplexity — Agent APIonno automatic model fallback during high-assurance work
Emerging signal scoutxAI — Grokonmay not verify its own hypotheses
Architecture & adversarial criticAnthropic — Claudeoffmay not approve its own control
Multimodal & large-artifact examinerGoogle — Geminioffpreview models require a release gate
Deterministic test & code engineerOpenAI — GPT-5offno production credentials, ever
High-volume triageOpenAI — 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.

PlaneQuestion answeredControls enforced
IdentityIs 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.
IntentDo 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.
AuthorityWhat 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.

HeuristicSignalDecision
Capture-cost deficitDecisive voting power costs materially less than the authority or value the proposal can reach.Deny execution; assemble canceller.
Abrupt voting powerDelegation or balances spike near snapshot from lending, exchanges, bridges or new clusters.Review within one finalized block.
Text–payload mismatch“Parameter update” changes ownership, implementation, role administration, modules or spend authority.Hard stop.
Mutable or unknown codeCode-hash drift, storage-layout change, self-destruction, or unrestricted delegatecall.Hard stop and re-simulate.
Timelock weakeningDelay reduction, or proposer, executor, canceller, administrator or predecessor change.SEV-0 even when no funds move.
Multisig regressionOwner change, lower threshold, new module or guard, handler change, or anomalous nonce replacement.Page on proposal and confirmation.
Capability stagingUnlimited 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 sourceEndpointCadence
FBI IC3 — public service announcementsic3.gov/PSA/RSS900 s · ETag / If-Modified-Since
FBI IC3 — cybersecurity advisoriesic3.gov/CSA/RSS900 s
FBI cyber alerts indexfbi.gov/investigate/cyber/alertshourly · reconciliation and discovery only
CISA advisoriescisa.gov/cybersecurity-advisories/all.xml900 s · co-sealers and revisions preserved
CISA Known Exploited Vulnerabilities…/known_exploited_vulnerabilities.json900 s + nightly full-catalog digest diff
NIST NVD — CVE APIservices.nvd.nist.gov/rest/json/cves/2.01800 s modified-time overlap + nightly
GitHub Global Advisoriesapi.github.com/advisories900 s by modified cursor + daily
Vendor PSIRT feedsregistered per vendor900 s critical · hourly otherwise
Authenticated evidence uploadGovernor 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 classRequiredTierOriginsFreshnessOn failure
asset_authority_registryalwaysdeterministic control11 hdegrade to restricted
direct_chain_statealwaysdeterministic observation230 sdegrade to restricted
chain_finality_timealwaysdeterministic observation130 sfail closed
custody_signing_intentalwaysdeterministic control12 sfail closed
endpoint_securityalwaysdeterministic control12 sfail closed
identity_accessalwaysdeterministic control160 sdegrade to restricted
cloud_secret_accessconditionaldeterministic observation160 sdegrade to restricted
code_supply_chainalwaysattested primary25 mindegrade to restricted
governance_privilegeconditionaldeterministic observation260 sdegrade to restricted
cross_chainconditionaldeterministic or inferred160 sdegrade to restricted
market_referenceconditionalaggregated observation260 sfail closed *
exchange_custodianconditionalattested primary130 sdegrade to restricted
domain_communications_impersonationconditionalcorroborating observation25 minalert only
external_threat_discoveryalwaysdiscovery only215 minresearch only
human_attestationalwaysauthorized judgment2n/afail closed
evidence_provenancealwaysdeterministic control160 sfail closed
model_runtimealwaysdeterministic control130 dfail closed
oracle_healthalwaysdeterministic 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.

DimensionWeightWhat it measures
Integrity & authenticated origin25Share of received objects that were authenticated and intact. A confirmed forgery is a hard quarantine, not a deduction.
Freshness compliance20Objects arriving inside the class SLO, adjusted for heartbeats.
Availability15Successful collection or heartbeat intervals against expected.
Completeness & coherence10Required fields present and internally consistent.
Administrative independence10Effective independent groups against required. Endpoint count is irrelevant.
Agreement with comparable sources10Non-stale comparable sources within tolerance.
Parser & schema stability5Objects parsed by an approved parser without schema drift.
Correction & false-admission history5Confirmed 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.

LayerSourceLatency
Primary alertsX API — security-firm alert accounts (PeckShield, Blockaid, SlowMist and peers), polled with dedupminutes
CorroborationSlowMist Hacked page — cites the primary alertshours
Verified corpusRekt, 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.

ColumnEnforced whereChainsSignature schemeWhat “supported” means
Hunt & issue verdictsA 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 pathsA 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 & signFour 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.