create-quiver 0.13.0 → 0.14.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 +19 -0
- package/README.md +9 -2
- package/README_FOR_AI.md +4 -0
- package/ROADMAP.md +6 -0
- package/docs/COMMANDS.md.template +3 -1
- package/docs/TROUBLESHOOTING.md.template +29 -0
- package/docs/WORKFLOW.md.template +13 -12
- package/package.json +1 -1
- package/specs/quiver-v28-pixel-quiver-feedback-reconciliation/COVERAGE_MATRIX.md +117 -0
- package/specs/quiver-v28-pixel-quiver-feedback-reconciliation/EVIDENCE_REPORT.md +200 -0
- package/specs/quiver-v28-pixel-quiver-feedback-reconciliation/EXECUTION_PLAN.md +60 -0
- package/specs/quiver-v28-pixel-quiver-feedback-reconciliation/SPEC.md +132 -0
- package/specs/quiver-v28-pixel-quiver-feedback-reconciliation/STATUS.md +36 -0
- package/specs/quiver-v28-pixel-quiver-feedback-reconciliation/pr.md +128 -0
- package/specs/quiver-v28-pixel-quiver-feedback-reconciliation/slices/slice-00-reconciliation-and-evidence-freeze/CLOSURE_BRIEF.md +44 -0
- package/specs/quiver-v28-pixel-quiver-feedback-reconciliation/slices/slice-00-reconciliation-and-evidence-freeze/EXECUTION_BRIEF.md +56 -0
- package/specs/quiver-v28-pixel-quiver-feedback-reconciliation/slices/slice-00-reconciliation-and-evidence-freeze/slice.json +71 -0
- package/specs/quiver-v28-pixel-quiver-feedback-reconciliation/slices/slice-01-ai-run-state-approvals-and-clean-output/CLOSURE_BRIEF.md +38 -0
- package/specs/quiver-v28-pixel-quiver-feedback-reconciliation/slices/slice-01-ai-run-state-approvals-and-clean-output/EXECUTION_BRIEF.md +53 -0
- package/specs/quiver-v28-pixel-quiver-feedback-reconciliation/slices/slice-01-ai-run-state-approvals-and-clean-output/slice.json +83 -0
- package/specs/quiver-v28-pixel-quiver-feedback-reconciliation/slices/slice-02-structured-technical-plan-contract-and-repair-flow/CLOSURE_BRIEF.md +33 -0
- package/specs/quiver-v28-pixel-quiver-feedback-reconciliation/slices/slice-02-structured-technical-plan-contract-and-repair-flow/EXECUTION_BRIEF.md +53 -0
- package/specs/quiver-v28-pixel-quiver-feedback-reconciliation/slices/slice-02-structured-technical-plan-contract-and-repair-flow/slice.json +85 -0
- package/specs/quiver-v28-pixel-quiver-feedback-reconciliation/slices/slice-03-active-slice-reconciliation-and-ai-inspect/CLOSURE_BRIEF.md +34 -0
- package/specs/quiver-v28-pixel-quiver-feedback-reconciliation/slices/slice-03-active-slice-reconciliation-and-ai-inspect/EXECUTION_BRIEF.md +52 -0
- package/specs/quiver-v28-pixel-quiver-feedback-reconciliation/slices/slice-03-active-slice-reconciliation-and-ai-inspect/slice.json +82 -0
- package/specs/quiver-v28-pixel-quiver-feedback-reconciliation/slices/slice-04-spec-validation-scope-and-worktree-reliability/CLOSURE_BRIEF.md +32 -0
- package/specs/quiver-v28-pixel-quiver-feedback-reconciliation/slices/slice-04-spec-validation-scope-and-worktree-reliability/EXECUTION_BRIEF.md +55 -0
- package/specs/quiver-v28-pixel-quiver-feedback-reconciliation/slices/slice-04-spec-validation-scope-and-worktree-reliability/slice.json +85 -0
- package/specs/quiver-v28-pixel-quiver-feedback-reconciliation/slices/slice-05-review-plan-closure-and-agent-dx/CLOSURE_BRIEF.md +35 -0
- package/specs/quiver-v28-pixel-quiver-feedback-reconciliation/slices/slice-05-review-plan-closure-and-agent-dx/EXECUTION_BRIEF.md +59 -0
- package/specs/quiver-v28-pixel-quiver-feedback-reconciliation/slices/slice-05-review-plan-closure-and-agent-dx/slice.json +94 -0
- package/specs/quiver-v28-pixel-quiver-feedback-reconciliation/slices/slice-06-backward-compatibility-docs-and-release-readiness/CLOSURE_BRIEF.md +40 -0
- package/specs/quiver-v28-pixel-quiver-feedback-reconciliation/slices/slice-06-backward-compatibility-docs-and-release-readiness/EXECUTION_BRIEF.md +56 -0
- package/specs/quiver-v28-pixel-quiver-feedback-reconciliation/slices/slice-06-backward-compatibility-docs-and-release-readiness/slice.json +98 -0
- package/src/create-quiver/commands/ai.js +481 -14
- package/src/create-quiver/commands/spec.js +10 -0
- package/src/create-quiver/index.js +42 -4
- package/src/create-quiver/lib/ai/context-packs.js +2 -2
- package/src/create-quiver/lib/ai/export-state.js +52 -5
- package/src/create-quiver/lib/ai/github.js +14 -2
- package/src/create-quiver/lib/ai/plan-review.js +159 -0
- package/src/create-quiver/lib/ai/run-state.js +17 -2
- package/src/create-quiver/lib/ai/spec-generator.js +15 -0
- package/src/create-quiver/lib/project-state-resolver.js +195 -1
- package/src/create-quiver/lib/spec-worktrees.js +50 -2
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# CLOSURE BRIEF - slice-02: Structured technical plan contract and repair flow
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
Completed the structured technical-plan contract and repair flow. Technical plans now explicitly prompt for `spec.slices[]`, approval blocks invalid technical-plan drafts before writing `approved.md`, and legacy approved plans missing structure can be repaired into a new draft with `ai repair-plan` while preserving the original approved artifact.
|
|
6
|
+
|
|
7
|
+
## Validation
|
|
8
|
+
|
|
9
|
+
Passed:
|
|
10
|
+
|
|
11
|
+
- `node --test tests/commands/ai-plan.test.js tests/commands/ai-plan-spec-phase.test.js tests/commands/spec-create.test.js`
|
|
12
|
+
- `node --test tests/commands/ai-review-plan.test.js tests/commands/flow.test.js tests/commands/cli-contract.test.js`
|
|
13
|
+
- `node --test tests/lib/ai-spec-generator.test.js tests/lib/approvals.test.js`
|
|
14
|
+
|
|
15
|
+
## Relevant Changes
|
|
16
|
+
|
|
17
|
+
- `src/create-quiver/commands/ai.js` now validates technical-plan drafts before approval and implements `ai repair-plan`.
|
|
18
|
+
- `src/create-quiver/lib/ai/spec-generator.js` exposes a shared technical-plan contract validator.
|
|
19
|
+
- `src/create-quiver/index.js` registers and documents `ai repair-plan`.
|
|
20
|
+
- `tests/commands/ai-plan.test.js` covers approval blocking, repair dry-run, repair execution, and approved artifact preservation.
|
|
21
|
+
- Existing spec generation and flow tests were updated to use valid structured technical plans when approval is expected.
|
|
22
|
+
|
|
23
|
+
## Pending Work
|
|
24
|
+
|
|
25
|
+
None for this slice.
|
|
26
|
+
|
|
27
|
+
## Remaining Risks
|
|
28
|
+
|
|
29
|
+
- `ai repair-plan` depends on provider output quality. Invalid repair output is rejected and raw evidence is preserved, but no draft is written until the provider returns a valid structured contract.
|
|
30
|
+
|
|
31
|
+
## Future Recommendations
|
|
32
|
+
|
|
33
|
+
- Consider adding machine-readable repair metadata to `ai inspect` once slice-03 reconciles lifecycle state.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# EXECUTION BRIEF - slice-02: Structured technical plan contract and repair flow
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
Pixel Quiver reached an approved technical plan but `spec create` failed because the plan lacked a structured `spec.slices[]` array.
|
|
6
|
+
|
|
7
|
+
## Objective
|
|
8
|
+
|
|
9
|
+
Make the structured technical-plan contract explicit, validated, and repairable before spec creation.
|
|
10
|
+
|
|
11
|
+
## Scope
|
|
12
|
+
|
|
13
|
+
- Technical-plan prompts and validation.
|
|
14
|
+
- Spec generation from approved plans.
|
|
15
|
+
- Approval repair path.
|
|
16
|
+
- Tests for valid, invalid, missing, and repaired structures.
|
|
17
|
+
|
|
18
|
+
## Acceptance Criteria
|
|
19
|
+
|
|
20
|
+
- Missing `spec.slices[]` is caught before writing spec files.
|
|
21
|
+
- A valid plan creates the intended spec package.
|
|
22
|
+
- A repair flow creates a derived draft without mutating the approved artifact.
|
|
23
|
+
- Repaired drafts require review and approval.
|
|
24
|
+
|
|
25
|
+
## Technical Plan Summary
|
|
26
|
+
|
|
27
|
+
Add a formal minimum contract for `spec.slices[]`, validate it at approval/spec creation boundaries, and add a repair command or flow that preserves auditability.
|
|
28
|
+
|
|
29
|
+
## Suggested Execution Steps
|
|
30
|
+
|
|
31
|
+
1. Read final `slice-00` assignments.
|
|
32
|
+
2. Add failing tests for missing `spec.slices[]`.
|
|
33
|
+
3. Add schema/contract validation.
|
|
34
|
+
4. Add repair flow.
|
|
35
|
+
5. Validate dry-run no-write behavior.
|
|
36
|
+
|
|
37
|
+
## Restrictions
|
|
38
|
+
|
|
39
|
+
- Do not loosen approval gates.
|
|
40
|
+
- Do not generate fallback generic slices silently.
|
|
41
|
+
- Do not publish npm.
|
|
42
|
+
|
|
43
|
+
## Risks
|
|
44
|
+
|
|
45
|
+
- Planner output can vary; validation must produce helpful errors without requiring fragile formatting beyond the explicit contract.
|
|
46
|
+
|
|
47
|
+
## Completion Checklist
|
|
48
|
+
|
|
49
|
+
- [ ] Contract tests pass.
|
|
50
|
+
- [ ] Repair tests pass.
|
|
51
|
+
- [ ] Spec-create invalid input writes no files.
|
|
52
|
+
- [ ] Closure evidence updated.
|
|
53
|
+
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slice_id": "slice-02-structured-technical-plan-contract-and-repair-flow",
|
|
3
|
+
"ticket": "QUIVER-28-02",
|
|
4
|
+
"type": "feature",
|
|
5
|
+
"title": "Structured technical plan contract and repair flow",
|
|
6
|
+
"objective": "Require a parseable technical-plan slice contract before spec creation and provide a safe repair path for approved plans with missing structure.",
|
|
7
|
+
"description": "Prevents spec creation from failing after human approval by validating `spec.slices[]` before approval/spec creation and by allowing a traceable derived repair draft.",
|
|
8
|
+
"git": {
|
|
9
|
+
"branch_type": "feature",
|
|
10
|
+
"base_branch": "main",
|
|
11
|
+
"branch_slug": "v28-structured-plan-contract-repair-flow",
|
|
12
|
+
"branch_name": "feature/QUIVER-28-02-v28-structured-plan-contract-repair-flow"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"src/create-quiver/commands/ai.js",
|
|
16
|
+
"src/create-quiver/commands/spec.js",
|
|
17
|
+
"src/create-quiver/lib/ai/prompts.js",
|
|
18
|
+
"src/create-quiver/lib/ai/spec-generator.js",
|
|
19
|
+
"src/create-quiver/lib/ai/spec-templates.js",
|
|
20
|
+
"src/create-quiver/lib/approvals.js",
|
|
21
|
+
"tests/commands/ai-plan.test.js",
|
|
22
|
+
"tests/commands/ai-plan-spec-phase.test.js",
|
|
23
|
+
"tests/commands/spec-create.test.js",
|
|
24
|
+
"tests/lib/ai-spec-generator.test.js",
|
|
25
|
+
"tests/lib/approvals.test.js",
|
|
26
|
+
"specs/quiver-v28-pixel-quiver-feedback-reconciliation/**"
|
|
27
|
+
],
|
|
28
|
+
"expected_read_paths": [
|
|
29
|
+
"src/create-quiver/lib/ai/**",
|
|
30
|
+
"src/create-quiver/commands/ai.js",
|
|
31
|
+
"src/create-quiver/commands/spec.js",
|
|
32
|
+
"tests/commands/ai-*.test.js",
|
|
33
|
+
"tests/commands/spec-create.test.js",
|
|
34
|
+
"tests/lib/ai-spec-generator.test.js"
|
|
35
|
+
],
|
|
36
|
+
"allowed_write_paths": [
|
|
37
|
+
"src/create-quiver/commands/ai.js",
|
|
38
|
+
"src/create-quiver/commands/spec.js",
|
|
39
|
+
"src/create-quiver/lib/ai/prompts.js",
|
|
40
|
+
"src/create-quiver/lib/ai/spec-generator.js",
|
|
41
|
+
"src/create-quiver/lib/ai/spec-templates.js",
|
|
42
|
+
"src/create-quiver/lib/approvals.js",
|
|
43
|
+
"tests/commands/ai-plan.test.js",
|
|
44
|
+
"tests/commands/ai-plan-spec-phase.test.js",
|
|
45
|
+
"tests/commands/spec-create.test.js",
|
|
46
|
+
"tests/lib/ai-spec-generator.test.js",
|
|
47
|
+
"tests/lib/approvals.test.js",
|
|
48
|
+
"specs/quiver-v28-pixel-quiver-feedback-reconciliation/**"
|
|
49
|
+
],
|
|
50
|
+
"depends_on": [
|
|
51
|
+
"slice-00-reconciliation-and-evidence-freeze",
|
|
52
|
+
"slice-01-ai-run-state-approvals-and-clean-output"
|
|
53
|
+
],
|
|
54
|
+
"parallel_safe": "after_dependencies",
|
|
55
|
+
"parallel_safe_reason": "Can run after run/approval state is clarified.",
|
|
56
|
+
"must": [
|
|
57
|
+
"Define the minimum `spec.slices[]` contract.",
|
|
58
|
+
"Block approval or spec creation when required structure is missing.",
|
|
59
|
+
"Fail before writing files when the contract is invalid.",
|
|
60
|
+
"Provide a traceable repair path that creates a derived draft requiring review and approval."
|
|
61
|
+
],
|
|
62
|
+
"not_included": [
|
|
63
|
+
"Active-slice reconciliation.",
|
|
64
|
+
"Worktree lifecycle changes.",
|
|
65
|
+
"Publishing npm."
|
|
66
|
+
],
|
|
67
|
+
"acceptance": [
|
|
68
|
+
"A valid structured plan can create the expected spec/slices/handoffs.",
|
|
69
|
+
"An invalid approved plan fails before writing files with an actionable error.",
|
|
70
|
+
"Repairing an approved plan preserves the original and creates a derived draft.",
|
|
71
|
+
"Repair output requires review and approval before spec creation."
|
|
72
|
+
],
|
|
73
|
+
"tests": [
|
|
74
|
+
"node --test tests/commands/ai-plan.test.js tests/commands/ai-plan-spec-phase.test.js tests/commands/spec-create.test.js",
|
|
75
|
+
"node --test tests/lib/ai-spec-generator.test.js tests/lib/approvals.test.js"
|
|
76
|
+
],
|
|
77
|
+
"validation_hints": [
|
|
78
|
+
"Test both dry-run and real write modes.",
|
|
79
|
+
"Assert no files are written on invalid structure."
|
|
80
|
+
],
|
|
81
|
+
"estimated_hours": 10,
|
|
82
|
+
"actual_hours": 10,
|
|
83
|
+
"status": "completed",
|
|
84
|
+
"completed_at": "2026-05-25T21:50:35Z"
|
|
85
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# CLOSURE BRIEF - slice-03: Active slice reconciliation and AI inspect
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
Implemented active-slice reconciliation and spec-aware `ai inspect` recovery for the v28 Pixel Quiver feedback loop.
|
|
6
|
+
|
|
7
|
+
## Validation
|
|
8
|
+
|
|
9
|
+
Passed:
|
|
10
|
+
|
|
11
|
+
- `node --test tests/commands/ai-export.test.js tests/commands/cli-contract.test.js`
|
|
12
|
+
- `node --test tests/lib/project-state-resolver.test.js tests/lib/ai-export-state.test.js`
|
|
13
|
+
|
|
14
|
+
## Relevant Changes
|
|
15
|
+
|
|
16
|
+
- Added `collectActiveSliceState` in `src/create-quiver/lib/project-state-resolver.js` to read `docs/ai/ACTIVE_SLICE.md` and `ACTIVE_SLICES.md`.
|
|
17
|
+
- Added reconciliation decisions: `preserve`, `close`, `replace`, and `blocked`.
|
|
18
|
+
- Added `npx create-quiver ai active-slice status|reconcile`; `reconcile` is dry-run-first and currently refuses live writes.
|
|
19
|
+
- Updated lifecycle export and inspect output to include active-slice state, blockers, dashboard data, and spec-aware next steps.
|
|
20
|
+
- Added regression tests for conflicting active sources, missing active doc replacement, completed active slice closure, stale spec-create guidance, and CLI dry-run output.
|
|
21
|
+
|
|
22
|
+
## Pending Work
|
|
23
|
+
|
|
24
|
+
No pending work for this slice.
|
|
25
|
+
|
|
26
|
+
## Remaining Risks
|
|
27
|
+
|
|
28
|
+
- `ai active-slice reconcile` intentionally does not write changes yet. Future write mode should be implemented only with explicit safe file operations and backup behavior.
|
|
29
|
+
- Active-slice Markdown parsing supports the current generated formats; unusual custom tables may still require manual correction.
|
|
30
|
+
|
|
31
|
+
## Future Recommendations
|
|
32
|
+
|
|
33
|
+
- Consider adding a future write-capable `ai active-slice reconcile --apply` only after the dry-run report is stable across real dogfooding projects.
|
|
34
|
+
- Consider exposing active-slice state in any future dashboard/export consumer as a first-class readiness signal.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# EXECUTION BRIEF - slice-03: Active slice reconciliation and AI inspect
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
Pixel Quiver showed that active slice state can live in more than one file and that `ai inspect` can continue suggesting `spec create` after a spec exists by fallback.
|
|
6
|
+
|
|
7
|
+
## Objective
|
|
8
|
+
|
|
9
|
+
Make active-slice state inspectable, safely reconcilable, and reflected in AI inspection guidance.
|
|
10
|
+
|
|
11
|
+
## Scope
|
|
12
|
+
|
|
13
|
+
- Project state resolver.
|
|
14
|
+
- AI inspect/export state.
|
|
15
|
+
- Active slice status/reconciliation command surface if needed.
|
|
16
|
+
- Tests and fixtures for conflicting active state.
|
|
17
|
+
|
|
18
|
+
## Acceptance Criteria
|
|
19
|
+
|
|
20
|
+
- All active-slice sources are detected.
|
|
21
|
+
- Dry-run reconciliation is safe and explicit.
|
|
22
|
+
- `ai inspect` does not recommend stale `spec create` when an existing spec should be validated or executed.
|
|
23
|
+
- No worktrees or branches are deleted automatically.
|
|
24
|
+
|
|
25
|
+
## Technical Plan Summary
|
|
26
|
+
|
|
27
|
+
Extend the resolver to read active-slice sources, expose reconciliation states, and update AI inspect guidance.
|
|
28
|
+
|
|
29
|
+
## Suggested Execution Steps
|
|
30
|
+
|
|
31
|
+
1. Add fixtures for active-state conflicts.
|
|
32
|
+
2. Extend resolver tests.
|
|
33
|
+
3. Update inspect/export behavior.
|
|
34
|
+
4. Add command/help updates if a new command surface is introduced.
|
|
35
|
+
5. Validate no-write dry-run behavior.
|
|
36
|
+
|
|
37
|
+
## Restrictions
|
|
38
|
+
|
|
39
|
+
- Do not implement repair-plan logic.
|
|
40
|
+
- Do not modify worktree lifecycle logic except for reading/reporting.
|
|
41
|
+
|
|
42
|
+
## Risks
|
|
43
|
+
|
|
44
|
+
- Existing generated projects may have partial active-slice files.
|
|
45
|
+
|
|
46
|
+
## Completion Checklist
|
|
47
|
+
|
|
48
|
+
- [ ] Resolver tests pass.
|
|
49
|
+
- [ ] Inspect/export tests pass.
|
|
50
|
+
- [ ] Dry-run behavior verified.
|
|
51
|
+
- [ ] Docs/evidence updated.
|
|
52
|
+
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slice_id": "slice-03-active-slice-reconciliation-and-ai-inspect",
|
|
3
|
+
"ticket": "QUIVER-28-03",
|
|
4
|
+
"type": "feature",
|
|
5
|
+
"title": "Active slice reconciliation and AI inspect",
|
|
6
|
+
"objective": "Reconcile active slice state across multiple sources and make `ai inspect` recover from manual or fallback spec creation.",
|
|
7
|
+
"description": "Adds a safe, dry-run-first path for active-slice state and updates inspect guidance when specs already exist even if lifecycle state still points to spec creation.",
|
|
8
|
+
"git": {
|
|
9
|
+
"branch_type": "feature",
|
|
10
|
+
"base_branch": "main",
|
|
11
|
+
"branch_slug": "v28-active-slice-reconciliation-ai-inspect",
|
|
12
|
+
"branch_name": "feature/QUIVER-28-03-v28-active-slice-reconciliation-ai-inspect"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"src/create-quiver/commands/ai.js",
|
|
16
|
+
"src/create-quiver/index.js",
|
|
17
|
+
"src/create-quiver/lib/project-state-resolver.js",
|
|
18
|
+
"src/create-quiver/lib/lifecycle.js",
|
|
19
|
+
"src/create-quiver/lib/statuses.js",
|
|
20
|
+
"src/create-quiver/lib/ai/export-state.js",
|
|
21
|
+
"tests/commands/ai-export.test.js",
|
|
22
|
+
"tests/commands/cli-contract.test.js",
|
|
23
|
+
"tests/lib/project-state-resolver.test.js",
|
|
24
|
+
"tests/lib/ai-export-state.test.js",
|
|
25
|
+
"specs/quiver-v28-pixel-quiver-feedback-reconciliation/**"
|
|
26
|
+
],
|
|
27
|
+
"expected_read_paths": [
|
|
28
|
+
"src/create-quiver/lib/project-state-resolver.js",
|
|
29
|
+
"src/create-quiver/lib/lifecycle.js",
|
|
30
|
+
"src/create-quiver/commands/ai.js",
|
|
31
|
+
"tests/lib/project-state-resolver.test.js",
|
|
32
|
+
"tests/commands/ai-export.test.js"
|
|
33
|
+
],
|
|
34
|
+
"allowed_write_paths": [
|
|
35
|
+
"src/create-quiver/commands/ai.js",
|
|
36
|
+
"src/create-quiver/index.js",
|
|
37
|
+
"src/create-quiver/lib/project-state-resolver.js",
|
|
38
|
+
"src/create-quiver/lib/lifecycle.js",
|
|
39
|
+
"src/create-quiver/lib/statuses.js",
|
|
40
|
+
"src/create-quiver/lib/ai/export-state.js",
|
|
41
|
+
"tests/commands/ai-export.test.js",
|
|
42
|
+
"tests/commands/cli-contract.test.js",
|
|
43
|
+
"tests/lib/project-state-resolver.test.js",
|
|
44
|
+
"tests/lib/ai-export-state.test.js",
|
|
45
|
+
"specs/quiver-v28-pixel-quiver-feedback-reconciliation/**"
|
|
46
|
+
],
|
|
47
|
+
"depends_on": [
|
|
48
|
+
"slice-00-reconciliation-and-evidence-freeze",
|
|
49
|
+
"slice-01-ai-run-state-approvals-and-clean-output"
|
|
50
|
+
],
|
|
51
|
+
"parallel_safe": "after_dependencies",
|
|
52
|
+
"parallel_safe_reason": "Can run after the run/approval model is clarified.",
|
|
53
|
+
"must": [
|
|
54
|
+
"Detect active slice state in docs/ai/ACTIVE_SLICE.md and ACTIVE_SLICES.md.",
|
|
55
|
+
"Return safe states: preserve, close, replace, blocked.",
|
|
56
|
+
"Keep reconciliation dry-run-first.",
|
|
57
|
+
"Update ai inspect next steps when specs exist by fallback/manual creation."
|
|
58
|
+
],
|
|
59
|
+
"not_included": [
|
|
60
|
+
"Spec-create structured plan contract.",
|
|
61
|
+
"Worktree filesystem validation.",
|
|
62
|
+
"Deleting branches or worktrees automatically."
|
|
63
|
+
],
|
|
64
|
+
"acceptance": [
|
|
65
|
+
"Active-slice state is reported from every supported source.",
|
|
66
|
+
"Reconciliation dry-run lists planned file changes and risks.",
|
|
67
|
+
"No state is changed without explicit write mode.",
|
|
68
|
+
"ai inspect suggests spec validate/next/prompt-slice when a spec already exists."
|
|
69
|
+
],
|
|
70
|
+
"tests": [
|
|
71
|
+
"node --test tests/commands/ai-export.test.js tests/commands/cli-contract.test.js",
|
|
72
|
+
"node --test tests/lib/project-state-resolver.test.js tests/lib/ai-export-state.test.js"
|
|
73
|
+
],
|
|
74
|
+
"validation_hints": [
|
|
75
|
+
"Use fixtures for conflicting active slice files.",
|
|
76
|
+
"Do not delete real worktrees in tests."
|
|
77
|
+
],
|
|
78
|
+
"estimated_hours": 10,
|
|
79
|
+
"actual_hours": 10,
|
|
80
|
+
"status": "completed",
|
|
81
|
+
"completed_at": "2026-05-25T22:02:27Z"
|
|
82
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# CLOSURE BRIEF - slice-04: Spec validation, scope, and worktree reliability
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
Completed the validation and worktree reliability hardening for v28. `spec validate` now catches missing execution git metadata, `spec status` reports expected but unregistered worktree paths as stale, `spec start --dry-run` gives actionable dirty-checkout recovery, and scope matching has regression coverage for exact paths plus supported globs.
|
|
6
|
+
|
|
7
|
+
## Validation
|
|
8
|
+
|
|
9
|
+
Passed:
|
|
10
|
+
|
|
11
|
+
- `node --test tests/commands/spec-validate.test.js tests/commands/spec-worktree.test.js`
|
|
12
|
+
- `node --test tests/lib/check-slice.test.js tests/lib/scope.test.js tests/lib/paths.test.js`
|
|
13
|
+
|
|
14
|
+
## Relevant Changes
|
|
15
|
+
|
|
16
|
+
- `src/create-quiver/commands/spec.js` validates required `git.*` execution metadata in every slice.
|
|
17
|
+
- `src/create-quiver/lib/spec-worktrees.js` detects unregistered expected worktree directories and improves dirty-checkout recovery output.
|
|
18
|
+
- `tests/commands/spec-validate.test.js` covers missing execution git metadata.
|
|
19
|
+
- `tests/commands/spec-worktree.test.js` covers unregistered expected worktree paths and actionable dirty checkout output.
|
|
20
|
+
- `tests/lib/scope.test.js` covers exact path plus supported glob write scopes.
|
|
21
|
+
|
|
22
|
+
## Pending Work
|
|
23
|
+
|
|
24
|
+
None for this slice.
|
|
25
|
+
|
|
26
|
+
## Remaining Risks
|
|
27
|
+
|
|
28
|
+
- Tightened validation may surface older specs that do not declare execution git metadata. This is intentional for local execution readiness and is covered by v28 release-readiness follow-up.
|
|
29
|
+
|
|
30
|
+
## Future Recommendations
|
|
31
|
+
|
|
32
|
+
- Consider adding a dedicated migration/check command for older specs if users report friction after release.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# EXECUTION BRIEF - slice-04: Spec validation, scope, and worktree reliability
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
Pixel Quiver showed false confidence: `spec validate` could pass while `check-slice` failed, and `spec status` could report a missing worktree as healthy.
|
|
6
|
+
|
|
7
|
+
## Objective
|
|
8
|
+
|
|
9
|
+
Make validation and worktree diagnostics match the real execution preconditions.
|
|
10
|
+
|
|
11
|
+
## Scope
|
|
12
|
+
|
|
13
|
+
- `spec validate`
|
|
14
|
+
- `check-slice`
|
|
15
|
+
- `check-scope`
|
|
16
|
+
- `spec status`
|
|
17
|
+
- `spec start --dry-run`
|
|
18
|
+
- related tests
|
|
19
|
+
|
|
20
|
+
## Acceptance Criteria
|
|
21
|
+
|
|
22
|
+
- Slice metadata problems are caught at spec validation time.
|
|
23
|
+
- Missing/stale worktrees are reported accurately.
|
|
24
|
+
- Dirty checkout failures include files and safe options.
|
|
25
|
+
- Scope matching is covered by regression tests.
|
|
26
|
+
|
|
27
|
+
## Technical Plan Summary
|
|
28
|
+
|
|
29
|
+
Align spec-level and slice-level validators, harden worktree checks against filesystem and Git state, and improve dirty checkout diagnostics.
|
|
30
|
+
|
|
31
|
+
## Suggested Execution Steps
|
|
32
|
+
|
|
33
|
+
1. Add failing tests for each observed false-ready case.
|
|
34
|
+
2. Update validation helpers.
|
|
35
|
+
3. Update worktree status/start diagnostics.
|
|
36
|
+
4. Add scope matching tests.
|
|
37
|
+
5. Run focused tests and full relevant command tests.
|
|
38
|
+
|
|
39
|
+
## Restrictions
|
|
40
|
+
|
|
41
|
+
- Do not mutate dirty worktrees.
|
|
42
|
+
- Do not add destructive cleanup.
|
|
43
|
+
- Do not change AI lifecycle behavior here.
|
|
44
|
+
|
|
45
|
+
## Risks
|
|
46
|
+
|
|
47
|
+
- Stricter validation can affect old specs; use warnings or `--strict` where needed.
|
|
48
|
+
|
|
49
|
+
## Completion Checklist
|
|
50
|
+
|
|
51
|
+
- [ ] Spec validation tests pass.
|
|
52
|
+
- [ ] Worktree tests pass.
|
|
53
|
+
- [ ] Scope tests pass.
|
|
54
|
+
- [ ] Backward compatibility behavior documented.
|
|
55
|
+
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slice_id": "slice-04-spec-validation-scope-and-worktree-reliability",
|
|
3
|
+
"ticket": "QUIVER-28-04",
|
|
4
|
+
"type": "feature",
|
|
5
|
+
"title": "Spec validation, scope, and worktree reliability",
|
|
6
|
+
"objective": "Align spec validation with slice execution preconditions and make worktree/scope diagnostics reflect the real filesystem and Git state.",
|
|
7
|
+
"description": "Hardens `spec validate`, `check-slice`, `check-scope`, `spec status`, and `spec start` so users do not get false readiness signals.",
|
|
8
|
+
"git": {
|
|
9
|
+
"branch_type": "feature",
|
|
10
|
+
"base_branch": "main",
|
|
11
|
+
"branch_slug": "v28-spec-validation-scope-worktree-reliability",
|
|
12
|
+
"branch_name": "feature/QUIVER-28-04-v28-spec-validation-scope-worktree-reliability"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"src/create-quiver/commands/spec.js",
|
|
16
|
+
"src/create-quiver/lib/readiness.js",
|
|
17
|
+
"src/create-quiver/lib/scope.js",
|
|
18
|
+
"src/create-quiver/lib/slice.js",
|
|
19
|
+
"src/create-quiver/lib/spec-worktrees.js",
|
|
20
|
+
"src/create-quiver/lib/git.js",
|
|
21
|
+
"tests/commands/spec-validate.test.js",
|
|
22
|
+
"tests/commands/spec-worktree.test.js",
|
|
23
|
+
"tests/lib/check-slice.test.js",
|
|
24
|
+
"tests/lib/scope.test.js",
|
|
25
|
+
"tests/lib/paths.test.js",
|
|
26
|
+
"specs/quiver-v28-pixel-quiver-feedback-reconciliation/**"
|
|
27
|
+
],
|
|
28
|
+
"expected_read_paths": [
|
|
29
|
+
"src/create-quiver/commands/spec.js",
|
|
30
|
+
"src/create-quiver/lib/readiness.js",
|
|
31
|
+
"src/create-quiver/lib/scope.js",
|
|
32
|
+
"src/create-quiver/lib/spec-worktrees.js",
|
|
33
|
+
"tests/commands/spec-*.test.js",
|
|
34
|
+
"tests/lib/check-slice.test.js",
|
|
35
|
+
"tests/lib/scope.test.js"
|
|
36
|
+
],
|
|
37
|
+
"allowed_write_paths": [
|
|
38
|
+
"src/create-quiver/commands/spec.js",
|
|
39
|
+
"src/create-quiver/lib/readiness.js",
|
|
40
|
+
"src/create-quiver/lib/scope.js",
|
|
41
|
+
"src/create-quiver/lib/slice.js",
|
|
42
|
+
"src/create-quiver/lib/spec-worktrees.js",
|
|
43
|
+
"src/create-quiver/lib/git.js",
|
|
44
|
+
"tests/commands/spec-validate.test.js",
|
|
45
|
+
"tests/commands/spec-worktree.test.js",
|
|
46
|
+
"tests/lib/check-slice.test.js",
|
|
47
|
+
"tests/lib/scope.test.js",
|
|
48
|
+
"tests/lib/paths.test.js",
|
|
49
|
+
"specs/quiver-v28-pixel-quiver-feedback-reconciliation/**"
|
|
50
|
+
],
|
|
51
|
+
"depends_on": [
|
|
52
|
+
"slice-00-reconciliation-and-evidence-freeze"
|
|
53
|
+
],
|
|
54
|
+
"parallel_safe": "after_dependencies",
|
|
55
|
+
"parallel_safe_reason": "Can run after slice-00 if it does not alter AI run state files.",
|
|
56
|
+
"must": [
|
|
57
|
+
"Make spec validate catch local slice execution metadata problems.",
|
|
58
|
+
"Make spec status verify filesystem and git worktree list.",
|
|
59
|
+
"Make spec start dirty-check failures actionable.",
|
|
60
|
+
"Verify scope matching behavior and support expected globs if slice-00 confirms the gap."
|
|
61
|
+
],
|
|
62
|
+
"not_included": [
|
|
63
|
+
"AI approval lifecycle changes.",
|
|
64
|
+
"Plan repair flow.",
|
|
65
|
+
"Deleting worktrees automatically."
|
|
66
|
+
],
|
|
67
|
+
"acceptance": [
|
|
68
|
+
"spec validate catches slice metadata required by check-slice --local or reports strict warnings.",
|
|
69
|
+
"spec status reports missing/stale worktrees accurately.",
|
|
70
|
+
"spec start --dry-run lists dirty checkout blockers and safe options.",
|
|
71
|
+
"check-scope behavior is covered by tests for exact paths and supported globs."
|
|
72
|
+
],
|
|
73
|
+
"tests": [
|
|
74
|
+
"node --test tests/commands/spec-validate.test.js tests/commands/spec-worktree.test.js",
|
|
75
|
+
"node --test tests/lib/check-slice.test.js tests/lib/scope.test.js tests/lib/paths.test.js"
|
|
76
|
+
],
|
|
77
|
+
"validation_hints": [
|
|
78
|
+
"Use temp repos/worktrees in tests.",
|
|
79
|
+
"Keep default behavior backward compatible unless --strict is used."
|
|
80
|
+
],
|
|
81
|
+
"estimated_hours": 9,
|
|
82
|
+
"actual_hours": 9,
|
|
83
|
+
"status": "completed",
|
|
84
|
+
"completed_at": "2026-05-25T15:38:16Z"
|
|
85
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# CLOSURE BRIEF - slice-05: Review-plan closure and agent DX
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
Implemented structured plan-review closure metadata and agent-facing DX hardening for review, executor handoff context, command examples, and GitHub PR preflight guidance.
|
|
6
|
+
|
|
7
|
+
## Validation
|
|
8
|
+
|
|
9
|
+
Passed:
|
|
10
|
+
|
|
11
|
+
- `node --test tests/commands/ai-review-plan.test.js tests/commands/cli-contract.test.js`
|
|
12
|
+
- `node --test tests/lib/ai-context-packs.test.js tests/lib/ai-github.test.js`
|
|
13
|
+
|
|
14
|
+
## Relevant Changes
|
|
15
|
+
|
|
16
|
+
- `ai review-plan` now asks for and persists structured review metadata with `approve`, `approve-with-risk`, or `revise`.
|
|
17
|
+
- `ai approve --phase technical-plan` now refuses approval when the saved review has required fixes or a `revise` recommendation.
|
|
18
|
+
- Plan-review summaries include approval recommendation, blocking status, required fixes, optional hardening, and next command.
|
|
19
|
+
- Executor context-pack guidance now keeps agents on compact slice context by default.
|
|
20
|
+
- GitHub CLI and SSH alias guidance now covers macOS, Linux, Windows PowerShell, Git Bash, and WSL.
|
|
21
|
+
- Help and docs now include `npx --yes create-quiver@<version>` examples for commands pasted into agents.
|
|
22
|
+
|
|
23
|
+
## Pending Work
|
|
24
|
+
|
|
25
|
+
No pending work for this slice. `slice-06` is now ready for final compatibility, docs, smoke, and release-readiness validation.
|
|
26
|
+
|
|
27
|
+
## Remaining Risks
|
|
28
|
+
|
|
29
|
+
- Existing historical plan reviews without structured metadata are treated heuristically for backward compatibility.
|
|
30
|
+
- Provider output can still be malformed; the prompt now asks for JSON, but fallback classification remains intentionally conservative.
|
|
31
|
+
|
|
32
|
+
## Future Recommendations
|
|
33
|
+
|
|
34
|
+
- Consider a future explicit `--json` mode for `ai review-plan` summaries if dashboard consumers need stable stdout.
|
|
35
|
+
- Consider adding an apply/fix loop around plan-review required fixes after more dogfooding evidence.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# EXECUTION BRIEF - slice-05: Review-plan closure and agent DX
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
Pixel Quiver showed long review/revise loops without a formal signal for when a plan is approvable, approvable with risks, or blocked.
|
|
6
|
+
The reconciliation pass also mapped agent-facing command safety, compact executor handoff guidance, and GitHub auth/SSH alias recovery copy to this slice.
|
|
7
|
+
|
|
8
|
+
## Objective
|
|
9
|
+
|
|
10
|
+
Make plan reviews actionable and make generated agent commands reproducible and non-interactive.
|
|
11
|
+
|
|
12
|
+
## Scope
|
|
13
|
+
|
|
14
|
+
- `ai review-plan` output and metadata.
|
|
15
|
+
- Review prompt/contract.
|
|
16
|
+
- Agent-facing command examples.
|
|
17
|
+
- GitHub auth and SSH alias diagnostic copy used by agent-driven PR flows.
|
|
18
|
+
- Compact executor handoff guidance/context packaging.
|
|
19
|
+
- Tests for review recommendations.
|
|
20
|
+
|
|
21
|
+
## Acceptance Criteria
|
|
22
|
+
|
|
23
|
+
- Review output includes structured blocking status and approval recommendation.
|
|
24
|
+
- Required fixes and optional hardening are separated.
|
|
25
|
+
- A recommended next command is available.
|
|
26
|
+
- Docs/help examples prefer `npx --yes create-quiver@<version>` where appropriate.
|
|
27
|
+
- GitHub auth and alias diagnostics provide actionable recovery across macOS, Linux, Windows, Git Bash, WSL, and PowerShell where applicable.
|
|
28
|
+
- Executor handoff guidance stays compact and does not require passing the full spec when the slice brief is enough.
|
|
29
|
+
|
|
30
|
+
## Technical Plan Summary
|
|
31
|
+
|
|
32
|
+
Extend plan review persistence/output with structured metadata, then update prompt/help/docs, GitHub diagnostic copy, and context-pack guidance for safer agent execution.
|
|
33
|
+
|
|
34
|
+
## Suggested Execution Steps
|
|
35
|
+
|
|
36
|
+
1. Add fixtures for review classifications.
|
|
37
|
+
2. Update review-plan parsing/persistence.
|
|
38
|
+
3. Update CLI output and docs.
|
|
39
|
+
4. Improve GitHub auth/alias recovery messaging where gaps are confirmed.
|
|
40
|
+
5. Add tests for recommended next command and agent-facing recovery copy.
|
|
41
|
+
6. Validate help output snapshots if applicable.
|
|
42
|
+
|
|
43
|
+
## Restrictions
|
|
44
|
+
|
|
45
|
+
- Do not weaken approval gates.
|
|
46
|
+
- Do not implement repair-plan here.
|
|
47
|
+
- Do not store provider, GitHub, or SSH secrets.
|
|
48
|
+
|
|
49
|
+
## Risks
|
|
50
|
+
|
|
51
|
+
- Provider text can be inconsistent; metadata generation must be resilient and testable.
|
|
52
|
+
|
|
53
|
+
## Completion Checklist
|
|
54
|
+
|
|
55
|
+
- [ ] Review-plan tests pass.
|
|
56
|
+
- [ ] GitHub diagnostic tests pass if messaging changes.
|
|
57
|
+
- [ ] CLI help/docs updated.
|
|
58
|
+
- [ ] Agent command examples verified.
|
|
59
|
+
- [ ] Closure evidence updated.
|