Compound Map · Source-Verified · Most-Recent State
RMT — Where Citations Land & Where the Oracle Plugs In
The actual recording path for citations, the attestation gate, the oracle integration point, and where all four research tracks stopped — one combined, updated map.
2026-06-24 · antilles-v2 @ main (RMT layer audited) · flow verified at file:line · research state read from track source-of-truth files
Short answer to "where do citations go?" Not one place — citations land across a few things on purpose: the EAS attestation is the canonical record, CitationCounters is the durable on-chain tally, and an off-chain signed store holds citations that get batched in later. "Trust channels" are the gate that decides if a citation is allowed — not where it's stored. The oracle reads all of those, scores them, and plugs into reputation through one socket: PageRankOracle.
01
The schematic — citation → gate → landing zones → oracle → reputation
Read top to bottom. A citation is created, passes the attestation gate, then lands in up to three recording zones. The off-chain oracle reads them all, scores the graph, and writes back into the reputation system through PageRankOracle.
ON-CHAIN contract
OFF-CHAIN oracle service
GATE (eligibility check, not storage)
① a citation is created
Agent A cites Agent B
A verified bot vouches for another. The citation payload is decoded as (fromBot, toBot, tier, workHash, …).
payment hook: attest() can charge a citation fee → § your 2nd task
▼
② the attestation gate decides if it counts
⛨ ShyftGatedResolver — 4 checks, all must pass
① attester is a Shyft-verified Trust Anchor
② attester actually registered A (attribution)
③ both A & B hold Shyft attestations
④ A & B share an active Trust Channel route
↳ This is where "trust channels" live: they're gate ④ — a connectivity check (getActiveTrustChannelRoutePossible, ShyftGatedResolver.sol:173), NOT a place citations are stored.
▼
③ where the citation is actually recorded (the landing zones)
SOURCE OF TRUTH
ON-CHAIN · EAS
EAS Attestation
The canonical "A cited B" record. Emits Attested(recipient, attester, uid, schemaUID). On Stable there's no EAS predeploy → we self-deploy canonical EAS.
oracle reads: index.ts:31 event sig
DURABLE TALLY
ON-CHAIN · LEDGER
CitationCounters
citationsReceived[B], citationsGiven[A], pairCitationCount[A,B], totalCitations. Append-only — survives EIP-4444 event pruning. Only the resolver may write.
CitationCounters.sol:12–34 · authorizedCaller
OPTIONAL
OFF-CHAIN · STORE
Off-chain Citation Store
EIP-712-signed citations (workHash) that don't hit chain one-by-one. Held off-chain, verified, then batched on-chain by the oracle.
oracle/ OffChainCitationStore · OffChainCitationSigner
PATH 1 Real-time, one at a time
EAS → ShyftGatedResolver.attest() runs all 4 gates, then calls CitationCounters.recordCitation(). Fully gated.
ShyftGatedResolver.sol:139 → :184
PATH 2 Bulk, from the oracle
batchRecordCitations() lands many off-chain-sourced citations at once. Only the batchAnchor (the oracle service) or owner may call it.
ShyftGatedResolver.sol:206 → :235 · setBatchAnchor:116
▼
④ the off-chain oracle reads every source & scores the graph
EAS events
on-chain citations (CitationFetcher)
Off-chain store
signed citations by workHash
ERC-8004 feedback
agent feedback edges
Multi-chain
other chains, deduped
build graph → SybilDetector strips fakes → PageRank (α≈0.85) → normalize 0–10000 → clamp delta/first-score
▼
⑤ where the oracle PLUGS IN to the reputation system
THE SOCKET (on-chain)
PageRankOracle
The oracle operator writes scores here via submitScores() (cooldown + max-delta + first-score caps). This contract IS the plug point.
PageRankOracle.sol:74 · getCompositeScore:155
→
WIRED TO IT
ReputationEngine
setPageRankOracle() wires the socket in; getReputation() reads oracle.getScore() then applies the tier cap (T0≈3500 / T2≈8500 bp).
ReputationEngine.sol:196 → :199
→
RESULT
Reputation 0–10000
Tier-capped trust score. The wiring is a 2-way cycle: PageRankOracle ↔ ReputationEngine.
⑥ who consumes the score
x402 Trust Channels (payment/credit) ← consumer, not storage
Credit lines
Access gating
↳ Direct answer to your question
"Where are citations supposed to go / actually landed?" → Recorded in CitationCounters (the durable on-chain tally), with the EAS attestation as the canonical event and an optional off-chain store for batched ones. "Was it on trust channels?" → No — Shyft trust channels are the eligibility gate (gate ④); x402 "Trust Channels" is a downstream consumer of the score. "Where does the oracle plug in?" → It reads citations from every source, then writes scores into PageRankOracle, which ReputationEngine reads. So yes — it's "across a bunch of things," by design: the contracts stay simple, the scoring intelligence is off-chain and swappable.
02
What we got to — most-recent state, all four tracks
Synthesized from each track's source-of-truth files (manifest / executive summary / strategy), not the empty auto-dashboards. "Froze" = the last date real research data was written.
RMT Reputation LOCKED · CLOSEST TO DEPLOY
0.9397
composite · sybil 0.937 · false-positive 0.0%
26 structural params; biggest win starInDegreeThreshold 6→8. α=0.85 validated on Bitcoin/Ethereum (XBlock AUC 0.960); PPR-with-anchors +75–100% sybil resistance.
Froze: ~Jun 22, 2026 (manifest.yaml) · status ACTIVE, locked
Identity & Attestation BELOW TARGET
0.512
locked-param composite (vs 0.80 target · +21% over 0.423)
816 experiments, 263 improvements. Attack-suppression 0.82, cascade 1.00, gating-fairness 0.86, stability 0.96. Blocker: tierAccuracy 0.30 needs real on-chain data. Shyft topology is power-law (2 TAs control 85%).
Froze: Jun 24, 2026 (EXECUTIVE_SUMMARY.md) · needs TAs 21→50+
x402 Trust Channels DESIGN · BLOCKED
1.0
research composite · 71 experiments (last live run)
Architecture LOCKED (11,026-line spec, Feb 2026) + 5 product templates. Blocked on: MiroShark sim (HTTP sequencing), regulatory (18 USC §1960), credit-gaming economics.
Froze: last live data Apr 10; strategy May 6, 2026
Lottery / Incentives DESIGN · SECONDARY
1.0
research composite · 9 research questions
Parameter design: LP-vault sizing, prize splits, ticket pricing, referral economics, player archetypes. Integrates after the core trust stack.
Froze: Apr 10, 2026 · status ACTIVE, secondary
03
The real visuals — linked (empty skeletons removed)
Only content-rich explainers are linked below. The per-iteration auto-dashboards (research-*-summary / iterN) were ~3KB empty shells — intentionally NOT linked.
On "all the generated CF dashboards": I enumerated the Cloudflare account — it holds 10 Pages projects total, and the only RMT/trust one is this hub (antilles-stable-review). The auto-research loop wrote local per-iteration dashboards (.forge/dashboards/research-*), but they're empty ~3KB skeletons — they were never the real artifact. The actual research lives in the track source files, which is what this map is built from. Nothing rich was lost; there was no deployed trove to recover.