Files
ratatoskr/graphify-out/GRAPH_REPORT.md
vh 89c22db6f8 chore(graphify): add Granite-labeled codebase map
graphify-out/GRAPH_REPORT.md: god-nodes + call topology, labeled via
local Granite-4.1-8b ($0). Heavy artifacts gitignored; rebuild:
'graphify update .' then 'graphify label . --backend granite'.
2026-06-10 06:28:29 -07:00

53 KiB

Graph Report - . (2026-06-10)

Corpus Check

  • cluster-only mode — file stats not available

Summary

  • 1974 nodes · 4551 edges · 132 communities (128 shown, 4 thin omitted)
  • Extraction: 66% EXTRACTED · 34% INFERRED · 0% AMBIGUOUS · INFERRED: 1560 edges (avg confidence: 0.51)
  • Token cost: 0 input · 0 output

Graph Freshness

  • Built from commit: 5b9a3f4c
  • Run git rev-parse HEAD and compare to check if the graph is stale.
  • Run graphify update . after code changes (no API cost).

Community Hubs (Navigation)

God Nodes (most connected - your core abstractions)

  1. TuiPresenterState - 84 edges
  2. Done - 78 edges
  3. Cancelled - 78 edges
  4. ParsedArgs - 77 edges
  5. SseId - 75 edges
  6. LocalAgentEntry - 74 edges
  7. RatatoskrApp - 73 edges
  8. Text - 71 edges
  9. WorkerPhase - 68 edges
  10. ToolStart - 67 edges

Surprising Connections (you probably didn't know these)

  • _GatedStream --uses--> UsageError [INFERRED] tests/test_cli.py → src/ratatoskr/cli.py
  • CaptureFixture --uses--> UsageError [INFERRED] tests/test_cli.py → src/ratatoskr/cli.py
  • Event --uses--> UsageError [INFERRED] tests/test_cli.py → src/ratatoskr/cli.py
  • MonkeyPatch --uses--> UsageError [INFERRED] tests/test_cli.py → src/ratatoskr/cli.py
  • TestAmain --uses--> UsageError [INFERRED] tests/test_cli.py → src/ratatoskr/cli.py

Import Cycles

  • None detected.

Communities (132 total, 4 thin omitted)

Community 0 - "TuiPresenterState Management"

Cohesion: 0.05 Nodes (39): Per-turn presenter state for TUI mode (issue #12). See `docs/contracts/issu, TuiPresenterState, _make_tui_done(), _mounted_renderables(), current_invokes_callback_with_snapshot: AffectUpdate(current, snapshot), scheduled_does_not_invoke_callback: status=scheduled has no snapshot, so, callback_exception_swallowed: a raising callback does NOT crash the pres, Tests for the new TuiPresenterState — per issue #12 contract. (+31 more)

Community 1 - "EventSource SSE Consumer"

Cohesion: 0.06 Nodes (49): EventSource, AffectUpdate, AwaitingLlmFirstToken, cancel_turn(), CancelResult, InvalidLastEventId, _iter_events(), SSE consumer for the Worldtree Conversation API. Implements docs/contracts/issu (+41 more)

Community 2 - "Parsed CLI Arguments Handling"

Cohesion: 0.14 Nodes (53): ParsedArgs, Raised on argument violations; mapped to exit code 10 by main()., Resolved CLI invocation. Post-validation: exactly one of session_id / new is set, UsageError, AgentInfo, Worldtree agent envelope from GET /agents (issue #8). INV-005: required fie, Cancelled, Done (+45 more)

Community 3 - "Agent Information Management"

Cohesion: 0.19 Nodes (55): AgentInfo, ComposeResult, Exception, FileResponse, JSONResponse, _ArgparseError, _AuthError, Raised when no API key is resolvable; mapped to exit code 11 by main(). (+47 more)

Community 4 - "TUI Tests and Contract Verification"

Cohesion: 0.08 Nodes (36): _args_existing(), _noop_worker(), MonkeyPatch, Tests for ratatoskr.tui per docs/contracts/issues/4.contract.md., Fake _stream_turn_worker that never completes (lets state stay 'streaming')., happy_submit_echoes_and_spawns [happy,tracer]: …, empty_submit_no_op [trace]: '' + Enter → no change; no worker spawned., submit_during_streaming_shows_busy_notice [adversarial]: … (+28 more)

Community 5 - "CLI Arguments Parsing Contract"

Cohesion: 0.06 Nodes (26): _parse_args(), argparse + env-fallback + xor-validation per the contract., happy_existing_session: --send --session --api-key → ParsedArgs with session_id., api_key_from_env: WORLDTREE_API_KEY env var fills in when --api-key omitted., api_key_flag_beats_env: explicit --api-key wins over WORLDTREE_API_KEY., server_default: no --server, no WORLDTREE_API_URL → http://localhost:8000., server_env_fallback: WORLDTREE_API_URL fills in when --server omitted., server_flag_beats_env: explicit --server wins over WORLDTREE_API_URL. (+18 more)

Community 6 - "Sync Entry Point and Session Resolution"

Cohesion: 0.07 Nodes (28): Sync entry point — delegates to the async resolve-then-run flow. Per issue, run_tui(), _args_new_no_agent(), CaptureFixture, Tests at the _resolve_then_run layer — pre-App.run() session resolution, happy_new_session_resolve [happy]: --new path through _resolve_then_run., happy_new_with_end_user_id_resolve [happy]: args.end_user_id threads into POST b, user_agent_header_sent [trace]: outbound requests carry the ratatoskr User-Agent (+20 more)

Community 7 - "Stream Turn Rendering and Cancellation"

Cohesion: 0.10 Nodes (25): Drive stream_turn, render events, race against sigint_event for mid-stream cance, _run_turn(), _GatedStream, Event, no_busy_loop_after_cancel [trace]: only one sigint_event.wait()-task created., cancel_failed_drains_anyway [scenario]: …, render_called_once_per_event [trace]: spy on render; call_count == event count., sigint_handler_installed_and_removed [trace]: signal handler add/remove paired. (+17 more)

Community 8 - "Worldtree Session Client"

Cohesion: 0.06 Nodes (26): InvalidCursor, list_sessions(), Worldtree Conversation API session-lifecycle client. Implements docs/contracts/, GET /sessions. See contract FN list_sessions., Worldtree session envelope; shared shape for create + list responses. INV-0, One page of GET /sessions results. next_cursor=None on the last page., Raised on HTTP 422 cursor_invalid from GET /sessions., SessionInfo (+18 more)

Community 9 - "Tier 3 Agent Lifecycle Client"

Cohesion: 0.07 Nodes (32): _build_parser(), define_agent(), _extract_error_code(), _extract_error_field(), main(), _parse_tier3_agent_info(), patch_agent(), Worldtree Tier 3 (consumer-defined) agent lifecycle client. Implements docs/con (+24 more)

Community 10 - "CLI Presenter State Management"

Cohesion: 0.09 Nodes (23): CliPresenterState, Per-turn presenter state for --send mode (issue #12). See docs/contracts, SSE event text_boundary: speakable breakpoint after a text` event., TextBoundary, _make_done(), Tests for the new CliPresenterState — per issue #12 contract., thinking_coalesce_single_run [happy,tracer]: Thinking("hello") + Thinkin, thinking_closes_on_first_non_thinking_event [happy]: Thinking → WorkerPh (+15 more)

Community 11 - "Ratatoskr Application Argument Handling"

Cohesion: 0.09 Nodes (23): _args_new(), Construct RatatoskrApp with pre-resolved state (issue #6 lifecycle). Produc, happy_new_session_mount [happy,tracer]: identity populated from pre-resolved sta, happy_existing_session_mount: identity shows when agent_id is None., footer_identity_visible_first_frame [trace]: identity widget rendered first fram, INV-013 + INV-014 + INV-017: Horizontal two-column layout with Tools tab., main_row_is_horizontal [tracer]: compose() yields Horizontal#main-row., left_column_content_only [v0.9.0]: left column = transcript-scroll Verti (+15 more)

Community 12 - "Stream Turn Event Processing"

Cohesion: 0.07 Nodes (21): POST a message and yield typed Events. See contract FN stream_turn., stream_turn(), heartbeat_sequence_monotonic [scenario]: three consecutive heartbeats in, happy_one_text_done: text then done; same turn_id; iter ends after done., full_event_vocab: one of each variant; all carry parsed sse_id., error_terminal: text then error; iteration ends; error_code populated., cancelled_terminal: cancelled with phase=cancelled, turn_id; iteration ends., session_not_found: 404 -> SseConnectFailed(status=404). (+13 more)

Community 13 - "Local Tier 3 Agent Index Management"

Cohesion: 0.14 Nodes (22): LocalAgentEntry, add_local_agent(), load_local_agents(), LocalAgentEntry, Local index of tier-3 agents defined via python -m ratatoskr.tier3. Workaroun, Add (or replace) an agent in the local index. agent_id is the key., Update an existing entry. Identical semantics to add_local_agent (agent_, Remove an entry by agent_id. No-op if absent (idempotent). (+14 more)

Community 14 - "Ratatoskr Application Core"

Cohesion: 0.09 Nodes (19): RatatoskrApp, Populate identity widget from pre-resolved state; set idle hint. Per is, Hydrate persona-header + Persona pane via GET /agents/{id}/persona_state., Update sticky header + Persona pane from a fresh snapshot. Called on bo, Render an italic-dim placeholder in the Persona pane; keep header empty., v0.6.0: turn-ID headers across every pane for cross-pane correlation. v0, Set the hint state attribute AND update the visible Static widget., Write a timestamped audit line to the debug pane. v0.10.0: shared sink (+11 more)

Community 15 - "Async Main Orchestrator"

Cohesion: 0.08 Nodes (21): _amain(), Async orchestrator: create-session (if --new) → SIGINT install → _run_turn → cle, _clear_env(), CaptureFixture, MonkeyPatch, user_agent_header_sent [trace]: outbound requests carry the ratatoskr User-Agent, happy_new_session_then_stream [happy,tracer]: …, happy_existing_session: --session, no create POST; just SSE stream → exit 0. (+13 more)

Community 16 - "Contract Parsing and Function Extraction"

Cohesion: 0.11 Nodes (31): Contract, ErrorSpec, _extract_function_blocks(), FunctionBlock, main(), _parse_body_sections(), parse_contract(), _parse_frontmatter() (+23 more)

Community 17 - "Behavioral Guidelines Documentation"

Cohesion: 0.06 Nodes (29): 1. Think Before Coding, 2. Simplicity First, 3. Surgical Changes, 4. Goal-Driven Execution, Architecture map, BEHAVIORAL GUIDELINES, Canonical Corviduo specifications, Contract-first workflow (+21 more)

Community 18 - "Session API Client"

Cohesion: 0.07 Nodes (16): _parse_sse_id(), Parse the SSE wire id: as composite {turn_id}:{seq}. See contract FN parse, negative_seq [adversarial]: '42:-1' -> ValueError., trailing_whitespace [adversarial]: '42:3 ' -> ValueError (strict; no strip)., truncation [security]: 5000-char no-colon -> ValueError msg contains only raw[:6, PRE-001 hard: raw is a string -- isinstance check before parse., happy_simple [happy,tracer]: '42:3' -> SseId(turn_id=42, seq=3)., happy_seq_one: smallest valid id per spec — first event of first turn. (+8 more)

Community 19 - "Tier 3 Error Handling"

Cohesion: 0.11 Nodes (19): Raised on HTTP 429 agent_quota_exceeded — 50-agent cap reached on the He, Raised on HTTP 403 tier3_user_id_unsupported — auth's user_id is not slu, Raised on HTTP 422 layer_deferred — define request carried a non-null la, Raised on HTTP 404 — PATCH or DELETE on a non-existent agent_id (spec §2634, Tier3AgentNotFound, Tier3LayerDeferred, Tier3QuotaExceeded, Tier3UserIdUnsupported (+11 more)

Community 20 - "Web Packaging and CLI Argument Tests"

Cohesion: 0.07 Nodes (23): ArgumentParser, Packaging + lazy-import discipline tests for ratatoskr.web per issue #16. - `in, FN main argparse + serve-loop traces (contract TESTS)., default_host_is_zero [trace]: argv=[] → host == '0.0.0.0'., port_zero_supported [trace]: argv=['--port','0'] → port == 0., static/index.html is locatable via importlib.resources. INV-009 packaging d, happy_argv [tracer]: env set + uvicorn.run mocked → main returns 0., open_flag_calls_webbrowser [trace]: --open → webbrowser.open called. (+15 more)

Community 21 - "Conversation API Specification"

Cohesion: 0.07 Nodes (26): Admin inspection endpoints, Appendix: agent.ui_hints config block, Authentication, Base URL, Client Implementation Guide, Custom exception handler status-code mapping, Endpoints, Error Codes (+18 more)

Community 22 - "CLI Command Rendering and Usage"

Cohesion: 0.12 Nodes (13): _format_duration_ms(), _format_usage(), main(), Ratatoskr CLI — non-interactive --send stdout presenter. Implements docs/cont, Auto-scale duration formatting per issue #12 INV-006. Locale-blind., Natural-language usage formatting per issue #12 INV-007. arrow="->" for C, Render one Worldtree SSE event with editorial hierarchy + coalescing., Sync entry point. Maps UsageError/_AuthError to exit codes BEFORE the event loop (+5 more)

Community 23 - "TUI Shell Implementation"

Cohesion: 0.09 Nodes (18): _audit_line(), _format_persona_detail(), _format_persona_header(), _plain_label(), Ratatoskr Textual TUI shell — interactive primary presenter. Implements docs/co, Pre-flight session resolution then App.run_async() inside one event loop. E, Pre-amendment labeled-line shape for INV-009 render-exception fallback. Use, HH:MM:SS.fff wall-clock timestamp for debug-pane log lines. (+10 more)

Community 24 - "Contract Amendments for Presenter States"

Cohesion: 0.09 Nodes (22): Acceptance, _amain STEPS amended, Architecture, CLASS CliPresenterState (NEW), CLASS TuiPresenterState (NEW), Constraints, Context, Data flow (+14 more)

Community 25 - "Session Creation API"

Cohesion: 0.12 Nodes (13): create_session(), POST /sessions to create a new session. See contract FN create_session. Per, validation_failed: 422 -> SessionApiFailed(status=422); body truncated., unexpected_status_truncates: 500 + 5000-byte body -> SessionApiFailed; body == 1, empty_agent_id [adversarial]: '' -> AssertionError; no HTTP issued., happy_create_with_end_user_id [happy]: body carries both keys (issue #5)., default_omits_end_user_id [trace]: omit kwarg → body has no end_user_id (INV-002, empty_end_user_id [adversarial]: '' → AssertionError before HTTP (PRE-003). (+5 more)

Community 26 - "Web Server Endpoint Handling"

Cohesion: 0.10 Nodes (21): _agents_endpoint(), _as_dict(), _create_session_endpoint(), _format_sse(), _persona_state_endpoint(), Starlette app factory + endpoint handlers for ratatoskr.web. Per docs/contracts, POST /api/sessions → upstream POST /sessions. Per FN create_session_endpoint., POST /api/turns/{session_id} → allocate turn_id + register handle. Per FN s (+13 more)

Community 27 - "SSE ID Parsing"

Cohesion: 0.20 Nodes (20): NamedTuple, Parsed composite SSE wire id: per spec §SSE id format., SseId, _check(), _load_fixture(), Drift-detection between TUI presentation discipline and web JS presenter per iss, Assert (event_type, data) for event matches the fixture entry., test_affect_update_matches_fixture() (+12 more)

Community 28 - "Persona State Retrieval"

Cohesion: 0.13 Nodes (13): get_persona_state(), GET /agents/{agent_id}/persona_state — fetch current persona snapshot. Worl, Any, Worldtree #204 / v0.28.0 — GET /agents/{agent_id}/persona_state. Bootstrap, happy_full_snapshot [happy,tracer]: 200 → snapshot dict with pad + domin, persona_not_configured_404 [error]: 404 with error_code persona_not_conf, agent_not_available_404 [error]: 404 with error_code agent_not_available, auth_scope_denied_403 [error]: 403 with error_code auth_scope_denied → A (+5 more)

Community 29 - "Agent Deletion and Authentication"

Cohesion: 0.15 Nodes (16): Namespace, delete_agent(), DELETE /agents/ — owner hard-delete (cancels active sessions server-side, No API key resolvable → exit 11., Resolve API key + server URL with the same env-var fallback as cli.py., _resolve_auth(), _run_define(), _run_delete() (+8 more)

Community 30 - "Agent Listing Client"

Cohesion: 0.15 Nodes (11): list_agents(), GET /agents — list available agents. See contract FN list_agents (issue #8)., AsyncClient, happy_full_shape [happy,tracer]: spec full-shape mimir example → all fields., happy_minimum_shape: required-only agent → optional fields default., happy_multi_agent: 3 agents preserve order., happy_empty: 200 with [] returns empty list (no error)., omit_capabilities_empty: explicit [] from server still defaults to []. (+3 more)

Community 31 - "Browser SSE Stream Parsing"

Cohesion: 0.17 Nodes (12): _parse_browser_sse(), Response, Parse a server-to-browser SSE stream into [{"event": str, "data": dict}, ...]., happy [tracer]: respx mock one text+done → SSE stream yields text + done events., The stream generator captures upstream turn_id from the first event's ss, stream_turn_endpoint full_event_vocab — one of each Event type proxied., full_event_vocab [scenario]: a stream with the non-terminal Event types, error terminal [scenario]: an SSE error event (distinct from the synth (+4 more)

Community 32 - "Canonical Sync Documentation"

Cohesion: 0.12 Nodes (16): As a canonical consumer (you pin against someone else's spec), As a canonical publisher (your project owns a spec others should pin), Bump procedures, Canonical-sync — the pattern, the tooling, and the documented adopters, Cross-references, Decision rule (which path?), Documented adopters, How to adopt (+8 more)

Community 33 - "Conversation API Contract Details"

Cohesion: 0.12 Nodes (16): Amendment — Admin Event Stream (issue #127), Bifrost MCP-in-Reverse Binding (issue #160), Constraints, Context, Data flow, Ephemeral Template Surface (issue #161), Function-level contracts: Search (issue #122), Function-level contracts: Tool-Call Persistence (issue #123) (+8 more)

Community 34 - "Design Brief and Architecture Decisions"

Cohesion: 0.12 Nodes (16): 1. TUI framework — recommend Textual, 2. Repo placement and version-skew strategy, 3. SSE consumption pattern — recommend httpx-sse, 4. Session model — recommend (a) single-session, auto-resume, plus a startup picker, 5. Debug-observability surface — recommend multi-pane log dashboard, 6. Scope creep guards — frame is correct, one narrowing, 7. Naming — locked: Ratatoskr, 8. Terminal-mechanics and shape decisions (per Volva's fresh-look) (+8 more)

Community 35 - "System Prompt Constraints"

Cohesion: 0.12 Nodes (15): BEHAVIORAL CONSTRAINTS, CORE DIRECTIVE, EMOTIONAL TEMPERATURE, FAILURE & RESURFACING, FORM ASSUMPTION, GENDER CONSTRAINT, GRATIFICATION & MOMENTUM, IDENTITY (+7 more)

Community 36 - "Mood and Emotion Tracking"

Cohesion: 0.12 Nodes (16): arousal, dominance, pleasure, snapshot, arousal_delta, valence_delta, arousal, dominance (+8 more)

Community 37 - "Web Server Functional Tests"

Cohesion: 0.13 Nodes (12): AsyncByteStream, Tests for ratatoskr.web.server per docs/contracts/issues/16.contract.md. The Te, SSE response backed by a live AsyncByteStream (for gated/hanging streams in, root_endpoint FN + /static mount — index.html + static asset serving., happy [tracer]: GET / → 200, content-type text/html, body contains '<html'., lifespan_shutdown FN — INV-006: drain turn_registry within 5s budget., happy [tracer]: 2 in-flight turns + shutdown → upstream cancels called., stream_turn_endpoint INV-005 — browser disconnect mid-stream triggers upstre (+4 more)

Community 38 - "Upload Management and Capabilities"

Cohesion: 0.13 Nodes (15): Agent capability: accepts_uploads, Attaching uploads to messages, Auth scopes, Capability vocabulary, DELETE /uploads/{upload_id}, Dispatch channels, Endpoints, Example JavaScript client (upload-then-reference) (+7 more)

Community 39 - "Tier 3 Agent Patching Tests"

Cohesion: 0.13 Nodes (8): Tests for ratatoskr.tier3 per docs/contracts/issues/15.contract.md., happy_patch_both_fields: both fields set → request body has both., happy_patch_single_field: omit model → body has system_prompt only., field_not_mutable [error]: 422 + error_code → Tier3FieldNotMutable(field)., 404 [error]: PATCH on non-existent agent → Tier3AgentNotFound., no_fields_assert [adversarial]: both None → AssertionError, no HTTP., non_tier3_id_assert [adversarial]: agent_id without : → AssertionError., TestPatchAgent

Community 40 - "Agent Documentation and Attribution"

Cohesion: 0.14 Nodes (13): Attribution, Bootstrap protocol, Branch + PR conventions, Communication, Cross-references, Guardrails, Out-of-scope for you (Codex), Persistent memory (+5 more)

Community 41 - "Tier 3 Module Contract"

Cohesion: 0.14 Nodes (13): CLI surface (python -m ratatoskr.tier3), Context, ERROR_ROUTING (module + CLI), Exception classes, FN define_agent, FN delete_agent, FN patch_agent, Functions (+5 more)

Community 42 - "Web Server Contract Updates"

Cohesion: 0.14 Nodes (13): CLI surface change (ratatoskr.cli amendment), Context, Data flow, ERROR_ROUTING (tui startup), FN list_agents, Functions, Invariants, Modified: _resolve_then_run (+5 more)

Community 43 - "Turn Cancellation via SSE"

Cohesion: 0.14 Nodes (8): _cancel_via_sse(), Fire-and-forget cancel; never raises (mirrors cli._cancel_and_log; #3 INV-009)., audit_callback_records_failure [v0.10.0]: failure path emits cancel_pos, happy_cancel [happy,tracer]: 200 OK → returns None; transcript has no [cancel_fa, cancel_failed_500 [error]: …, cancel_already_completed [scenario]: 409 → '[cancel_failed] CancelAlreadyComplet, transport_error_swallowed [error]: …, audit_callback_records_lifecycle [v0.10.0]: when the caller passes an a

Community 44 - "Web Server Contract Version 16"

Cohesion: 0.15 Nodes (12): Console script, Constraints, Context, Function blocks, Invariants, Module shape, Public functions, Public surface (+4 more)

Community 45 - "SSE Event Types and Tooling"

Cohesion: 0.17 Nodes (12): affect_update, awaiting_llm_first_token, cancelled, done, error, POST /sessions/{session_id}/turns/{turn_id}/cancel, SSE Event Types, text (+4 more)

Community 46 - "Cross-User Isolation and Task Management"

Cohesion: 0.17 Nodes (12): Cross-User Isolation (INV-069), Endpoints, In-Memory-Only Persistence (INV-067), kind enum (INV-071 — additive), Pending Tasks, PendingTask envelope (INV-070 — stable shape), Query parameters (both endpoints), Rate-Limit Exemption (INV-068) (+4 more)

Community 47 - "Task Query Parameters and Results"

Cohesion: 0.17 Nodes (12): q, arguments, duration_ms, name, result, n, tool_result, data (+4 more)

Community 48 - "TUI Contract Amendments"

Cohesion: 0.17 Nodes (11): Context, Data flow, ERROR_ROUTING (unchanged), Invariants, Keybindings (amendment), Layout shape (post-amendment), Layout-spec snapshot (after v0.5.0), Presenter routing (amendment to issue #12) (+3 more)

Community 49 - "Session ID Support Contract"

Cohesion: 0.17 Nodes (11): Acceptance, Constraints, Context, Data flow, end_user_id support — POST /sessions parameter for per-user agents, In-place amendments (the work), Invariants, Issue #2 (ratatoskr.sessions) amendments (+3 more)

Community 50 - "TUI Startup Error Visibility"

Cohesion: 0.17 Nodes (11): Acceptance, Architecture, Constraints, Context, Data flow, Dependencies, In-place amendments to issue #4 (the work), Invariants (+3 more)

Community 51 - "TUI Contract Invariants and Amendments"

Cohesion: 0.17 Nodes (11): Acceptance, Constraints, Context, Data flow, In-place amendments (the work), Invariants, Issue #1 (ratatoskr.sse_client) amendments, Issue #3 (ratatoskr.cli) amendments (+3 more)

Community 52 - "Turn Cancellation and Logging"

Cohesion: 0.17 Nodes (7): _cancel_and_log(), Spawn-and-forget cancel that never raises (INV-009)., happy_cancel [happy,tracer]: 200 OK → returns None; stderr empty., cancel_failed_500 [error]: …, cancel_already_completed [scenario]: …, cancel_turn_not_found [scenario]: 404 → returns None; stderr CancelTurnNotFound., transport_error_swallowed [error]: …

Community 53 - "Mock Client Factory for Persona State"

Cohesion: 0.21 Nodes (8): _mock_client_factory(), A client_factory that returns a no-base-url AsyncClient suitable for respx-m, persona_state_endpoint FN — proxy upstream GET /agents/{id}/persona_state., happy [tracer]: respx 200 → 200 with snapshot., persona_not_configured [error]: 404 + persona_not_configured → 404 envelope., agent_not_available [error]: 404 + agent_not_available → 404 envelope., auth_scope_denied [error]: 403 + auth_scope_denied → 403 envelope., TestPersonaStateEndpoint

Community 54 - "Turn Cancellation Endpoint"

Cohesion: 0.21 Nodes (8): cancel_turn_endpoint FN — proxy upstream cancel for registered turn., happy [tracer]: registered turn (upstream started) → POST cancel → 200,, unknown_turn [error]: not in registry → 404., already_completed [race]: upstream 409 → 200 reason=race_or_completed., cancel_failed [error]: upstream 500 → 500 with cancel_failed envelope., TestCancelTurnEndpoint, create_app(), Construct the Starlette app — wire routes + state per FN create_app. INV-00

Community 55 - "Admin Event Stream and Tools"

Cohesion: 0.18 Nodes (11): Admin event, Auth, Cancelled-mid-flight semantics, Errors, Example client (JS), GET /sessions/{session_id}/tool-events, Opting in, Retention (+3 more)

Community 56 - "BM25 Search Ranking and API"

Cohesion: 0.18 Nodes (11): BM25 ranking, Endpoint, Error codes, Example: curl, Example: JavaScript pagination loop, FTS5 query syntax, Legacy created_at caveat, Query parameters (+3 more)

Community 57 - "Presentation Contract JSON"

Cohesion: 0.29 Nodes (6): affect_update, event_type, _contract_version, _provenance, thinking, event_type

Community 59 - "Monkey Patching for Local Agents"

Cohesion: 0.18 Nodes (7): MonkeyPatch, local_dedup [scenario]: local entry with same agent_id as upstream → no duplicat, agents_endpoint FN — proxy upstream /agents + merge with local tier3 index., happy [tracer]: respx mock /agents 200 → response merges upstream + local index., upstream_500 [error]: respx 500 → 500 with error_code envelope., network_error [error]: connection refused → 502 with network_error envelope., TestAgentsEndpoint

Community 60 - "Contract Format Specification"

Cohesion: 0.20 Nodes (9): 4. Module-level contracts, 5. Parsing rules, 6. Audit protocol, 7. Migration from v1.0, 8. When to write a contract, Contract Specification Format, File conventions, Light contract (+1 more)

Community 61 - "Contract Version 2.1 Amendments"

Cohesion: 0.20 Nodes (10): 2.1.C — Hard/soft invariants with recovery windows, 2.1.F — A2A agent_card: frontmatter (multi-agent contracts), 2.1.K — Migration from v2.0 → v2.1, 2.1.L — Operational follow-ups (out-of-format-side, Brokkr-tracked), 2.1.M — R05 survey self-critique flags (for reviewers), Example, Example, Syntax (+2 more)

Community 62 - "Agent and Session Management Endpoints"

Cohesion: 0.20 Nodes (10): DELETE /agents/<user_id>:<agent_name>204 No Content, Endpoints, Error codes (Phase 2.0), GET /sessions/<session_id>/tools — owner-scoped tool introspection (#183, Phase 2.0.1), Key-revocation cascade, PATCH /agents/<user_id>:<agent_name>, POST /agents/define, POST /sessions — Tier 3 routing (+2 more)

Community 63 - "Character Lifecycle and Management"

Cohesion: 0.20 Nodes (10): DELETE /characters/{character_id}, Errors, Example client (JS), GET /characters/{character_id}/state, GET /models/available-for-characters, Lifecycle, PII discipline, POST /characters (+2 more)

Community 64 - "Development Methodology"

Cohesion: 0.20 Nodes (9): 1. Vor (optional), 2. Contract (required), 3. Branch — direct or AFK TDD, 4. Verify against contract, 5. Merge / commit, AFK TDD (sleipnir-shaped), Direct TDD, Methodology (+1 more)

Community 65 - "Model Response and Usage Tracking"

Cohesion: 0.20 Nodes (10): model, response, usage, done, data, event_type, cached_input_tokens, completion_tokens (+2 more)

Community 66 - "Local Agents Path Resolution"

Cohesion: 0.29 Nodes (7): _local_agents_path(), Resolve the local index file path with XDG + env-var override., Path, local_path(), MonkeyPatch, Point $RATATOSKR_LOCAL_AGENTS at a fresh tmp file for the test., TestPathResolution

Community 67 - "Project README Overview"

Cohesion: 0.20 Nodes (9): Boundary rule, Consumer-side discoveries, Quickstart, Ratatoskr, Read in this order, Related repos, Status, Version-skew strategy (+1 more)

Community 68 - "Function Block Contract Syntax"

Cohesion: 0.22 Nodes (9): 3. Function blocks, Error blocks, Field reference, Postcondition syntax, Precondition syntax, State transitions, Step syntax — SCoT-typed, Syntax (+1 more)

Community 69 - "Admin Event Stream Specification"

Cohesion: 0.22 Nodes (9): Admin Event Stream, Envelope shape, Example JS client, GET /admin/events, Heartbeat, In-memory ring buffer, Last-Event-ID resume semantics, Queue overflow and system.events_dropped (+1 more)

Community 70 - "Spec Pinning Documentation"

Cohesion: 0.22 Nodes (8): Bump procedure, Conformance smoke check, Current pin, History, Pin history, Vendored artifacts, Why pin?, Worldtree spec pin

Community 71 - "Turn Status and Timing Data"

Cohesion: 0.29 Nodes (7): data, awaiting_llm_first_token, data, event_type, elapsed_ms_since_building_prompt, status, turn_id

Community 72 - "Error Code and Worker Phase Handling"

Cohesion: 0.22 Nodes (9): error_code, message, phase, error, data, event_type, worker_phase, data (+1 more)

Community 73 - "CLI and TUI Contract Amendments"

Cohesion: 0.22 Nodes (8): Architecture, CLI amendments (issue #3 contract concurrent amendment), Constraints, Context, Data flow, Invariants, Out of scope, TUI shell — Textual app, single chat pane, two-stage Ctrl-C

Community 74 - "Admin API Key Management"

Cohesion: 0.25 Nodes (8): Admin: API Key Management, Bootstrap: first admin key, DELETE /admin/keys/{key_id}, GET /admin/keys, POST /admin/keys, POST /admin/keys/{key_id}/rotate, Status codes, Trust boundary

Community 75 - "CLI Contract Details"

Cohesion: 0.25 Nodes (7): Architecture, CLI — Non-interactive --send stdout presenter, Constraints, Context, Data flow, Invariants, Out of scope

Community 76 - "Description Synthesis for Picker"

Cohesion: 0.39 Nodes (3): make_description(), Synthesize a one-line description for the picker from a system prompt. Stra, TestMakeDescription

Community 77 - "Canonical Sync Pinning Utility"

Cohesion: 0.36 Nodes (7): main(), SHA-256 hash, first 16 hex chars., Replace the quoted value in a key = "value" line, preserving leading white, Surgically update one pin's pinned_sha256_16 + pinned_at lines in the ma, _replace_value_preserve_format(), sha256_16(), update_pin_in_manifest_text()

Community 78 - "Malformed SSE Frame Testing"

Cohesion: 0.25 Nodes (5): SSE frame with id + arbitrary raw data (for testing malformed JSON)., malformed_data_raises [error]: text + bad-JSON → yields Text then MalformedSseDa, whitespace_data_raises [adv]: single-space data → MalformedSseData (NOT skipped), malformed_data_truncation [security]: 5000-char bad data → raw truncated to 200., _sse_raw_chunk()

Community 79 - "Session Creation Endpoint Tests"

Cohesion: 0.25 Nodes (5): create_session_endpoint FN — proxy POST /sessions to upstream., happy [tracer]: respx mock 201 → endpoint returns 201 with session JSON., unknown_agent [error]: respx 404 → 404 with agent_not_found envelope., missing_agent_id [adversarial]: body without agent_id → 400., TestCreateSessionEndpoint

Community 80 - "Turn Submission Endpoint Tests"

Cohesion: 0.25 Nodes (5): submit_turn_endpoint FN — allocate turn_id, register in turn_registry., happy [tracer]: POST {"content": "hi"} → 200 with turn_id; registry populated., missing_content [adversarial]: body without content → 400., monotonic_turn_ids [trace]: two submits → second turn_id > first., TestSubmitTurnEndpoint

Community 81 - "Server-Side End User ID Handling"

Cohesion: 0.25 Nodes (5): v0.16.0 — end_user_id is server-configured (RATATOSKR_END_USER_ID via create, create_app(end_user_id=...) → POST /api/sessions threads that id into th, A browser-supplied end_user_id is IGNORED — the server's configured valu, When create_app gets no end_user_id, the upstream body omits it (matches, TestServerSideEndUserId

Community 82 - "Application Creation and Routing"

Cohesion: 0.25 Nodes (5): create_app FN — route registration + state wiring (contract TESTS)., routes_registered [tracer]: app.routes contains all 9 path patterns., state_attached [trace]: app.state.turn_registry is empty dict., factory_stored [trace]: app.state.client_factory is the same callable., TestCreateAppShape

Community 83 - "Frontmatter and Dependency Management"

Cohesion: 0.29 Nodes (7): 1. Frontmatter, complexity guide, dependencies: — dispatch-ordering metadata (Sleipnir / preflight), Dependency fields — depends_on vs dependencies, depends_on: — module-architecture metadata, prd block — pinning a contract to its source-of-truth, Why two fields

Community 84 - "User Agent Versioning"

Cohesion: 0.29 Nodes (5): Compose the User-Agent header — ratatoskr/<version> (<contact>). Per worl, _resolve_user_agent(), version_endpoint FN — tracer per contract issue #16., happy [tracer]: GET /version → 200, body == {"ratatoskr": ""}., TestVersionEndpoint

Community 85 - "Architecture Overview"

Cohesion: 0.29 Nodes (6): Cross-references, Dependency graph, Execution order, Module map, ratatoskr — architecture, Session-load boundaries

Community 86 - "Session Lifecycle Amendment"

Cohesion: 0.29 Nodes (7): Acceptance tests for the amendment, Amendment — turn lifecycle infrastructure (INV-033..INV-038), Cancel-registry shape delta, cancel_turn — STEPS amendment, Configuration, Storage schema delta, stream_turn — STEPS amendment

Community 87 - "Ad-Hoc Session Lifecycle"

Cohesion: 0.29 Nodes (7): Ad-hoc session lifecycle, Capability requirement, Error responses, Per-Message Bifrost Endpoint Override (issue #166), Reentrancy cap, Request payload extension, Telemetry

Community 88 - "Cursor Envelope and Pagination"

Cohesion: 0.29 Nodes (7): Cursor envelope, Error code, Forward iteration (client pseudocode), Pagination, Query parameters, Response shape, Semantics

Community 89 - "SSE Client Contract"

Cohesion: 0.29 Nodes (6): Constraints, Context, Data flow, Invariants, Resume semantics, SSE Client — Worldtree Conversation API turn streaming

Community 90 - "Session Lifecycle Contract"

Cohesion: 0.29 Nodes (6): Constraints, Context, Data flow, Invariants, Out of scope, Sessions — Worldtree Conversation API session lifecycle

Community 91 - "Development Principles"

Cohesion: 0.29 Nodes (6): 1. Excellence over uniqueness, 2. Explicit over implicit, 3. Elegance is a byproduct, not a target, 4. Action-relevance over thoroughness, Principles, What this file is, and isn't

Community 92 - "Default Agent Routing Amendment"

Cohesion: 0.33 Nodes (6): Amendment — Default agent (Lofn) routing (issue #182), Function block, Handoff: no surface added, Invariants, No new storage, no new audit events, Request-model change

Community 93 - "Stream Turn Enhancements"

Cohesion: 0.33 Nodes (6): Changes to stream_turn, Invariants added by issue #166, New ErrorCode, New Request Model, Per-Message Bifrost Endpoint Override (issue #166), Validation and handshake flow (in send_message handler)

Community 94 - "Rate Limiting and Token Management"

Cohesion: 0.33 Nodes (6): 429 Response, Configuration (config/defaults.yaml), Rate Limiting, Scopes, Successful response headers (X-RateLimit-*), Token-rate post-charge

Community 95 - "Client Reconnect Guidance"

Cohesion: 0.33 Nodes (6): Client reconnect guidance, Reconnect flow, Reconnect & Resume, Replay buffer, SSE id format, Status codes for resume requests

Community 96 - "Ephemeral Session Continuity"

Cohesion: 0.33 Nodes (6): Continuity, Default agent (Lofn) (issue #182), end_user_id is required, Matrix bridge, Request shape, What Lofn does

Community 97 - "Session CRUD Operations"

Cohesion: 0.33 Nodes (6): Creating an ephemeral session, Discovering available templates, Ephemeral Templates (issue #161), Scope, Sending messages to an ephemeral session, What Saga does NOT do

Community 98 - "Session Failure Modes and Responses"

Cohesion: 0.33 Nodes (6): DELETE /sessions/{session_id}, GET /sessions/{session_id}, GET /sessions/{session_id}/messages, PATCH /sessions/{session_id}, POST /sessions/{session_id}/messages, Session Mutation

Community 99 - "Community 99"

Cohesion: 0.33 Nodes (6): Failure mode, GET /me, Key resolution rule (best-effort identification), Response fields, Response shapes, Status codes

Community 100 - "Event Metadata"

Cohesion: 0.33 Nodes (6): char_offset, kind, ts, text_boundary, data, event_type

Community 101 - "Persistent Memory Overview"

Cohesion: 0.33 Nodes (5): Current state / in-flight, Persistent memory — ratatoskr, Recent decisions, Repo purpose, Tried and abandoned

Community 102 - "Contract Drift Check"

Cohesion: 0.60 Nodes (5): fetch_issue_state(), load_frontmatter(), main(), Any, sha16()

Community 103 - "SSE Empty Data Handling"

Cohesion: 0.33 Nodes (4): SSE frame with id but empty data (server-emitted keepalive shape)., empty_data_skipped [trace]: 4 frames in, 3 events out; skip preserves last_sse_i, empty_skip_does_not_advance [trace]: drop-after-empty → last_seen is last real e, _sse_empty_chunk()

Community 104 - "Stream Turn Endpoint Tests"

Cohesion: 0.33 Nodes (4): stream_turn_endpoint FN — open upstream SSE, proxy events to browser., unknown_turn [error]: GET with turn_id not in registry → 404., upstream_error [error]: respx 500 → synthetic error SSE event., TestStreamTurnEndpoint

Community 105 - "Upstream Turn ID Cancellation"

Cohesion: 0.33 Nodes (4): v0.16.0 — cancel paths must target the UPSTREAM turn_id, not the browser-loc, A registered handle whose local turn_id (1) differs from its captured up, A handle with upstream_turn_id still None (turn never opened the upstrea, TestUpstreamTurnIdCancel

Community 106 - "Triadic Block Routing"

Cohesion: 0.40 Nodes (5): 2.1.A — ERROR_ROUTING: triadic block (SHIELDA), Example, Syntax, v2.0 back-compat, Why three axes

Community 107 - "Constraints and Subsections"

Cohesion: 0.40 Nodes (5): 2. Body, Constraints format, Invariant format, Optional subsections, Required subsections

Community 108 - "Authorization Model for Agents"

Cohesion: 0.40 Nodes (5): Authorization model — agent invocation, Common pitfalls, Quick decision table for consumers, Tier 1 — foundational agents (no : in agent_id), Tier 3 — consumer-defined agents (: in agent_id)

Community 109 - "SSE Content Data"

Cohesion: 0.40 Nodes (6): content, sse_id, text, data, event_type, data

Community 110 - "Cancelled Message Handling"

Cohesion: 0.40 Nodes (5): cancelled, data, event_type, partial_message_id, reason

Community 111 - "Implicit Tool Call Narration"

Cohesion: 0.50 Nodes (4): Implicit tool-call narration, text_boundary SSE event, voice.classifier_markers per-agent config, Voice Harness

Community 112 - "Canonical Drift Calculation"

Cohesion: 0.60 Nodes (4): main(), Path, SHA-256 hash of file contents, first 16 hex chars., sha256_16()

Community 113 - "Agent Source vs Live Editing"

Cohesion: 0.50 Nodes (3): agents/, Files, Source-vs-live: editing a file does not change the agent

Community 114 - "Agent Context Discriminator"

Cohesion: 0.50 Nodes (4): AgentContext discriminator, Amendment — AwaitingLLMFirstToken heartbeat (issue #201, INV-201-1..7), Mechanism note, Storage extension

Community 115 - "SSE No ID Frame Handling"

Cohesion: 0.50 Nodes (3): SSE frame with NO id line + arbitrary data (v0.8.1: keepalive shape)., empty_id_on_first_event_skipped [v0.8.1]: stream starts with an event ca, _sse_no_id_chunk()

Community 117 - "MCP Tool Annotations on STEPS"

Cohesion: 0.67 Nodes (3): 2.1.B — MCP tool annotations on STEPS, Example, Syntax

Community 118 - "External Invariants Frontmatter"

Cohesion: 0.67 Nodes (3): 2.1.D — external_invariants: frontmatter, Example, Syntax

Community 119 - "Scenario Trace Test Categorization"

Cohesion: 0.67 Nodes (3): 2.1.E — Scenario / trace / adversarial / property test categories, Examples, Syntax

Community 120 - "OpenSpec Revisions Frontmatter"

Cohesion: 0.67 Nodes (3): 2.1.G — OpenSpec-style revisions: frontmatter, Example, Syntax

Community 121 - "Flexibility Annotation on STEPS"

Cohesion: 0.67 Nodes (3): 2.1.H — flexibility: annotation on STEPS, Example, Syntax

Community 122 - "Issue-Scoped Frontmatter Shape"

Cohesion: 0.67 Nodes (3): 2.1.I — Issue-scoped frontmatter shape (codification), Issue-scoped frontmatter, Parser kind-aware branching (parser-side follow-up)

Community 123 - "Plan Revision Huginn Pattern"

Cohesion: 0.67 Nodes (3): 2.1.J — Plan revision idiom (Huginn pattern), Pattern, When to use

Community 124 - "Admin Session Inspection Amendment"

Cohesion: 0.67 Nodes (3): Amendment — Admin Session Inspection (issue #176), Function blocks, Invariants added

Community 125 - "Pending Task Visibility Amendment"

Cohesion: 0.67 Nodes (3): Amendment: Pending-Task Visibility (issue #119), New function blocks, New invariants

Community 126 - "SSE Phase Events Amendment"

Cohesion: 0.67 Nodes (3): Amendment — SSE phase events (issue #151, INV-053..INV-061), Integration notes, New invariants

Community 127 - "Tier 3 Consumer-Defined Agents Amendment"

Cohesion: 0.67 Nodes (3): Amendment — Tier 3 consumer-defined agents (issue #181, Phase 2.0), Invariants (Phase 2.0 scope), Persona-state observability (issue #204)

Knowledge Gaps

  • 522 isolated node(s): allow, Any, Path, Any, Any (+517 more) These have ≤1 connection - possible missing edges or undocumented components.
  • 4 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 LocalAgentEntry connect Local Tier 3 Agent Index Management to TuiPresenterState Management, Parsed CLI Arguments Handling, TUI Tests and Contract Verification, Sync Entry Point and Session Resolution, Tier 3 Agent Lifecycle Client, Ratatoskr Application Argument Handling, Tier 3 Error Handling, Agent Deletion and Authentication, Browser SSE Stream Parsing, Web Server Functional Tests, Tier 3 Agent Patching Tests, Mock Client Factory for Persona State, Turn Cancellation Endpoint, Monkey Patching for Local Agents, Local Agents Path Resolution, Description Synthesis for Picker, Session Creation Endpoint Tests, Turn Submission Endpoint Tests, Server-Side End User ID Handling, Application Creation and Routing, User Agent Versioning, Stream Turn Endpoint Tests, Upstream Turn ID Cancellation? High betweenness centrality (0.055) - this node is a cross-community bridge.
  • Why does SessionApiFailed connect Agent Information Management to TuiPresenterState Management, Parsed CLI Arguments Handling, Tier 3 Agent Patching Tests, Worldtree Session Client, Tier 3 Agent Lifecycle Client, CLI Presenter State Management, Ratatoskr Application Core, Tier 3 Error Handling, Session Creation API, Persona State Retrieval, Agent Deletion and Authentication, Agent Listing Client? High betweenness centrality (0.054) - this node is a cross-community bridge.
  • Why does create_app() connect Turn Cancellation Endpoint to Agent Information Management, Web Server Functional Tests, Stream Turn Endpoint Tests, Upstream Turn ID Cancellation, Session Creation Endpoint Tests, Turn Submission Endpoint Tests, Server-Side End User ID Handling, Application Creation and Routing, User Agent Versioning, Mock Client Factory for Persona State, Web Packaging and CLI Argument Tests, Web Server Endpoint Handling, Monkey Patching for Local Agents, Browser SSE Stream Parsing? High betweenness centrality (0.039) - this node is a cross-community bridge.
  • Are the 51 inferred relationships involving TuiPresenterState (e.g. with ParsedArgs and AgentInfo) actually correct? TuiPresenterState has 51 INFERRED edges - model-reasoned connections that need verification.
  • Are the 75 inferred relationships involving Done (e.g. with AgentInfo and ComposeResult) actually correct? Done has 75 INFERRED edges - model-reasoned connections that need verification.
  • Are the 75 inferred relationships involving Cancelled (e.g. with AgentInfo and ComposeResult) actually correct? Cancelled has 75 INFERRED edges - model-reasoned connections that need verification.
  • Are the 73 inferred relationships involving ParsedArgs (e.g. with AgentInfo and ComposeResult) actually correct? ParsedArgs has 73 INFERRED edges - model-reasoned connections that need verification.