48 lines
1.6 KiB
Markdown
48 lines
1.6 KiB
Markdown
|
|
---
|
||
|
|
id: CANP-WP-0005
|
||
|
|
type: workplan
|
||
|
|
title: "Document and detect inclusion diamonds"
|
||
|
|
domain: agents
|
||
|
|
repo: canned-prompts
|
||
|
|
status: proposed
|
||
|
|
owner: codex
|
||
|
|
topic_slug: practice
|
||
|
|
created: "2026-09-06"
|
||
|
|
updated: "2026-09-06"
|
||
|
|
---
|
||
|
|
|
||
|
|
# Document and detect inclusion diamonds
|
||
|
|
|
||
|
|
Residual from `CANP-WP-0004` (`origin: residual`, `origin_ref: CANP-WP-0004`).
|
||
|
|
|
||
|
|
## Warn about repeated inclusion
|
||
|
|
|
||
|
|
```task
|
||
|
|
id: CANP-WP-0005-T01
|
||
|
|
status: todo
|
||
|
|
priority: medium
|
||
|
|
```
|
||
|
|
|
||
|
|
CPF inclusion (§ 10.4) does not deduplicate: when one package reaches the same
|
||
|
|
dependency by two paths, the included text renders once per path. This was found
|
||
|
|
by building a real collection — `helix/repo-advance` rendered its conventions
|
||
|
|
block twice — and worked around downstream by factoring the shared routine into
|
||
|
|
its own fragment.
|
||
|
|
|
||
|
|
§ 10.4 says nothing about it, so an author meets the behaviour only by reading
|
||
|
|
the output carefully. That silence is the defect.
|
||
|
|
|
||
|
|
Two questions, and the second depends on the first:
|
||
|
|
|
||
|
|
1. **Document it.** State in § 10.4 that inclusion is textual and repeated,
|
||
|
|
not deduplicated, and give the factoring pattern that avoids a diamond.
|
||
|
|
2. **Detect it.** Decide whether validation should warn when a package reaches
|
||
|
|
the same dependency by more than one path. A warning is cheap and catches the
|
||
|
|
mistake at `add` time. Silently deduplicating is a different proposition
|
||
|
|
entirely — it would mean choosing which occurrence survives, and deciding what
|
||
|
|
happens when two paths resolve *different versions* of the same dependency.
|
||
|
|
That is resolver behaviour, and § 10.4 keeps composition declarative on
|
||
|
|
purpose.
|
||
|
|
|
||
|
|
Leaning: document it now, warn at validation time, and do not deduplicate.
|