fabro/lib/components
Bryan Helmkamp ddcf86bcfb
fix(workflow): materialize only prompt values the selected fidelity renders
Prompt-value demotion previously demoted every prior outcome value and
visible context value wholesale, before the preamble builders decided
what the selected fidelity renders. That materialized blobs and sandbox
files no generated prompt referenced — e.g. a compact prompt created a
blob for a prior LLM response even though compact stage details never
include response.<node_id>.

Make the materialization set fidelity-aware:

- preamble::rendered_value_selection computes, per fidelity, exactly
  which context keys and (stage, key) outcome values the builders
  render, sharing the recency-window logic with the builders.
- demote_large_values_for_prompt takes a PromptValueSelection and
  demotes only the values it names.
- The lifecycle unions the node's selection with each parallel branch's
  effective fidelity selection, and skips demotion when the union is
  empty.

Durable context and node outcomes are unchanged: response.<node_id>
stays the exact model response and output.<node_id> the validated
structured value. A drift-guard test asserts, at every fidelity, that
each demoted path is referenced by the built preamble and no unselected
large value leaks inline.

Closes #800

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011bs8C1fjVCu8a8qDvFskYV
2026-08-25 07:54:14 -04:00
..
fabro-acp refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
fabro-agent Simplify bounded tool output capture 2026-08-24 13:56:16 -04:00
fabro-automation Merge main into feat/refresh-tokens-sqlite 2026-08-21 13:16:14 -04:00
fabro-checkpoint refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
fabro-dump Add a shared RunSpec test fixture and adopt it 2026-08-19 16:50:37 -04:00
fabro-environment Add version-backed run intent creation 2026-08-24 11:55:43 -04:00
fabro-github refactor(github): simplify repository access checks 2026-08-21 17:12:27 -04:00
fabro-graphviz Merge pull request #686 from fabro-sh/fix/space-separated-node-classes 2026-07-29 22:31:48 -04:00
fabro-hooks fix: address env interpolation review findings 2026-07-28 17:30:50 -04:00
fabro-install refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
fabro-interview refactor: remove duplicated review target rendering and validation 2026-07-28 15:14:23 -04:00
fabro-llm Simplify bounded tool output capture 2026-08-24 13:56:16 -04:00
fabro-manifest Test graph goal filenames with at prefix 2026-08-13 15:52:54 -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 Merge remote-tracking branch 'origin/main' into feature/bounded-agent-tool-output 2026-08-24 14:08:04 -04:00
fabro-slack fix: stop a pipe in a link label from splitting Slack link markup 2026-07-28 15:31:20 -04:00
fabro-store Merge pull request #783 from fabro-sh/codex/sqlite-blob-startup-activation 2026-08-24 16:32:59 -04:00
fabro-tool Move input scalar coercion to shared types 2026-08-03 19:17:03 -04:00
fabro-tracker refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
fabro-validate Merge remote-tracking branch 'origin/main' into feat/command-stdin-source 2026-07-29 11:37:27 -04:00
fabro-variable refactor: organize crates into three layers 2026-07-23 17:59:34 -04:00
fabro-workflow fix(workflow): materialize only prompt values the selected fidelity renders 2026-08-25 07:54:14 -04:00
fabro-workflow-version Simplify blob activation and share the test store fixture 2026-08-24 14:02:35 -04:00