Imported from zloeber/american-corruption-research (
AGENTS.md). Install upstream withnpx skills add zloeber/american-corruption-research. Copyright stays with the author.
AGENTS.md — The American Corruption Network
Working manual for agents extending or maintaining this project. Read before editing anything.
1. What this is (30 seconds)
A versioned, evidence-classified research artifact on political corruption, money in politics, conflicts of interest, influence networks, regulatory capture, foreign influence, and power-to-wealth conversion in the US (1900–2026). Delivered as:
- a full research report (
report/THE_AMERICAN_CORRUPTION_NETWORK.md) - a self-contained forensic explorer (
explorer/index.html) — interactive network graph (92 entities / 164 relationships), timeline, money flows, party comparison, claims/sources browsers, full report embedded - a 27-slide presentation (
presentation/index.html) - 14 canonical datasets, a claim registry (36), a source registry (40), a red-team archive, versioned prompts, and a research manifest (chain of custody)
Research date: 2026-08-23 · Version: 1.0.0.
The product is empirical honesty: no manufactured balance, no fabricated model metadata, ranges when measures disagree, "inconclusive" where that is true, and — critically — no upgrading suspicion to allegation to finding.
2. The three rules that must never be broken
Rule 1 — Lineage (root Section 32)
No final claim exists without a traceable chain:
Claim → Dataset → Source → Methodology → Red Team → Prompt → Model.
Model metadata is recorded as UNKNOWN where not determinable — never
fabricate it (root Section 45).
Rule 2 — The explorer is GENERATED, not hand-edited
explorer/index.html is a build artifact. Canonical data lives in the JSON
files under data/, claims/, sources/; the report lives in
report/THE_AMERICAN_CORRUPTION_NETWORK.md. The template is
explorer/template.html; the builder is analysis/scripts/build_explorer.js.
Any data change requires re-running the builder. Editing index.html by
hand silently desyncs the explorer.
Rule 3 — Prompt Provenance (root Section 32)
Every prompt provided or generated during research must be preserved and traceable. This includes:
- Root prompts (user-provided)
- Research decomposition prompts
- Domain agent prompts
- Verification and red-team prompts
- Synthesis and publication prompts
- Any ad-hoc prompts generated during the session
Prompt storage requirements:
- All prompts are stored in
prompts/directory with sequential numbering - Each prompt file includes: prompt text, timestamp, source (user/agent), and purpose
- The
research_manifest.jsontracks all prompt versions and their roles - The explorer's LINEAGE tab displays the complete prompt chain
- No prompt may be silently overwritten — append new versions, keep old ones
Anti-bias mechanism: The prompt provenance system exists to root out bias in the research and researcher. By preserving all prompts, we can:
- Trace how initial questions shaped findings
- Identify where agent-generated prompts may have introduced bias
- Verify that red-team prompts genuinely challenged conclusions
- Ensure that synthesis prompts did not manufacture balance
Prompt injection protocol: When a new prompt is provided or generated during a session:
- Save it to
prompts/with next sequential number - Update
research_manifest.jsonprompts array - Add entry to the explorer's LINEAGE section
- Include in the execution graph if it changes the research flow
3. Directory map
| Artifact | Canonical source | Explorer |
|---|---|---|
| Report | report/THE_AMERICAN_CORRUPTION_NETWORK.md |
embedded at /*__REPORT__*/ in <script type="text/markdown" id="reportMd"> |
| Entities | data/normalized/entities.json |
/*__ENTITIES__*/ |
| Relationships | data/normalized/relationships.json |
/*__RELS__*/ |
| Scandals | data/normalized/scandals.json |
/*__SCANDALS__*/ |
| Events | data/normalized/political_events.json |
/*__EVENTS__*/ |
| Administrations | data/normalized/administrations.json |
/*__ADMINS__*/ |
| Claims | claims/claim_registry.json |
/*__CLAIMS__*/ |
| Sources | sources/source_registry.json |
/*__SOURCES__*/ |
| Donations / Lobbying / Contracts / Regulatory | data/normalized/*.json |
/*__DONATIONS__*/ etc. |
| Myth verdicts / Conflict scores / Party comparison | data/derived/*.json |
/*__MYTHS__*/, /*__CONFLICTS__*/, /*__PARTYCOMP__*/ |
| Red-team archive | critique/red_team/red_team_analysis.md |
— |
| Methodology | analysis/methodology.md |
— |
| Prompts | prompts/000…004_*.md |
/*__LINEAGE__*/ (summary) |
| Agent/model registries | agents/, models/ |
— |
| Chain of custody | research_manifest.json |
— |
| Presentation | presentation/index.html (standalone) |
— |
4. Common workflows
4.1 Change any dataset or the report
- Edit the canonical file.
- Run
node analysis/scripts/build_explorer.js(validates markers, injects data). - Verify:
grep -c "__" explorer/index.htmlmust return0(no leftover markers).
4.2 Add a claim
- Add to
claims/claim_registry.json(idclaim-0NN, statement, classification, confidence, sources, supporting/contradicting, limitations, red_team). - Rebuild the explorer; the claim is automatically searchable.
4.3 Add an entity or relationship
- Add to the matching JSON. Relationship edges require BOTH endpoint entity IDs to exist — the graph drops edges with missing endpoints.
- Rebuild. A new relationship with no endpoints in the current filters will not render — check the era slider.
4.4 Edit the presentation
presentation/index.html is standalone with inline slides and keyboard nav
(← → / space). It cites dataset paths but does not read them — figure changes
are manual.
4.5 JSON validity
node -e "JSON.parse(require('fs').readFileSync('FILE','utf8'));console.log('OK')"
Run for every edited JSON file.
5. Conventions
- IDs:
e-NNentities,r-NNNrelationships,sc-NNscandals,ev-NNevents,claim-0NN,s-NNsources,adm-YYYYadministrations. Never renumber. - Evidence classes: 🟢 documented / 🔵 strong / 🟡 circumstantial / 🟠 allegation / 🔴 contradicted / ⚪ unknown. Never upgrade an allegation because it is repeated.
- Confidence flags: HIGH = verified this run against a primary source; MEDIUM = stable, multiply-sourced; LOW = approximate/single-source.
- Verdict vocabulary: strongly supported / supported / mostly supported / mixed / mostly unsupported / unsupported / contradicted / insufficient evidence.
- Label discipline: no "pump-and-dump" without the full evidentiary standard — use "possible market-manipulation pattern"; no "bribery" without an adjudicated finding; "documented relationship, unproven causation" is the default for timing+access without intent.
- Ranges, not false precision. Party comparisons are descriptive, not causal.
- The report must never contain
</script(breaks the explorer embed). Check withgrep -n '</script' report/*.md.
6. Verification workflow (before finishing any task)
# 1. JSON validity (all files)
for f in data/normalized/*.json data/derived/*.json claims/*.json sources/*.json; do
node -e "JSON.parse(require('fs').readFileSync('$f','utf8'));console.log('OK $f')"
done
# 2. Rebuild explorer and check no markers remain
node analysis/scripts/build_explorer.js
grep -c "__" explorer/index.html # must be 0
# 3. Report embed safety
grep -c '</script' report/THE_AMERICAN_CORRUPTION_NETWORK.md # must be 0
# 4. Live preview: register explorer/index.html, reload after every rebuild
7. JS/HTML gotchas (learned the hard way)
- Large str_replace payloads get truncated. Chunk big insertions; use a unique end-marker and replace it repeatedly. Never attempt >~6KB in one call.
- The report embed is raw text until
</script— never introduce that sequence into the report. - The explorer preview server serves only the registered HTML file —
fetch()of sibling files 404s. The explorer must stay fully self-contained; this is why the builder inlines everything. null - null === 0: guard missing amounts/dates before arithmetic.- Graph filters: edges with
a: nullare excluded by any Min-$ filter; era filters use the start-year ofd. A relationship dated "1971-" has year 1971. - Markdown renderer subset: headings (1–4), pipe tables,
-/*bullets, numbered lists, blockquotes,---rules, bold/italic/code, and[text](https://…)links. No fenced code blocks, no nested lists, no images. - The
<!--TPL_APPEND-->/<!--REPORT_APPEND-->markers are build-time only; neither may remain in a final artifact.
8. What NOT to do
- Do not edit
explorer/index.htmldirectly — edit the template + JSON and rebuild. - Do not renumber existing IDs.
- Do not silently overwrite prompts — append new versions.
- Do not manufacture balance or partisan conclusions; where a partisan narrative is contradicted, say so explicitly; where evidence is inconclusive, say so.
- Do not label conduct as bribery/fraud/pump-and-dump without the evidentiary standard (see §5).
- Do not modify files outside
american-corruption-research/(the workspace root also containsamerica-state-research/andemotion-ontology/). - Do not commit, push, or deploy unless explicitly asked.
- Do not delete or modify prompt history — this violates prompt provenance (§2).
- Do not add claims without tracing them through the lineage chain (§2, Rule 1).
9. Extension directions the project is ready for
- New primary data as it arrives (SEC findings on $TRUMP/WLFI; TikTok stake terms; 2026 midterm finance) — update JSON + report + rebuild.
- Fresh econometrics on donation→access→outcome (the sibling project
america-state-researchhas the party-macro framework; this project has the corruption ledger — a merged study is the highest-value extension). - Wallet-level analysis of $TRUMP flows when on-chain data is fully
catalogued (add to
transactions.json+ a market_events derived dataset). - Explorer features: sankey money-flow view, per-edge claim cross-links, FARA lobbyist subgraph, CSV export.
- Per-administration ethics scorecards normalized like the sibling project's party scorecards.