Add the catalog index, and package a real prompt collection
CANP-WP-0004. The operator asked canned-prompts to build a database of versioned prompts recording where each came from and when — the first step toward a platform for collaborative prompting. The format had nowhere to put that. `provenance` records who wrote a prompt and where the idea came from; nothing recorded how a copy arrived in a particular store. Section 20.3 now specifies an `index.yaml` as store metadata rather than package data: how a copy arrived differs for every consumer, and recording an arrival must never rewrite the package that arrived. `add`, `install` and `publish` record registry, id, version, name, source, method, first-inclusion date, and the package's declared author, source and licence — the last three copied so a listing is readable without opening every package. A new `index` verb lists it. `included_at` is never overwritten; a re-run updates `last_seen_at`, because when a package first entered a collection is a fact about history rather than about the last command run. Tests 84 -> 90. Also records two findings from actually using the format: CANP-WP-0004-T03 — inclusion has no deduplication, so a diamond dependency renders shared content once per path. Found by composing a real collection. Not fixed here: deduplicating means choosing which occurrence survives and deciding what happens when two paths resolve different versions, which is resolver behaviour that section 10.4 deliberately avoids. Handed to CANP-WP-0005 with a leaning: document it, warn at validation time, do not deduplicate. The add_ons workaround in practice/pqrst-estimate is evidence about section 23's deferred "richer template syntax" — an optional appendix has to be an input with an empty default, because CPF has no conditionals. 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
This commit is contained in:
parent
f55ef13c75
commit
b3280df742
7 changed files with 386 additions and 1 deletions
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
This is intentionally a **small reference implementation**, not the intended final architecture.
|
||||
|
||||
It demonstrates eight verbs:
|
||||
It demonstrates nine verbs:
|
||||
|
||||
```text
|
||||
add PATH
|
||||
|
|
@ -11,6 +11,7 @@ show ID
|
|||
resolve ID --set key=value
|
||||
render ID --set key=value
|
||||
eval ID
|
||||
index [ID]
|
||||
install ID [--version VERSION]
|
||||
publish PATH
|
||||
```
|
||||
|
|
@ -87,6 +88,10 @@ rather than resolved by guessing.
|
|||
- `add` and `install` name declared prompt dependencies the catalog cannot
|
||||
satisfy. They do not fetch them — resolution is the consumer's job (§ 10) —
|
||||
but a package that looks installed and cannot render should say so.
|
||||
- `add`, `install` and `publish` record an entry in the store's `index.yaml`:
|
||||
source, method, first-inclusion date, and the package's declared author,
|
||||
source and licence. `index` lists it. Re-adding keeps the original
|
||||
`included_at` and updates `last_seen_at`.
|
||||
- An optional `registry.yaml` names a registry and records namespace claims.
|
||||
`publish` warns when a namespace is declared `closed` — it cannot
|
||||
authenticate a publisher, and says so rather than implying it checked.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue