T01 had already delivered half of composition without naming it: a derived default binds an input to a prompt dependency, which is transclusion — run package B, use its output. What was missing was the deterministic half. `include` inlines another package's rendered template as text. No model is involved, so the reference CLI can actually perform it, and a shared preamble, rubric or style block becomes a versioned package instead of copied text. This is the concrete way to honor INTENT principle 9 without any runtime. `derive` stays as it was. Both are input defaults, so composition reuses the resolution machinery rather than adding a second one. No template inheritance. Four of this repo's own documents argue against it: INTENT principle 3 (hidden context defeats reuse), section 19's "make package contents visible before execution", section 17's requirement that behavior changes produce a new version, and the non-goal on range resolution. Version selectors: an exact pin is the expected form, with `any`, `newest` and `>= X.Y.Z` as explicit opt-ins so looseness is written rather than implied by absence. Selectors are evaluated per dependency against what is available — no solver, no cross-dependency constraint satisfaction — which is what keeps them outside the range-resolution non-goal, and the spec says so. Also defines `type` (template | fragment), which appeared once in the section 4 manifest surface and was specified nowhere. Spec: 3.2 (type), 5.1 (inclusion resolution rule, renumbered), 6.1 (included default), 10.1 and 10.2 (new), 18 (rules 14-16), 21. Reference CLI: validate_version_selector, select_version, prompt_dependencies replacing prompt_dependency_ids, check_composition_reference, CatalogComposer with cycle detection, and resolve_inputs gaining composer= and inherited=. Tests 21 -> 42. Examples: house-style is a real fragment package; pqrst-estimate composes it and is bumped 0.1.0 -> 0.2.0 per section 17. Fixes an ordering bug found while testing: inputs resolved before parameters, so an included package could not see the including package's parameters and silently fell back to its own defaults — the fragment rendered tone=neutral where the including package said blunt. Parameters now resolve first; the report still lists inputs first. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Bjefh8NUiEiahN4JLwoSKM Assistant: claude-code Assistant-Model: opus Assistant-Process: 388925@bnt-lap001 Assistant-Session: 3507023f-e0fd-4a1e-9d90-a0d4217d1502
1.6 KiB
1.6 KiB
{{ house_style }}
Review the coding session described below and produce a PQRST Estimate of where effort was spent.
Use these categories:
- P — Main problem: implementing or directly solving the requested deliverable.
- Q — Quality and tests: tests, verification, edge cases, maintainability, error handling, cleanup, and production-quality hardening.
- R — Research and context clarification: reading the codebase or docs, tracing behavior, investigating unknowns, reconciling requirements, and establishing missing context.
- S — Security and credentials: authentication, authorization, secrets, credentials, trust boundaries, security validation, and security-specific handling.
- T — Task organization: planning, decomposition, todo management, sequencing, coordination, and overhead required to keep the work organized.
Treat this as a post-session audit, not a planning estimate. Estimate relative cognitive/work effort rather than tokens or wall-clock time. The five percentages must sum to exactly 100%.
Where activities overlap, assign effort according to the primary purpose of the activity. Do not inflate a category merely because it was important; estimate how much effort it actually consumed.
Session material:
{{ session_summary }}
Return:
P: NN%
Q: NN%
R: NN%
S: NN%
T: NN%
Total: 100%
Then provide:
- Primary effort driver — one sentence naming what dominated the session.
- Interpretation — what the distribution says about the session's shape.
- Signal — one notable imbalance, if any, that may be worth learning from.
Include rationale: {{ include_rationale }}