create-quiver 0.12.0 → 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 +52 -0
- package/README.md +65 -25
- package/README_FOR_AI.md +36 -29
- package/ROADMAP.md +22 -3
- package/docs/AI_ONBOARDING_PROMPT.md.template +7 -1
- package/docs/COMMANDS.md.template +53 -20
- package/docs/STATUS.md.template +5 -1
- package/docs/WORKFLOW.md.template +13 -11
- package/package.json +10 -3
- package/specs/quiver-v25-ai-first-lifecycle-orchestrator/EVIDENCE_REPORT.md +293 -0
- package/specs/quiver-v25-ai-first-lifecycle-orchestrator/EXECUTION_PLAN.md +58 -0
- package/specs/quiver-v25-ai-first-lifecycle-orchestrator/SPEC.md +242 -0
- package/specs/quiver-v25-ai-first-lifecycle-orchestrator/STATUS.md +35 -0
- package/specs/quiver-v25-ai-first-lifecycle-orchestrator/pr.md +77 -0
- package/specs/quiver-v25-ai-first-lifecycle-orchestrator/slices/slice-00-spec-foundation/CLOSURE_BRIEF.md +34 -0
- package/specs/quiver-v25-ai-first-lifecycle-orchestrator/slices/slice-00-spec-foundation/EXECUTION_BRIEF.md +52 -0
- package/specs/quiver-v25-ai-first-lifecycle-orchestrator/slices/slice-00-spec-foundation/slice.json +52 -0
- package/specs/quiver-v25-ai-first-lifecycle-orchestrator/slices/slice-01-cli-contract-compatibility/CLOSURE_BRIEF.md +36 -0
- package/specs/quiver-v25-ai-first-lifecycle-orchestrator/slices/slice-01-cli-contract-compatibility/EXECUTION_BRIEF.md +52 -0
- package/specs/quiver-v25-ai-first-lifecycle-orchestrator/slices/slice-01-cli-contract-compatibility/slice.json +56 -0
- package/specs/quiver-v25-ai-first-lifecycle-orchestrator/slices/slice-02-run-state-phase-locks/CLOSURE_BRIEF.md +43 -0
- package/specs/quiver-v25-ai-first-lifecycle-orchestrator/slices/slice-02-run-state-phase-locks/EXECUTION_BRIEF.md +54 -0
- package/specs/quiver-v25-ai-first-lifecycle-orchestrator/slices/slice-02-run-state-phase-locks/slice.json +52 -0
- package/specs/quiver-v25-ai-first-lifecycle-orchestrator/slices/slice-03-safe-ai-onboarding-docs/CLOSURE_BRIEF.md +35 -0
- package/specs/quiver-v25-ai-first-lifecycle-orchestrator/slices/slice-03-safe-ai-onboarding-docs/EXECUTION_BRIEF.md +53 -0
- package/specs/quiver-v25-ai-first-lifecycle-orchestrator/slices/slice-03-safe-ai-onboarding-docs/slice.json +54 -0
- package/specs/quiver-v25-ai-first-lifecycle-orchestrator/slices/slice-04-agent-profiles-adapters/CLOSURE_BRIEF.md +34 -0
- package/specs/quiver-v25-ai-first-lifecycle-orchestrator/slices/slice-04-agent-profiles-adapters/EXECUTION_BRIEF.md +54 -0
- package/specs/quiver-v25-ai-first-lifecycle-orchestrator/slices/slice-04-agent-profiles-adapters/slice.json +52 -0
- package/specs/quiver-v25-ai-first-lifecycle-orchestrator/slices/slice-05-approval-gates/CLOSURE_BRIEF.md +34 -0
- package/specs/quiver-v25-ai-first-lifecycle-orchestrator/slices/slice-05-approval-gates/EXECUTION_BRIEF.md +54 -0
- package/specs/quiver-v25-ai-first-lifecycle-orchestrator/slices/slice-05-approval-gates/slice.json +53 -0
- package/specs/quiver-v25-ai-first-lifecycle-orchestrator/slices/slice-06-spec-slice-generator/CLOSURE_BRIEF.md +33 -0
- package/specs/quiver-v25-ai-first-lifecycle-orchestrator/slices/slice-06-spec-slice-generator/EXECUTION_BRIEF.md +56 -0
- package/specs/quiver-v25-ai-first-lifecycle-orchestrator/slices/slice-06-spec-slice-generator/slice.json +55 -0
- package/specs/quiver-v25-ai-first-lifecycle-orchestrator/slices/slice-07-slice-execution-planner/CLOSURE_BRIEF.md +33 -0
- package/specs/quiver-v25-ai-first-lifecycle-orchestrator/slices/slice-07-slice-execution-planner/EXECUTION_BRIEF.md +54 -0
- package/specs/quiver-v25-ai-first-lifecycle-orchestrator/slices/slice-07-slice-execution-planner/slice.json +52 -0
- package/specs/quiver-v25-ai-first-lifecycle-orchestrator/slices/slice-08-controlled-slice-execution/CLOSURE_BRIEF.md +39 -0
- package/specs/quiver-v25-ai-first-lifecycle-orchestrator/slices/slice-08-controlled-slice-execution/EXECUTION_BRIEF.md +56 -0
- package/specs/quiver-v25-ai-first-lifecycle-orchestrator/slices/slice-08-controlled-slice-execution/slice.json +53 -0
- package/specs/quiver-v25-ai-first-lifecycle-orchestrator/slices/slice-09-git-worktree-pr-lifecycle/CLOSURE_BRIEF.md +38 -0
- package/specs/quiver-v25-ai-first-lifecycle-orchestrator/slices/slice-09-git-worktree-pr-lifecycle/EXECUTION_BRIEF.md +57 -0
- package/specs/quiver-v25-ai-first-lifecycle-orchestrator/slices/slice-09-git-worktree-pr-lifecycle/slice.json +52 -0
- package/specs/quiver-v25-ai-first-lifecycle-orchestrator/slices/slice-10-validation-errors-fixtures/CLOSURE_BRIEF.md +39 -0
- package/specs/quiver-v25-ai-first-lifecycle-orchestrator/slices/slice-10-validation-errors-fixtures/EXECUTION_BRIEF.md +55 -0
- package/specs/quiver-v25-ai-first-lifecycle-orchestrator/slices/slice-10-validation-errors-fixtures/slice.json +56 -0
- package/specs/quiver-v25-ai-first-lifecycle-orchestrator/slices/slice-11-export-dashboard-migration/CLOSURE_BRIEF.md +36 -0
- package/specs/quiver-v25-ai-first-lifecycle-orchestrator/slices/slice-11-export-dashboard-migration/EXECUTION_BRIEF.md +54 -0
- package/specs/quiver-v25-ai-first-lifecycle-orchestrator/slices/slice-11-export-dashboard-migration/slice.json +53 -0
- package/specs/quiver-v26-0121-smoke-hardening/EVIDENCE_REPORT.md +208 -0
- package/specs/quiver-v26-0121-smoke-hardening/EXECUTION_PLAN.md +57 -0
- package/specs/quiver-v26-0121-smoke-hardening/SPEC.md +137 -0
- package/specs/quiver-v26-0121-smoke-hardening/STATUS.md +32 -0
- package/specs/quiver-v26-0121-smoke-hardening/pr.md +96 -0
- package/specs/quiver-v26-0121-smoke-hardening/slices/slice-00-docs-foundation/CLOSURE_BRIEF.md +35 -0
- package/specs/quiver-v26-0121-smoke-hardening/slices/slice-00-docs-foundation/EXECUTION_BRIEF.md +55 -0
- package/specs/quiver-v26-0121-smoke-hardening/slices/slice-00-docs-foundation/slice.json +73 -0
- package/specs/quiver-v26-0121-smoke-hardening/slices/slice-01-cli-help-version-contract/CLOSURE_BRIEF.md +38 -0
- package/specs/quiver-v26-0121-smoke-hardening/slices/slice-01-cli-help-version-contract/EXECUTION_BRIEF.md +51 -0
- package/specs/quiver-v26-0121-smoke-hardening/slices/slice-01-cli-help-version-contract/slice.json +76 -0
- package/specs/quiver-v26-0121-smoke-hardening/slices/slice-02-init-doc-links-and-flow-guidance/CLOSURE_BRIEF.md +37 -0
- package/specs/quiver-v26-0121-smoke-hardening/slices/slice-02-init-doc-links-and-flow-guidance/EXECUTION_BRIEF.md +52 -0
- package/specs/quiver-v26-0121-smoke-hardening/slices/slice-02-init-doc-links-and-flow-guidance/slice.json +75 -0
- package/specs/quiver-v26-0121-smoke-hardening/slices/slice-03-ai-approval-review-consistency/CLOSURE_BRIEF.md +37 -0
- package/specs/quiver-v26-0121-smoke-hardening/slices/slice-03-ai-approval-review-consistency/EXECUTION_BRIEF.md +53 -0
- package/specs/quiver-v26-0121-smoke-hardening/slices/slice-03-ai-approval-review-consistency/slice.json +77 -0
- package/specs/quiver-v26-0121-smoke-hardening/slices/slice-04-local-validation-brief-contracts/CLOSURE_BRIEF.md +35 -0
- package/specs/quiver-v26-0121-smoke-hardening/slices/slice-04-local-validation-brief-contracts/EXECUTION_BRIEF.md +52 -0
- package/specs/quiver-v26-0121-smoke-hardening/slices/slice-04-local-validation-brief-contracts/slice.json +77 -0
- package/specs/quiver-v26-0121-smoke-hardening/slices/slice-05-demo-scaffold-readiness/CLOSURE_BRIEF.md +34 -0
- package/specs/quiver-v26-0121-smoke-hardening/slices/slice-05-demo-scaffold-readiness/EXECUTION_BRIEF.md +54 -0
- package/specs/quiver-v26-0121-smoke-hardening/slices/slice-05-demo-scaffold-readiness/slice.json +84 -0
- package/specs/quiver-v26-0121-smoke-hardening/slices/slice-06-plan-graph-scope-performance/CLOSURE_BRIEF.md +35 -0
- package/specs/quiver-v26-0121-smoke-hardening/slices/slice-06-plan-graph-scope-performance/EXECUTION_BRIEF.md +53 -0
- package/specs/quiver-v26-0121-smoke-hardening/slices/slice-06-plan-graph-scope-performance/slice.json +82 -0
- package/specs/quiver-v26-0121-smoke-hardening/slices/slice-07-smoke-release-readiness/CLOSURE_BRIEF.md +35 -0
- package/specs/quiver-v26-0121-smoke-hardening/slices/slice-07-smoke-release-readiness/EXECUTION_BRIEF.md +55 -0
- package/specs/quiver-v26-0121-smoke-hardening/slices/slice-07-smoke-release-readiness/slice.json +92 -0
- 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 +652 -27
- package/src/create-quiver/commands/flow.js +58 -9
- package/src/create-quiver/commands/graph.js +11 -9
- package/src/create-quiver/commands/plan.js +7 -16
- package/src/create-quiver/commands/spec.js +282 -0
- package/src/create-quiver/index.js +409 -31
- package/src/create-quiver/lib/actionable-error.js +27 -0
- package/src/create-quiver/lib/agent-profiles.js +16 -4
- package/src/create-quiver/lib/ai/artifacts.js +318 -0
- package/src/create-quiver/lib/ai/context-packs.js +4 -0
- package/src/create-quiver/lib/ai/execution-plan.js +16 -1
- package/src/create-quiver/lib/ai/executor.js +272 -21
- package/src/create-quiver/lib/ai/export-state.js +679 -0
- package/src/create-quiver/lib/ai/github.js +162 -2
- package/src/create-quiver/lib/ai/onboarding-template.js +215 -2
- package/src/create-quiver/lib/ai/plan-review.js +7 -2
- package/src/create-quiver/lib/ai/providers.js +4 -3
- package/src/create-quiver/lib/ai/run-state.js +414 -0
- package/src/create-quiver/lib/ai/spec-generator.js +84 -13
- package/src/create-quiver/lib/ai/spec-templates.js +150 -21
- package/src/create-quiver/lib/analyze.js +2 -2
- package/src/create-quiver/lib/approvals.js +36 -5
- package/src/create-quiver/lib/demo.js +189 -14
- package/src/create-quiver/lib/doctor.js +154 -0
- package/src/create-quiver/lib/git.js +40 -1
- package/src/create-quiver/lib/handoff.js +123 -12
- package/src/create-quiver/lib/init-docs.js +35 -13
- package/src/create-quiver/lib/init-layout.js +9 -0
- package/src/create-quiver/lib/json.js +53 -3
- 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 +66 -10
- package/src/create-quiver/lib/scope.js +52 -8
- package/src/create-quiver/lib/slice-graph.js +138 -38
- package/src/create-quiver/lib/slice.js +14 -5
- package/src/create-quiver/lib/spec-worktrees.js +129 -32
- package/src/create-quiver/lib/statuses.js +115 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# CLOSURE BRIEF - slice-05: Worktree lifecycle, locks, and recovery
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
Implemented worktree lifecycle hardening for persistent spec worktrees, slice worktree startup, and delegated parallel AI execution runs. The slice adds shared lock handling, stale/missing worktree recovery messages, nested worktree prevention, and focused tests for the production risks found in Pixel Quiver dogfooding.
|
|
6
|
+
|
|
7
|
+
## Validation Against Acceptance Criteria
|
|
8
|
+
|
|
9
|
+
- `spec start` dry-run and real reuse behavior remains covered by existing spec worktree tests.
|
|
10
|
+
- Existing spec worktrees are reused when valid; stale or manually deleted registered worktrees now fail with recovery steps instead of being silently recreated.
|
|
11
|
+
- Running slice startup from a linked worktree now rejects nested worktree creation unless it is reusing the exact registered worktree.
|
|
12
|
+
- Delegated parallel execution uses a run-level lock and fails safely before provider execution when the same run is already active.
|
|
13
|
+
- Dirty, missing, stale, and conflicting worktree states produce actionable recovery guidance.
|
|
14
|
+
|
|
15
|
+
## Changes
|
|
16
|
+
|
|
17
|
+
- Added `src/create-quiver/lib/locks.js` for `.quiver/locks` helpers and local runtime-state ignore handling.
|
|
18
|
+
- Updated `src/create-quiver/lib/git.js` with linked-worktree and realpath-aware git directory helpers.
|
|
19
|
+
- Updated `src/create-quiver/lib/spec-worktrees.js` with persistent worktree reuse checks, lock handling, stale path recovery, and nested worktree safeguards.
|
|
20
|
+
- Updated `src/create-quiver/lib/lifecycle.js` with slice worktree locks and nested worktree prevention.
|
|
21
|
+
- Updated `src/create-quiver/lib/ai/execution-plan.js` with delegated run locking.
|
|
22
|
+
- Added regression coverage in `tests/lib/lifecycle.test.js` and `tests/commands/ai-execute-plan.test.js`.
|
|
23
|
+
|
|
24
|
+
## Remaining Risks
|
|
25
|
+
|
|
26
|
+
- Existing user-created stale locks may require manual removal after the user confirms no Quiver process is active.
|
|
27
|
+
- This slice hardens lifecycle behavior but does not yet expand `check-scope`, `check-handoff`, or `spec validate`; those remain in `slice-06`.
|
|
28
|
+
|
|
29
|
+
## Follow-up Recommendations
|
|
30
|
+
|
|
31
|
+
- Execute `slice-06-validation-gates-and-scope-safety` next so the new lifecycle guarantees are enforced by validation gates before later context and DX work.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# EXECUTION BRIEF - slice-05: Worktree lifecycle, locks, and recovery
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
Pixel Quiver showed confusing worktree guidance and potential nested worktree paths. The desired workflow is one persistent worktree per spec and one commit per slice, while delegated execution may still use temporary worktrees internally.
|
|
6
|
+
|
|
7
|
+
## Objective
|
|
8
|
+
|
|
9
|
+
Harden worktree lifecycle, locking, and recovery.
|
|
10
|
+
|
|
11
|
+
## Scope
|
|
12
|
+
|
|
13
|
+
- Spec worktree lifecycle
|
|
14
|
+
- Delegated execution worktree strategy
|
|
15
|
+
- Git/worktree recovery messages
|
|
16
|
+
- Locking for concurrent operations
|
|
17
|
+
- Tests and docs evidence
|
|
18
|
+
|
|
19
|
+
## Acceptance Criteria
|
|
20
|
+
|
|
21
|
+
- Spec worktrees are persistent and reused.
|
|
22
|
+
- Existing spec worktrees do not create nested paths.
|
|
23
|
+
- Temporary worktrees remain limited to delegated parallel execution.
|
|
24
|
+
- Dirty/missing/stale worktrees report recovery steps.
|
|
25
|
+
- Concurrent operations are locked or rejected safely.
|
|
26
|
+
|
|
27
|
+
## Technical Plan Summary
|
|
28
|
+
|
|
29
|
+
Clarify worktree identity, add detection for current worktree context, add locks and recovery tests.
|
|
30
|
+
|
|
31
|
+
## Suggested Execution Steps
|
|
32
|
+
|
|
33
|
+
1. Inspect spec worktree and executor code.
|
|
34
|
+
2. Define worktree modes and lock locations.
|
|
35
|
+
3. Implement context detection and recovery messaging.
|
|
36
|
+
4. Add tests for root, worktree, dirty, missing, stale, and delegated paths.
|
|
37
|
+
5. Update docs/evidence.
|
|
38
|
+
|
|
39
|
+
## Restrictions
|
|
40
|
+
|
|
41
|
+
- Do not remove delegated parallel capability.
|
|
42
|
+
- Do not force destructive cleanup without explicit option.
|
|
43
|
+
|
|
44
|
+
## Risks
|
|
45
|
+
|
|
46
|
+
- Existing users may rely on current branch names; preserve compatibility where possible.
|
|
47
|
+
|
|
48
|
+
## Completion Checklist
|
|
49
|
+
|
|
50
|
+
- [ ] Persistent spec worktree behavior covered.
|
|
51
|
+
- [ ] Nested worktree prevention covered.
|
|
52
|
+
- [ ] Delegated worktrees still pass tests.
|
|
53
|
+
- [ ] Lock/recovery behavior covered.
|
|
54
|
+
- [ ] Validation commands passed.
|
|
55
|
+
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slice_id": "slice-05-worktree-lifecycle-locks-and-recovery",
|
|
3
|
+
"ticket": "QUIVER-27-05",
|
|
4
|
+
"type": "implementation",
|
|
5
|
+
"title": "Worktree lifecycle, locks, and recovery",
|
|
6
|
+
"objective": "Harden the spec worktree lifecycle so Quiver supports one persistent worktree per spec, one commit per slice, temporary delegated worktrees, locks, and recovery.",
|
|
7
|
+
"description": "Clarifies spec vs temporary slice worktrees, prevents nested/conflicting paths, handles dirty root and missing worktrees, adds locks for concurrent execution, and reports recovery paths.",
|
|
8
|
+
"git": {
|
|
9
|
+
"branch_type": "feature",
|
|
10
|
+
"base_branch": "main",
|
|
11
|
+
"branch_slug": "v27-worktree-lifecycle-locks-recovery",
|
|
12
|
+
"branch_name": "feature/QUIVER-27-05-v27-worktree-lifecycle-locks-recovery"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"src/create-quiver/lib/spec-worktrees.js",
|
|
16
|
+
"src/create-quiver/lib/lifecycle.js",
|
|
17
|
+
"src/create-quiver/lib/locks.js",
|
|
18
|
+
"src/create-quiver/lib/ai/execution-plan.js",
|
|
19
|
+
"src/create-quiver/lib/ai/executor.js",
|
|
20
|
+
"src/create-quiver/lib/git.js",
|
|
21
|
+
"tests/lib/*worktree*.test.js",
|
|
22
|
+
"tests/commands/spec-worktree.test.js",
|
|
23
|
+
"tests/commands/ai-execute-plan.test.js",
|
|
24
|
+
"specs/quiver-v27-reliability-ai-workflow-hardening/**"
|
|
25
|
+
],
|
|
26
|
+
"expected_read_paths": [
|
|
27
|
+
"src/create-quiver/lib/spec-worktrees.js",
|
|
28
|
+
"src/create-quiver/lib/lifecycle.js",
|
|
29
|
+
"src/create-quiver/lib/git.js",
|
|
30
|
+
"src/create-quiver/lib/ai/execution-plan.js",
|
|
31
|
+
"src/create-quiver/lib/ai/executor.js",
|
|
32
|
+
"tests/commands/spec-worktree.test.js",
|
|
33
|
+
"tests/commands/ai-execute-plan.test.js",
|
|
34
|
+
"tests/lib/lifecycle.test.js"
|
|
35
|
+
],
|
|
36
|
+
"allowed_write_paths": [
|
|
37
|
+
"src/create-quiver/lib/spec-worktrees.js",
|
|
38
|
+
"src/create-quiver/lib/lifecycle.js",
|
|
39
|
+
"src/create-quiver/lib/locks.js",
|
|
40
|
+
"src/create-quiver/lib/ai/execution-plan.js",
|
|
41
|
+
"src/create-quiver/lib/ai/executor.js",
|
|
42
|
+
"src/create-quiver/lib/git.js",
|
|
43
|
+
"tests/lib/**",
|
|
44
|
+
"tests/commands/**",
|
|
45
|
+
"specs/quiver-v27-reliability-ai-workflow-hardening/**"
|
|
46
|
+
],
|
|
47
|
+
"depends_on": [
|
|
48
|
+
"slice-01-core-state-resolver-and-canonical-statuses"
|
|
49
|
+
],
|
|
50
|
+
"parallel_safe": "yes",
|
|
51
|
+
"parallel_safe_reason": "Can run after shared resolver if it avoids AI artifact files touched by slice-04.",
|
|
52
|
+
"must": [
|
|
53
|
+
"Preserve one persistent worktree per spec.",
|
|
54
|
+
"Keep temporary per-slice worktrees only for delegated parallel execution.",
|
|
55
|
+
"Avoid nested worktree paths.",
|
|
56
|
+
"Handle dirty root/worktree states with clear recovery.",
|
|
57
|
+
"Add locks for concurrent spec/run operations.",
|
|
58
|
+
"Detect stale or manually deleted worktrees."
|
|
59
|
+
],
|
|
60
|
+
"not_included": [
|
|
61
|
+
"Changing PR creation behavior unless required by worktree recovery.",
|
|
62
|
+
"Publishing npm.",
|
|
63
|
+
"Changing provider execution."
|
|
64
|
+
],
|
|
65
|
+
"acceptance": [
|
|
66
|
+
"spec start dry-run and real run report/reuse the same persistent spec worktree.",
|
|
67
|
+
"Running from an existing spec worktree does not propose a nested worktree.",
|
|
68
|
+
"Delegated execution can still use temporary worktrees safely.",
|
|
69
|
+
"Dirty, missing, stale, or deleted worktrees produce actionable recovery messages.",
|
|
70
|
+
"Concurrent operations use locks or fail safely."
|
|
71
|
+
],
|
|
72
|
+
"tests": [
|
|
73
|
+
"node --test tests/commands/spec-worktree.test.js tests/commands/spec-close.test.js tests/commands/ai-execute-plan.test.js tests/lib/lifecycle.test.js",
|
|
74
|
+
"git diff --check"
|
|
75
|
+
],
|
|
76
|
+
"validation_hints": [
|
|
77
|
+
"Test from repo root and from inside a spec worktree.",
|
|
78
|
+
"Simulate manually deleted worktree paths."
|
|
79
|
+
],
|
|
80
|
+
"estimated_hours": 6,
|
|
81
|
+
"status": "completed",
|
|
82
|
+
"completed_at": "2026-05-24",
|
|
83
|
+
"blocked_reason": null
|
|
84
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# CLOSURE BRIEF - slice-06: Validation gates and scope safety
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
Implemented validation gate hardening across local slice checks, scope validation, handoff validation, full spec validation, and path safety. The slice closes the Pixel Quiver gaps where validation could pass while later execution failed or where commands assumed the wrong base branch.
|
|
6
|
+
|
|
7
|
+
## Validation Against Acceptance Criteria
|
|
8
|
+
|
|
9
|
+
- `check-slice --local` now validates local execution metadata, declared scope paths, dependency contracts, and reports executed and skipped checks.
|
|
10
|
+
- `check-scope` now respects an explicit `--base`, then `slice.git.base_branch`, before falling back to common base branches.
|
|
11
|
+
- `check-handoff` now reports missing headings with accepted aliases and a minimal template.
|
|
12
|
+
- `spec validate` now checks spec docs, slice JSON, briefs, dependency cycles, safe paths, evidence references, and status references.
|
|
13
|
+
- Slice paths and declared scope paths outside the repo root or using traversal are rejected before execution guidance or scope validation.
|
|
14
|
+
|
|
15
|
+
## Changes
|
|
16
|
+
|
|
17
|
+
- Added `spec validate` command support in `src/create-quiver/commands/spec.js` and `src/create-quiver/index.js`.
|
|
18
|
+
- Hardened `src/create-quiver/lib/readiness.js` for local slice checks and base-aware `check-scope`.
|
|
19
|
+
- Hardened `src/create-quiver/lib/handoff.js` with alias/template guidance.
|
|
20
|
+
- Added repo-bound path validation helpers in `src/create-quiver/lib/paths.js`.
|
|
21
|
+
- Applied path boundary checks in `src/create-quiver/lib/slice.js`, `src/create-quiver/lib/scope.js`, and `src/create-quiver/lib/ai/executor.js`.
|
|
22
|
+
- Added `quiver:spec:validate` to generated package scripts and synchronized `README.md`, `README_FOR_AI.md`, and `docs/COMMANDS.md.template`.
|
|
23
|
+
- Added tests in `tests/lib/check-slice.test.js`, `tests/lib/scope.test.js`, `tests/lib/handoff.test.js`, `tests/lib/paths.test.js`, `tests/commands/spec-validate.test.js`, and `tests/commands/cli-contract.test.js`.
|
|
24
|
+
|
|
25
|
+
## Remaining Risks
|
|
26
|
+
|
|
27
|
+
- `spec validate` intentionally treats status/evidence mismatches as warnings by default for legacy compatibility; `--strict` promotes those warnings to failures.
|
|
28
|
+
- `check-pr` still contains older `origin/develop` assumptions and should be revisited when PR/readiness flows are hardened further.
|
|
29
|
+
|
|
30
|
+
## Follow-up Recommendations
|
|
31
|
+
|
|
32
|
+
- Execute `slice-07-context-analysis-and-doctor-flow` next so analyzer, prepare-context, flow, and doctor can consume the stronger validation contracts.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# EXECUTION BRIEF - slice-06: Validation gates and scope safety
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
Pixel Quiver showed that some validation gates passed while later execution failed, or skipped checks because of wrong branch assumptions. This slice turns validation into a reliable preflight.
|
|
6
|
+
|
|
7
|
+
## Objective
|
|
8
|
+
|
|
9
|
+
Harden validation gates and path/scope safety.
|
|
10
|
+
|
|
11
|
+
## Scope
|
|
12
|
+
|
|
13
|
+
- `check-slice`
|
|
14
|
+
- `check-scope`
|
|
15
|
+
- `check-handoff`
|
|
16
|
+
- `spec validate`
|
|
17
|
+
- path safety helpers
|
|
18
|
+
- tests and docs evidence
|
|
19
|
+
|
|
20
|
+
## Acceptance Criteria
|
|
21
|
+
|
|
22
|
+
- Local slice validation catches local execution preconditions or clearly lists skipped checks.
|
|
23
|
+
- Scope validation respects `--base` and `slice.git.base_branch`.
|
|
24
|
+
- Handoff errors include templates or aliases.
|
|
25
|
+
- `spec validate` validates full spec structure and evidence consistency.
|
|
26
|
+
- Path traversal/out-of-root writes are rejected.
|
|
27
|
+
|
|
28
|
+
## Technical Plan Summary
|
|
29
|
+
|
|
30
|
+
Align validators with execution behavior, add strict/legacy modes where needed, and cover real dogfooding failures with tests.
|
|
31
|
+
|
|
32
|
+
## Suggested Execution Steps
|
|
33
|
+
|
|
34
|
+
1. Inspect validation and scope code.
|
|
35
|
+
2. Add missing base/path/brief checks.
|
|
36
|
+
3. Implement `spec validate` if not present.
|
|
37
|
+
4. Add compatibility handling for legacy specs.
|
|
38
|
+
5. Add regression tests.
|
|
39
|
+
|
|
40
|
+
## Restrictions
|
|
41
|
+
|
|
42
|
+
- Do not break legacy specs without documented strict mode.
|
|
43
|
+
- Do not silently skip validation when base information is available.
|
|
44
|
+
|
|
45
|
+
## Risks
|
|
46
|
+
|
|
47
|
+
- End users may have older specs; use warnings or migration guidance when appropriate.
|
|
48
|
+
|
|
49
|
+
## Completion Checklist
|
|
50
|
+
|
|
51
|
+
- [ ] check-slice covered.
|
|
52
|
+
- [ ] check-scope covered.
|
|
53
|
+
- [ ] check-handoff covered.
|
|
54
|
+
- [ ] spec validate covered.
|
|
55
|
+
- [ ] path safety covered.
|
|
56
|
+
- [ ] Validation commands passed.
|
|
57
|
+
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slice_id": "slice-06-validation-gates-and-scope-safety",
|
|
3
|
+
"ticket": "QUIVER-27-06",
|
|
4
|
+
"type": "implementation",
|
|
5
|
+
"title": "Validation gates and scope safety",
|
|
6
|
+
"objective": "Harden check-slice, check-scope, check-handoff, spec validate, and path safety so validation gates catch real execution failures.",
|
|
7
|
+
"description": "Aligns local slice validation with execution preconditions, fixes base branch resolution, improves handoff template errors and aliases, adds spec validate, and prevents path traversal/out-of-scope writes.",
|
|
8
|
+
"git": {
|
|
9
|
+
"branch_type": "feature",
|
|
10
|
+
"base_branch": "main",
|
|
11
|
+
"branch_slug": "v27-validation-gates-scope-safety",
|
|
12
|
+
"branch_name": "feature/QUIVER-27-06-v27-validation-gates-scope-safety"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"src/create-quiver/lib/readiness.js",
|
|
16
|
+
"src/create-quiver/lib/scope.js",
|
|
17
|
+
"src/create-quiver/lib/handoff.js",
|
|
18
|
+
"src/create-quiver/lib/paths.js",
|
|
19
|
+
"src/create-quiver/lib/slice.js",
|
|
20
|
+
"src/create-quiver/lib/ai/executor.js",
|
|
21
|
+
"src/create-quiver/lib/init-layout.js",
|
|
22
|
+
"src/create-quiver/commands/spec.js",
|
|
23
|
+
"src/create-quiver/index.js",
|
|
24
|
+
"package.json",
|
|
25
|
+
"README.md",
|
|
26
|
+
"README_FOR_AI.md",
|
|
27
|
+
"docs/COMMANDS.md.template",
|
|
28
|
+
"tests/lib/**",
|
|
29
|
+
"tests/commands/**",
|
|
30
|
+
"specs/quiver-v27-reliability-ai-workflow-hardening/**"
|
|
31
|
+
],
|
|
32
|
+
"expected_read_paths": [
|
|
33
|
+
"src/create-quiver/lib/readiness.js",
|
|
34
|
+
"src/create-quiver/lib/scope.js",
|
|
35
|
+
"src/create-quiver/lib/handoff.js",
|
|
36
|
+
"src/create-quiver/lib/paths.js",
|
|
37
|
+
"src/create-quiver/lib/slice.js",
|
|
38
|
+
"src/create-quiver/lib/init-layout.js",
|
|
39
|
+
"tests/lib/check-slice.test.js",
|
|
40
|
+
"tests/lib/scope.test.js",
|
|
41
|
+
"tests/lib/handoff.test.js"
|
|
42
|
+
],
|
|
43
|
+
"allowed_write_paths": [
|
|
44
|
+
"src/create-quiver/lib/readiness.js",
|
|
45
|
+
"src/create-quiver/lib/scope.js",
|
|
46
|
+
"src/create-quiver/lib/handoff.js",
|
|
47
|
+
"src/create-quiver/lib/paths.js",
|
|
48
|
+
"src/create-quiver/lib/slice.js",
|
|
49
|
+
"src/create-quiver/lib/ai/executor.js",
|
|
50
|
+
"src/create-quiver/lib/init-layout.js",
|
|
51
|
+
"src/create-quiver/commands/spec.js",
|
|
52
|
+
"src/create-quiver/index.js",
|
|
53
|
+
"package.json",
|
|
54
|
+
"README.md",
|
|
55
|
+
"README_FOR_AI.md",
|
|
56
|
+
"docs/COMMANDS.md.template",
|
|
57
|
+
"tests/lib/**",
|
|
58
|
+
"tests/commands/**",
|
|
59
|
+
"specs/quiver-v27-reliability-ai-workflow-hardening/**"
|
|
60
|
+
],
|
|
61
|
+
"depends_on": [
|
|
62
|
+
"slice-01-core-state-resolver-and-canonical-statuses",
|
|
63
|
+
"slice-05-worktree-lifecycle-locks-and-recovery"
|
|
64
|
+
],
|
|
65
|
+
"parallel_safe": "no",
|
|
66
|
+
"parallel_safe_reason": "Validation gates depend on resolver and worktree lifecycle behavior.",
|
|
67
|
+
"must": [
|
|
68
|
+
"Align check-slice --local with start/execute preconditions or list skipped checks.",
|
|
69
|
+
"Make check-scope respect --base and slice git.base_branch before fallbacks.",
|
|
70
|
+
"Add or harden spec validate.",
|
|
71
|
+
"Improve check-handoff error templates and Spanish/English aliases.",
|
|
72
|
+
"Reject path traversal and writes outside project root.",
|
|
73
|
+
"Support legacy/strict validation modes where needed."
|
|
74
|
+
],
|
|
75
|
+
"not_included": [
|
|
76
|
+
"Changing export schema.",
|
|
77
|
+
"Changing AI provider behavior.",
|
|
78
|
+
"Publishing npm."
|
|
79
|
+
],
|
|
80
|
+
"acceptance": [
|
|
81
|
+
"check-slice --local catches required local metadata for execution or documents skipped checks.",
|
|
82
|
+
"check-scope does not hardcode develop when --base or slice base_branch is provided.",
|
|
83
|
+
"check-handoff prints minimal templates or accepted aliases when headings are missing.",
|
|
84
|
+
"spec validate checks spec docs, slices, JSON, briefs, evidence, and status consistency.",
|
|
85
|
+
"Paths outside the repo root are rejected."
|
|
86
|
+
],
|
|
87
|
+
"tests": [
|
|
88
|
+
"node --test tests/lib/check-slice.test.js tests/lib/scope.test.js tests/lib/handoff.test.js tests/lib/paths.test.js tests/commands/cli-contract.test.js",
|
|
89
|
+
"git diff --check"
|
|
90
|
+
],
|
|
91
|
+
"validation_hints": [
|
|
92
|
+
"Add tests for main, master, develop, --base, and missing remote.",
|
|
93
|
+
"Add path traversal and symlink cases."
|
|
94
|
+
],
|
|
95
|
+
"estimated_hours": 6,
|
|
96
|
+
"status": "completed",
|
|
97
|
+
"completed_at": "2026-05-24",
|
|
98
|
+
"blocked_reason": null
|
|
99
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# CLOSURE BRIEF - slice-07: Context analysis and doctor flow
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
Hardened context analysis and diagnostics so `analyze`, `prepare-context`, `flow`, and `doctor` provide evidence-based guidance without unsafe dry-run writes or misleading examples.
|
|
6
|
+
|
|
7
|
+
## Validation Against Acceptance Criteria
|
|
8
|
+
|
|
9
|
+
- `analyze --dry-run` now builds the scan in memory, reports planned writes, and does not create `.quiver/`, `docs/PROJECT_MAP.md`, or `docs/AI_CONTEXT.md`.
|
|
10
|
+
- React + Vite projects are detected as `react` with `vite` as an additional framework; `vite.config.*` no longer implies Vue.
|
|
11
|
+
- `prepare-context` keeps detected package manager, stack, and scripts as facts while leaving unknown architecture boundaries as TODO/pending confirmation.
|
|
12
|
+
- `flow` reports context source/freshness in human output and JSON facts.
|
|
13
|
+
- `doctor` examples target an active slice when available, the single spec when unambiguous, or generic placeholders when multiple specs have no active slice.
|
|
14
|
+
|
|
15
|
+
## Changes
|
|
16
|
+
|
|
17
|
+
- Added scan status metadata in `src/create-quiver/lib/project-scan.js`.
|
|
18
|
+
- Added true `analyze --dry-run` handling and React/Vite detection fixes in `src/create-quiver/index.js`.
|
|
19
|
+
- Added `flow` context-source output.
|
|
20
|
+
- Added doctor example target selection.
|
|
21
|
+
- Added focused command and library tests for analyze, flow, doctor, project scan status, and prepare-context evidence behavior.
|
|
22
|
+
- Updated v27 spec/status/evidence docs.
|
|
23
|
+
|
|
24
|
+
## Remaining Risks
|
|
25
|
+
|
|
26
|
+
- Analyzer heuristics remain intentionally conservative. More real-world fixtures should be added in slice-09 before release readiness.
|
|
27
|
+
|
|
28
|
+
## Follow-up Recommendations
|
|
29
|
+
|
|
30
|
+
- Continue with `slice-08-cross-platform-help-auth-and-dx`.
|
|
31
|
+
- In slice-09, include tarball/package smoke coverage for `analyze --dry-run`, `flow`, and `doctor` examples.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# EXECUTION BRIEF - slice-07: Context analysis and doctor flow
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
Pixel Quiver showed analyzer stack mistakes, `analyze --dry-run` writes, placeholder-heavy `prepare-context`, stale docs, and doctor examples pointing to the wrong spec. This slice hardens context commands and first-use guidance.
|
|
6
|
+
|
|
7
|
+
## Objective
|
|
8
|
+
|
|
9
|
+
Make context analysis and doctor/flow guidance evidence-based, read-only where promised, and accurate.
|
|
10
|
+
|
|
11
|
+
## Scope
|
|
12
|
+
|
|
13
|
+
- `analyze`
|
|
14
|
+
- project scan
|
|
15
|
+
- `ai prepare-context`
|
|
16
|
+
- `flow`
|
|
17
|
+
- `doctor`
|
|
18
|
+
- fixtures and tests
|
|
19
|
+
|
|
20
|
+
## Acceptance Criteria
|
|
21
|
+
|
|
22
|
+
- `analyze --dry-run` writes nothing.
|
|
23
|
+
- React + Vite detection is correct.
|
|
24
|
+
- `prepare-context` is conservative and evidence-based.
|
|
25
|
+
- `flow` reports source/staleness.
|
|
26
|
+
- `doctor` does not suggest commands for the wrong spec.
|
|
27
|
+
|
|
28
|
+
## Technical Plan Summary
|
|
29
|
+
|
|
30
|
+
Improve scan heuristics, dry-run behavior, docs contradiction detection, active context selection, and test fixtures.
|
|
31
|
+
|
|
32
|
+
## Suggested Execution Steps
|
|
33
|
+
|
|
34
|
+
1. Inspect analyze/project-scan behavior.
|
|
35
|
+
2. Add no-write dry-run guard and tests.
|
|
36
|
+
3. Improve stack detection.
|
|
37
|
+
4. Improve prepare-context contradiction output.
|
|
38
|
+
5. Improve flow/doctor state source and example selection.
|
|
39
|
+
6. Add fixtures and evidence.
|
|
40
|
+
|
|
41
|
+
## Restrictions
|
|
42
|
+
|
|
43
|
+
- Do not overwrite human-authored docs without snapshots/review.
|
|
44
|
+
- Do not execute providers.
|
|
45
|
+
|
|
46
|
+
## Risks
|
|
47
|
+
|
|
48
|
+
- Analyzer heuristics can regress other stacks; add representative fixtures.
|
|
49
|
+
|
|
50
|
+
## Completion Checklist
|
|
51
|
+
|
|
52
|
+
- [ ] Dry-run no-write test added.
|
|
53
|
+
- [ ] React/Vite fixture added.
|
|
54
|
+
- [ ] prepare-context evidence behavior covered.
|
|
55
|
+
- [ ] flow/doctor guidance covered.
|
|
56
|
+
- [ ] Validation commands passed.
|
|
57
|
+
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slice_id": "slice-07-context-analysis-and-doctor-flow",
|
|
3
|
+
"ticket": "QUIVER-27-07",
|
|
4
|
+
"type": "implementation",
|
|
5
|
+
"title": "Context analysis and doctor flow",
|
|
6
|
+
"objective": "Harden analyze, prepare-context, flow, and doctor so onboarding docs are evidence-based, dry-runs are read-only, and next steps are accurate.",
|
|
7
|
+
"description": "Fixes stack detection, read-only dry-run behavior, docs/status consistency checks, stale-state guidance, active spec/slice examples, root/package manager detection, and first-use diagnostics.",
|
|
8
|
+
"git": {
|
|
9
|
+
"branch_type": "feature",
|
|
10
|
+
"base_branch": "main",
|
|
11
|
+
"branch_slug": "v27-context-analysis-doctor-flow",
|
|
12
|
+
"branch_name": "feature/QUIVER-27-07-v27-context-analysis-doctor-flow"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"src/create-quiver/lib/analyze.js",
|
|
16
|
+
"src/create-quiver/lib/project-scan.js",
|
|
17
|
+
"src/create-quiver/lib/doctor.js",
|
|
18
|
+
"src/create-quiver/lib/ai/onboarding-template.js",
|
|
19
|
+
"src/create-quiver/commands/flow.js",
|
|
20
|
+
"src/create-quiver/commands/prepare.js",
|
|
21
|
+
"tests/lib/**",
|
|
22
|
+
"tests/commands/**",
|
|
23
|
+
"tests/fixtures/**",
|
|
24
|
+
"specs/quiver-v27-reliability-ai-workflow-hardening/**"
|
|
25
|
+
],
|
|
26
|
+
"expected_read_paths": [
|
|
27
|
+
"src/create-quiver/lib/analyze.js",
|
|
28
|
+
"src/create-quiver/lib/project-scan.js",
|
|
29
|
+
"src/create-quiver/lib/doctor.js",
|
|
30
|
+
"src/create-quiver/lib/ai/onboarding-template.js",
|
|
31
|
+
"src/create-quiver/commands/flow.js",
|
|
32
|
+
"tests/commands/analyze.test.js",
|
|
33
|
+
"tests/commands/ai-onboard.test.js",
|
|
34
|
+
"tests/commands/flow.test.js",
|
|
35
|
+
"tests/commands/doctor.test.js"
|
|
36
|
+
],
|
|
37
|
+
"allowed_write_paths": [
|
|
38
|
+
"src/create-quiver/lib/analyze.js",
|
|
39
|
+
"src/create-quiver/lib/project-scan.js",
|
|
40
|
+
"src/create-quiver/lib/doctor.js",
|
|
41
|
+
"src/create-quiver/lib/ai/onboarding-template.js",
|
|
42
|
+
"src/create-quiver/commands/flow.js",
|
|
43
|
+
"src/create-quiver/commands/prepare.js",
|
|
44
|
+
"tests/lib/**",
|
|
45
|
+
"tests/commands/**",
|
|
46
|
+
"tests/fixtures/**",
|
|
47
|
+
"specs/quiver-v27-reliability-ai-workflow-hardening/**"
|
|
48
|
+
],
|
|
49
|
+
"depends_on": [
|
|
50
|
+
"slice-01-core-state-resolver-and-canonical-statuses",
|
|
51
|
+
"slice-06-validation-gates-and-scope-safety"
|
|
52
|
+
],
|
|
53
|
+
"parallel_safe": "no",
|
|
54
|
+
"parallel_safe_reason": "Context and doctor guidance depends on resolver and validation contract behavior.",
|
|
55
|
+
"must": [
|
|
56
|
+
"Make analyze --dry-run read-only.",
|
|
57
|
+
"Improve React/Vite and stack detection using package.json and config evidence.",
|
|
58
|
+
"Make prepare-context conservative and evidence-based.",
|
|
59
|
+
"Detect docs/status contradictions without overwriting human content.",
|
|
60
|
+
"Make flow show source/timestamp or stale-state information.",
|
|
61
|
+
"Make doctor prioritize active spec/slice examples where available."
|
|
62
|
+
],
|
|
63
|
+
"not_included": [
|
|
64
|
+
"Changing spec create behavior.",
|
|
65
|
+
"Changing worktree lifecycle beyond guidance messages.",
|
|
66
|
+
"Executing AI providers."
|
|
67
|
+
],
|
|
68
|
+
"acceptance": [
|
|
69
|
+
"analyze --dry-run leaves git status unchanged.",
|
|
70
|
+
"React + Vite projects are detected as React/Vite, not Vue.",
|
|
71
|
+
"prepare-context --dry-run does not propose placeholders as truth when evidence exists.",
|
|
72
|
+
"flow reports the state source or a stale/missing context explanation.",
|
|
73
|
+
"doctor examples prefer active spec/slice context or generic examples over the wrong spec."
|
|
74
|
+
],
|
|
75
|
+
"tests": [
|
|
76
|
+
"node --test tests/commands/analyze.test.js tests/commands/ai-onboard.test.js tests/commands/flow.test.js tests/commands/doctor.test.js tests/lib/project-scan.test.js tests/lib/doctor.test.js",
|
|
77
|
+
"npm run smoke:doctor-fixtures",
|
|
78
|
+
"git diff --check"
|
|
79
|
+
],
|
|
80
|
+
"validation_hints": [
|
|
81
|
+
"Snapshot git status before/after dry-run tests.",
|
|
82
|
+
"Use fixtures with stale docs and real completed slices."
|
|
83
|
+
],
|
|
84
|
+
"estimated_hours": 6,
|
|
85
|
+
"status": "completed",
|
|
86
|
+
"completed_at": "2026-05-24",
|
|
87
|
+
"blocked_reason": null
|
|
88
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# CLOSURE BRIEF - slice-08: Cross-platform help, auth, and DX
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
Hardened cross-platform DX around help output, agent profile previews, GitHub auth diagnostics, SSH/path guidance, and package-manager-aware next-step messaging.
|
|
6
|
+
|
|
7
|
+
## Validation Against Acceptance Criteria
|
|
8
|
+
|
|
9
|
+
- Help output now documents the `ai agent set --dry-run` flow and the general `--dry-run` option includes `ai agent set`.
|
|
10
|
+
- Paths with spaces now trigger shell-specific guidance for macOS/Linux, Windows PowerShell, Git Bash, and WSL in GitHub PR/preflight output.
|
|
11
|
+
- GitHub auth failures now identify likely account, scope, and SSH alias issues and point to `gh auth status` as the next safe command.
|
|
12
|
+
- `ai agent set --dry-run` validates and previews the profile without writing `.quiver/agents/profiles.json`.
|
|
13
|
+
- `flow` now reports the detected package manager and generated `quiver:flow` script command; init/migrate install fallback warnings respect npm, pnpm, yarn, or bun.
|
|
14
|
+
|
|
15
|
+
## Changes
|
|
16
|
+
|
|
17
|
+
- Added `buildAgentProfileState` and wired `ai agent set --dry-run` through `src/create-quiver/commands/ai.js`.
|
|
18
|
+
- Updated CLI help, examples, and agent dispatch in `src/create-quiver/index.js`.
|
|
19
|
+
- Added GitHub auth classification and shell-safe command/path formatting in `src/create-quiver/lib/ai/github.js`.
|
|
20
|
+
- Added package-manager-aware flow output in `src/create-quiver/commands/flow.js`.
|
|
21
|
+
- Updated command docs and v27 evidence/status docs.
|
|
22
|
+
- Added focused tests for agent dry-run, help contract, GitHub diagnostics/path guidance, and flow package-manager output.
|
|
23
|
+
|
|
24
|
+
## Remaining Risks
|
|
25
|
+
|
|
26
|
+
- `gh auth status` output varies by GitHub CLI version; diagnostics intentionally combine parsed hints with general account/scope/alias guidance.
|
|
27
|
+
- Shell-safe examples are generated for common shells, but unusual shell configurations may still require manual path adaptation.
|
|
28
|
+
|
|
29
|
+
## Follow-up Recommendations
|
|
30
|
+
|
|
31
|
+
- In `slice-09`, include smoke coverage for packaged CLI help, `flow`, `ai agent set --dry-run`, and GitHub diagnostic fixtures.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# EXECUTION BRIEF - slice-08: Cross-platform help, auth, and DX
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
Pixel Quiver exposed DX gaps around paths with spaces, GitHub auth, command copying, help coverage, and safe profile configuration. This slice focuses on user-facing clarity after core context behavior is hardened.
|
|
6
|
+
|
|
7
|
+
## Objective
|
|
8
|
+
|
|
9
|
+
Improve cross-platform help, auth diagnostics, and actionable command guidance.
|
|
10
|
+
|
|
11
|
+
## Scope
|
|
12
|
+
|
|
13
|
+
- CLI help
|
|
14
|
+
- doctor/preflight messages
|
|
15
|
+
- GitHub auth diagnostics
|
|
16
|
+
- agent profile dry-run
|
|
17
|
+
- package manager-aware suggestions
|
|
18
|
+
- docs and tests
|
|
19
|
+
|
|
20
|
+
## Acceptance Criteria
|
|
21
|
+
|
|
22
|
+
- Help output covers public commands and key options.
|
|
23
|
+
- Path guidance is copy-safe across OS variants.
|
|
24
|
+
- GitHub auth diagnostics are actionable.
|
|
25
|
+
- Agent profile dry-run does not write files.
|
|
26
|
+
- Suggested commands respect detected package manager.
|
|
27
|
+
|
|
28
|
+
## Technical Plan Summary
|
|
29
|
+
|
|
30
|
+
Update help registry/messages, add auth diagnostics and dry-run preview, and cover OS/package-manager examples with tests.
|
|
31
|
+
|
|
32
|
+
## Suggested Execution Steps
|
|
33
|
+
|
|
34
|
+
1. Inspect help and diagnostics surfaces.
|
|
35
|
+
2. Add/adjust `ai agent set --dry-run`.
|
|
36
|
+
3. Improve GitHub auth and SSH alias messages.
|
|
37
|
+
4. Add path/package-manager guidance.
|
|
38
|
+
5. Update docs and tests.
|
|
39
|
+
|
|
40
|
+
## Restrictions
|
|
41
|
+
|
|
42
|
+
- Do not install credentials or mutate user auth.
|
|
43
|
+
- Do not require network in tests.
|
|
44
|
+
|
|
45
|
+
## Risks
|
|
46
|
+
|
|
47
|
+
- Help output can drift; keep tests tied to command registry.
|
|
48
|
+
|
|
49
|
+
## Completion Checklist
|
|
50
|
+
|
|
51
|
+
- [ ] Help tests updated.
|
|
52
|
+
- [ ] Auth diagnostics tested.
|
|
53
|
+
- [ ] Agent dry-run tested.
|
|
54
|
+
- [ ] Cross-platform path guidance tested.
|
|
55
|
+
- [ ] Validation commands passed.
|
|
56
|
+
|