create-quiver 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/ci.yml +7 -30
- package/AGENTS.md.template +41 -0
- package/CHANGELOG.md +5 -0
- package/README.md +37 -13
- package/README_FOR_AI.md +27 -7
- package/ROADMAP.md +78 -0
- package/docs/AI_CONTEXT.md.template +19 -26
- package/docs/AI_ONBOARDING_PROMPT.md.template +12 -0
- package/docs/CONTEXTO.md.template +4 -17
- package/docs/DECISIONS.md.template +18 -0
- package/docs/DEEP.md.template +34 -0
- package/docs/DOCUMENTATION_GUIDE.md.template +9 -7
- package/docs/GITFLOW_PR_GUIDE.md.template +7 -0
- package/docs/INDEX.md.template +9 -0
- package/docs/QUICK.md.template +27 -0
- package/docs/STANDARD.md.template +49 -0
- package/docs/STATUS.md.template +2 -2
- package/docs/SUPPORT_MATRIX.md.template +7 -4
- package/docs/TESTING_GUIDE_FOR_AI.md.template +4 -3
- package/docs/TROUBLESHOOTING.md.template +14 -0
- package/docs/WORKFLOW.md.template +17 -4
- package/package.json +2 -1
- package/package.template.json +11 -0
- package/scripts/cleanup-slice.sh +2 -172
- package/scripts/init-docs.sh +97 -24
- package/scripts/package-quiver.sh +5 -0
- package/scripts/start-slice.sh +3 -425
- package/specs/[project-name]/EVIDENCE_REPORT.md.template +3 -1
- package/specs/[project-name]/slices/slice-template/slice.json +2 -2
- package/specs/quiver-v12-cross-platform-native-runtime/EVIDENCE_REPORT.md +30 -0
- package/specs/quiver-v12-cross-platform-native-runtime/SPEC.md +86 -0
- package/specs/quiver-v12-cross-platform-native-runtime/STATUS.md +29 -0
- package/specs/quiver-v12-cross-platform-native-runtime/slices/slice-01-cross-platform-support-contract/slice.json +69 -0
- package/specs/quiver-v12-cross-platform-native-runtime/slices/slice-02-node-init-docs-runtime/slice.json +76 -0
- package/specs/quiver-v12-cross-platform-native-runtime/slices/slice-03-node-migrate-analyze-doctor-flow/slice.json +74 -0
- package/specs/quiver-v12-cross-platform-native-runtime/slices/slice-04-node-slice-lifecycle-commands/slice.json +81 -0
- package/specs/quiver-v12-cross-platform-native-runtime/slices/slice-05-generated-project-scripts-and-migration/slice.json +78 -0
- package/specs/quiver-v12-cross-platform-native-runtime/slices/slice-06-cross-platform-ci-release-readiness/slice.json +74 -0
- package/specs/quiver-v13-token-efficient-ai-context/EVIDENCE_REPORT.md +28 -0
- package/specs/quiver-v13-token-efficient-ai-context/SPEC.md +68 -0
- package/specs/quiver-v13-token-efficient-ai-context/STATUS.md +26 -0
- package/specs/quiver-v13-token-efficient-ai-context/slices/slice-01-token-efficient-ai-modes-guidance/slice.json +65 -0
- package/specs/quiver-v13-token-efficient-ai-context/slices/slice-02-decision-log-context-checkpoint/slice.json +64 -0
- package/specs/quiver-v13-token-efficient-ai-context/slices/slice-03-project-map-reading-order/slice.json +66 -0
- package/specs/quiver-v14-tiered-context-pack/EVIDENCE_REPORT.md +42 -0
- package/specs/quiver-v14-tiered-context-pack/SPEC.md +116 -0
- package/specs/quiver-v14-tiered-context-pack/STATUS.md +35 -0
- package/specs/quiver-v14-tiered-context-pack/slices/slice-01-tiered-context-pack/slice.json +77 -0
- package/specs/quiver-v14-tiered-context-pack/slices/slice-02-agents-md-router/slice.json +74 -0
- package/specs/quiver-v14-tiered-context-pack/slices/slice-03-active-slice-lifecycle/slice.json +74 -0
- package/specs/quiver-v14-tiered-context-pack/slices/slice-04-dedup-frontmatter/slice.json +83 -0
- package/specs/quiver-v14-tiered-context-pack/slices/slice-05-doctor-smokes-tiered-pack/slice.json +84 -0
- package/src/create-quiver/index.js +299 -123
- package/src/create-quiver/lib/analyze.js +9 -0
- package/src/create-quiver/lib/doctor.js +212 -0
- package/src/create-quiver/lib/git.js +154 -0
- package/src/create-quiver/lib/init-docs.js +616 -0
- package/src/create-quiver/lib/lifecycle.js +478 -0
- package/src/create-quiver/lib/paths.js +19 -0
- package/src/create-quiver/lib/readiness.js +300 -0
- package/src/create-quiver/lib/scope.js +5 -0
- package/src/create-quiver/lib/slice.js +194 -0
- package/src/create-quiver/lib/state.js +89 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slice_id": "slice-03-project-map-reading-order",
|
|
3
|
+
"ticket": "QUIVER-03",
|
|
4
|
+
"type": "feature",
|
|
5
|
+
"title": "Project Map Reading Order",
|
|
6
|
+
"objective": "Improve `create-quiver analyze` so `docs/PROJECT_MAP.md` becomes a practical first-read index for AI agents.",
|
|
7
|
+
"description": "The highest token savings come from a better project map. This slice enriches analyzer output with a suggested reading order, entry points, primary config files, likely test commands, high-signal files, and paths that should not be read first.",
|
|
8
|
+
"git": {
|
|
9
|
+
"branch_type": "feature",
|
|
10
|
+
"base_branch": "main",
|
|
11
|
+
"branch_slug": "project-map-reading-order",
|
|
12
|
+
"branch_name": "feature/QUIVER-03-project-map-reading-order"
|
|
13
|
+
},
|
|
14
|
+
"must": [
|
|
15
|
+
"Add `Suggested Reading Order` to generated `docs/PROJECT_MAP.md`",
|
|
16
|
+
"Add `Entry Points` to generated `docs/PROJECT_MAP.md`",
|
|
17
|
+
"Add `Primary Config Files` to generated `docs/PROJECT_MAP.md`",
|
|
18
|
+
"Add `Likely Test Commands` to generated `docs/PROJECT_MAP.md`",
|
|
19
|
+
"Add `High-Signal Files` and `Do Not Read First` sections",
|
|
20
|
+
"Keep analyzer secret-safe and avoid reading secret file contents"
|
|
21
|
+
],
|
|
22
|
+
"not_included": [
|
|
23
|
+
"Embeddings",
|
|
24
|
+
"Vector databases",
|
|
25
|
+
"Multi-language AST call graph",
|
|
26
|
+
"Provider-specific token accounting"
|
|
27
|
+
],
|
|
28
|
+
"acceptance": [
|
|
29
|
+
"`create-quiver analyze` creates `PROJECT_MAP.md` with all new sections",
|
|
30
|
+
"`PROJECT_SCAN.json` remains parseable and backward-compatible for existing fields",
|
|
31
|
+
"The analyzer continues to skip secrets, dependency folders, build outputs, and generated heavy paths",
|
|
32
|
+
"Smokes validate the new map sections"
|
|
33
|
+
],
|
|
34
|
+
"files": [
|
|
35
|
+
"src/create-quiver/lib/analyze.js",
|
|
36
|
+
"scripts/ci/smoke-create-quiver.sh",
|
|
37
|
+
"scripts/ci/smoke-cross-platform.js",
|
|
38
|
+
"specs/quiver-v13-token-efficient-ai-context/SPEC.md",
|
|
39
|
+
"specs/quiver-v13-token-efficient-ai-context/STATUS.md",
|
|
40
|
+
"specs/quiver-v13-token-efficient-ai-context/EVIDENCE_REPORT.md",
|
|
41
|
+
"specs/quiver-v13-token-efficient-ai-context/slices/slice-03-project-map-reading-order/slice.json"
|
|
42
|
+
],
|
|
43
|
+
"tests": [
|
|
44
|
+
"node -c src/create-quiver/lib/analyze.js",
|
|
45
|
+
"bash scripts/ci/smoke-create-quiver.sh",
|
|
46
|
+
"node scripts/ci/smoke-cross-platform.js",
|
|
47
|
+
"git diff --check"
|
|
48
|
+
],
|
|
49
|
+
"documentation": [
|
|
50
|
+
"docs/PROJECT_MAP.md generated output contract"
|
|
51
|
+
],
|
|
52
|
+
"dependencies": [
|
|
53
|
+
"slice-02-decision-log-context-checkpoint"
|
|
54
|
+
],
|
|
55
|
+
"assumptions": [
|
|
56
|
+
"Better map quality saves more tokens than adding retrieval infrastructure at this stage",
|
|
57
|
+
"Heuristics are acceptable as long as they are conservative and transparent"
|
|
58
|
+
],
|
|
59
|
+
"estimated_hours": 5,
|
|
60
|
+
"actual_hours": 5,
|
|
61
|
+
"status": "completed",
|
|
62
|
+
"blocked_reason": null,
|
|
63
|
+
"ready_at": null,
|
|
64
|
+
"started_at": null,
|
|
65
|
+
"completed_at": "2026-04-23"
|
|
66
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Quiver v0.14 Evidence Report
|
|
2
|
+
|
|
3
|
+
**Spec:** quiver-v14-tiered-context-pack
|
|
4
|
+
**Date:** 2026-04-23
|
|
5
|
+
**Status:** Completed
|
|
6
|
+
|
|
7
|
+
## Summary
|
|
8
|
+
|
|
9
|
+
This spec materializes the v13 token-efficient modes into concrete, stratified artifacts. A freshly generated project gets a three-tier context pack (QUICK, STANDARD, DEEP), a single `AGENTS.md` router, an auto-generated `ACTIVE_SLICE.md` during slice work, structured YAML front-matter on every context file, and deduplicated stack information so only `PROJECT_MAP.md` owns that data.
|
|
10
|
+
|
|
11
|
+
The primary measurable outcome is a reduction in default token loadout for execution-mode tasks from roughly 8k tokens (reading the current flat pack) to under 1k tokens (reading only QUICK + ACTIVE_SLICE).
|
|
12
|
+
|
|
13
|
+
## Slice Evidence
|
|
14
|
+
|
|
15
|
+
| Slice | Status | Evidence |
|
|
16
|
+
|-------|--------|----------|
|
|
17
|
+
| slice-01 | Completed | `docs/QUICK.md.template`, `docs/STANDARD.md.template`, and `docs/DEEP.md.template` now exist; init and migrate render them into `docs/ai/QUICK.md`, `docs/ai/STANDARD.md`, and `docs/ai/DEEP.md`; `docs/INDEX.md.template` links to the new tiers |
|
|
18
|
+
| slice-02 | Completed | Root `AGENTS.md.template` now exists; init and migrate render `AGENTS.md` at the project root and preserve an existing file on rerun; generated README and `README_FOR_AI.md` now point agents to `AGENTS.md` first; doctor and smokes validate the new router |
|
|
19
|
+
| slice-03 | Completed | `docs/ai/ACTIVE_SLICE.md` is created by `start-slice`, rewritten when a stale active brief exists, and removed by `cleanup-slice`; `WORKTREE_CONTEXT.md` now points to the active brief path; legacy Bash wrappers delegate to the Node CLI |
|
|
20
|
+
| slice-04 | Completed | Front-matter helper added in `src/create-quiver/lib/init-docs.js`; generated context docs now get YAML front matter idempotently; `docs/AI_CONTEXT.md`, `docs/CONTEXTO.md`, `docs/STATUS.md`, `docs/WORKFLOW.md`, `docs/AI_ONBOARDING_PROMPT.md`, `docs/ai/QUICK.md`, `docs/ai/STANDARD.md`, `docs/ai/DEEP.md`, `docs/ai/LESSONS.md`, and `docs/ai/PRINCIPLES.md` are validated; `docs/PROJECT_MAP.md` is now the only generated file carrying the package manager/command surface |
|
|
21
|
+
| slice-05 | Completed | `src/create-quiver/lib/doctor.js` now warns on oversize QUICK/STANDARD files, missing AGENTS sections, missing front matter, orphaned ACTIVE_SLICE briefs, and duplicated stack info; `scripts/ci/smoke-tiered-pack.sh` validates the tiered pack, lifecycle, and warning scenarios; CI matrix now runs the new smoke on macOS, Linux, and Windows; `specs/[project-name]/EVIDENCE_REPORT.md.template` now asks for summarized evidence |
|
|
22
|
+
|
|
23
|
+
## Required Final Evidence
|
|
24
|
+
|
|
25
|
+
- A freshly generated project contains `docs/ai/QUICK.md`, `docs/ai/STANDARD.md`, `docs/ai/DEEP.md`, and root `AGENTS.md`
|
|
26
|
+
- `docs/ai/QUICK.md` is ≤ 50 lines, `docs/ai/STANDARD.md` is ≤ 300 lines
|
|
27
|
+
- `AGENTS.md` declares: reading budget per task mode, output policy forbidding restating and summarizing, and routing rules pointing to QUICK first
|
|
28
|
+
- Running `start-slice <slice.json>` creates `docs/ai/ACTIVE_SLICE.md` with objective, allowed_files, tests, DoD, and prohibition clause
|
|
29
|
+
- Running `cleanup-slice <slice.json>` removes `docs/ai/ACTIVE_SLICE.md`
|
|
30
|
+
- Every file in `docs/ai/` declares YAML front-matter with `purpose`, `applies_when`, `token_cost`, `last_updated`, and `supersedes`
|
|
31
|
+
- `PROJECT_MAP.md` is the only generated file containing the detected stack table and command table
|
|
32
|
+
- `doctor` prints warnings when QUICK exceeds 50 lines, STANDARD exceeds 300 lines, or any `docs/ai/` file is missing front-matter
|
|
33
|
+
- Smoke tests in CI verify tier bounds, AGENTS.md required sections, ACTIVE_SLICE lifecycle, and absence of duplicated stack information across context files
|
|
34
|
+
- Smoke tests also verify that `docs/DECISIONS.md` exists, that `PROJECT_MAP.md` includes a `Suggested Reading Order` section, that generated guidance names all four AI modes, and that `EVIDENCE_REPORT.md.template` prefers summarized command evidence over pasted long logs
|
|
35
|
+
- `migrate` on a project generated before v14 adds the new artifacts additively without deleting or overwriting existing content
|
|
36
|
+
|
|
37
|
+
## Validation Checkpoint (Post-Merge)
|
|
38
|
+
|
|
39
|
+
- The maintainer uses v14 in at least one real project for at least one week
|
|
40
|
+
- A before/after measurement of execution-mode token loadout is recorded (heuristic: 4 chars per token)
|
|
41
|
+
- At least one external user installs the tiered pack and reports whether it helps or adds friction
|
|
42
|
+
- Decision to scope v15 is made based on this evidence, not on the original plan
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# Quiver v0.14 - Tiered Context Pack
|
|
2
|
+
|
|
3
|
+
**Date:** 2026-04-22
|
|
4
|
+
**Status:** Completed
|
|
5
|
+
|
|
6
|
+
Slice numbering resets here: this spec starts at `slice-01` and does not continue any previous spec's numbering.
|
|
7
|
+
|
|
8
|
+
## Objective
|
|
9
|
+
|
|
10
|
+
Restructure the generated AI context pack so execution-oriented models (Sonnet, GPT-5.4 Mini, Qwen Code) can operate with a minimal, predictable token footprint, while planning-oriented models (Opus, GPT-5.4) can still opt into deeper context when needed. Do this without adding retrieval infrastructure or model-specific adapters.
|
|
11
|
+
|
|
12
|
+
## Context
|
|
13
|
+
|
|
14
|
+
v13 introduces token-efficient AI modes as guidance, but leaves context artifacts flat and undifferentiated. In a typical execution session a model still loads several hundred lines of `AI_CONTEXT.md`, `CONTEXTO.md`, and `WORKFLOW.md` even when it only needs the active slice boundaries. This spec turns the mode guidance into concrete, stratified artifacts that agents can load selectively.
|
|
15
|
+
|
|
16
|
+
This spec is the operational counterpart to v13: v13 defined the modes, v14 materializes the pack that each mode consumes.
|
|
17
|
+
|
|
18
|
+
## Scope
|
|
19
|
+
|
|
20
|
+
### Included
|
|
21
|
+
|
|
22
|
+
- Generate a three-tier context pack: `docs/ai/QUICK.md` (≤50 lines), `docs/ai/STANDARD.md` (≤300 lines), `docs/ai/DEEP.md` (unbounded)
|
|
23
|
+
- Generate a single root `AGENTS.md` that routes agents to the appropriate tier and declares a reading budget and output policy
|
|
24
|
+
- Auto-generate `docs/ai/ACTIVE_SLICE.md` on `start-slice` and remove it on `cleanup-slice`
|
|
25
|
+
- Add structured YAML front-matter (`purpose`, `applies_when`, `token_cost`, `supersedes`, `last_updated`) to every generated context file
|
|
26
|
+
- Deduplicate stack and command information so a single file is authoritative (`PROJECT_MAP.md` owns stack/commands; other files link to it)
|
|
27
|
+
- Add `doctor` warnings and smoke tests that verify the pack is well-formed
|
|
28
|
+
- Preserve backward compatibility: existing templates stay generated, but consolidated via links instead of duplication
|
|
29
|
+
|
|
30
|
+
### Excluded
|
|
31
|
+
|
|
32
|
+
- A new `token-cost` diagnostic command (deferred to v15)
|
|
33
|
+
- A `diff-pack` command (deferred to v15)
|
|
34
|
+
- Model-specific adapters such as `.cursorrules` or `copilot-instructions.md` (only AGENTS.md for now)
|
|
35
|
+
- Exact tokenizer-aware counting (estimates only, via heuristic)
|
|
36
|
+
- Embeddings, vector search, or retrieval augmentation
|
|
37
|
+
- Automatic pruning of context without human review
|
|
38
|
+
- A new orchestration command such as `create-quiver context`
|
|
39
|
+
|
|
40
|
+
## Tiered Context Pack
|
|
41
|
+
|
|
42
|
+
Quiver will generate three tiers, each with a bounded purpose:
|
|
43
|
+
|
|
44
|
+
- **QUICK (`docs/ai/QUICK.md`, ≤50 lines):** the minimum viable briefing. Stack, primary commands, hard rules, pointer to STANDARD and DEEP. Targeted at execution models that must start acting in under 2k tokens.
|
|
45
|
+
- **STANDARD (`docs/ai/STANDARD.md`, ≤300 lines):** conventions, workflow overview, testing expectations, mode guidance from v13, links to slice lifecycle. Targeted at mid-sized tasks and default planning.
|
|
46
|
+
- **DEEP (`docs/ai/DEEP.md`, unbounded):** project history, past decisions, cultural context, legacy notes. Targeted at planning models that explicitly need depth.
|
|
47
|
+
|
|
48
|
+
AGENTS.md is the router: every agent reads AGENTS.md first, and AGENTS.md decides which tier to load based on declared task mode.
|
|
49
|
+
|
|
50
|
+
## Active Slice Contract
|
|
51
|
+
|
|
52
|
+
`start-slice` will generate `docs/ai/ACTIVE_SLICE.md` containing, in order:
|
|
53
|
+
|
|
54
|
+
1. Slice objective (one line)
|
|
55
|
+
2. `allowed_files` (verbatim from slice.json)
|
|
56
|
+
3. Validation commands (from slice.json `tests`)
|
|
57
|
+
4. Definition of Done checklist (from slice.json `acceptance`)
|
|
58
|
+
5. Explicit prohibition against editing files outside `allowed_files`
|
|
59
|
+
|
|
60
|
+
`cleanup-slice` will remove `docs/ai/ACTIVE_SLICE.md` as part of the existing cleanup lifecycle. AGENTS.md will instruct agents: when ACTIVE_SLICE.md exists, it is the single source of truth for execution — do not read SPEC.md unless ACTIVE_SLICE.md points to it.
|
|
61
|
+
|
|
62
|
+
## Deduplication Contract
|
|
63
|
+
|
|
64
|
+
- `docs/PROJECT_MAP.md` remains the single authoritative source for detected stack, package manager, commands, and structure.
|
|
65
|
+
- `docs/AI_CONTEXT.md` stops repeating that information and links to PROJECT_MAP.md instead.
|
|
66
|
+
- `docs/CONTEXTO.md` becomes a thin alias/summary that links to AI_CONTEXT.md for new projects. Existing generated `CONTEXTO.md` files are preserved on migration.
|
|
67
|
+
- Every generated context file declares a `supersedes` field in its front-matter when it replaces another file, so agents can follow the chain without guessing.
|
|
68
|
+
|
|
69
|
+
## Front-Matter Contract
|
|
70
|
+
|
|
71
|
+
Every file in `docs/ai/` and the generated context pack carries this YAML header:
|
|
72
|
+
|
|
73
|
+
```yaml
|
|
74
|
+
---
|
|
75
|
+
purpose: <one-line description of what the file is for>
|
|
76
|
+
applies_when: <task modes or conditions where this file is relevant>
|
|
77
|
+
token_cost: <integer, heuristic estimate at generation time>
|
|
78
|
+
last_updated: <YYYY-MM-DD>
|
|
79
|
+
supersedes: <path or null>
|
|
80
|
+
---
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
This lets agents skip files without reading the body.
|
|
84
|
+
|
|
85
|
+
## Principles
|
|
86
|
+
|
|
87
|
+
- The default loadout for execution tasks should fit in under 1000 estimated tokens
|
|
88
|
+
- Tiers should never duplicate each other; deeper tiers only add, never restate
|
|
89
|
+
- AGENTS.md must declare an explicit reading budget per mode and an anti-verbosity output policy
|
|
90
|
+
- Generated artifacts should be few, bounded, and easy to maintain
|
|
91
|
+
- Backward compatibility over aggressive cleanup: deprecate silently via `supersedes`, do not delete
|
|
92
|
+
|
|
93
|
+
## Slices
|
|
94
|
+
|
|
95
|
+
| Slice | Title | Status | Spec |
|
|
96
|
+
|-------|-------|--------|------|
|
|
97
|
+
| 01 | Tiered Context Pack | Completed | [slice-01](./slices/slice-01-tiered-context-pack/slice.json) |
|
|
98
|
+
| 02 | AGENTS.md Router | Completed | [slice-02](./slices/slice-02-agents-md-router/slice.json) |
|
|
99
|
+
| 03 | Active Slice Lifecycle | Completed | [slice-03](./slices/slice-03-active-slice-lifecycle/slice.json) |
|
|
100
|
+
| 04 | Dedup and Front-Matter | Completed | [slice-04](./slices/slice-04-dedup-frontmatter/slice.json) |
|
|
101
|
+
| 05 | Doctor and Smokes for Tiered Pack | Completed | [slice-05](./slices/slice-05-doctor-smokes-tiered-pack/slice.json) |
|
|
102
|
+
|
|
103
|
+
## Definition of Done
|
|
104
|
+
|
|
105
|
+
- A freshly generated project contains `docs/ai/QUICK.md`, `docs/ai/STANDARD.md`, `docs/ai/DEEP.md`, and root `AGENTS.md`
|
|
106
|
+
- `start-slice` creates `docs/ai/ACTIVE_SLICE.md` and `cleanup-slice` removes it
|
|
107
|
+
- AGENTS.md declares a reading budget, an output policy, and points to QUICK first
|
|
108
|
+
- Every file in `docs/ai/` has valid YAML front-matter with the five declared fields
|
|
109
|
+
- `PROJECT_MAP.md` is the only generated file that lists stack and commands; other files link to it
|
|
110
|
+
- `doctor` warns when QUICK exceeds 50 lines, STANDARD exceeds 300 lines, or a context file is missing front-matter
|
|
111
|
+
- Smoke tests verify tier bounds, AGENTS.md sections, ACTIVE_SLICE creation and cleanup, and no duplicated stack data across files
|
|
112
|
+
- Backward compatibility: existing projects running `migrate` gain the new artifacts without losing existing content
|
|
113
|
+
|
|
114
|
+
## Validation Checkpoint
|
|
115
|
+
|
|
116
|
+
Before v15 is scoped, v14 must be used in at least one real project for at least one week, with a measurable reduction in execution-mode token loadout (before vs. after). If measurement is inconclusive or the tiered pack adds more friction than value, v15 is rescoped before it is written.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Quiver v0.14 Spec Status
|
|
2
|
+
|
|
3
|
+
**Spec:** quiver-v14-tiered-context-pack
|
|
4
|
+
**Last updated:** 2026-04-23
|
|
5
|
+
|
|
6
|
+
Slice numbering is local to this spec. The first slice is `slice-01`.
|
|
7
|
+
|
|
8
|
+
## Status
|
|
9
|
+
|
|
10
|
+
| Slice | Title | Status | PR | Estimated hours | Actual hours |
|
|
11
|
+
|-------|-------|--------|----|-----------------|--------------|
|
|
12
|
+
| slice-01 | Tiered Context Pack | Completed | - | 4 | 4 |
|
|
13
|
+
| slice-02 | AGENTS.md Router | Completed | #38 | 3 | 3 |
|
|
14
|
+
| slice-03 | Active Slice Lifecycle | Completed | - | 4 | 4 |
|
|
15
|
+
| slice-04 | Dedup and Front-Matter | Completed | - | 4 | 5 |
|
|
16
|
+
| slice-05 | Doctor and Smokes for Tiered Pack | Completed | - | 4 | 5 |
|
|
17
|
+
|
|
18
|
+
## Progress
|
|
19
|
+
|
|
20
|
+
- Completed slices: 5 / 5
|
|
21
|
+
- Estimated hours: 23
|
|
22
|
+
- Actual hours: 21
|
|
23
|
+
|
|
24
|
+
## Blockers
|
|
25
|
+
|
|
26
|
+
| Slice | Blocker | Since | Action needed |
|
|
27
|
+
|-------|---------|-------|---------------|
|
|
28
|
+
| - | - | - | - |
|
|
29
|
+
|
|
30
|
+
## Dependencies
|
|
31
|
+
|
|
32
|
+
- slice-02 depends on slice-01 (AGENTS.md routes to the tiers created in slice-01)
|
|
33
|
+
- slice-03 depends on slice-02 (ACTIVE_SLICE is referenced from AGENTS.md)
|
|
34
|
+
- slice-04 depends on slice-01 (front-matter is applied to the tiered files)
|
|
35
|
+
- slice-05 depends on slices 01-04 (validates the full pack)
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slice_id": "slice-01-tiered-context-pack",
|
|
3
|
+
"ticket": "QUIVER-01",
|
|
4
|
+
"type": "feat",
|
|
5
|
+
"title": "Tiered Context Pack (QUICK, STANDARD, DEEP)",
|
|
6
|
+
"objective": "Generate a three-tier AI context pack so execution models load a minimal QUICK brief, default tasks load a bounded STANDARD brief, and planning models can opt into unbounded DEEP context on demand.",
|
|
7
|
+
"description": "Today the generated AI context is flat: agents that only need to act on an active slice still load several hundred lines of project-wide documentation. This slice introduces three bounded tiers under `docs/ai/` with distinct purposes and generation rules, distributing content that currently lives in AI_CONTEXT.md, CONTEXTO.md, and WORKFLOW.md without losing information. The tiers are additive: QUICK is the minimum viable briefing, STANDARD is the default, DEEP is the archive.",
|
|
8
|
+
"git": {
|
|
9
|
+
"branch_type": "feature",
|
|
10
|
+
"base_branch": "main",
|
|
11
|
+
"branch_slug": "tiered-context-pack",
|
|
12
|
+
"branch_name": "feature/QUIVER-01-tiered-context-pack"
|
|
13
|
+
},
|
|
14
|
+
"must": [
|
|
15
|
+
"Create `docs/QUICK.md.template` with a 50-line upper bound covering stack, primary commands, hard rules, and pointer to STANDARD/DEEP",
|
|
16
|
+
"Create `docs/STANDARD.md.template` with a 300-line upper bound covering conventions, workflow overview, testing expectations, and v13 mode guidance",
|
|
17
|
+
"Create `docs/DEEP.md.template` without a line bound, intended for project history, decisions, and cultural context",
|
|
18
|
+
"Update `src/create-quiver/lib/init-docs.js` to render the three tier templates into `docs/ai/QUICK.md`, `docs/ai/STANDARD.md`, and `docs/ai/DEEP.md` on init and on migrate",
|
|
19
|
+
"Populate QUICK with deterministic content from the existing analyzer scan (stack, package manager, primary commands, slice workflow commands)",
|
|
20
|
+
"Reference the tiers explicitly from `docs/INDEX.md.template` so the project index lists them"
|
|
21
|
+
],
|
|
22
|
+
"not_included": [
|
|
23
|
+
"Creating AGENTS.md (handled in slice-02)",
|
|
24
|
+
"Generating ACTIVE_SLICE.md (handled in slice-03)",
|
|
25
|
+
"Adding YAML front-matter (handled in slice-04)",
|
|
26
|
+
"Doctor warnings for tier size (handled in slice-05)",
|
|
27
|
+
"Deleting AI_CONTEXT.md, CONTEXTO.md, or WORKFLOW.md"
|
|
28
|
+
],
|
|
29
|
+
"acceptance": [
|
|
30
|
+
"A freshly initialized project contains `docs/ai/QUICK.md`, `docs/ai/STANDARD.md`, and `docs/ai/DEEP.md`",
|
|
31
|
+
"QUICK.md has 50 or fewer non-empty content lines",
|
|
32
|
+
"STANDARD.md has 300 or fewer non-empty content lines",
|
|
33
|
+
"QUICK.md includes at least: project name, detected stack, primary install/dev/test commands, slice start command, and a pointer line to STANDARD.md and DEEP.md",
|
|
34
|
+
"Running `migrate` on a project generated before v14 creates the three tier files without overwriting existing content",
|
|
35
|
+
"`docs/INDEX.md` links to all three tier files"
|
|
36
|
+
],
|
|
37
|
+
"files": [
|
|
38
|
+
"docs/QUICK.md.template",
|
|
39
|
+
"docs/STANDARD.md.template",
|
|
40
|
+
"docs/DEEP.md.template",
|
|
41
|
+
"docs/INDEX.md.template",
|
|
42
|
+
"src/create-quiver/lib/init-docs.js",
|
|
43
|
+
"scripts/init-docs.sh",
|
|
44
|
+
"specs/quiver-v14-tiered-context-pack/SPEC.md",
|
|
45
|
+
"specs/quiver-v14-tiered-context-pack/STATUS.md",
|
|
46
|
+
"specs/quiver-v14-tiered-context-pack/EVIDENCE_REPORT.md",
|
|
47
|
+
"specs/quiver-v14-tiered-context-pack/slices/slice-01-tiered-context-pack/slice.json"
|
|
48
|
+
],
|
|
49
|
+
"tests": [
|
|
50
|
+
"node bin/create-quiver.js --name \"Scratch\" --dir /tmp/quiver-v14-slice-01-smoke",
|
|
51
|
+
"test -f /tmp/quiver-v14-slice-01-smoke/docs/ai/QUICK.md",
|
|
52
|
+
"test -f /tmp/quiver-v14-slice-01-smoke/docs/ai/STANDARD.md",
|
|
53
|
+
"test -f /tmp/quiver-v14-slice-01-smoke/docs/ai/DEEP.md",
|
|
54
|
+
"awk 'NF' /tmp/quiver-v14-slice-01-smoke/docs/ai/QUICK.md | wc -l | awk '{ if ($1 > 50) exit 1 }'",
|
|
55
|
+
"awk 'NF' /tmp/quiver-v14-slice-01-smoke/docs/ai/STANDARD.md | wc -l | awk '{ if ($1 > 300) exit 1 }'",
|
|
56
|
+
"git diff --check"
|
|
57
|
+
],
|
|
58
|
+
"documentation": [
|
|
59
|
+
"docs/QUICK.md.template",
|
|
60
|
+
"docs/STANDARD.md.template",
|
|
61
|
+
"docs/DEEP.md.template",
|
|
62
|
+
"docs/INDEX.md.template"
|
|
63
|
+
],
|
|
64
|
+
"dependencies": [],
|
|
65
|
+
"assumptions": [
|
|
66
|
+
"Three tiers are sufficient granularity; no project needs a fourth level",
|
|
67
|
+
"A 50-line cap on QUICK is tight enough to force selection and loose enough to stay useful",
|
|
68
|
+
"Execution models benefit more from a short, deterministic briefing than from a rich but long one"
|
|
69
|
+
],
|
|
70
|
+
"estimated_hours": 4,
|
|
71
|
+
"actual_hours": 4,
|
|
72
|
+
"status": "completed",
|
|
73
|
+
"blocked_reason": null,
|
|
74
|
+
"ready_at": null,
|
|
75
|
+
"started_at": null,
|
|
76
|
+
"completed_at": "2026-04-23"
|
|
77
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slice_id": "slice-02-agents-md-router",
|
|
3
|
+
"ticket": "QUIVER-02",
|
|
4
|
+
"type": "feat",
|
|
5
|
+
"title": "AGENTS.md Router",
|
|
6
|
+
"objective": "Generate a single root `AGENTS.md` that tells any AI agent which tier to load, how many tokens to spend, and how to respond concisely.",
|
|
7
|
+
"description": "AGENTS.md is the universal entry point that Claude Code, Cursor, Aider, Continue, and other agent runtimes discover automatically. This slice adds a template for it and wires init-docs and migrate to render it at the project root. The content is deliberately narrow: it declares a reading budget per task mode, points to QUICK.md first, and sets an output policy that discourages restating tasks and summarizing diffs.",
|
|
8
|
+
"git": {
|
|
9
|
+
"branch_type": "feature",
|
|
10
|
+
"base_branch": "main",
|
|
11
|
+
"branch_slug": "agents-md-router",
|
|
12
|
+
"branch_name": "feature/QUIVER-02-agents-md-router"
|
|
13
|
+
},
|
|
14
|
+
"must": [
|
|
15
|
+
"Create `AGENTS.md.template` at repository root with sections: Purpose, Reading Budget, Reading Order, Output Policy, Slice Execution Rules, and Links",
|
|
16
|
+
"Reading Budget section declares explicit per-mode budgets: planning up to 10000 tokens, execution under 2000 tokens before first action, debug under 1000 tokens before proposing a hypothesis",
|
|
17
|
+
"Reading Order section instructs agents to read QUICK first, STANDARD only if QUICK is insufficient, DEEP only when history or past decisions are requested",
|
|
18
|
+
"Output Policy section forbids restating the task before acting, forbids post-edit summaries of diffs, and caps confirmations at one sentence",
|
|
19
|
+
"Slice Execution Rules section instructs agents to treat `docs/ai/ACTIVE_SLICE.md` as the single source of truth when it exists and to avoid reading SPEC.md unless ACTIVE_SLICE.md references it",
|
|
20
|
+
"Update `src/create-quiver/lib/init-docs.js` and `scripts/init-docs.sh` to render AGENTS.md on init and on migrate, preserving existing AGENTS.md if the project already has one"
|
|
21
|
+
],
|
|
22
|
+
"not_included": [
|
|
23
|
+
"Generating model-specific adapters (CLAUDE.md, .cursorrules, copilot-instructions.md)",
|
|
24
|
+
"Any runtime enforcement of the reading budget",
|
|
25
|
+
"Deleting existing AI guidance files"
|
|
26
|
+
],
|
|
27
|
+
"acceptance": [
|
|
28
|
+
"A freshly initialized project contains `AGENTS.md` at the repository root",
|
|
29
|
+
"AGENTS.md contains all six required sections named verbatim",
|
|
30
|
+
"Reading Budget section contains explicit numeric budgets for planning, execution, and debug",
|
|
31
|
+
"Reading Order section names QUICK, STANDARD, and DEEP in that order",
|
|
32
|
+
"Output Policy section contains at minimum: no task restatement, no post-edit diff summary, one-sentence confirmation",
|
|
33
|
+
"Migrating a project that already has `AGENTS.md` preserves the existing content and logs a skip message"
|
|
34
|
+
],
|
|
35
|
+
"files": [
|
|
36
|
+
"AGENTS.md.template",
|
|
37
|
+
"src/create-quiver/lib/init-docs.js",
|
|
38
|
+
"scripts/init-docs.sh",
|
|
39
|
+
"specs/quiver-v14-tiered-context-pack/SPEC.md",
|
|
40
|
+
"specs/quiver-v14-tiered-context-pack/STATUS.md",
|
|
41
|
+
"specs/quiver-v14-tiered-context-pack/EVIDENCE_REPORT.md",
|
|
42
|
+
"specs/quiver-v14-tiered-context-pack/slices/slice-02-agents-md-router/slice.json"
|
|
43
|
+
],
|
|
44
|
+
"tests": [
|
|
45
|
+
"node bin/create-quiver.js --name \"Scratch\" --dir /tmp/quiver-v14-slice-02-smoke",
|
|
46
|
+
"test -f /tmp/quiver-v14-slice-02-smoke/AGENTS.md",
|
|
47
|
+
"grep -q '^## Reading Budget' /tmp/quiver-v14-slice-02-smoke/AGENTS.md",
|
|
48
|
+
"grep -q '^## Reading Order' /tmp/quiver-v14-slice-02-smoke/AGENTS.md",
|
|
49
|
+
"grep -q '^## Output Policy' /tmp/quiver-v14-slice-02-smoke/AGENTS.md",
|
|
50
|
+
"grep -q '^## Slice Execution Rules' /tmp/quiver-v14-slice-02-smoke/AGENTS.md",
|
|
51
|
+
"grep -q 'QUICK' /tmp/quiver-v14-slice-02-smoke/AGENTS.md",
|
|
52
|
+
"git diff --check"
|
|
53
|
+
],
|
|
54
|
+
"documentation": [
|
|
55
|
+
"AGENTS.md.template",
|
|
56
|
+
"README.md",
|
|
57
|
+
"README_FOR_AI.md"
|
|
58
|
+
],
|
|
59
|
+
"dependencies": [
|
|
60
|
+
"slice-01-tiered-context-pack"
|
|
61
|
+
],
|
|
62
|
+
"assumptions": [
|
|
63
|
+
"AGENTS.md is discoverable by Claude Code, Cursor, Aider, and Continue without additional configuration",
|
|
64
|
+
"A single router is better than multiple model-specific adapters until a user asks for one",
|
|
65
|
+
"Agents respect explicit numeric budgets better than vague guidance"
|
|
66
|
+
],
|
|
67
|
+
"estimated_hours": 3,
|
|
68
|
+
"actual_hours": null,
|
|
69
|
+
"status": "completed",
|
|
70
|
+
"blocked_reason": null,
|
|
71
|
+
"ready_at": null,
|
|
72
|
+
"started_at": "2026-04-23",
|
|
73
|
+
"completed_at": "2026-04-23"
|
|
74
|
+
}
|
package/specs/quiver-v14-tiered-context-pack/slices/slice-03-active-slice-lifecycle/slice.json
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slice_id": "slice-03-active-slice-lifecycle",
|
|
3
|
+
"ticket": "QUIVER-03",
|
|
4
|
+
"type": "feat",
|
|
5
|
+
"title": "Active Slice Lifecycle (ACTIVE_SLICE.md)",
|
|
6
|
+
"objective": "Generate `docs/ai/ACTIVE_SLICE.md` on `start-slice` so execution agents get a self-contained slice brief, and remove it on `cleanup-slice` so the signal stays accurate.",
|
|
7
|
+
"description": "Execution models currently waste tokens navigating SPEC.md, STATUS.md, and WORKFLOW.md even when the information they need fits in 30 lines of one file. This slice introduces an auto-generated active slice brief that is the single source of truth for execution while a slice is in progress. The file is ephemeral by design: it is born with `start-slice` and dies with `cleanup-slice`, so its presence is a reliable signal that a slice is active.",
|
|
8
|
+
"git": {
|
|
9
|
+
"branch_type": "feature",
|
|
10
|
+
"base_branch": "main",
|
|
11
|
+
"branch_slug": "active-slice-lifecycle",
|
|
12
|
+
"branch_name": "feature/QUIVER-03-active-slice-lifecycle"
|
|
13
|
+
},
|
|
14
|
+
"must": [
|
|
15
|
+
"Update `src/create-quiver/lib/lifecycle.js` so `startSlice` writes `docs/ai/ACTIVE_SLICE.md` after the worktree and branch are created",
|
|
16
|
+
"`ACTIVE_SLICE.md` content is rendered from the slice.json being started and contains, in order: slice id, title, objective (one line), `allowed_files` list, validation commands from `tests`, Definition of Done checklist derived from `acceptance`, and an explicit prohibition line against editing files outside `allowed_files`",
|
|
17
|
+
"Update `src/create-quiver/lib/lifecycle.js` so `cleanupSlice` removes `docs/ai/ACTIVE_SLICE.md` when cleanup succeeds",
|
|
18
|
+
"Update `scripts/start-slice.sh` and `scripts/cleanup-slice.sh` to call the Node lifecycle entrypoint so legacy Bash users get the same behavior",
|
|
19
|
+
"Record `ACTIVE_SLICE.md` path in `WORKTREE_CONTEXT.md` so developers see the link when they attach to a worktree"
|
|
20
|
+
],
|
|
21
|
+
"not_included": [
|
|
22
|
+
"Enforcing `allowed_files` at commit time (out of scope for v14)",
|
|
23
|
+
"Front-matter on ACTIVE_SLICE.md (handled in slice-04)",
|
|
24
|
+
"Doctor warnings for orphaned ACTIVE_SLICE.md (handled in slice-05)",
|
|
25
|
+
"Changing the slice.json schema"
|
|
26
|
+
],
|
|
27
|
+
"acceptance": [
|
|
28
|
+
"Running `start-slice` on a valid slice.json creates `docs/ai/ACTIVE_SLICE.md`",
|
|
29
|
+
"The file contains the slice id, the title, a one-line objective, the `allowed_files` list, the validation commands, the DoD checklist, and the prohibition line",
|
|
30
|
+
"Running `cleanup-slice` on the same slice removes `docs/ai/ACTIVE_SLICE.md`",
|
|
31
|
+
"Running `cleanup-slice` when `ACTIVE_SLICE.md` is already missing succeeds without error",
|
|
32
|
+
"Running `start-slice` when `ACTIVE_SLICE.md` exists from a previous slice overwrites it and logs a replacement message",
|
|
33
|
+
"`WORKTREE_CONTEXT.md` generated by `start-slice` references `docs/ai/ACTIVE_SLICE.md`"
|
|
34
|
+
],
|
|
35
|
+
"files": [
|
|
36
|
+
"src/create-quiver/lib/lifecycle.js",
|
|
37
|
+
"src/create-quiver/lib/slice.js",
|
|
38
|
+
"scripts/start-slice.sh",
|
|
39
|
+
"scripts/cleanup-slice.sh",
|
|
40
|
+
"specs/quiver-v14-tiered-context-pack/SPEC.md",
|
|
41
|
+
"specs/quiver-v14-tiered-context-pack/STATUS.md",
|
|
42
|
+
"specs/quiver-v14-tiered-context-pack/EVIDENCE_REPORT.md",
|
|
43
|
+
"specs/quiver-v14-tiered-context-pack/slices/slice-03-active-slice-lifecycle/slice.json"
|
|
44
|
+
],
|
|
45
|
+
"tests": [
|
|
46
|
+
"node bin/create-quiver.js --name \"Scratch\" --dir /tmp/quiver-v14-slice-03-smoke",
|
|
47
|
+
"node bin/create-quiver.js start-slice --dir /tmp/quiver-v14-slice-03-smoke /tmp/quiver-v14-slice-03-smoke/specs/scratch/slices/slice-template/slice.json --allow-draft",
|
|
48
|
+
"test -f /tmp/quiver-v14-slice-03-smoke/docs/ai/ACTIVE_SLICE.md",
|
|
49
|
+
"grep -q 'allowed_files' /tmp/quiver-v14-slice-03-smoke/docs/ai/ACTIVE_SLICE.md",
|
|
50
|
+
"grep -q 'Definition of Done' /tmp/quiver-v14-slice-03-smoke/docs/ai/ACTIVE_SLICE.md",
|
|
51
|
+
"node bin/create-quiver.js cleanup-slice --dir /tmp/quiver-v14-slice-03-smoke /tmp/quiver-v14-slice-03-smoke/specs/scratch/slices/slice-template/slice.json --discard",
|
|
52
|
+
"test ! -f /tmp/quiver-v14-slice-03-smoke/docs/ai/ACTIVE_SLICE.md",
|
|
53
|
+
"git diff --check"
|
|
54
|
+
],
|
|
55
|
+
"documentation": [
|
|
56
|
+
"docs/WORKFLOW.md.template",
|
|
57
|
+
"README_FOR_AI.md"
|
|
58
|
+
],
|
|
59
|
+
"dependencies": [
|
|
60
|
+
"slice-02-agents-md-router"
|
|
61
|
+
],
|
|
62
|
+
"assumptions": [
|
|
63
|
+
"A single active slice file per project is sufficient; parallel worktrees can read from their own working tree copy",
|
|
64
|
+
"Overwriting an existing ACTIVE_SLICE.md is safer than refusing to start, because the previous slice should have been cleaned up first",
|
|
65
|
+
"A short, deterministic file is more reliable than asking agents to synthesize the same information from SPEC.md"
|
|
66
|
+
],
|
|
67
|
+
"estimated_hours": 4,
|
|
68
|
+
"actual_hours": null,
|
|
69
|
+
"status": "completed",
|
|
70
|
+
"blocked_reason": null,
|
|
71
|
+
"ready_at": null,
|
|
72
|
+
"started_at": "2026-04-23",
|
|
73
|
+
"completed_at": "2026-04-23"
|
|
74
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slice_id": "slice-04-dedup-frontmatter",
|
|
3
|
+
"ticket": "QUIVER-04",
|
|
4
|
+
"type": "feat",
|
|
5
|
+
"title": "Deduplication and YAML Front-Matter",
|
|
6
|
+
"objective": "Add structured YAML front-matter to every generated context file and remove duplication so `PROJECT_MAP.md` is the single source of truth for stack and commands.",
|
|
7
|
+
"description": "Today stack information, commands, and package manager details are repeated across AI_CONTEXT, CONTEXTO, PROJECT_MAP, STATUS, and WORKFLOW. Agents that load more than one file pay the token cost twice. This slice collapses duplication by making PROJECT_MAP.md authoritative and having other files link to it, and adds a YAML front-matter header on every file in `docs/ai/` so agents can skip irrelevant files without reading the body.",
|
|
8
|
+
"git": {
|
|
9
|
+
"branch_type": "feature",
|
|
10
|
+
"base_branch": "main",
|
|
11
|
+
"branch_slug": "dedup-frontmatter",
|
|
12
|
+
"branch_name": "feature/QUIVER-04-dedup-frontmatter"
|
|
13
|
+
},
|
|
14
|
+
"must": [
|
|
15
|
+
"Every file rendered into `docs/ai/` (QUICK.md, STANDARD.md, DEEP.md, ACTIVE_SLICE.md, PRINCIPLES.md, RULES.yaml skipped, LESSONS.md) starts with a YAML front-matter block containing: `purpose`, `applies_when`, `token_cost` (integer heuristic using 4 chars per token), `last_updated` (YYYY-MM-DD), `supersedes` (path or null)",
|
|
16
|
+
"AI_CONTEXT.md.template no longer restates stack, package manager, or command tables; it links to `docs/PROJECT_MAP.md` for that information",
|
|
17
|
+
"CONTEXTO.md.template becomes a thin summary that links to AI_CONTEXT.md; existing CONTEXTO.md files in already-generated projects are preserved during migrate",
|
|
18
|
+
"STATUS.md.template stops restating stack or commands; it references PROJECT_MAP.md when needed",
|
|
19
|
+
"Implement a `writeFrontMatter(targetPath, fields)` helper in `src/create-quiver/lib/init-docs.js` that prepends or updates front-matter idempotently without duplicating the block",
|
|
20
|
+
"`supersedes` is populated with the path of the deprecated file when a file replaces another (for example CONTEXTO.md supersedes nothing, but AI_CONTEXT.md stops restating PROJECT_MAP and documents that in a comment)"
|
|
21
|
+
],
|
|
22
|
+
"not_included": [
|
|
23
|
+
"Deleting AI_CONTEXT.md, CONTEXTO.md, or STATUS.md",
|
|
24
|
+
"Enforcing front-matter outside `docs/ai/`",
|
|
25
|
+
"Tokenizer-accurate token counting; the 4 chars per token heuristic is sufficient",
|
|
26
|
+
"Doctor warnings for missing front-matter (handled in slice-05)"
|
|
27
|
+
],
|
|
28
|
+
"acceptance": [
|
|
29
|
+
"A freshly initialized project has YAML front-matter on every file directly under `docs/ai/` that is a Markdown file",
|
|
30
|
+
"Each front-matter block contains `purpose`, `applies_when`, `token_cost`, `last_updated`, `supersedes`",
|
|
31
|
+
"`grep -c 'Package manager' docs/PROJECT_MAP.md` returns at least 1 and no other generated file under `docs/` contains the phrase `Package manager:` as a content line",
|
|
32
|
+
"AI_CONTEXT.md contains a link to `docs/PROJECT_MAP.md`",
|
|
33
|
+
"Running init twice on the same directory does not produce duplicated front-matter blocks",
|
|
34
|
+
"Migrating a project generated before v14 adds front-matter to existing `docs/ai/` files idempotently"
|
|
35
|
+
],
|
|
36
|
+
"files": [
|
|
37
|
+
"docs/AI_CONTEXT.md.template",
|
|
38
|
+
"docs/CONTEXTO.md.template",
|
|
39
|
+
"docs/STATUS.md.template",
|
|
40
|
+
"docs/QUICK.md.template",
|
|
41
|
+
"docs/STANDARD.md.template",
|
|
42
|
+
"docs/DEEP.md.template",
|
|
43
|
+
"src/create-quiver/lib/init-docs.js",
|
|
44
|
+
"scripts/init-docs.sh",
|
|
45
|
+
"specs/quiver-v14-tiered-context-pack/SPEC.md",
|
|
46
|
+
"specs/quiver-v14-tiered-context-pack/STATUS.md",
|
|
47
|
+
"specs/quiver-v14-tiered-context-pack/EVIDENCE_REPORT.md",
|
|
48
|
+
"specs/quiver-v14-tiered-context-pack/slices/slice-04-dedup-frontmatter/slice.json"
|
|
49
|
+
],
|
|
50
|
+
"tests": [
|
|
51
|
+
"node bin/create-quiver.js --name \"Scratch\" --dir /tmp/quiver-v14-slice-04-smoke",
|
|
52
|
+
"head -n 1 /tmp/quiver-v14-slice-04-smoke/docs/ai/QUICK.md | grep -q '^---$'",
|
|
53
|
+
"head -n 1 /tmp/quiver-v14-slice-04-smoke/docs/ai/STANDARD.md | grep -q '^---$'",
|
|
54
|
+
"head -n 1 /tmp/quiver-v14-slice-04-smoke/docs/ai/DEEP.md | grep -q '^---$'",
|
|
55
|
+
"grep -q 'purpose:' /tmp/quiver-v14-slice-04-smoke/docs/ai/QUICK.md",
|
|
56
|
+
"grep -q 'applies_when:' /tmp/quiver-v14-slice-04-smoke/docs/ai/QUICK.md",
|
|
57
|
+
"grep -q 'token_cost:' /tmp/quiver-v14-slice-04-smoke/docs/ai/QUICK.md",
|
|
58
|
+
"node bin/create-quiver.js --name \"Scratch\" --dir /tmp/quiver-v14-slice-04-smoke -y",
|
|
59
|
+
"test \"$(grep -c '^purpose:' /tmp/quiver-v14-slice-04-smoke/docs/ai/QUICK.md)\" = \"1\"",
|
|
60
|
+
"test \"$(grep -r 'Package manager:' /tmp/quiver-v14-slice-04-smoke/docs | wc -l | tr -d ' ')\" = \"1\"",
|
|
61
|
+
"git diff --check"
|
|
62
|
+
],
|
|
63
|
+
"documentation": [
|
|
64
|
+
"docs/AI_CONTEXT.md.template",
|
|
65
|
+
"docs/CONTEXTO.md.template",
|
|
66
|
+
"README_FOR_AI.md"
|
|
67
|
+
],
|
|
68
|
+
"dependencies": [
|
|
69
|
+
"slice-01-tiered-context-pack"
|
|
70
|
+
],
|
|
71
|
+
"assumptions": [
|
|
72
|
+
"A 4 chars per token heuristic is accurate enough for budget decisions; exact tokenization is not needed",
|
|
73
|
+
"Idempotent front-matter is preferable to regenerating the whole file, since users may edit the body",
|
|
74
|
+
"Linking between generated files is acceptable; agents handle Markdown links well"
|
|
75
|
+
],
|
|
76
|
+
"estimated_hours": 4,
|
|
77
|
+
"actual_hours": 5,
|
|
78
|
+
"status": "completed",
|
|
79
|
+
"blocked_reason": null,
|
|
80
|
+
"ready_at": null,
|
|
81
|
+
"started_at": "2026-04-23",
|
|
82
|
+
"completed_at": "2026-04-23"
|
|
83
|
+
}
|