# Graph Report - parrot-graph-src  (2026-10-03)

## Corpus Check
- Large corpus: 416 files · ~527,160 words. Semantic extraction will be expensive (many Claude tokens). Consider running on a subfolder.

## Summary
- 4867 nodes · 11127 edges · 252 communities (181 shown, 71 thin omitted)
- Extraction: 98% EXTRACTED · 2% INFERRED · 0% AMBIGUOUS · INFERRED: 197 edges (avg confidence: 0.88)
- Token cost: 165,121 input · 0 output

## Community Hubs (Navigation)
- Site generator · _esc()
- Site generator · _slug()
- Site generator · sitegen.py
- Site generator · _generate_into()
- Site generator · Path
- Desk live feed · deskfeed.py
- Site generator · build_article()
- parrot CLI / orchestrator · orchestrator.py
- Site generator · build_index()
- Continuity · continuity.py
- Ledger · ledger.py
- Daily cartoon rail · cartoon.py
- t0 parrot media r2 check · t0_parrot_media_r2_ch
- Hero image rail · time
- cloud writer · cloud_writer.py
- Traffic parsing · parse_traffic.py
- s4 smoke · s4_smoke.py
- Narration / audio · narrate.py
- extract · extract.py
- Overview video branding · overview_brand_produce
- Publish step · publish_markdown()
- Site generator · json
- Story chains · chainlib.py
- LLM routing · llm.py
- Ingest (N0) · n0_ingest.py
- Blinding / locate · re
- Tier 1 jobs API · json()
- Retired DAG (echo/voice) · shared_phrasing_basel
- Newsletter / list (edge) · brief-send.js
- store · SqliteMemory
- Overview video strip · t2_smoke.py
- Site generator · _norm_outlet()
- Hero image rail · judge()
- Site generator · build_lexicon()
- Alerts (Slack) · parrot_alerts.py
- Site editor rail · editor_rail.py
- Overview video worker · overview_worker.py
- Bluesky announcer · bsky_post.py
- Publish step · publish.py
- X announcer · x_announce.py
- developments · datetime
- API rails (markets, podcasts) · item()
- Public data export · pubdata.py
- cost audit · collections
- Quote audit · hand_sources.py
- MCP server (edge) · mcp.js
- Site generator · _section_block()
- plan tripwire · argparse
- Corpus snapshot · _cmd_run_locked()
- Config · config.py
- bsky trends · bsky_trends.py
- Receipt cards · receipts.py
- ceo scorecard · ceo_scorecard.py
- bsky announce · bsky_announce.py
- rung1 gate · rung1_gate.py
- social announce · social_announce.py
- mine · mine.py
- README · Architecture B: retired contract-first 
- corpus check · corpus_check.py
- locks · locks.py
- Site generator · _render_sources()
- cartoon rail · cartoon_rail.py
- Overview video upload · overview_r2_upload.py
- n2 score · Article
- Operator charter (docs) · Operator cycle (one cy
- social policy · social_policy.py
- elections slack · elections_slack.py
- overview enqueue · overview_enqueue.py
- Job queue · jobs.py
- cartoon bsky backstop · cartoon_bsky_backstop.py
- Receipt cards · build_tall()
- worst sentence · worst_sentence.py
- API rails (markets, podcasts) · api_rails.py
- Share cards + embeds · sharecard.py
- bsky announce · announce()
- s3 smoke · s3_smoke.py
- overview email gate · overview_email_gate.py
- traffic report · traffic_report.py
- Tier 1 engine · engine.py
- jev shadow · jev_shadow.py
- QC gate · deterministic_checks()
- gpu gate · gpu_gate.sh
- overview post asset worker · overview_post_asset
- dothero · hashlib
- chain ops · chain_ops.py
- Site generator · _freshness()
- regression announce · regression_announce.py
- Backend contract (docs) · D1 corpus mirror (parr
- Operator charter (docs) · parrot publish (one co
- Operator charter (docs) · Write the piece in hou
- operator cycle · operator_cycle.sh
- fastver · fastver.py
- harvest divergence · harvest_divergence.py
- newsletter send · newsletter_send.py
- pull metrics · pull_metrics.py
- Unattended runbook (docs) · Architecture A: Clau
- snapshot trim · snapshot_trim.py
- QC gate · qc.py
- AI news scout · ai_scout.py
- brand overview video · brand_overview_video.py
- t1 smoke · t1_smoke.py
- CLAUDE · The Stochastic Parrot autonomous desk
- n11 feedback · n11_feedback.py
- Receipt cards · _merge_rows()
- second opinion · second_opinion.py
- ceo slack · ceo_slack.py
- newsletter preflight · newsletter_preflight.py
- newsletter roundtrip · newsletter_roundtrip.py
- t3 smoke · t3_smoke.py
- overview write tail · overview_write_tail.py
- with operator paused · with_operator_paused.sh
- index · index.py
- QC gate · run_qc()
- QC gate · judge()
- bsky announce · log()
- slack claude bridge · slack_claude_bridge.py
- Backend contract (docs) · Corpus DB builder (dat
- build · build.js
- audience dashboard · audience_dashboard.py
- Overview video queue · overview_enqueue_policy.p
- ga4 real readers
- terms watch
- Backend contract (docs)
- beacon
- Boomer cards
- markets
- Homepage curation
- QC gate
- bsky announce
- bsky announce
- proofwatch check
- build graph.local
- embedgen
- podcasts
- bsky receipt card
- check subscriber binding
- merge ledger
- Edge functions
- reddit top
- consistency gate
- Site generator
- pack drilldown v0
- s5 acceptance
- MCP server (edge)
- gen dgx dots
- operator pack
- lab call
- legal review
- preseed source
- social announce
- n15 unanimous
- uw
- bsky deferred status
- backfill sweep
- chain membership check
- sitegen strip fixture
- ledger to slack
- sunday roundup watchdog
- engagement
- glmrates
- Publish step
- QC gate
- check sitegen drift
- cost push
- overview eligibility
- rejudge pending heroes
- t4 smoke
- README
- golive
- push
- push
- heartbeat
- status
- rederive syntax of atrocity
- Site generator
- Site generator
- bsky announce
- slack post
- feed
- live smoke
- narrate attach
- parrot change lock
- t3 smoke
- reader-inbox
- bsky announce
- chyron report
- editor cycle
- lab cycle
- parrot change lock stub
- t2 smoke
- costs
- crawlers
- stats
- deploy env test
- cartoon publish
- codex review
- codex review notify
- daily cycle
- divergence daily
- hero attach
- hero backfill scan
- hero backfill watch
- morning backup
- newsletter email gate hook
- postpublish
- postpublish enqueue hook
- regression cycle
- retro cycle
- secrets inventory
- spend guard
- t0 smoke
- t1 smoke
- publish ledger
- twin cycle
- attach ceuta hero
- cost report
- push rhetoric dgx
- audio requeue
- chain triggers local
- deploy gate
- graph refresh
- hero backfill directive watch
- hero start
- hero wait
- indexnow ping
- mac offbox pull
- nightly commit
- notify failure
- obs db snapshot
- offbox backup
- offsite r2
- paperclip deskwatch
- pilot round2
- pull chain triggers
- reconcile mac
- recover orphan cost events
- recover orphan golives
- run rhetoric
- s1 smoke
- s2 smoke
- s3 smoke
- s4 smoke
- s5 acceptance
- scout gate
- segment shadow
- pyproject.toml

## God Nodes (most connected - your core abstractions)
1. `_generate_into()` - 166 edges
2. `_esc()` - 135 edges
3. `_masthead()` - 70 edges
4. `_doc()` - 66 edges
5. `build_article()` - 65 edges
6. `_site_nodes()` - 61 edges
7. `_jsonld()` - 59 edges
8. `_slug()` - 55 edges
9. `_asset_ver()` - 52 edges
10. `_sup_flink()` - 50 edges

## Surprising Connections (you probably didn't know these)
- `Tier 1 rail: one job in, one signed ledger out` --semantically_similar_to--> `Hard invariant: span-grounding (verbatim quotes with real URLs)`  [INFERRED] [semantically similar]
  tier1/README.md → OPERATOR.md
- `main()` --calls--> `cluster()`  [INFERRED]
  build_graph.local.py → parrot/nodes/n1_cluster.py
- `main()` --calls--> `cluster()`  [INFERRED]
  build_graph.py → parrot/nodes/n1_cluster.py
- `normalize_for_speech()` --indirect_call--> `d()`  [INFERRED]
  parrot/narration_prep.py → scripts/proofwatch_check.py
- `Ledger certifies quotation match only` --semantically_similar_to--> `Span-confidence line names its count`  [INFERRED] [semantically similar]
  tier1/README.md → OPERATOR.md

## Import Cycles
- None detected.

## Hyperedges (group relationships)
- **Telemetry flow: daily timer -> parse_traffic -> ledger JSON -> sitegen build_telemetry -> /telemetry/** — scripts_telemetry_readme_timer, scripts_telemetry_parse_traffic, scripts_telemetry_readme_traffic_ledger, scripts_telemetry_readme_build_telemetry, parrot_sitegen [EXTRACTED 1.00]
- **Tier 1 job flow: jobs API -> D1 queue -> DGX puller -> engine -> judge -> ledger** — tier1_readme_jobs_api, tier1_readme_d1_queue, tier1_readme_puller, tier1_engine, tier1_readme_openrouter_judge, tier1_readme_ledger_certification [EXTRACTED 1.00]
- **Publish rail: research -> write -> review gate -> publish -> golive -> deploy -> sync D1 -> announce** — operator_research_corpus, operator_write_piece, operator_review_gate, operator_publish_command, unattended_auto_golive, operator_cloudflare_pages_deploy, docs_backend_sync_d1, unattended_bluesky_announcer [INFERRED 0.85]

## Communities (252 total, 71 thin omitted)

### Community 1 - "Site generator · _esc()"
Cohesion: 0.04
Nodes (80): _asset_ver(), _brief_chrome(), build_404(), build_angles(), build_archive(), build_audits_index(), build_boxscore_day(), build_connect_page() (+72 more)

### Community 2 - "Site generator · _slug()"
Cohesion: 0.03
Nodes (68): _amended_slugs(), _band_alert(), _band_hero_aside(), _snip(), _vec_rows(), _boomer_verdict(), _brief_tag_xo(), build_audit_json() (+60 more)

### Community 3 - "Site generator · sitegen.py"
Cohesion: 0.02
Nodes (57): _appendix_stats(), _apply_curation(), _apply_editor_curation(), _apply_lead(), _band_trackers(), _chain_moved_on(), _chy_tail(), _chyron_bar() (+49 more)

### Community 4 - "Site generator · _generate_into()"
Cohesion: 0.03
Nodes (45): _ai_scoreboard_html(), chip(), _brief_issues(), build_ai_leaderboard(), build_ai_news(), build_ai_plugin(), build_bench(), build_bulletins() (+37 more)

### Community 5 - "Site generator · Path"
Cohesion: 0.03
Nodes (42): build_compass_political(), _compile_chyron(), compute_rhetoric_league(), compute_sponsors(), compute_transcripts(), _copy_cartoon_iterations(), _copy_culture_piece_media(), _culture_cfg() (+34 more)

### Community 6 - "Desk live feed · deskfeed.py"
Cohesion: 0.05
Nodes (39): audit_url(), build_activity24(), build_events(), build_floor(), build_payload(), build_research(), build_state(), build_stats() (+31 more)

### Community 7 - "Site generator · build_article()"
Cohesion: 0.03
Nodes (36): _art_credit(), _art_where(), _bench_figures_html(), _bsky_comments(), build_article(), _cartoon_iterations_html(), _coin_tc(), _collect_sources_full() (+28 more)

### Community 8 - "parrot CLI / orchestrator · orchestrator.py"
Cohesion: 0.05
Nodes (35): parrot curate (re-pick front page + deploy), parrot site --deploy (rebuild + deploy without new piece), _append_voice_note(), record(), rotate_fewshot(), _brief_email_html(), _brief_inline(), build_parser() (+27 more)

### Community 9 - "Site generator · build_index()"
Cohesion: 0.03
Nodes (34): has_card(), _band_cards(), _band_directory(), _band_feeds_rail(), _band_hook(), _band_regression(), _band_subscribe(), _band_thesis_pills() (+26 more)

### Community 10 - "Continuity · continuity.py"
Cohesion: 0.05
Nodes (34): all_tracked_with_data(), _attributes_to(), build_and_save(), extract(), extract_shapes(), figure_block(), figure_summary(), has_data() (+26 more)

### Community 11 - "Ledger · ledger.py"
Cohesion: 0.06
Nodes (35): add_claim(), armored_quiet_ids(), _atomic_write(), dropped(), get_claim(), iter_rows(), ledger_path(), LedgerError (+27 more)

### Community 12 - "Daily cartoon rail · cartoon.py"
Cohesion: 0.05
Nodes (30): The Assigned Cartoon data contract (data/cartoons/cartoons.jsonl), data/cartoons/qc_ledger.jsonl (cartoon QC PASS rows), assign(), attach_supplied(), cartoon_canvas(), _cartoonable_finding(), compose(), fresh_rows() (+22 more)

### Community 13 - "t0 parrot media r2 check · t0_parrot_media_r2_ch"
Cohesion: 0.06
Nodes (38): _b64url(), _ghost_jwt(), publish_draft(), set_status(), _to_html(), _cfg(), _cli(), _enc() (+30 more)

### Community 14 - "Hero image rail · time"
Cohesion: 0.04
Nodes (25): _declutter_margins(), _fal_key(), render(), _render_fal(), _seed(), _workflow(), _write_provenance(), _write_provenance_fal() (+17 more)

### Community 15 - "cloud writer · cloud_writer.py"
Cohesion: 0.05
Nodes (32): _read_line_defect(), _split_read_line(), _archive_failure(), _check_budget(), cmd_draft(), cmd_self_test(), _comic_scores(), _corpus_text() (+24 more)

### Community 16 - "Traffic parsing · parse_traffic.py"
Cohesion: 0.08
Nodes (45): evals/test_telemetry_ledger.py, accesslog_requests(), _atomic_write(), _bots_block(), classify(), collect(), _crawler_tally(), daily_salt() (+37 more)

### Community 17 - "s4 smoke · s4_smoke.py"
Cohesion: 0.08
Nodes (41): _fail(), _provision(), resolve_isolated_repo_root(), _symlink_static(), validate_isolated_root(), backdate_lease(), bad(), count_json() (+33 more)

### Community 18 - "Narration / audio · narrate.py"
Cohesion: 0.06
Nodes (27): _Checkpoint, _chunks(), _ffmpeg(), _install_term_handler(), _load_model(), main(), render(), _speakable() (+19 more)

### Community 19 - "extract · extract.py"
Cohesion: 0.05
Nodes (27): body_grounded_in_raw(), body_words_cap(), BodyChunk, cap_body(), chunk_body(), chunk_document(), decode_html(), detect_opinion_parts() (+19 more)

### Community 20 - "Overview video branding · overview_brand_produce"
Cohesion: 0.10
Nodes (32): assert_palette_lock(), build_default_beats(), _enforce_binder_cap(), ffmpeg_slideshow(), kit_available(), main(), mux_vo_into_mp4(), _norm_hex() (+24 more)

### Community 21 - "Publish step · publish_markdown()"
Cohesion: 0.05
Nodes (24): apply_compatible_reclassify(), _blob(), classify_span_pair(), classify_spans(), gate_receipt(), verified_contradiction_count(), lint_quiet_claims(), cmd_lint() (+16 more)

### Community 22 - "Site generator · json"
Cohesion: 0.06
Nodes (8): headline_short_defects(), _hl_toks(), lint_pos_grammar(), _strip_quoted(), main(), rehero(), main(), parse_error()

### Community 23 - "Story chains · chainlib.py"
Cohesion: 0.07
Nodes (24): chain_href(), chain_pill(), _first_clause(), is_bare(), load_chains(), member_delta(), member_ordinal(), member_slug() (+16 more)

### Community 24 - "LLM routing · llm.py"
Cohesion: 0.08
Nodes (22): require_env(), _backend(), _client(), _coerce_json(), complete(), complete_json(), _with_retry(), _deepseek_chat() (+14 more)

### Community 25 - "Ingest (N0) · n0_ingest.py"
Cohesion: 0.07
Nodes (24): extract_links(), extract_reporter_cites(), _host_of(), normalize_pdf_text(), outlet_for_url(), registrable_domain(), resolve_reporter_cite(), _cited_candidates() (+16 more)

### Community 26 - "Blinding / locate · re"
Cohesion: 0.08
Nodes (20): blind_corpus(), _is_common_word_variant(), locate(), _name_variants(), scrub_outlet_names(), _scrub_variant(), assemble(), _relation() (+12 more)

### Community 27 - "Tier 1 jobs API · json()"
Cohesion: 0.18
Nodes (31): onRequestGet(), onRequestGet(), onRequestGet(), onRequestGet(), onRequestGet(), onRequestGet(), onRequest(), safe() (+23 more)

### Community 28 - "Retired DAG (echo/voice) · shared_phrasing_basel"
Cohesion: 0.08
Nodes (23): article_shingles(), categorize(), credited_wire(), echo(), index_corpus(), key_phrases(), narrative_echo(), semantic_echo() (+15 more)

### Community 29 - "Newsletter / list (edge) · brief-send.js"
Cohesion: 0.11
Nodes (38): defaultSubject(), RFC-6761, RFC-8058, json(), loadBrief(), loadSubscribers(), mailChannelsProvider(), makeProvider() (+30 more)

### Community 30 - "store · SqliteMemory"
Cohesion: 0.07
Nodes (7): _cosine(), Memory, normalize_phrase(), NullMemory, OllamaEmbedder, SqliteMemory, Migration

### Community 31 - "Overview video strip · t2_smoke.py"
Cohesion: 0.10
Nodes (26): main(), patch_sitegen_source(), _allowed_hosts_from_env(), assert_no_local_asset_src(), assert_no_poster(), assert_no_tall_tt(), is_allowed_https_media_url(), load_overview_manifest() (+18 more)

### Community 32 - "Site generator · _norm_outlet()"
Cohesion: 0.06
Nodes (21): _angle_totals(), _attrib_publisher(), _sb_outlets(), _brief_body(), _brief_title(), build_angles_json(), _add_link(), build_brief_issue() (+13 more)

### Community 33 - "Hero image rail · judge()"
Cohesion: 0.08
Nodes (23): art_direct(), _cache_get(), _cache_path(), _cache_put(), _caller_hint(), canon_images(), _claude_vision(), _cli_env() (+15 more)

### Community 34 - "Site generator · build_lexicon()"
Cohesion: 0.06
Nodes (24): build_corrections_feed(), build_lexicon(), _clip(), build_lexicon_json(), _mk_id(), _term(), build_outlet_page(), build_outlets() (+16 more)

### Community 35 - "Alerts (Slack) · parrot_alerts.py"
Cohesion: 0.08
Nodes (24): check_backup_freshness(), check_deepseek(), check_desk_liveness(), check_endpoints(), check_fal(), check_fastver(), check_git_mirror(), check_glm() (+16 more)

### Community 36 - "Site editor rail · editor_rail.py"
Cohesion: 0.12
Nodes (30): brief(), decide(), edge_sync(), _editor_key(), _ensure_dirs(), homepage_check(), ledger_append(), ledger_tail() (+22 more)

### Community 37 - "Overview video worker · overview_worker.py"
Cohesion: 0.14
Nodes (22): acquire_singleton(), claim_one(), ensure_spool_dirs(), inflight_age_sec(), ledger_path_for(), load_job(), main(), mark_forward_stale() (+14 more)

### Community 38 - "Bluesky announcer · bsky_post.py"
Cohesion: 0.09
Nodes (18): die(), facets_for(), _image_mime(), link_card(), _load_thumb_bytes(), login(), main(), _OgParser (+10 more)

### Community 39 - "Publish step · publish.py"
Cohesion: 0.10
Nodes (19): _announce_now(), cmd_golive(), approve_live(), archive(), _atomic_write_text(), _attest_receipt(), enforce_hero_present_live(), enforce_topic_hard_block_live() (+11 more)

### Community 40 - "X announcer · x_announce.py"
Cohesion: 0.09
Nodes (20): acquire_lock(), anthropic_key(), _chain_of_link(), claude_hook(), compose(), fetch_feed(), first_comment(), is_posted() (+12 more)

### Community 41 - "developments · datetime"
Cohesion: 0.08
Nodes (15): append(), by_slug(), _rows(), build(), deepseek_line(), fal_line(), main(), build_queue() (+7 more)

### Community 42 - "API rails (markets, podcasts) · item()"
Cohesion: 0.12
Nodes (21): _day(), _hid(), item(), _rss_items(), src_bls(), src_cftc_pr(), src_courtlistener(), src_edgar() (+13 more)

### Community 43 - "Public data export · pubdata.py"
Cohesion: 0.13
Nodes (21): src_datagov(), congress(), courtlistener_search(), _dg(), edgar_company_search(), edgar_fts(), edgar_submissions(), _env() (+13 more)

### Community 44 - "cost audit · collections"
Cohesion: 0.08
Nodes (9): _check_live_beacon(), _check_live_crawlers(), main(), _parse_visit_val(), aggregate(), _day(), main(), _rows() (+1 more)

### Community 45 - "Quote audit · hand_sources.py"
Cohesion: 0.12
Nodes (15): audit_draft_file(), audit_markdown_quotes(), extract_quotes(), _fold(), main(), _norm(), _straight_single_quotes(), curl_fetch() (+7 more)

### Community 46 - "MCP server (edge) · mcp.js"
Cohesion: 0.17
Nodes (29): callTool(), capped(), clampLimit(), DB_TOOLS, EDITOR_TOOLS, EDITOR_WIDGET_HTML, editorAuth(), editorCards() (+21 more)

### Community 47 - "Site generator · _section_block()"
Cohesion: 0.08
Nodes (15): _band_compass_fold_teaser(), _band_feature_strip(), _band_fold_feature(), _band_strips(), _boomer_band_intro(), _boomer_banner(), _boomer_cfg(), _boomer_days_total() (+7 more)

### Community 48 - "plan tripwire · argparse"
Cohesion: 0.09
Nodes (10): judge(), main(), render_one(), _log(), main(), _page(), _rowtext(), _slug_of() (+2 more)

### Community 49 - "Corpus snapshot · _cmd_run_locked()"
Cohesion: 0.12
Nodes (14): render_blinded(), _cmd_run_locked(), _halt_manifest(), RunManifest, _corpus_bytes(), freeze_corpus(), load_corpus(), load_manifest() (+6 more)

### Community 50 - "Config · config.py"
Cohesion: 0.10
Nodes (10): byline_from_receipt(), canonical_model_byline(), credits_for_slug(), _family_byline(), main(), _claims_version(), _for_compare(), main() (+2 more)

### Community 51 - "bsky trends · bsky_trends.py"
Cohesion: 0.12
Nodes (15): _alive(), _anthropic_candidate_tags(), get_trending_topics(), llm_candidate_tags(), _load_cache(), _log(), _log_research(), _login() (+7 more)

### Community 52 - "Receipt cards · receipts.py"
Cohesion: 0.13
Nodes (16): available(), _b64(), _build_fallback(), _chrome(), _downsample(), _font_face(), _fonts_css(), _header() (+8 more)

### Community 53 - "ceo scorecard · ceo_scorecard.py"
Cohesion: 0.13
Nodes (15): cartoon_qc(), check_endpoints(), check_freshness(), _classify_referer(), _get(), _indexnow_key(), _load_json(), main() (+7 more)

### Community 54 - "bsky announce · bsky_announce.py"
Cohesion: 0.13
Nodes (15): acquire_lock(), fetch_feed(), _is_article_link(), is_posted(), item_keys(), _load_follows_state(), load_redirects(), load_state() (+7 more)

### Community 55 - "rung1 gate · rung1_gate.py"
Cohesion: 0.12
Nodes (13): _check_live_beacon(), _check_live_crawlers(), compute(), _consecutive_weeks(), _cost_runrate(), _earliest_two_week_date(), _load_visits(), main() (+5 more)

### Community 56 - "social announce · social_announce.py"
Cohesion: 0.15
Nodes (16): approved(), card_url(), env(), _env_file(), feed_items(), hero_url(), load_json(), log() (+8 more)

### Community 57 - "mine · mine.py"
Cohesion: 0.11
Nodes (12): build_statements(), insert(), lit(), main(), ad_index(), _attributed(), coverage(), keys() (+4 more)

### Community 58 - "README · Architecture B: retired contract-first "
Cohesion: 0.12
Nodes (21): Architecture B retired DAG (parrot run N0-N14) is tooling only, evals/harness.py, notify(), Architecture B: retired contract-first Python DAG (N0-N14), Ghost CMS (GHOST_ADMIN_API_URL/KEY), evals/golden ground-truth labels, Checked-in real corpus data/news/us_iran_hormuz_2026-06-16, K_MIN check (minimum verified contradictions before N8) (+13 more)

### Community 59 - "corpus check · corpus_check.py"
Cohesion: 0.14
Nodes (16): live_verdict(), main(), _now(), offline_findings(), _prefix_coverage(), _sentinel(), _shingle_coverage(), _title_overlap() (+8 more)

### Community 60 - "locks · locks.py"
Cohesion: 0.11
Nodes (14): age_s(), describe(), _fmt_age(), format_line(), holders(), is_held(), main(), reap() (+6 more)

### Community 61 - "Site generator · _render_sources()"
Cohesion: 0.11
Nodes (13): _approved_run_ids(), _build_snapshot(), _is_web_url(), _kind_badge(), _receipt_html(), _render_simple_sources(), _render_sources(), _render_unlocated() (+5 more)

### Community 62 - "cartoon rail · cartoon_rail.py"
Cohesion: 0.17
Nodes (17): build_prompt(), cmd_check(), cmd_letter(), balloon(), wrap(), cmd_render(), cmd_ship(), _env() (+9 more)

### Community 63 - "Overview video upload · overview_r2_upload.py"
Cohesion: 0.16
Nodes (16): ensure_smoke_stub_mp4(), first_env(), has_s3_creds(), https_get_status(), load_dotenv_files(), media_url_for(), object_key(), public_base() (+8 more)

### Community 64 - "n2 score · Article"
Cohesion: 0.15
Nodes (8): cluster(), _render(), score(), select(), _snippet(), Article, Candidate, SemanticFlag

### Community 65 - "Operator charter (docs) · Operator cycle (one cy"
Cohesion: 0.11
Nodes (22): Span-grounding invariant (two verbatim spans with URLs), Audit vs coverage is earned (>=2 hard contradictions or COVERAGE BRIEF), Corpus adjudication line inside a VECTOR block, Operator cycle (one cycle per invocation), Evenhanded: audit the language, not the politics, Read-only Explore agent as independent span verifier, Ledger (JSON of every live piece), Notify after every cycle (print or PushNotification) (+14 more)

### Community 66 - "social policy · social_policy.py"
Cohesion: 0.11
Nodes (10): Channel, ChannelPost, compose(), LinkLeak, measure_for(), scrub_retired(), strip_urls(), _truncate() (+2 more)

### Community 67 - "elections slack · elections_slack.py"
Cohesion: 0.19
Nodes (18): _api(), _apply_ratings(), _board_summary(), cmd_hello(), cmd_poll(), _env_file(), _file_directive(), _load_ratings() (+10 more)

### Community 68 - "overview enqueue · overview_enqueue.py"
Cohesion: 0.16
Nodes (11): main(), enqueue(), ensure_spool_dirs(), main(), _parse_optional_bool(), list_recent_candidate_slugs(), load_meta_file(), resolve_repo_root() (+3 more)

### Community 69 - "Job queue · jobs.py"
Cohesion: 0.17
Nodes (13): _build_job(), enqueue(), fetch_artifact(), get_result(), _is_local(), _iso(), _job_filename(), _local_base() (+5 more)

### Community 70 - "cartoon bsky backstop · cartoon_bsky_backstop.py"
Cohesion: 0.16
Nodes (13): _cartoon_slugs_in_window(), _env(), _feed_image_posts(), _load_ledger(), log(), main(), _normalize_url(), _post_cartoon() (+5 more)

### Community 71 - "Receipt cards · build_tall()"
Cohesion: 0.14
Nodes (11): build_tall(), build_wide(), _is_void_split(), _rcpt_items_html(), _rcpt_stamp(), _rcpt_totals(), _real_spans(), _side_labels() (+3 more)

### Community 72 - "worst sentence · worst_sentence.py"
Cohesion: 0.16
Nodes (11): audit(), _candidates(), _iso_week(), _locates(), main(), propose(), _quoted_share(), _rows() (+3 more)

### Community 73 - "API rails (markets, podcasts) · api_rails.py"
Cohesion: 0.15
Nodes (12): _load(), _log_rank_cost(), main(), _pick(), rank(), recent_coverage(), render_digest(), _save() (+4 more)

### Community 74 - "Share cards + embeds · sharecard.py"
Cohesion: 0.17
Nodes (11): _clip(), _current_masthead(), _exhibits(), _font(), _logo(), _pick(), render_card(), render_home_card() (+3 more)

### Community 75 - "bsky announce · announce()"
Cohesion: 0.15
Nodes (10): announce(), _card_alt(), card_url(), clear_deferred(), hero_url(), load_deferred(), _outlet_quote_candidate(), prune_deferred() (+2 more)

### Community 76 - "s3 smoke · s3_smoke.py"
Cohesion: 0.18
Nodes (14): compute_social_eligible(), assert_no_mp4_or_pages(), bad(), ledger_success_rows(), load_manifest(), main(), note(), ok() (+6 more)

### Community 77 - "overview email gate · overview_email_gate.py"
Cohesion: 0.25
Nodes (12): already_flagged_timeout(), append_timeout_ledger(), decide(), fmt_ts(), golive_at_from_audit(), main(), minute_bucket(), overview_added_at_from_ledger() (+4 more)

### Community 78 - "traffic report · traffic_report.py"
Cohesion: 0.18
Nodes (12): build_report(), classify(), crawler_note(), day_stats(), load(), main(), mcp_usage(), retention() (+4 more)

### Community 79 - "Tier 1 engine · engine.py"
Cohesion: 0.16
Nodes (13): [OUTPUT] close (claim-scoped status + confidence), Span-confidence line names its count, chat(), extract_text(), fetch(), locate(), norm_index(), parse_json() (+5 more)

### Community 80 - "jev shadow · jev_shadow.py"
Cohesion: 0.22
Nodes (13): _add_spend(), _ask(), _Budget, _classify(), enabled(), _key(), _log(), _now() (+5 more)

### Community 81 - "QC gate · deterministic_checks()"
Cohesion: 0.13
Nodes (11): blanket_assurance_hits(), deterministic_checks(), _exhibit_text(), _front_door(), _locate_in_corpus(), _located_quote_spans(), _norm(), polarity_checks() (+3 more)

### Community 82 - "gpu gate · gpu_gate.sh"
Cohesion: 0.22
Nodes (17): _audio_make_room(), cmd_check(), cmd_run(), _comfy_release(), _drain_pause(), _drain_resume(), _fal_available(), _holder_label() (+9 more)

### Community 83 - "overview post asset worker · overview_post_asset"
Cohesion: 0.20
Nodes (13): already_done(), append_ledger(), copy_audio(), discover_slugs(), load_ledger(), load_rubric(), main(), pick_source() (+5 more)

### Community 84 - "dothero · hashlib"
Cohesion: 0.14
Nodes (6): h01(), lerp(), render(), smooth(), _font(), stamp()

### Community 85 - "chain ops · chain_ops.py"
Cohesion: 0.24
Nodes (10): add_member(), ChainError, get(), insert_member(), load(), new_chain(), save(), set_status() (+2 more)

### Community 86 - "Site generator · _freshness()"
Cohesion: 0.11
Nodes (9): build_license_json(), _correction_ts(), _fresh_tc(), _freshness(), _last_change(), _license_corrections(), _license_counts(), _load_corrections() (+1 more)

### Community 87 - "regression announce · regression_announce.py"
Cohesion: 0.20
Nodes (10): already_announced(), compose(), is_live(), log(), main(), make_card(), newest_run(), record() (+2 more)

### Community 88 - "Backend contract (docs) · D1 corpus mirror (parr"
Cohesion: 0.15
Nodes (16): deploy/dgx-observatory/heartbeat.sh, POST /api/admin/golive (INERT until PARROT_GOLIVE_SECRET; KV live:<slug> overlay), D1 corpus mirror (parrot-corpus, binding PARROT_DB), Deploy-drift canary (/obs/status?sync=1 compares corpus.json vs D1), docs/BACKEND.md (backend contract v1, LIVE 2026-07-20), KV PARROT_OPS (heartbeats + golive overlay), POST /api/v1/obs/heartbeat (Bearer PARROT_OBS_TOKEN), GET /api/v1/obs/status (watching/stale/dark; never 503s publicly) (+8 more)

### Community 89 - "Operator charter (docs) · parrot publish (one co"
Cohesion: 0.13
Nodes (17): Golive gate (staged pieces excluded from site, embeds, API), evals/test_site_safety.py, evals/test_taxonomy.py, Deploy to Cloudflare Pages via local wrangler, Eval gate before deploy (taxonomy + site safety evals), Follow-up via --supersedes (new URL, old piece to /archive), Optional hero image via Spark ComfyUI, Operator-pinned homepage hero (data/operator/pinned_lead.json) (+9 more)

### Community 90 - "Operator charter (docs) · Write the piece in hou"
Cohesion: 0.15
Nodes (17): Tier 1 jobs API (/api/v1/jobs, D1 tier1_jobs), ANGLE block (per-outlet coverage exhibit), Rotate the cold open (no default parrot opener), discrepancy-audit skill (method + exhibit grammar), Exhibit grammar parsed by the renderer, Experimental pieces rule (VOICE-AUDIT §3b), FRAMING split (same facts, different tone), Header line [ DISCREPANCY AUDIT | COVERAGE BRIEF // slug // date ] + real H1 headline (+9 more)

### Community 91 - "operator cycle · operator_cycle.sh"
Cohesion: 0.13
Nodes (12): Catch-up cycle (systemd-run parrot-operator-catchup, +20min), /tmp/parrot-operator.lock (overlap guard flock), Pace check (~12 stories/day UTC), data/operator/worklog.jsonl (append-only cycle log), deploy/ twice-daily schedulers (systemd, launchd, cron), PATH, ceo_cycle.sh script, PARROT_OPERATOR_CYCLE (+4 more)

### Community 92 - "fastver · fastver.py"
Cohesion: 0.17
Nodes (8): _api_key(), _backend(), _cost_row(), _first_text(), generate(), _max_call(), _unquoted(), _max_env()

### Community 93 - "harvest divergence · harvest_divergence.py"
Cohesion: 0.18
Nodes (9): harvest(), main(), norm_channel(), parse_exhibits(), parse_silences(), section(), _spans_before(), _units() (+1 more)

### Community 94 - "newsletter send · newsletter_send.py"
Cohesion: 0.18
Nodes (8): brief_size_detail(), check(), finish(), http(), main(), newest_brief(), subject_for(), utm_is_live()

### Community 95 - "pull metrics · pull_metrics.py"
Cohesion: 0.18
Nodes (8): _bsky(), _cf(), _engagement(), _env_file(), _ga4_real_readers(), main(), _mcp_note(), _refresh_gate_artifacts()

### Community 96 - "Unattended runbook (docs) · Architecture A: Clau"
Cohesion: 0.16
Nodes (16): CLAUDE.md (repo pointer + invariants), OPERATOR.md (authoritative operator charter), ANTHROPIC_API_KEY (needed only by Architecture B reasoning nodes), README.md (repo overview + Architecture B toolkit), OpenRouter judge (DeepSeek with GLM fallback, never an Anthropic key, ~1-2c/job), Architecture A: Claude as the operator (live model), Bluesky announcer (launchd, every 30 min), Cadence 30-60 min; alternate NEW with IMPROVE (+8 more)

### Community 97 - "snapshot trim · snapshot_trim.py"
Cohesion: 0.13
Nodes (4): _expand_and_merge(), rebase_spans(), TrimResult, _valid_spans()

### Community 98 - "QC gate · qc.py"
Cohesion: 0.16
Nodes (7): _opener(), opener_repetition(), _opener_words(), scaffold_markers(), scaffold_repetition(), ship_allowed_from_row(), _trigrams()

### Community 99 - "AI news scout · ai_scout.py"
Cohesion: 0.21
Nodes (11): already_covered(), capability_inventory(), fetch(), gather(), _json_block(), load_subs(), main(), parse_atom() (+3 more)

### Community 100 - "brand overview video · brand_overview_video.py"
Cohesion: 0.25
Nodes (10): compose_endcard_png(), detect_outro_trim(), extract_still(), fps_of(), main(), probe(), run(), video_stream() (+2 more)

### Community 101 - "t1 smoke · t1_smoke.py"
Cohesion: 0.23
Nodes (13): count_success_ledger_rows(), bad(), base_env(), count_success(), has_r2_creds(), https_get(), main(), note() (+5 more)

### Community 102 - "CLAUDE · The Stochastic Parrot autonomous desk"
Cohesion: 0.13
Nodes (15): After-the-fact retraction (parrot archive / approve / kill), No forcing (thin day = halt or IMPROVE), Snapshot before reasoning (freeze source bodies first), The Stochastic Parrot autonomous desk, Taxonomy invariant ('contradiction' reserved for hard contradictions), Frozen corpus data/incoming/<slug>.sources.json, Research: build a cross-spectrum corpus via firecrawl, Sources & exhibits appendix (+7 more)

### Community 103 - "n11 feedback · n11_feedback.py"
Cohesion: 0.21
Nodes (6): apply_taste(), _decay_weight(), downweight_terms(), _parse_reason(), _terms(), _topic_kill_reasons()

### Community 104 - "Receipt cards · _merge_rows()"
Cohesion: 0.15
Nodes (8): _claim_side(), _clean_quote(), _distinct_claims(), _merge_rows(), _merge_spans(), _norm_claim(), _pick_split(), _rows_html()

### Community 105 - "second opinion · second_opinion.py"
Cohesion: 0.19
Nodes (10): _call(), _corpus_summary(), eligible(), _json_block(), _key(), _log(), notes_markdown(), objections() (+2 more)

### Community 106 - "ceo slack · ceo_slack.py"
Cohesion: 0.32
Nodes (11): _api(), cmd_poll(), cmd_post(), cmd_post_proposal(), cmd_standup(), _env_file(), _load_state(), main() (+3 more)

### Community 107 - "newsletter preflight · newsletter_preflight.py"
Cohesion: 0.20
Nodes (7): brief_size_detail(), check(), finish(), http(), main(), newest_brief(), sendable_drift()

### Community 108 - "newsletter roundtrip · newsletter_roundtrip.py"
Cohesion: 0.20
Nodes (7): brief_size_detail(), check(), dry_run_counts(), finish(), http(), main(), newest_brief()

### Community 109 - "t3 smoke · t3_smoke.py"
Cohesion: 0.21
Nodes (10): backfill_allowed(), env_truthy(), bad(), count_json(), main(), note(), ok(), queue_slugs() (+2 more)

### Community 110 - "overview write tail · overview_write_tail.py"
Cohesion: 0.26
Nodes (9): resolve_mp4_for_upload(), append_jsonl(), copy_scratch(), find_success_ledger_row(), main(), parse_is_aigc(), resolve_repo_root(), utc_now_iso() (+1 more)

### Community 111 - "with operator paused · with_operator_paused.sh"
Cohesion: 0.25
Nodes (12): Never pause the desk by hand, _page_gate(), parrot_deadman.sh script, on_exit(), on_signal(), restore(), say(), with_operator_paused.sh script (+4 more)

### Community 112 - "index · index.py"
Cohesion: 0.20
Nodes (6): build(), connect(), _retired_run_ids(), search(), _span_rows(), _stale()

### Community 113 - "QC gate · run_qc()"
Cohesion: 0.18
Nodes (9): blockers_open(), classify_qc_objections(), _draft_sha(), _find_rec(), latest_pass(), _prior_identical_pass_judge(), _qc_attempts(), run_qc() (+1 more)

### Community 114 - "QC gate · judge()"
Cohesion: 0.14
Nodes (7): _doc_sha(), judge(), _kind(), load_voice_spec(), _prior_pieces(), _spot_audit(), _voice_section()

### Community 115 - "bsky announce · log()"
Cohesion: 0.18
Nodes (7): anthropic_key(), _boomer_record(), _chain_of_link(), _find_bsky_post_for_url(), log(), _resolve_did(), _social_session()

### Community 116 - "slack claude bridge · slack_claude_bridge.py"
Cohesion: 0.26
Nodes (10): api(), _env_file(), handle(), load_state(), main(), post(), react(), resolve_channel() (+2 more)

### Community 117 - "Backend contract (docs) · Corpus DB builder (dat"
Cohesion: 0.17
Nodes (12): site/audits/<slug>.json (full piece detail), Corpus DB builder (data/corpus.sqlite + data/corpus.sql dump), site/corpus.json (piece summaries, as_of, totals), Corrections ledger (site/corrections.json), site/llms.txt (generated by sitegen; lists API + MCP), MCP read tools (search_corpus, get_audit, list_audits, list_corrections, get_chain, verify_piece, framing index, coverage, claim ledger, storyboards, letters, boxscore), MCP server POST /api/mcp (hand-rolled JSON-RPC 2.0), MCP write tools (submit_letter, report_error, propose_development) (+4 more)

### Community 118 - "build · build.js"
Cohesion: 0.27
Nodes (12): ALLOWED, buildCombinedJson(), buildCombinedXml(), esc(), extractXmlItems(), itemKeyXml(), LABELS, onRequestGet() (+4 more)

### Community 119 - "audience dashboard · audience_dashboard.py"
Cohesion: 0.24
Nodes (8): bsky_day(), cost_by_utc_day(), _fmt_usd(), load_day_json(), main(), _referrer_counts(), render_table(), visits_funnel()

### Community 120 - "Overview video queue · overview_enqueue_policy.p"
Cohesion: 0.28
Nodes (7): decide(), Decision, _meta_from_mapping(), _norm(), resolve_content_type(), should_enqueue(), _slug_looks_out()

### Community 122 - "terms watch"
Cohesion: 0.27
Nodes (6): check(), _effective_in(), main(), _norm(), _now(), _text_of()

### Community 123 - "Backend contract (docs)"
Cohesion: 0.20
Nodes (12): GET /api/v1/audits (+ /<slug>) list and detail, GET /api/v1/corrections, /chains, /rhetoric, /corpus, GET /api/v1/search (FTS, snippet, rank order), HTTP API /api/v1 (Pages Functions, house style, 503 when unbound), GET /api/v1/verify/<slug> (provenance hashes), D1 schema (meta, pieces, piece_sources, corrections, chains, rhetoric, pieces_fts), Embeddable receipt card /embed/<slug>, Embed tiers: free attribution always; white-label never removes receipt link or corrections chip (+4 more)

### Community 124 - "beacon"
Cohesion: 0.23
Nodes (7): GET /api/v1/embed/stats (KV counters by framing host and day), isSameOrigin(), onRequestPost(), SCROLL_VALS, TIME_VALS, BOTS, isCrawlerUA()

### Community 125 - "Boomer cards"
Cohesion: 0.26
Nodes (6): build(), _cfg(), day_of(), is_boomer(), render(), verdict_of()

### Community 126 - "markets"
Cohesion: 0.27
Nodes (7): _delta_24h(), fetch_kalshi(), fetch_polymarket(), _get(), main(), now_iso(), snapshot()

### Community 127 - "Homepage curation"
Cohesion: 0.24
Nodes (6): curate(), decide(), _digest(), _normalize(), _recency(), write_curation()

### Community 128 - "QC gate"
Cohesion: 0.20
Nodes (6): _claim_ledger_has_data(), failed_assertion_state(), idiom_state(), _ledger_rows(), recent_devices(), rotation_block()

### Community 129 - "bsky announce"
Cohesion: 0.17
Nodes (7): _boomer_cfg(), _boomer_serial(), compose(), _quote_post_outlet(), scrub_retired(), _truncate_clean(), _utm_link()

### Community 130 - "bsky announce"
Cohesion: 0.23
Nodes (6): claude_hook(), _glm_messages(), hook_grounded(), _polarity_backstop(), _strip_urls(), _zai_key()

### Community 131 - "proofwatch check"
Cohesion: 0.30
Nodes (8): check(), main(), d(), _norm(), _now(), sources_of(), _text_of_html(), _text_of_pdf()

### Community 133 - "embedgen"
Cohesion: 0.27
Nodes (6): build_embed(), _clip(), embed_url(), _esc(), iframe_snippet(), _pick_exhibit()

### Community 134 - "podcasts"
Cohesion: 0.29
Nodes (7): _bump(), episode(), get(), _key(), podcast_episodes(), search_episodes(), search_podcasts()

### Community 135 - "bsky receipt card"
Cohesion: 0.27
Nodes (6): save_state(), compose_card(), eligible(), _iso(), main(), send_receipt_card()

### Community 136 - "check subscriber binding"
Cohesion: 0.27
Nodes (6): check(), _declared_namespace_id(), _list_declared_keys(), _load_runtime_snapshot(), self_test(), _wrangler_bin()

### Community 137 - "merge ledger"
Cohesion: 0.22
Nodes (4): key(), load(), main(), patch()

### Community 138 - "Edge functions"
Cohesion: 0.49
Nodes (9): cards(), esc(), loginPage(), onRequest(), page(), render(), sameStr(), sessionToken() (+1 more)

### Community 139 - "reddit top"
Cohesion: 0.31
Nodes (6): coverage(), covered_by(), fetch(), main(), parse(), toks()

### Community 140 - "consistency gate"
Cohesion: 0.36
Nodes (5): check_package(), extract_signed_slope(), gate_receipt(), title_direction(), title_slope_consistent()

### Community 141 - "Site generator"
Cohesion: 0.22
Nodes (5): _chain_export(), _chain_membership(), _chains(), _mcconnell_widget(), _mslug()

### Community 142 - "pack drilldown v0"
Cohesion: 0.38
Nodes (8): display_for(), fmt_xy(), lean_counts(), main(), quadrant(), short_id(), soft_strong_phrase(), writeup()

### Community 143 - "s5 acceptance"
Cohesion: 0.33
Nodes (5): _check_gitignore(), _check_tt_doc(), main(), parse_args(), _scan_no_pages_deploy()

### Community 144 - "MCP server (edge)"
Cohesion: 0.33
Nodes (9): bump(), checkRateLimit(), corsHeaders(), json(), onRequest(), rateLimitedResponse(), rpcError(), rpcResult() (+1 more)

### Community 146 - "operator pack"
Cohesion: 0.39
Nodes (4): _fmt_ledgers(), _fmt_scalar(), format_pack_header(), validate_pack()

### Community 147 - "lab call"
Cohesion: 0.44
Nodes (7): call(), _key(), list_models(), _log(), main(), spent_today(), _today()

### Community 148 - "legal review"
Cohesion: 0.36
Nodes (6): _call_glm(), _log(), review(), _slack(), _write_directive(), _zai_key()

### Community 149 - "preseed source"
Cohesion: 0.39
Nodes (5): curl_body(), fulltext_body(), main(), pdf_text(), plain_body()

### Community 150 - "social announce"
Cohesion: 0.22
Nodes (5): compose_for(), headline(), pick_hashtags(), pick_hashtags(), topic_candidates()

### Community 151 - "n15 unanimous"
Cohesion: 0.32
Nodes (3): _absences_hold(), audit(), _count_present()

### Community 152 - "uw"
Cohesion: 0.32
Nodes (3): _bump_quota(), get(), _key()

### Community 153 - "bsky deferred status"
Cohesion: 0.32
Nodes (3): hero_url(), main(), posted_status_for()

### Community 154 - "backfill sweep"
Cohesion: 0.39
Nodes (5): _digest(), _gate_blocked(), _live_pieces(), main(), _slack()

### Community 155 - "chain membership check"
Cohesion: 0.36
Nodes (4): check(), load_superseders(), main(), _slug_of_run()

### Community 156 - "sitegen strip fixture"
Cohesion: 0.36
Nodes (3): build_article_chrome(), _esc(), _overview_media_strip()

### Community 157 - "ledger to slack"
Cohesion: 0.46
Nodes (5): _api(), _env_file(), _fmt(), main(), _resolve_channel()

### Community 158 - "sunday roundup watchdog"
Cohesion: 0.39
Nodes (4): is_live(), main(), most_recent_sunday(), slack()

### Community 159 - "engagement"
Cohesion: 0.52
Nodes (6): bearerToken(), dayStr(), json(), onRequest(), onRequestGet(), safeEqual()

### Community 160 - "glmrates"
Cohesion: 0.38
Nodes (3): credits(), credits_for(), rates()

### Community 161 - "Publish step"
Cohesion: 0.29
Nodes (3): _apply_topic_policy(), count_topic_today(), _enforce_topic_policy()

### Community 162 - "QC gate"
Cohesion: 0.29
Nodes (3): ask_json(), _judge_api(), _price()

### Community 163 - "check sitegen drift"
Cohesion: 0.38
Nodes (3): check_sentinels(), check_uncommitted(), main()

### Community 164 - "cost push"
Cohesion: 0.38
Nodes (3): build(), main(), push()

### Community 166 - "rejudge pending heroes"
Cohesion: 0.48
Nodes (5): _judge_one(), main(), _now(), _read(), _write()

### Community 167 - "t4 smoke"
Cohesion: 0.29
Nodes (6): OVERVIEW_BRAND_SKIP, OVERVIEW_CARD_KIT, OVERVIEW_REPO_ROOT, OVERVIEW_WORKER_ENABLED, PATH, t4_smoke.sh script

### Community 168 - "README"
Cohesion: 0.33
Nodes (6): tier1_pull.sh script, tier1/migration.sql, Client keys issued by hand (key printed once, sha256 stored), D1 queue tier1_jobs / tier1_clients, POST/GET /api/v1/jobs (Bearer client key; 202 {id, poll}; ops path via PARROT_OBS_TOKEN), DGX puller (scripts/tier1_pull.sh on parrot-tier1.timer, 2 min)

### Community 169 - "golive"
Cohesion: 0.60
Nodes (5): bearerToken(), json(), onRequest(), onRequestPost(), safeEqual()

### Community 170 - "push"
Cohesion: 0.60
Nodes (5): bearerToken(), json(), onRequest(), onRequestPost(), safeEqual()

### Community 171 - "push"
Cohesion: 0.60
Nodes (5): bearerToken(), json(), onRequest(), onRequestPost(), safeEqual()

### Community 172 - "heartbeat"
Cohesion: 0.60
Nodes (5): bearerToken(), json(), onRequest(), onRequestPost(), safeEqual()

### Community 173 - "status"
Cohesion: 0.67
Nodes (5): json(), onRequest(), onRequestGet(), stateFor(), syncCheck()

### Community 177 - "bsky announce"
Cohesion: 0.40
Nodes (3): pick_hashtags(), research_hashtags(), topic_candidates()

### Community 178 - "slack post"
Cohesion: 0.47
Nodes (3): _api(), main(), _token()

### Community 179 - "feed"
Cohesion: 0.60
Nodes (4): json(), onRequest(), onRequestGet(), RANK

### Community 180 - "live smoke"
Cohesion: 0.70
Nodes (4): fail(), pass(), live_smoke.sh script, warn()

### Community 181 - "narrate attach"
Cohesion: 0.60
Nodes (4): _defer(), _mp3_complete(), PATH, narrate_attach.sh script

### Community 182 - "parrot change lock"
Cohesion: 0.70
Nodes (4): logline(), say(), parrot_change_lock.sh script, usage()

### Community 183 - "t3 smoke"
Cohesion: 0.40
Nodes (4): OVERVIEW_BACKFILL_COS_ALLOW, OVERVIEW_REPO_ROOT, OVERVIEW_WORKER_ENABLED, t3_smoke.sh script

### Community 184 - "reader-inbox"
Cohesion: 0.83
Nodes (3): json(), onRequest(), parseMaybe()

### Community 187 - "chyron report"
Cohesion: 0.50
Nodes (3): CLAUDE_CODE_OAUTH_TOKEN, PATH, chyron_report.sh script

### Community 188 - "editor cycle"
Cohesion: 0.67
Nodes (3): log(), PATH, editor_cycle.sh script

### Community 189 - "lab cycle"
Cohesion: 0.67
Nodes (3): log(), PATH, lab_cycle.sh script

### Community 191 - "t2 smoke"
Cohesion: 0.50
Nodes (3): OVERVIEW_REPO_ROOT, PARROT_MEDIA_PUBLIC_BASE, t2_smoke.sh script

## Knowledge Gaps
- **154 isolated node(s):** `RFC-6761`, `SCROLL_VALS`, `TIME_VALS`, `RFC-8058`, `RFC-6761` (+149 more)
  These have ≤1 connection - possible missing edges or undocumented components. (Counts symbols only; 1877 node(s) total have ≤1 connection when file, concept and rationale nodes are included.)
- **71 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes.

## Suggested Questions
_Questions this graph is uniquely positioned to answer:_

- **Why does `Lock-file existence proves nothing — test the lock` connect `locks · locks.py` to `operator cycle · operator_cycle.sh`?**
  _High betweenness centrality (0.011) - this node is a cross-community bridge._
- **Why does `build_lexicon()` connect `Site generator · build_lexicon()` to `Site generator · _esc()`, `Site generator · _slug()`, `Site generator · sitegen.py`, `Site generator · _generate_into()`?**
  _High betweenness centrality (0.010) - this node is a cross-community bridge._
- **Why does `_generate_into()` connect `Site generator · _generate_into()` to `Site generator · _esc()`, `Site generator · _slug()`, `Site generator · sitegen.py`, `embedgen`, `Desk live feed · deskfeed.py`, `Site generator · build_article()`, `parrot CLI / orchestrator · orchestrator.py`, `Site generator · build_index()`, `Continuity · continuity.py`, `Ledger · ledger.py`, `Site generator · Path`, `Site generator`, `Daily cartoon rail · cartoon.py`, `Story chains · chainlib.py`, `Site generator · _norm_outlet()`, `Site generator · build_lexicon()`, `Site generator · _render_sources()`, `Share cards + embeds · sharecard.py`, `Site generator · _freshness()`, `Boomer cards`?**
  _High betweenness centrality (0.010) - this node is a cross-community bridge._
- **Are the 4 inferred relationships involving `_generate_into()` (e.g. with `build_economy()` and `build_politics()`) actually correct?**
  _`_generate_into()` has 4 INFERRED edges - model-reasoned connections that need verification._
- **What connects `RFC-6761`, `SCROLL_VALS`, `TIME_VALS` to the rest of the system?**
  _154 weakly-connected nodes found - possible documentation gaps or missing edges._
- **Should `Hero image rail · pathlib` be split into smaller, more focused modules?**
  _Cohesion score 0.03938679245283019 - nodes in this community are weakly interconnected._
- **Should `Site generator · _esc()` be split into smaller, more focused modules?**
  _Cohesion score 0.04054054054054054 - nodes in this community are weakly interconnected._