Owned, structured view of an assembled system prompt.
full is the exact, byte-identical concatenation produced by the
pre-goal-328 implementation of assemble_system_prompt — every
existing call site (8 production + 5 test sites) can use it via
AssembledPrompt::full / AssembledPrompt::into_full without
changing the assembled string itself (a hard requirement: prefix-cache
stability depends on it, and ordering_project_context_then_base_then_skills_then_subagent
must still pass unchanged).
segments is the per-bucket breakdown the local crate::llm::ContextBreakdown
estimator reads from. Each segment is the exact text that contributes
to its bucket, in the same join order as full.