CANP-WP-0002 T03: composition by reference, two kinds
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
2026-09-06 01:31:58 +02:00
|
|
|
{{ house_style }}
|
|
|
|
|
|
Register with Custodian State Hub and seed format open-questions workplan
Register canned-prompts under agents / practice (topic
c1d199b6-55ee-4db6-b49e-257a9f0f15ac, workplan prefix CANP-WP) via
`statehub register`, then replace the generated placeholders with
repo-specific facts.
- SCOPE.md: real boundaries drawn from INTENT.md's deliberate boundary,
current state (spec v0.1 + reference CLI, 3/3 tests pass, example
round-trips), and the developer workflow.
- AGENTS.md: drop the unresolved {CREDENTIAL_ROUTING} template token left
by the generator.
- CANP-WP-0001: bootstrap tasks closed.
- CANP-WP-0002: new workplan carrying the five § 23 open questions promoted
from "experience will decide" to "decide for v0.2" — optional-input
defaults (static or derived), registry namespaces/ownership, prompt
composition, canonical eval schemas, typed context/dependency contracts —
plus two reference-implementation conformance defects found in review
(prerelease versions sort as newest; copy_immutable packages the whole
source directory).
Also lands the previously untracked seed: INTENT.md, the CPF v0.1 spec,
the reference CLI, and examples/pqrst-estimate.
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
2026-09-06 00:45:23 +02:00
|
|
|
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:
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
P: NN%
|
|
|
|
|
Q: NN%
|
|
|
|
|
R: NN%
|
|
|
|
|
S: NN%
|
|
|
|
|
T: NN%
|
|
|
|
|
Total: 100%
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Then provide:
|
|
|
|
|
|
|
|
|
|
1. **Primary effort driver** — one sentence naming what dominated the session.
|
|
|
|
|
2. **Interpretation** — what the distribution says about the session's shape.
|
|
|
|
|
3. **Signal** — one notable imbalance, if any, that may be worth learning from.
|
|
|
|
|
|
|
|
|
|
Include rationale: {{ include_rationale }}
|