create-quiver 0.12.1 → 0.13.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/CHANGELOG.md +8 -0
- package/README.md +16 -8
- package/README_FOR_AI.md +11 -6
- package/ROADMAP.md +9 -2
- package/docs/COMMANDS.md.template +9 -2
- package/package.json +2 -1
- package/specs/quiver-v26-0121-smoke-hardening/SPEC.md +2 -2
- package/specs/quiver-v26-0121-smoke-hardening/STATUS.md +5 -5
- package/specs/quiver-v27-reliability-ai-workflow-hardening/AUDIT_V24_V25_V26.md +67 -0
- package/specs/quiver-v27-reliability-ai-workflow-hardening/COMMAND_CONTRACTS.md +125 -0
- package/specs/quiver-v27-reliability-ai-workflow-hardening/COVERAGE_MATRIX.md +74 -0
- package/specs/quiver-v27-reliability-ai-workflow-hardening/EVIDENCE_REPORT.md +179 -0
- package/specs/quiver-v27-reliability-ai-workflow-hardening/EXECUTION_PLAN.md +71 -0
- package/specs/quiver-v27-reliability-ai-workflow-hardening/SPEC.md +176 -0
- package/specs/quiver-v27-reliability-ai-workflow-hardening/STATUS.md +37 -0
- package/specs/quiver-v27-reliability-ai-workflow-hardening/pr.md +132 -0
- package/specs/quiver-v27-reliability-ai-workflow-hardening/slices/slice-00-docs-audit-coverage-and-contracts/CLOSURE_BRIEF.md +36 -0
- package/specs/quiver-v27-reliability-ai-workflow-hardening/slices/slice-00-docs-audit-coverage-and-contracts/EXECUTION_BRIEF.md +56 -0
- package/specs/quiver-v27-reliability-ai-workflow-hardening/slices/slice-00-docs-audit-coverage-and-contracts/slice.json +75 -0
- package/specs/quiver-v27-reliability-ai-workflow-hardening/slices/slice-01-core-state-resolver-and-canonical-statuses/CLOSURE_BRIEF.md +37 -0
- package/specs/quiver-v27-reliability-ai-workflow-hardening/slices/slice-01-core-state-resolver-and-canonical-statuses/EXECUTION_BRIEF.md +54 -0
- package/specs/quiver-v27-reliability-ai-workflow-hardening/slices/slice-01-core-state-resolver-and-canonical-statuses/slice.json +79 -0
- package/specs/quiver-v27-reliability-ai-workflow-hardening/slices/slice-02-json-export-contract-and-machine-output/CLOSURE_BRIEF.md +34 -0
- package/specs/quiver-v27-reliability-ai-workflow-hardening/slices/slice-02-json-export-contract-and-machine-output/EXECUTION_BRIEF.md +54 -0
- package/specs/quiver-v27-reliability-ai-workflow-hardening/slices/slice-02-json-export-contract-and-machine-output/slice.json +75 -0
- package/specs/quiver-v27-reliability-ai-workflow-hardening/slices/slice-03-approved-plan-to-spec-create/CLOSURE_BRIEF.md +36 -0
- package/specs/quiver-v27-reliability-ai-workflow-hardening/slices/slice-03-approved-plan-to-spec-create/EXECUTION_BRIEF.md +55 -0
- package/specs/quiver-v27-reliability-ai-workflow-hardening/slices/slice-03-approved-plan-to-spec-create/slice.json +78 -0
- package/specs/quiver-v27-reliability-ai-workflow-hardening/slices/slice-04-ai-artifact-storage-redaction-and-token-compaction/CLOSURE_BRIEF.md +31 -0
- package/specs/quiver-v27-reliability-ai-workflow-hardening/slices/slice-04-ai-artifact-storage-redaction-and-token-compaction/EXECUTION_BRIEF.md +55 -0
- package/specs/quiver-v27-reliability-ai-workflow-hardening/slices/slice-04-ai-artifact-storage-redaction-and-token-compaction/slice.json +77 -0
- package/specs/quiver-v27-reliability-ai-workflow-hardening/slices/slice-05-worktree-lifecycle-locks-and-recovery/CLOSURE_BRIEF.md +31 -0
- package/specs/quiver-v27-reliability-ai-workflow-hardening/slices/slice-05-worktree-lifecycle-locks-and-recovery/EXECUTION_BRIEF.md +55 -0
- package/specs/quiver-v27-reliability-ai-workflow-hardening/slices/slice-05-worktree-lifecycle-locks-and-recovery/slice.json +84 -0
- package/specs/quiver-v27-reliability-ai-workflow-hardening/slices/slice-06-validation-gates-and-scope-safety/CLOSURE_BRIEF.md +32 -0
- package/specs/quiver-v27-reliability-ai-workflow-hardening/slices/slice-06-validation-gates-and-scope-safety/EXECUTION_BRIEF.md +57 -0
- package/specs/quiver-v27-reliability-ai-workflow-hardening/slices/slice-06-validation-gates-and-scope-safety/slice.json +99 -0
- package/specs/quiver-v27-reliability-ai-workflow-hardening/slices/slice-07-context-analysis-and-doctor-flow/CLOSURE_BRIEF.md +31 -0
- package/specs/quiver-v27-reliability-ai-workflow-hardening/slices/slice-07-context-analysis-and-doctor-flow/EXECUTION_BRIEF.md +57 -0
- package/specs/quiver-v27-reliability-ai-workflow-hardening/slices/slice-07-context-analysis-and-doctor-flow/slice.json +88 -0
- package/specs/quiver-v27-reliability-ai-workflow-hardening/slices/slice-08-cross-platform-help-auth-and-dx/CLOSURE_BRIEF.md +31 -0
- package/specs/quiver-v27-reliability-ai-workflow-hardening/slices/slice-08-cross-platform-help-auth-and-dx/EXECUTION_BRIEF.md +56 -0
- package/specs/quiver-v27-reliability-ai-workflow-hardening/slices/slice-08-cross-platform-help-auth-and-dx/slice.json +85 -0
- package/specs/quiver-v27-reliability-ai-workflow-hardening/slices/slice-09-fixtures-smoke-docs-and-release-readiness/CLOSURE_BRIEF.md +32 -0
- package/specs/quiver-v27-reliability-ai-workflow-hardening/slices/slice-09-fixtures-smoke-docs-and-release-readiness/EXECUTION_BRIEF.md +56 -0
- package/specs/quiver-v27-reliability-ai-workflow-hardening/slices/slice-09-fixtures-smoke-docs-and-release-readiness/slice.json +91 -0
- package/src/create-quiver/commands/ai.js +84 -9
- package/src/create-quiver/commands/flow.js +52 -4
- package/src/create-quiver/commands/graph.js +7 -7
- package/src/create-quiver/commands/plan.js +6 -15
- package/src/create-quiver/commands/spec.js +282 -0
- package/src/create-quiver/index.js +83 -21
- package/src/create-quiver/lib/agent-profiles.js +15 -3
- package/src/create-quiver/lib/ai/artifacts.js +318 -0
- package/src/create-quiver/lib/ai/execution-plan.js +9 -0
- package/src/create-quiver/lib/ai/executor.js +3 -2
- package/src/create-quiver/lib/ai/export-state.js +242 -97
- package/src/create-quiver/lib/ai/github.js +80 -3
- package/src/create-quiver/lib/ai/plan-review.js +2 -0
- package/src/create-quiver/lib/ai/spec-generator.js +72 -13
- package/src/create-quiver/lib/ai/spec-templates.js +72 -12
- package/src/create-quiver/lib/analyze.js +2 -2
- package/src/create-quiver/lib/approvals.js +14 -2
- package/src/create-quiver/lib/doctor.js +79 -0
- package/src/create-quiver/lib/git.js +40 -1
- package/src/create-quiver/lib/handoff.js +43 -1
- package/src/create-quiver/lib/init-docs.js +11 -7
- package/src/create-quiver/lib/init-layout.js +1 -0
- package/src/create-quiver/lib/lifecycle.js +52 -3
- package/src/create-quiver/lib/locks.js +134 -0
- package/src/create-quiver/lib/package-safety.js +7 -0
- package/src/create-quiver/lib/paths.js +74 -0
- package/src/create-quiver/lib/project-scan.js +74 -0
- package/src/create-quiver/lib/project-state-resolver.js +236 -0
- package/src/create-quiver/lib/readiness.js +48 -7
- package/src/create-quiver/lib/scope.js +2 -1
- package/src/create-quiver/lib/slice.js +8 -4
- package/src/create-quiver/lib/spec-worktrees.js +121 -38
- package/src/create-quiver/lib/statuses.js +115 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# EXECUTION BRIEF - slice-00: Docs audit, coverage, and contracts
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
Pixel Quiver dogfooding produced `QP-001` to `QP-019` and `QIS-001` to `QIS-022`. Some related Quiver capabilities are documented as shipped in v24, v25, and v26, but real usage showed remaining gaps. This slice creates the foundation and contracts before product code changes.
|
|
6
|
+
|
|
7
|
+
## Objective
|
|
8
|
+
|
|
9
|
+
Create and verify the v27 documentary foundation, coverage matrix, and production command contracts.
|
|
10
|
+
|
|
11
|
+
## Scope
|
|
12
|
+
|
|
13
|
+
- `specs/quiver-v27-reliability-ai-workflow-hardening/**`
|
|
14
|
+
- `README_FOR_AI.md`
|
|
15
|
+
- `ROADMAP.md`
|
|
16
|
+
- `CHANGELOG.md`
|
|
17
|
+
|
|
18
|
+
## Acceptance Criteria
|
|
19
|
+
|
|
20
|
+
- The v27 spec package exists and every slice has `slice.json`, `EXECUTION_BRIEF.md`, and `CLOSURE_BRIEF.md`.
|
|
21
|
+
- Every QP/QIS is mapped to a slice and validation strategy.
|
|
22
|
+
- Cross-command contracts are documented.
|
|
23
|
+
- Source-of-truth docs mention v27 as planned without claiming implementation.
|
|
24
|
+
- No product code changes are made.
|
|
25
|
+
|
|
26
|
+
## Technical Plan Summary
|
|
27
|
+
|
|
28
|
+
Audit existing docs/code/tests, record coverage, and update docs/spec artifacts only.
|
|
29
|
+
|
|
30
|
+
## Suggested Execution Steps
|
|
31
|
+
|
|
32
|
+
1. Inspect v24/v25/v26 docs, implementation, and tests.
|
|
33
|
+
2. Fill the v27 coverage matrix with status per QP/QIS.
|
|
34
|
+
3. Document command contracts and compatibility expectations.
|
|
35
|
+
4. Update source-of-truth docs.
|
|
36
|
+
5. Validate JSON, handoffs, and whitespace.
|
|
37
|
+
|
|
38
|
+
## Restrictions
|
|
39
|
+
|
|
40
|
+
- Do not modify product code.
|
|
41
|
+
- Do not publish npm.
|
|
42
|
+
- Do not open a PR unless explicitly requested.
|
|
43
|
+
|
|
44
|
+
## Risks
|
|
45
|
+
|
|
46
|
+
- Existing docs may overstate implemented behavior; record gaps instead of assuming.
|
|
47
|
+
|
|
48
|
+
## Completion Checklist
|
|
49
|
+
|
|
50
|
+
- [ ] Coverage matrix completed.
|
|
51
|
+
- [ ] Contracts documented.
|
|
52
|
+
- [ ] Source-of-truth docs synced.
|
|
53
|
+
- [ ] JSON validation passed.
|
|
54
|
+
- [ ] Handoff validation passed.
|
|
55
|
+
- [ ] `git diff --check` passed.
|
|
56
|
+
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slice_id": "slice-00-docs-audit-coverage-and-contracts",
|
|
3
|
+
"ticket": "QUIVER-27-00",
|
|
4
|
+
"type": "docs",
|
|
5
|
+
"title": "Docs audit, coverage, and contracts",
|
|
6
|
+
"objective": "Create the v27 documentary foundation, audit existing v24/v25/v26 behavior against Pixel Quiver evidence, and define cross-command contracts before implementation starts.",
|
|
7
|
+
"description": "Audits source-of-truth docs, existing specs, tests, and implementation surfaces; creates a QP/QIS coverage matrix; defines command contracts for exit codes, stdout/stderr, dry-run, write classes, idempotency, atomic writes, path safety, root detection, package managers, deterministic ordering, schema/versioning, and legacy/strict behavior.",
|
|
8
|
+
"git": {
|
|
9
|
+
"branch_type": "feature",
|
|
10
|
+
"base_branch": "main",
|
|
11
|
+
"branch_slug": "v27-docs-audit-coverage-contracts",
|
|
12
|
+
"branch_name": "feature/QUIVER-27-00-v27-docs-audit-coverage-contracts"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"README_FOR_AI.md",
|
|
16
|
+
"ROADMAP.md",
|
|
17
|
+
"CHANGELOG.md",
|
|
18
|
+
"specs/quiver-v27-reliability-ai-workflow-hardening/**"
|
|
19
|
+
],
|
|
20
|
+
"expected_read_paths": [
|
|
21
|
+
"README_FOR_AI.md",
|
|
22
|
+
"ROADMAP.md",
|
|
23
|
+
"BACKLOG.md",
|
|
24
|
+
"CHANGELOG.md",
|
|
25
|
+
"specs/quiver-v24-dx-onboarding-hardening/**",
|
|
26
|
+
"specs/quiver-v25-ai-first-lifecycle-orchestrator/**",
|
|
27
|
+
"specs/quiver-v26-0121-smoke-hardening/**",
|
|
28
|
+
"src/create-quiver/**",
|
|
29
|
+
"tests/**"
|
|
30
|
+
],
|
|
31
|
+
"allowed_write_paths": [
|
|
32
|
+
"README_FOR_AI.md",
|
|
33
|
+
"ROADMAP.md",
|
|
34
|
+
"CHANGELOG.md",
|
|
35
|
+
"specs/quiver-v27-reliability-ai-workflow-hardening/**"
|
|
36
|
+
],
|
|
37
|
+
"depends_on": [],
|
|
38
|
+
"parallel_safe": "no",
|
|
39
|
+
"parallel_safe_reason": "slice-00 is the mandatory documentary foundation and must land before implementation slices.",
|
|
40
|
+
"must": [
|
|
41
|
+
"Create or refine the v27 planning package.",
|
|
42
|
+
"Map QP-001..QP-019 and QIS-001..QIS-022 to slices and validations.",
|
|
43
|
+
"Audit v24/v25/v26 docs and code for already implemented, partial, broken, or missing behavior.",
|
|
44
|
+
"Define cross-command production contracts.",
|
|
45
|
+
"Avoid product code changes."
|
|
46
|
+
],
|
|
47
|
+
"not_included": [
|
|
48
|
+
"Changing CLI behavior.",
|
|
49
|
+
"Adding tests beyond documentation validation.",
|
|
50
|
+
"Publishing npm.",
|
|
51
|
+
"Opening a PR."
|
|
52
|
+
],
|
|
53
|
+
"acceptance": [
|
|
54
|
+
"The v27 spec folder exists with SPEC.md, STATUS.md, EXECUTION_PLAN.md, EVIDENCE_REPORT.md, pr.md, and all slice folders.",
|
|
55
|
+
"Every QP/QIS is assigned to at least one slice or explicitly marked covered by existing implementation with evidence.",
|
|
56
|
+
"Command contracts for exit codes, stdout/stderr, dry-run, write class, idempotency, atomic writes, path safety, root detection, package managers, deterministic ordering, and legacy/strict behavior are documented.",
|
|
57
|
+
"README_FOR_AI.md, ROADMAP.md, and CHANGELOG.md do not contradict the current v27 planned state.",
|
|
58
|
+
"No product code is modified."
|
|
59
|
+
],
|
|
60
|
+
"tests": [
|
|
61
|
+
"git diff --check",
|
|
62
|
+
"find specs/quiver-v27-reliability-ai-workflow-hardening -name \"slice.json\" -print -exec node -e \"JSON.parse(require('fs').readFileSync(process.argv[1], 'utf8'))\" {} \\;",
|
|
63
|
+
"npx create-quiver check-handoff specs/quiver-v27-reliability-ai-workflow-hardening/slices/slice-00-docs-audit-coverage-and-contracts/EXECUTION_BRIEF.md",
|
|
64
|
+
"npx create-quiver check-handoff specs/quiver-v27-reliability-ai-workflow-hardening/slices/slice-00-docs-audit-coverage-and-contracts/CLOSURE_BRIEF.md"
|
|
65
|
+
],
|
|
66
|
+
"validation_hints": [
|
|
67
|
+
"Use git diff to confirm the slice is documentation-only.",
|
|
68
|
+
"Do not copy unsanitized Pixel Quiver absolute paths into fixtures."
|
|
69
|
+
],
|
|
70
|
+
"estimated_hours": 3,
|
|
71
|
+
"actual_hours": 3,
|
|
72
|
+
"status": "completed",
|
|
73
|
+
"completed_at": "2026-05-24T13:38:42Z",
|
|
74
|
+
"blocked_reason": null
|
|
75
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# CLOSURE BRIEF - slice-01: Core state resolver and canonical statuses
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
Implemented the shared resolver foundation for Quiver lifecycle state.
|
|
6
|
+
|
|
7
|
+
Classic commands and AI lifecycle surfaces now share a resolver layer for slice discovery, scoped reads, canonical status normalization, deterministic ordering, completed-slice filtering, graph summaries, and progress calculations.
|
|
8
|
+
|
|
9
|
+
## Validation Against Acceptance Criteria
|
|
10
|
+
|
|
11
|
+
- Classic `plan` and `graph` commands now resolve slices through `project-state-resolver`.
|
|
12
|
+
- AI lifecycle export/list/inspect state now resolves slices through the same resolver.
|
|
13
|
+
- Completed slices are visible when `includeCompleted` or `--include-completed` is requested.
|
|
14
|
+
- Scoped reads continue to avoid parsing unrelated historical specs.
|
|
15
|
+
- Status aliases are normalized through a shared canonical catalog while preserving legacy `status` fields for compatibility.
|
|
16
|
+
- Existing behavior for plan, graph, next, doctor, and AI export/list/inspect remains covered by tests.
|
|
17
|
+
|
|
18
|
+
## Changes
|
|
19
|
+
|
|
20
|
+
- Added `src/create-quiver/lib/statuses.js`.
|
|
21
|
+
- Added `src/create-quiver/lib/project-state-resolver.js`.
|
|
22
|
+
- Updated `src/create-quiver/commands/plan.js`.
|
|
23
|
+
- Updated `src/create-quiver/commands/graph.js`.
|
|
24
|
+
- Updated `src/create-quiver/lib/ai/export-state.js`.
|
|
25
|
+
- Added `tests/lib/project-state-resolver.test.js`.
|
|
26
|
+
- Updated v27 evidence, status, and spec docs.
|
|
27
|
+
|
|
28
|
+
## Remaining Risks
|
|
29
|
+
|
|
30
|
+
- `flow` and deeper doctor next-step logic still have command-specific state logic; their full hardening remains assigned to `slice-07`.
|
|
31
|
+
- The public JSON export schema is not finalized in this slice; `slice-02` owns that contract.
|
|
32
|
+
- Worktree state is not yet unified through the resolver; `slice-05` owns persistent worktree lifecycle behavior.
|
|
33
|
+
|
|
34
|
+
## Follow-up Recommendations
|
|
35
|
+
|
|
36
|
+
- Execute `slice-02-json-export-contract-and-machine-output` next to stabilize the machine-readable export contract over the resolver.
|
|
37
|
+
- Keep `status` fields backward compatible and expose canonical state through additive fields until a migration is explicitly approved.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# EXECUTION BRIEF - slice-01: Core state resolver and canonical statuses
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
Pixel Quiver showed that classic commands and AI commands can disagree about specs/slices, especially completed slices. This slice creates the shared model that later export, spec create, validation, and DX work depends on.
|
|
6
|
+
|
|
7
|
+
## Objective
|
|
8
|
+
|
|
9
|
+
Implement a shared internal resolver and canonical status model.
|
|
10
|
+
|
|
11
|
+
## Scope
|
|
12
|
+
|
|
13
|
+
- Resolver/state code under `src/create-quiver/lib/**`
|
|
14
|
+
- Command adapters that currently discover specs/slices independently
|
|
15
|
+
- Tests and fixtures for state discovery
|
|
16
|
+
- v27 evidence/status docs
|
|
17
|
+
|
|
18
|
+
## Acceptance Criteria
|
|
19
|
+
|
|
20
|
+
- Classic and AI commands can resolve the same specs/slices from the same underlying model.
|
|
21
|
+
- Completed slices are included when explicitly requested.
|
|
22
|
+
- Scoped reads do not parse unrelated specs unnecessarily.
|
|
23
|
+
- Status values are normalized and deterministic.
|
|
24
|
+
- Existing command contracts are preserved or explicitly documented.
|
|
25
|
+
|
|
26
|
+
## Technical Plan Summary
|
|
27
|
+
|
|
28
|
+
Extract or introduce a resolver module, route affected commands through it, add fixtures for mixed states, and test deterministic output.
|
|
29
|
+
|
|
30
|
+
## Suggested Execution Steps
|
|
31
|
+
|
|
32
|
+
1. Identify all spec/slice discovery implementations.
|
|
33
|
+
2. Design the internal model and canonical statuses.
|
|
34
|
+
3. Refactor command adapters incrementally.
|
|
35
|
+
4. Add tests for completed/draft/multiple-spec/scoped cases.
|
|
36
|
+
5. Update evidence and status.
|
|
37
|
+
|
|
38
|
+
## Restrictions
|
|
39
|
+
|
|
40
|
+
- Do not change public JSON schema in this slice unless required for compatibility.
|
|
41
|
+
- Do not implement spec create parsing here.
|
|
42
|
+
|
|
43
|
+
## Risks
|
|
44
|
+
|
|
45
|
+
- Broad resolver changes can regress many commands; keep adapters small and tested.
|
|
46
|
+
|
|
47
|
+
## Completion Checklist
|
|
48
|
+
|
|
49
|
+
- [ ] Shared resolver implemented.
|
|
50
|
+
- [ ] Canonical statuses documented in code/tests.
|
|
51
|
+
- [ ] Classic and AI commands covered by tests.
|
|
52
|
+
- [ ] Scoped behavior covered.
|
|
53
|
+
- [ ] Validation commands passed.
|
|
54
|
+
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slice_id": "slice-01-core-state-resolver-and-canonical-statuses",
|
|
3
|
+
"ticket": "QUIVER-27-01",
|
|
4
|
+
"type": "implementation",
|
|
5
|
+
"title": "Core state resolver and canonical statuses",
|
|
6
|
+
"objective": "Create a shared internal resolver and canonical status model used by classic and AI commands.",
|
|
7
|
+
"description": "Unifies spec, slice, run, approval, agent, evidence, worktree, status, source metadata, root detection, and ordering behavior so commands stop disagreeing about project state.",
|
|
8
|
+
"git": {
|
|
9
|
+
"branch_type": "feature",
|
|
10
|
+
"base_branch": "main",
|
|
11
|
+
"branch_slug": "v27-core-state-resolver-canonical-statuses",
|
|
12
|
+
"branch_name": "feature/QUIVER-27-01-v27-core-state-resolver-canonical-statuses"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"src/create-quiver/lib/**",
|
|
16
|
+
"src/create-quiver/commands/**",
|
|
17
|
+
"tests/lib/**",
|
|
18
|
+
"tests/commands/**",
|
|
19
|
+
"specs/quiver-v27-reliability-ai-workflow-hardening/**"
|
|
20
|
+
],
|
|
21
|
+
"expected_read_paths": [
|
|
22
|
+
"src/create-quiver/lib/slice-graph.js",
|
|
23
|
+
"src/create-quiver/lib/ai/export-state.js",
|
|
24
|
+
"src/create-quiver/lib/doctor.js",
|
|
25
|
+
"src/create-quiver/commands/plan.js",
|
|
26
|
+
"src/create-quiver/commands/graph.js",
|
|
27
|
+
"src/create-quiver/commands/next.js",
|
|
28
|
+
"src/create-quiver/commands/ai.js",
|
|
29
|
+
"tests/lib/ai-export-state.test.js",
|
|
30
|
+
"tests/commands/ai-export.test.js",
|
|
31
|
+
"tests/commands/plan.test.js",
|
|
32
|
+
"tests/commands/doctor.test.js"
|
|
33
|
+
],
|
|
34
|
+
"allowed_write_paths": [
|
|
35
|
+
"src/create-quiver/lib/**",
|
|
36
|
+
"src/create-quiver/commands/**",
|
|
37
|
+
"tests/lib/**",
|
|
38
|
+
"tests/commands/**",
|
|
39
|
+
"specs/quiver-v27-reliability-ai-workflow-hardening/**"
|
|
40
|
+
],
|
|
41
|
+
"depends_on": [
|
|
42
|
+
"slice-00-docs-audit-coverage-and-contracts"
|
|
43
|
+
],
|
|
44
|
+
"parallel_safe": "no",
|
|
45
|
+
"parallel_safe_reason": "This slice defines shared contracts consumed by later slices.",
|
|
46
|
+
"must": [
|
|
47
|
+
"Define canonical statuses for specs, slices, runs, approvals, agents, and datasets.",
|
|
48
|
+
"Expose a shared resolver for classic and AI commands.",
|
|
49
|
+
"Support scoped reads with --spec without parsing unrelated historical specs unnecessarily.",
|
|
50
|
+
"Return deterministic ordering.",
|
|
51
|
+
"Preserve compatibility for existing commands."
|
|
52
|
+
],
|
|
53
|
+
"not_included": [
|
|
54
|
+
"Public JSON export schema changes beyond resolver plumbing.",
|
|
55
|
+
"Spec create parsing changes.",
|
|
56
|
+
"Worktree lifecycle changes."
|
|
57
|
+
],
|
|
58
|
+
"acceptance": [
|
|
59
|
+
"Classic and AI command tests share the same state resolver or a documented adapter over it.",
|
|
60
|
+
"Completed slices are visible when includeCompleted/include-completed is requested.",
|
|
61
|
+
"Scoped reads avoid unrelated specs where possible.",
|
|
62
|
+
"Status values are normalized through one canonical catalog.",
|
|
63
|
+
"Existing plan, graph, next, doctor, ai inspect, and ai list behavior remains compatible."
|
|
64
|
+
],
|
|
65
|
+
"tests": [
|
|
66
|
+
"node --test tests/lib/*resolver*.test.js tests/lib/ai-export-state.test.js tests/commands/ai-export.test.js tests/commands/plan.test.js tests/commands/graph.test.js tests/commands/doctor.test.js",
|
|
67
|
+
"npm run smoke:doctor-fixtures",
|
|
68
|
+
"git diff --check"
|
|
69
|
+
],
|
|
70
|
+
"validation_hints": [
|
|
71
|
+
"Add fixtures for multiple specs with completed and draft slices.",
|
|
72
|
+
"Assert ordering is stable across runs."
|
|
73
|
+
],
|
|
74
|
+
"estimated_hours": 6,
|
|
75
|
+
"actual_hours": 6,
|
|
76
|
+
"status": "completed",
|
|
77
|
+
"completed_at": "2026-05-24T13:48:34Z",
|
|
78
|
+
"blocked_reason": null
|
|
79
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# CLOSURE BRIEF - slice-02: JSON export contract and machine output
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
Implemented the v27 machine-readable lifecycle export contract.
|
|
6
|
+
|
|
7
|
+
`ai export --format json` now emits schema v2 lifecycle data with source metadata, warnings, approvals, blockers, evidence, next steps, lifecycle details, aggregates, and canonical statuses while preserving existing fields for compatibility.
|
|
8
|
+
|
|
9
|
+
## Validation Against Acceptance Criteria
|
|
10
|
+
|
|
11
|
+
- `ai export --format json` emits parseable JSON only on stdout.
|
|
12
|
+
- Successful JSON export keeps stderr empty.
|
|
13
|
+
- Unsupported formats fail non-zero and write the actionable error to stderr.
|
|
14
|
+
- Completed slices are exported when `--include-completed` is used.
|
|
15
|
+
- Export includes source metadata, warnings, aggregates, approvals, blockers, evidence, next steps, lifecycle, specs, slices, agents, and runs.
|
|
16
|
+
- Arrays used by specs, slices, evidence, and resolver-backed state remain deterministically ordered by existing resolver ordering.
|
|
17
|
+
|
|
18
|
+
## Changes
|
|
19
|
+
|
|
20
|
+
- Updated `src/create-quiver/lib/ai/export-state.js`.
|
|
21
|
+
- Updated `tests/lib/ai-export-state.test.js`.
|
|
22
|
+
- Updated `tests/commands/ai-export.test.js`.
|
|
23
|
+
- Updated v27 spec status, execution plan, evidence, and this closure brief.
|
|
24
|
+
|
|
25
|
+
## Remaining Risks
|
|
26
|
+
|
|
27
|
+
- The export contract is additive, but downstream users that hard-code `schema_version: 1` will need to accept schema v2.
|
|
28
|
+
- The schema is asserted by tests, but there is not yet a separate JSON Schema artifact; that can be added in a later hardening slice if needed.
|
|
29
|
+
- Some approval and evidence fields may remain empty in projects that have not used the AI lifecycle yet.
|
|
30
|
+
|
|
31
|
+
## Follow-up Recommendations
|
|
32
|
+
|
|
33
|
+
- Execute `slice-03-approved-plan-to-spec-create` next because it depends on stable resolver/export behavior.
|
|
34
|
+
- Keep any future export changes additive unless a new schema version and migration note are explicitly added.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# EXECUTION BRIEF - slice-02: JSON export contract and machine output
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
Pixel Quiver could not consume `ai export --format json` directly because the output schema did not match dashboard needs and completed slices were missing in some states. This slice stabilizes machine output.
|
|
6
|
+
|
|
7
|
+
## Objective
|
|
8
|
+
|
|
9
|
+
Implement a stable, versioned JSON export contract and align AI export behavior with it.
|
|
10
|
+
|
|
11
|
+
## Scope
|
|
12
|
+
|
|
13
|
+
- Export resolver/adapters
|
|
14
|
+
- CLI format handling
|
|
15
|
+
- JSON schema fixtures/tests
|
|
16
|
+
- v27 evidence/status docs
|
|
17
|
+
|
|
18
|
+
## Acceptance Criteria
|
|
19
|
+
|
|
20
|
+
- `--format json` emits parseable JSON only on stdout.
|
|
21
|
+
- Export includes the required state, source metadata, warnings, and aggregates.
|
|
22
|
+
- Completed slices appear with `--include-completed`.
|
|
23
|
+
- Errors go to stderr and exit non-zero.
|
|
24
|
+
- Arrays are deterministically ordered.
|
|
25
|
+
|
|
26
|
+
## Technical Plan Summary
|
|
27
|
+
|
|
28
|
+
Define schema, serialize from the shared resolver, align `ai export`, and add CLI parse tests.
|
|
29
|
+
|
|
30
|
+
## Suggested Execution Steps
|
|
31
|
+
|
|
32
|
+
1. Define export payload shape and schema version.
|
|
33
|
+
2. Implement serializer over the shared resolver.
|
|
34
|
+
3. Align `ai export` and/or add `export-specs`.
|
|
35
|
+
4. Add valid/invalid fixtures and CLI tests.
|
|
36
|
+
5. Update docs/evidence.
|
|
37
|
+
|
|
38
|
+
## Restrictions
|
|
39
|
+
|
|
40
|
+
- Do not add dashboard UI.
|
|
41
|
+
- Do not mix human logs into JSON stdout.
|
|
42
|
+
|
|
43
|
+
## Risks
|
|
44
|
+
|
|
45
|
+
- Existing consumers may rely on older `ai export`; preserve or document compatibility.
|
|
46
|
+
|
|
47
|
+
## Completion Checklist
|
|
48
|
+
|
|
49
|
+
- [ ] Schema implemented.
|
|
50
|
+
- [ ] CLI JSON parse tests added.
|
|
51
|
+
- [ ] Completed slice export covered.
|
|
52
|
+
- [ ] Error path covered.
|
|
53
|
+
- [ ] Validation commands passed.
|
|
54
|
+
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slice_id": "slice-02-json-export-contract-and-machine-output",
|
|
3
|
+
"ticket": "QUIVER-27-02",
|
|
4
|
+
"type": "implementation",
|
|
5
|
+
"title": "JSON export contract and machine output",
|
|
6
|
+
"objective": "Define and implement a stable JSON export contract for dashboards, agents, and machine consumers.",
|
|
7
|
+
"description": "Adds a versioned export schema, pure stdout JSON behavior, deterministic ordering, source metadata, partial/empty/invalid semantics, sanitized paths, and alignment between ai export and export-specs.",
|
|
8
|
+
"git": {
|
|
9
|
+
"branch_type": "feature",
|
|
10
|
+
"base_branch": "main",
|
|
11
|
+
"branch_slug": "v27-json-export-contract-machine-output",
|
|
12
|
+
"branch_name": "feature/QUIVER-27-02-v27-json-export-contract-machine-output"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"src/create-quiver/lib/**",
|
|
16
|
+
"src/create-quiver/commands/**",
|
|
17
|
+
"src/create-quiver/index.js",
|
|
18
|
+
"tests/lib/**",
|
|
19
|
+
"tests/commands/**",
|
|
20
|
+
"specs/quiver-v27-reliability-ai-workflow-hardening/**"
|
|
21
|
+
],
|
|
22
|
+
"expected_read_paths": [
|
|
23
|
+
"src/create-quiver/lib/ai/export-state.js",
|
|
24
|
+
"src/create-quiver/commands/ai.js",
|
|
25
|
+
"src/create-quiver/index.js",
|
|
26
|
+
"tests/lib/ai-export-state.test.js",
|
|
27
|
+
"tests/commands/ai-export.test.js"
|
|
28
|
+
],
|
|
29
|
+
"allowed_write_paths": [
|
|
30
|
+
"src/create-quiver/lib/**",
|
|
31
|
+
"src/create-quiver/commands/**",
|
|
32
|
+
"src/create-quiver/index.js",
|
|
33
|
+
"tests/lib/**",
|
|
34
|
+
"tests/commands/**",
|
|
35
|
+
"specs/quiver-v27-reliability-ai-workflow-hardening/**"
|
|
36
|
+
],
|
|
37
|
+
"depends_on": [
|
|
38
|
+
"slice-01-core-state-resolver-and-canonical-statuses"
|
|
39
|
+
],
|
|
40
|
+
"parallel_safe": "no",
|
|
41
|
+
"parallel_safe_reason": "Export contract depends on the shared state resolver and is consumed by later slices.",
|
|
42
|
+
"must": [
|
|
43
|
+
"Define schemaVersion and stable field names.",
|
|
44
|
+
"Ensure --format json writes JSON only to stdout.",
|
|
45
|
+
"Route warnings/errors to structured JSON fields or stderr as appropriate.",
|
|
46
|
+
"Include source metadata and completed slices with --include-completed.",
|
|
47
|
+
"Sanitize local paths where needed."
|
|
48
|
+
],
|
|
49
|
+
"not_included": [
|
|
50
|
+
"Dashboard UI implementation.",
|
|
51
|
+
"Provider execution.",
|
|
52
|
+
"Spec create parsing changes."
|
|
53
|
+
],
|
|
54
|
+
"acceptance": [
|
|
55
|
+
"JSON output parses with JSON.parse without cleanup.",
|
|
56
|
+
"Export includes specs, slices, agents, runs, approvals, blockers, evidence, next steps, lifecycle, aggregates, warnings, and source metadata.",
|
|
57
|
+
"Completed slices appear when --include-completed is used.",
|
|
58
|
+
"Human logs are not mixed into JSON stdout.",
|
|
59
|
+
"Unsupported formats fail with non-zero exit and stderr error."
|
|
60
|
+
],
|
|
61
|
+
"tests": [
|
|
62
|
+
"node --test tests/lib/ai-export-state.test.js tests/commands/ai-export.test.js",
|
|
63
|
+
"node --test tests/commands/cli-contract.test.js",
|
|
64
|
+
"git diff --check"
|
|
65
|
+
],
|
|
66
|
+
"validation_hints": [
|
|
67
|
+
"Add tests that run the CLI and parse stdout directly.",
|
|
68
|
+
"Assert deterministic ordering in exported arrays."
|
|
69
|
+
],
|
|
70
|
+
"estimated_hours": 5,
|
|
71
|
+
"actual_hours": 5,
|
|
72
|
+
"status": "completed",
|
|
73
|
+
"completed_at": "2026-05-24T13:54:36Z",
|
|
74
|
+
"blocked_reason": null
|
|
75
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# CLOSURE BRIEF - slice-03: Approved plan to spec create
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
Implemented strict approved-plan to spec generation.
|
|
6
|
+
|
|
7
|
+
`spec create` and the spec-phase generator now require structured slice data from the reviewed and approved technical plan. They preserve every approved implementation slice, generate the mandatory `slice-00-spec-foundation`, and fail before writing when the plan is not structurally safe.
|
|
8
|
+
|
|
9
|
+
## Validation Against Acceptance Criteria
|
|
10
|
+
|
|
11
|
+
- A plan with 8 approved implementation slices produces those 8 slices plus the mandatory `slice-00-spec-foundation`.
|
|
12
|
+
- Plans without a structured slices array fail before writing files.
|
|
13
|
+
- Duplicate slice IDs fail before writing files.
|
|
14
|
+
- Missing dependencies fail before writing files.
|
|
15
|
+
- Circular dependencies fail before writing files.
|
|
16
|
+
- Fenced JSON slice blocks inside Markdown plans are supported.
|
|
17
|
+
- Failed `spec create --dry-run` does not create a spec directory.
|
|
18
|
+
|
|
19
|
+
## Changes
|
|
20
|
+
|
|
21
|
+
- Updated `src/create-quiver/lib/ai/spec-generator.js`.
|
|
22
|
+
- Updated `src/create-quiver/lib/ai/spec-templates.js`.
|
|
23
|
+
- Updated `tests/lib/ai-spec-generator.test.js`.
|
|
24
|
+
- Updated `tests/commands/spec-create.test.js`.
|
|
25
|
+
- Updated v27 spec status, execution plan, evidence, and this closure brief.
|
|
26
|
+
|
|
27
|
+
## Remaining Risks
|
|
28
|
+
|
|
29
|
+
- Free-form technical plans without structured slice data now fail intentionally; users need to revise the planner prompt or add a fenced JSON slice block.
|
|
30
|
+
- The structured contract is currently documented through the error message and tests, not a standalone schema file.
|
|
31
|
+
- Generated spec execution is still not performed in this slice.
|
|
32
|
+
|
|
33
|
+
## Follow-up Recommendations
|
|
34
|
+
|
|
35
|
+
- Update planner prompts in later slices so technical plans always include the structured slice block.
|
|
36
|
+
- Execute `slice-04` and `slice-05` next; they can proceed in parallel only if write scopes remain independent.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# EXECUTION BRIEF - slice-03: Approved plan to spec create
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
Pixel Quiver showed that `spec create` can generate a generic two-slice scaffold instead of the approved multi-slice plan. That breaks the central WDD + SDD flow.
|
|
6
|
+
|
|
7
|
+
## Objective
|
|
8
|
+
|
|
9
|
+
Make `spec create` faithful to the approved technical plan and safe on parse failure.
|
|
10
|
+
|
|
11
|
+
## Scope
|
|
12
|
+
|
|
13
|
+
- Spec generator
|
|
14
|
+
- Approval metadata handling
|
|
15
|
+
- Spec templates
|
|
16
|
+
- Command tests and fixtures
|
|
17
|
+
- v27 evidence/status docs
|
|
18
|
+
|
|
19
|
+
## Acceptance Criteria
|
|
20
|
+
|
|
21
|
+
- `spec create` uses an explicitly approved technical plan version.
|
|
22
|
+
- Approved slice count, IDs, dependencies, handoffs, execution plan, and PR body are generated.
|
|
23
|
+
- Missing/invalid structured slice data fails before writing.
|
|
24
|
+
- Generic fallback scaffolds are not created silently.
|
|
25
|
+
- Failed runs do not leave empty remnant directories.
|
|
26
|
+
|
|
27
|
+
## Technical Plan Summary
|
|
28
|
+
|
|
29
|
+
Add structured plan extraction/validation, atomic writes, safe failure handling, and regression tests based on the Pixel Quiver failure.
|
|
30
|
+
|
|
31
|
+
## Suggested Execution Steps
|
|
32
|
+
|
|
33
|
+
1. Inspect current spec generator and approval selection.
|
|
34
|
+
2. Define the structured slice block contract.
|
|
35
|
+
3. Implement validation and atomic write flow.
|
|
36
|
+
4. Add tests for good plan, missing structure, duplicates, circular dependencies, dry-run, and failure cleanup.
|
|
37
|
+
5. Update docs/evidence.
|
|
38
|
+
|
|
39
|
+
## Restrictions
|
|
40
|
+
|
|
41
|
+
- Do not execute generated slices.
|
|
42
|
+
- Do not open PRs.
|
|
43
|
+
|
|
44
|
+
## Risks
|
|
45
|
+
|
|
46
|
+
- Existing free-form plans may need compatibility guidance or migration.
|
|
47
|
+
|
|
48
|
+
## Completion Checklist
|
|
49
|
+
|
|
50
|
+
- [ ] Structured block contract implemented.
|
|
51
|
+
- [ ] Generic fallback removed or made explicit error.
|
|
52
|
+
- [ ] Atomic write behavior covered.
|
|
53
|
+
- [ ] Regression fixture added.
|
|
54
|
+
- [ ] Validation commands passed.
|
|
55
|
+
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slice_id": "slice-03-approved-plan-to-spec-create",
|
|
3
|
+
"ticket": "QUIVER-27-03",
|
|
4
|
+
"type": "implementation",
|
|
5
|
+
"title": "Approved plan to spec create",
|
|
6
|
+
"objective": "Make spec create generate the approved spec/slices/handoffs from a reviewed and approved technical plan, or fail safely before writing.",
|
|
7
|
+
"description": "Prevents generic fallback scaffolds by requiring structured slice data from the approved plan, validating slice IDs/dependencies/slice-00/handoffs, using atomic writes, and cleaning up safely.",
|
|
8
|
+
"git": {
|
|
9
|
+
"branch_type": "feature",
|
|
10
|
+
"base_branch": "main",
|
|
11
|
+
"branch_slug": "v27-approved-plan-to-spec-create",
|
|
12
|
+
"branch_name": "feature/QUIVER-27-03-v27-approved-plan-to-spec-create"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"src/create-quiver/lib/ai/spec-generator.js",
|
|
16
|
+
"src/create-quiver/lib/ai/spec-templates.js",
|
|
17
|
+
"src/create-quiver/lib/approvals.js",
|
|
18
|
+
"src/create-quiver/commands/spec.js",
|
|
19
|
+
"tests/lib/ai-spec-generator.test.js",
|
|
20
|
+
"tests/commands/spec-create.test.js",
|
|
21
|
+
"specs/quiver-v27-reliability-ai-workflow-hardening/**"
|
|
22
|
+
],
|
|
23
|
+
"expected_read_paths": [
|
|
24
|
+
"src/create-quiver/lib/ai/spec-generator.js",
|
|
25
|
+
"src/create-quiver/lib/ai/spec-templates.js",
|
|
26
|
+
"src/create-quiver/lib/approvals.js",
|
|
27
|
+
"tests/lib/ai-spec-generator.test.js",
|
|
28
|
+
"tests/commands/spec-create.test.js"
|
|
29
|
+
],
|
|
30
|
+
"allowed_write_paths": [
|
|
31
|
+
"src/create-quiver/lib/ai/spec-generator.js",
|
|
32
|
+
"src/create-quiver/lib/ai/spec-templates.js",
|
|
33
|
+
"src/create-quiver/lib/approvals.js",
|
|
34
|
+
"src/create-quiver/commands/spec.js",
|
|
35
|
+
"tests/lib/ai-spec-generator.test.js",
|
|
36
|
+
"tests/commands/spec-create.test.js",
|
|
37
|
+
"specs/quiver-v27-reliability-ai-workflow-hardening/**"
|
|
38
|
+
],
|
|
39
|
+
"depends_on": [
|
|
40
|
+
"slice-01-core-state-resolver-and-canonical-statuses",
|
|
41
|
+
"slice-02-json-export-contract-and-machine-output"
|
|
42
|
+
],
|
|
43
|
+
"parallel_safe": "no",
|
|
44
|
+
"parallel_safe_reason": "Spec generation depends on shared state/export contracts and affects core workflow.",
|
|
45
|
+
"must": [
|
|
46
|
+
"Use explicitly approved technical plan metadata.",
|
|
47
|
+
"Require or extract a structured slice block.",
|
|
48
|
+
"Generate slice-00 and every approved slice.",
|
|
49
|
+
"Create SPEC.md, STATUS.md, EVIDENCE_REPORT.md, EXECUTION_PLAN.md, pr.md, slice.json, EXECUTION_BRIEF.md, and CLOSURE_BRIEF.md.",
|
|
50
|
+
"Fail before writing if the plan cannot be parsed.",
|
|
51
|
+
"Use atomic writes and avoid empty scaffold remnants."
|
|
52
|
+
],
|
|
53
|
+
"not_included": [
|
|
54
|
+
"Changing AI provider prompts except where needed for structured output.",
|
|
55
|
+
"Executing generated slices.",
|
|
56
|
+
"Opening PRs."
|
|
57
|
+
],
|
|
58
|
+
"acceptance": [
|
|
59
|
+
"Given a plan with 8 approved slices, spec create creates 8 slices plus required artifacts.",
|
|
60
|
+
"Given no structured slice block, spec create fails without writing files.",
|
|
61
|
+
"Given duplicate IDs or circular dependencies, spec create fails before writing.",
|
|
62
|
+
"Generated names are derived from requirement/spec metadata and not generic approved placeholders.",
|
|
63
|
+
"No empty generic scaffold directories remain after failure or regeneration."
|
|
64
|
+
],
|
|
65
|
+
"tests": [
|
|
66
|
+
"node --test tests/lib/ai-spec-generator.test.js tests/commands/spec-create.test.js",
|
|
67
|
+
"git diff --check"
|
|
68
|
+
],
|
|
69
|
+
"validation_hints": [
|
|
70
|
+
"Test dry-run and real-run behavior.",
|
|
71
|
+
"Compare git status before/after failed spec create."
|
|
72
|
+
],
|
|
73
|
+
"estimated_hours": 6,
|
|
74
|
+
"actual_hours": 6,
|
|
75
|
+
"status": "completed",
|
|
76
|
+
"completed_at": "2026-05-24T14:00:33Z",
|
|
77
|
+
"blocked_reason": null
|
|
78
|
+
}
|