Files
ratatoskr/graphify-out/GRAPH_REPORT.md
T

52 KiB

Graph Report - ratatoskr (2026-06-15)

Corpus Check

  • 61 files · ~157,407 words
  • Verdict: corpus is large enough that graph structure adds value.

Summary

  • 2045 nodes · 4675 edges · 152 communities (124 shown, 28 thin omitted)
  • Extraction: 66% EXTRACTED · 34% INFERRED · 0% AMBIGUOUS · INFERRED: 1582 edges (avg confidence: 0.52)
  • Token cost: 0 input · 0 output

Graph Freshness

  • Built from commit: 335c8358
  • 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)

  • test_build_app_from_env_builds_app_with_routes() --calls--> build_app_from_env() [INFERRED] tests/test_provider_serve.py → src/ratatoskr/provider/serve.py
  • test_build_app_from_env_requires_heimdall_key() --calls--> build_app_from_env() [INFERRED] tests/test_provider_serve.py → src/ratatoskr/provider/serve.py
  • test_get_absent_returns_none() --calls--> open_affect_store() [INFERRED] tests/test_provider_affect.py → src/ratatoskr/provider/affect_store.py
  • test_open_advertises_capability_and_schema() --calls--> open_affect_store() [INFERRED] tests/test_provider_affect.py → src/ratatoskr/provider/affect_store.py
  • test_reopen_existing_file_is_idempotent() --calls--> open_affect_store() [INFERRED] tests/test_provider_affect.py → src/ratatoskr/provider/affect_store.py

Import Cycles

  • None detected.

Communities (152 total, 28 thin omitted)

Community 0 - "TuiPresenterState Management"

Cohesion: 0.05 Nodes (40): 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, done_label_styled_success [v0.9.0]: [done] label mounts as Static carryi (+32 more)

Community 1 - "EventSource SSE Consumer"

Cohesion: 0.08 Nodes (14): Sync entry point — delegates to the async resolve-then-run flow. Per issue, run_tui(), 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, alt_screen_never_opens_on_resolve_error [trace]: 404 → run_tui=12; run_async unh, session_api_failed_on_resolve [error]: --new + 500 → [session_api_failed] stderr, network_error_on_resolve [error]: --new + ConnectError → [network_error] stderr. (+6 more)

Community 2 - "Parsed CLI Arguments Handling"

Cohesion: 0.14 Nodes (73): NamedTuple, ParsedArgs, Resolved CLI invocation. Post-validation: exactly one of session_id / new is set, AgentInfo, Worldtree agent envelope from GET /agents (issue #8). INV-005: required fie, AffectUpdate, AwaitingLlmFirstToken, Cancelled (+65 more)

Community 3 - "Agent Information Management"

Cohesion: 0.08 Nodes (86): AgentInfo, ComposeResult, EventSource, Exception, FileResponse, _ArgparseError, _AuthError, Raised when no API key is resolvable; mapped to exit code 11 by main(). (+78 more)

Community 4 - "TUI Tests and Contract Verification"

Cohesion: 0.13 Nodes (17): _args_existing(), Type content into the input and submit; wait for worker to finish., happy_text_done_no_double_print [happy,tracer, v0.9.0]: Text("hello") mo, raw_flag_skips_markdown_render [trace, v0.9.0]: With --raw, the response, error_terminal_returns_to_idle [happy]: …, cancelled_terminal_returns_to_idle [happy]: …, active_turn_id_set_on_first_event [trace]: …, connection_dropped_returns_to_idle [error]: … (+9 more)

Community 5 - "CLI Arguments Parsing Contract"

Cohesion: 0.04 Nodes (26): main(), _parse_args(), argparse + env-fallback + xor-validation per the contract., Sync entry point. Maps UsageError/_AuthError to exit codes BEFORE the event loop, 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., server_default: no --server, no WORLDTREE_API_URL → http://localhost:8000., server_env_fallback: WORLDTREE_API_URL fills in when --server omitted. (+18 more)

Community 6 - "Sync Entry Point and Session Resolution"

Cohesion: 0.17 Nodes (7): POST a message and yield typed Events. See contract FN stream_turn., stream_turn(), session_not_found: 404 -> SseConnectFailed(status=404)., malformed_id_no_seq: id 42 (missing :seq) -> MalformedSseId; no event yielded., malformed_id_alpha: id foo:bar -> MalformedSseId., INV-001: empty stream (no events at all) -> SseConnectionDropped(None)., ERROR_ROUTING: SseConnectFailed.body is truncated to <= 1024 bytes.

Community 7 - "Stream Turn Rendering and Cancellation"

Cohesion: 0.05 Nodes (53): _amain(), Drive stream_turn, render events, race against sigint_event for mid-stream cance, Async orchestrator: create-session (if --new) → SIGINT install → _run_turn → cle, Raised on argument violations; mapped to exit code 10 by main()., _run_turn(), UsageError, SSE event text_boundary: speakable breakpoint after a text event., TextBoundary (+45 more)

Community 8 - "Worldtree Session Client"

Cohesion: 0.04 Nodes (47): AgentNotAvailable, AuthScopeDenied, get_persona_state(), InvalidCursor, list_sessions(), PersonaNotConfigured, Worldtree Conversation API session-lifecycle client. Implements docs/contracts/, Raised on HTTP 404 agent_not_available from GET persona_state. The agent_ (+39 more)

Community 9 - "Tier 3 Agent Lifecycle Client"

Cohesion: 0.08 Nodes (19): _args_new(), Construct RatatoskrApp with pre-resolved state (issue #6 lifecycle). Produc, happy_new_session_mount [happy,tracer]: identity populated from pre-resolved sta, footer_identity_visible_first_frame [trace]: identity widget rendered first fram, main_row_is_horizontal [tracer]: compose() yields Horizontal#main-row., left_column_content_only [v0.9.0]: left column = transcript-scroll Verti, right_column_has_tabbed_content_with_tools_tab: #side-panes + TabPane#tools-tab., tools_log_inside_tools_tab: tools-transcript RichLog is a descendant of tools-ta (+11 more)

Community 10 - "CLI Presenter State Management"

Cohesion: 0.11 Nodes (36): Any, Connection, build_affect_provider_app(), _ctx_actor(), open_affect_store(), RatatoskrAffectStore, SQLite-backed, conduit-opaque affect store (Bifrost affect plane, v1). Contract, Read-back of the stored snapshot (tests / future rehydrate-seed). (+28 more)

Community 11 - "Ratatoskr Application Argument Handling"

Cohesion: 0.07 Nodes (26): CliPresenterState, _format_duration_ms(), Auto-scale duration formatting per issue #12 INV-006. Locale-blind., Per-turn presenter state for --send mode (issue #12). See `docs/contracts, Render one Worldtree SSE event with editorial hierarchy + coalescing., _make_done(), Tests for the new CliPresenterState — per issue #12 contract., thinking_coalesce_single_run [happy,tracer]: Thinking("hello") + Thinkin (+18 more)

Community 12 - "Stream Turn Event Processing"

Cohesion: 0.14 Nodes (8): happy_one_text_done: text then done; same turn_id; iter ends after done., error_terminal: text then error; iteration ends; error_code populated., connection_drop: RemoteProtocolError after one text -> SseConnectionDropped((42,, no_text_aggregation: consumer yields each text event separately; no concat., Compose one SSE event in wire format. Trailing blank line per spec., current_status_parsed_with_snapshot [tracer]: status=current carries the, scheduled_status_parsed_no_snapshot [trace]: status=scheduled carries no, _sse_chunk()

Community 13 - "Local Tier 3 Agent Index Management"

Cohesion: 0.07 Nodes (43): LocalAgentEntry, Namespace, add_local_agent(), load_local_agents(), _local_agents_path(), LocalAgentEntry, make_description(), Local index of tier-3 agents defined via python -m ratatoskr.tier3. Workaroun (+35 more)

Community 14 - "Ratatoskr Application Core"

Cohesion: 0.07 Nodes (19): _cancel_via_sse(), Populate identity widget from pre-resolved state; set idle hint. Per is, Hydrate persona-header + Persona pane via GET /agents/{id}/persona_state., 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, Set self.state with debug-pane audit log. Every state machine transitio (+11 more)

Community 15 - "Async Main Orchestrator"

Cohesion: 0.17 Nodes (7): 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]: …, submit_during_cancelling_shows_busy_notice [adversarial]: …, sse_connect_failed_returns_to_idle [error]: …, Patch RichLog.write AND VerticalScroll.mount to record every renderable or m, _spy_writes()

Community 16 - "Contract Parsing and Function Extraction"

Cohesion: 0.10 Nodes (34): Contract, ErrorSpec, _extract_function_blocks(), FunctionBlock, _is_issue_scoped(), main(), _parse_body_sections(), parse_contract() (+26 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.25 Nodes (5): _args_new_no_agent(), ParsedArgs for bare --new (no --agent) — TUI-mode picker entry., picker_happy_path [happy,tracer]: agents fetched → picker exits with id → create, picker_esc_clean_exit: picker returns None → exit 0; no create_session; no main, list_agents 500 → stderr [session_api_failed]; exit 20; picker NOT opened.

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 23 - "TUI Shell Implementation"

Cohesion: 0.15 Nodes (12): _format_usage(), Natural-language usage formatting per issue #12 INV-007. arrow="->" for C, _audit_line(), _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. (+4 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.05 Nodes (22): create_session(), list_agents(), POST /sessions to create a new session. See contract FN create_session. Per, GET /agents — list available agents. See contract FN list_agents (issue #8)., AsyncClient, 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. (+14 more)

Community 26 - "Web Server Endpoint Handling"

Cohesion: 0.09 Nodes (33): JSONResponse, Request, 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, stream_turn_endpoint INV-005 — browser disconnect mid-stream triggers upstre, TestDisconnectCancel, TestUpstreamTurnIdCancel (+25 more)

Community 27 - "SSE ID Parsing"

Cohesion: 0.19 Nodes (17): _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(), test_awaiting_llm_first_token_matches_fixture(), test_cancelled_matches_fixture(), test_done_matches_fixture() (+9 more)

Community 29 - "Agent Deletion and Authentication"

Cohesion: 0.50 Nodes (3): lifespan_shutdown FN — INV-006: drain turn_registry within 5s budget., happy [tracer]: 2 in-flight turns + shutdown → upstream cancels called., TestLifespanShutdown

Community 31 - "Browser SSE Stream Parsing"

Cohesion: 0.14 Nodes (16): _parse_browser_sse(), AsyncByteStream, Response, 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, 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 (+8 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.50 Nodes (3): root_endpoint FN + /static mount — index.html + static asset serving., happy [tracer]: GET / → 200, content-type text/html, body contains '<html'., TestStaticServing

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.22 Nodes (8): Concurrency, Constraints, Context, Data flow, Division of labor (library vs store), Integration points, Invariants, Out of scope (deferred — do NOT flag as drift)

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 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.20 Nodes (6): _cancel_and_log(), Ratatoskr CLI — non-interactive --send stdout presenter. Implements docs/cont, Spawn-and-forget cancel that never raises (INV-009)., 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.22 Nodes (8): affect_update, data, event_type, _contract_version, status, _provenance, text, 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 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.15 Nodes (14): awaiting_llm_first_token, data, event_type, cancelled, data, event_type, elapsed_ms_since_building_prompt, partial_message_id (+6 more)

Community 72 - "Error Code and Worker Phase Handling"

Cohesion: 0.40 Nodes (5): error_code, message, error, data, event_type

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 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.50 Nodes (3): 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 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, data, thinking, data, event_type

Community 110 - "Cancelled Message Handling"

Cohesion: 0.22 Nodes (8): Concurrency, Constraints, Context, Data flow, Division of labor (library vs store), Integration points, Invariants, Out of scope (deferred — do NOT flag as drift)

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)

Community 133 - "Community 133"

Cohesion: 0.14 Nodes (9): _format_persona_detail(), _format_persona_header(), Update sticky header + Persona pane from a fresh snapshot. Called on bo, One-line persona summary for the sticky header widget. Shape: `agent_id · d, Multi-line persona detail for the Persona TabPane. Renders the full v0.28.0, header_compact_summary: agent_id · dominant_emotion · pad(P,A,D) · N emotions., header_singular_emotion: single emotion → '1 emotion active' (no 's')., header_no_emotions_drops_count: empty emotions list → no count suffix. (+1 more)

Community 135 - "Community 135"

Cohesion: 0.28 Nodes (7): build_app_from_env(), main(), Runnable entrypoint: serve the affect provider as an ASGI app. For the live neg, Build the affect ASGI app from environment config (testable seam)., Tests for the affect-provider serve entrypoint (ratatoskr.provider.serve). Only, test_build_app_from_env_builds_app_with_routes(), test_build_app_from_env_requires_heimdall_key()

Community 143 - "Community 143"

Cohesion: 0.04 Nodes (66): Raised on unexpected response status from /sessions endpoints. body is tr, SessionApiFailed, define_agent(), delete_agent(), _extract_error_code(), _extract_error_field(), _parse_tier3_agent_info(), patch_agent() (+58 more)

Knowledge Gaps

  • 538 isolated node(s): Context, Data flow, Invariants, Out of scope, Constraints (+533 more) These have ≤1 connection - possible missing edges or undocumented components.
  • 28 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, Web Server Functional Tests, Stream Turn Endpoint Tests, Community 143, Session Creation Endpoint Tests, Server-Side End User ID Handling, Application Creation and Routing, Turn Submission Endpoint Tests, User Agent Versioning, Mock Client Factory for Persona State, Turn Cancellation Endpoint, Web Server Endpoint Handling, Monkey Patching for Local Agents, Agent Deletion and Authentication, Browser SSE Stream Parsing? High betweenness centrality (0.081) - this node is a cross-community bridge.
  • Why does SessionApiFailed connect Community 143 to TuiPresenterState Management, Parsed CLI Arguments Handling, Agent Information Management, Stream Turn Rendering and Cancellation, Worldtree Session Client, Ratatoskr Application Argument Handling, Local Tier 3 Agent Index Management, Session Creation API, Web Server Endpoint Handling? High betweenness centrality (0.044) - 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, 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, Agent Deletion and Authentication, Browser SSE Stream Parsing? High betweenness centrality (0.044) - 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.