fabro/lib/components
Bryan Helmkamp de60eb900f
refactor: deduplicate cached-run access and event scans
- Add AppState::cached_run with the standard 500/404 mapping and use it
  everywhere handlers read the shared run-projection cache. This also
  normalizes two inconsistencies: graph-source cache errors now map to
  500 (was 502), and a missing projection in PR create/unlink now maps
  to the canonical 404 (was a bespoke 500).
- Extract an EventScan cursor shared by the four run-event scan loops,
  delegate list_events_from to the paginated variant, and stop the
  stage-event scan once its page is full instead of walking the rest of
  the log.
- Hold Arc<RunProjection> in the local projection cache so opening a run
  no longer deep-copies the projection (copy-on-write via Arc::make_mut),
  and drop the now-unreachable shared-cache branch in last_event_seq.
- Trim hot-path clones: run_files serves the projection Arc directly,
  run-state serializes by reference, artifacts only checks existence, and
  the command-log handler opens a reader only for the CAS-blob branch.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 09:25:42 -04:00
..
fabro-acp refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
fabro-agent Merge remote-tracking branch 'origin/main' into fix/cancellation-interrupt-lifecycle 2026-07-23 20:55:25 -04:00
fabro-automation refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
fabro-checkpoint refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
fabro-dump refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
fabro-environment refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
fabro-github refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
fabro-graphviz refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
fabro-hooks refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
fabro-install refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
fabro-interview refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
fabro-llm Merge origin/main (three-layer crate layout) into fix/openrouter-anthropic-prompt-caching 2026-07-23 19:30:20 -04:00
fabro-manifest refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
fabro-mcp refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
fabro-mcp-store refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
fabro-sandbox refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
fabro-slack refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
fabro-store refactor: deduplicate cached-run access and event scans 2026-07-24 09:25:42 -04:00
fabro-tool refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
fabro-tracker refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
fabro-validate refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
fabro-variable refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
fabro-workflow Merge remote-tracking branch 'origin/main' into fix/cancellation-interrupt-lifecycle 2026-07-23 20:55:25 -04:00