create-quiver 0.15.4 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/pull_request_template.md +17 -0
- package/.github/workflows/ci.yml +76 -0
- package/.markdown-link-check.json +15 -0
- package/.markdownlint.json +11 -0
- package/ARCHITECTURE.md +133 -0
- package/CHANGELOG.md +16 -0
- package/CONTRIBUTING.md +174 -9
- package/README.md +17 -2
- package/README_FOR_AI.md +4 -1
- package/ROADMAP.md +4 -0
- package/SECURITY.md +9 -2
- package/docs/AI_CONTEXT.md.es.template +3 -1
- package/docs/AI_CONTEXT.md.template +3 -1
- package/docs/CLI_UX_GUIDE.md +20 -1
- package/docs/COMMANDS.md.template +20 -6
- package/docs/GITFLOW_PR_GUIDE.md +73 -11
- package/docs/GITFLOW_PR_GUIDE.md.es.template +61 -2
- package/docs/GITFLOW_PR_GUIDE.md.template +72 -10
- package/docs/INDEX.md +6 -1
- package/docs/QUICK.md.template +2 -1
- package/docs/STANDARD.md.template +2 -1
- package/docs/WORKFLOW.md.es.template +3 -1
- package/docs/WORKFLOW.md.template +6 -4
- package/docs/getting-started/installation.md +7 -0
- package/docs/reference/commands.md +138 -6
- package/docs/reference/slice-schema.md +37 -0
- package/docs/schema/slice.schema.json +221 -0
- package/docs/specs/01-spec/01-slice/01-slice.json +36 -0
- package/docs/specs/01-spec/01-slice/01-slice.md +106 -0
- package/docs/specs/01-spec/01-slice/CLOSURE_BRIEF.md +80 -0
- package/docs/specs/01-spec/01-slice/EXECUTION_BRIEF.md +39 -0
- package/docs/specs/01-spec/02-slice/02-slice.json +36 -0
- package/docs/specs/01-spec/02-slice/02-slice.md +108 -0
- package/docs/specs/01-spec/02-slice/CLOSURE_BRIEF.md +88 -0
- package/docs/specs/01-spec/02-slice/EXECUTION_BRIEF.md +40 -0
- package/docs/specs/01-spec/03-slice/03-slice.json +36 -0
- package/docs/specs/01-spec/03-slice/03-slice.md +103 -0
- package/docs/specs/01-spec/03-slice/CLOSURE_BRIEF.md +54 -0
- package/docs/specs/01-spec/03-slice/EXECUTION_BRIEF.md +39 -0
- package/docs/specs/01-spec/04-slice/04-slice.json +36 -0
- package/docs/specs/01-spec/04-slice/04-slice.md +107 -0
- package/docs/specs/01-spec/04-slice/CLOSURE_BRIEF.md +46 -0
- package/docs/specs/01-spec/04-slice/EXECUTION_BRIEF.md +39 -0
- package/docs/specs/01-spec/05-slice/05-slice.json +36 -0
- package/docs/specs/01-spec/05-slice/05-slice.md +106 -0
- package/docs/specs/01-spec/05-slice/CLOSURE_BRIEF.md +84 -0
- package/docs/specs/01-spec/05-slice/EXECUTION_BRIEF.md +109 -0
- package/docs/specs/01-spec/06-slice/06-slice.json +36 -0
- package/docs/specs/01-spec/06-slice/06-slice.md +107 -0
- package/docs/specs/01-spec/06-slice/CLOSURE_BRIEF.md +67 -0
- package/docs/specs/01-spec/06-slice/EXECUTION_BRIEF.md +39 -0
- package/docs/specs/01-spec/07-slice/07-slice.json +36 -0
- package/docs/specs/01-spec/07-slice/07-slice.md +105 -0
- package/docs/specs/01-spec/07-slice/CLOSURE_BRIEF.md +71 -0
- package/docs/specs/01-spec/07-slice/EXECUTION_BRIEF.md +39 -0
- package/docs/specs/01-spec/08-slice/08-slice.json +36 -0
- package/docs/specs/01-spec/08-slice/08-slice.md +105 -0
- package/docs/specs/01-spec/08-slice/CLOSURE_BRIEF.md +114 -0
- package/docs/specs/01-spec/08-slice/EXECUTION_BRIEF.md +39 -0
- package/docs/specs/01-spec/CLOSURE_BRIEF.md +87 -0
- package/docs/specs/01-spec/spec.md +197 -0
- package/docs/workflows/full-ai-spec-to-pr.md +46 -3
- package/i18n/es/docs/GITFLOW_PR_GUIDE.md.template +38 -1
- package/package.json +27 -1
- package/scripts/package-quiver.sh +82 -2
- package/scripts/release-quiver.sh +14 -3
- package/specs/[project-name]/slices/pr.md.template +19 -0
- package/specs/quiver-v43-cli-i18n-audit-release-readiness/command-language-mode-matrix.json +122 -1
- package/specs/quiver-v46-deep-project-analysis/EVIDENCE_REPORT.md +94 -0
- package/specs/quiver-v46-deep-project-analysis/EXECUTION_PLAN.md +26 -0
- package/specs/quiver-v46-deep-project-analysis/SPEC.md +157 -0
- package/specs/quiver-v46-deep-project-analysis/STATUS.md +26 -0
- package/specs/quiver-v46-deep-project-analysis/pr.md +131 -0
- package/specs/quiver-v46-deep-project-analysis/slices/slice-00-analysis-contract-foundation/CLOSURE_BRIEF.md +14 -0
- package/specs/quiver-v46-deep-project-analysis/slices/slice-00-analysis-contract-foundation/EXECUTION_BRIEF.md +41 -0
- package/specs/quiver-v46-deep-project-analysis/slices/slice-00-analysis-contract-foundation/slice.json +61 -0
- package/specs/quiver-v46-deep-project-analysis/slices/slice-01-stack-agnostic-discovery-sampling/CLOSURE_BRIEF.md +22 -0
- package/specs/quiver-v46-deep-project-analysis/slices/slice-01-stack-agnostic-discovery-sampling/EXECUTION_BRIEF.md +33 -0
- package/specs/quiver-v46-deep-project-analysis/slices/slice-01-stack-agnostic-discovery-sampling/slice.json +80 -0
- package/specs/quiver-v46-deep-project-analysis/slices/slice-02-provider-analysis-json-contract/CLOSURE_BRIEF.md +21 -0
- package/specs/quiver-v46-deep-project-analysis/slices/slice-02-provider-analysis-json-contract/EXECUTION_BRIEF.md +34 -0
- package/specs/quiver-v46-deep-project-analysis/slices/slice-02-provider-analysis-json-contract/slice.json +79 -0
- package/specs/quiver-v46-deep-project-analysis/slices/slice-03-doc-proposal-review-safe-writes/CLOSURE_BRIEF.md +19 -0
- package/specs/quiver-v46-deep-project-analysis/slices/slice-03-doc-proposal-review-safe-writes/EXECUTION_BRIEF.md +33 -0
- package/specs/quiver-v46-deep-project-analysis/slices/slice-03-doc-proposal-review-safe-writes/slice.json +79 -0
- package/specs/quiver-v46-deep-project-analysis/slices/slice-04-validation-docs-release-readiness/CLOSURE_BRIEF.md +20 -0
- package/specs/quiver-v46-deep-project-analysis/slices/slice-04-validation-docs-release-readiness/EXECUTION_BRIEF.md +32 -0
- package/specs/quiver-v46-deep-project-analysis/slices/slice-04-validation-docs-release-readiness/slice.json +85 -0
- package/specs/quiver-v50-audit-trust-foundation/EVIDENCE_REPORT.md +151 -0
- package/specs/quiver-v50-audit-trust-foundation/EXECUTION_PLAN.md +34 -0
- package/specs/quiver-v50-audit-trust-foundation/SPEC.md +113 -0
- package/specs/quiver-v50-audit-trust-foundation/STATUS.md +26 -0
- package/specs/quiver-v50-audit-trust-foundation/pr.md +120 -0
- package/specs/quiver-v50-audit-trust-foundation/slices/slice-00-audit-baseline-and-resolved-findings/CLOSURE_BRIEF.md +20 -0
- package/specs/quiver-v50-audit-trust-foundation/slices/slice-00-audit-baseline-and-resolved-findings/EXECUTION_BRIEF.md +58 -0
- package/specs/quiver-v50-audit-trust-foundation/slices/slice-00-audit-baseline-and-resolved-findings/slice.json +57 -0
- package/specs/quiver-v50-audit-trust-foundation/slices/slice-01-runtime-minimum-and-package-metadata/CLOSURE_BRIEF.md +24 -0
- package/specs/quiver-v50-audit-trust-foundation/slices/slice-01-runtime-minimum-and-package-metadata/EXECUTION_BRIEF.md +67 -0
- package/specs/quiver-v50-audit-trust-foundation/slices/slice-01-runtime-minimum-and-package-metadata/slice.json +71 -0
- package/specs/quiver-v50-audit-trust-foundation/slices/slice-02-migrate-write-safety-contract/CLOSURE_BRIEF.md +24 -0
- package/specs/quiver-v50-audit-trust-foundation/slices/slice-02-migrate-write-safety-contract/EXECUTION_BRIEF.md +71 -0
- package/specs/quiver-v50-audit-trust-foundation/slices/slice-02-migrate-write-safety-contract/slice.json +81 -0
- package/specs/quiver-v50-audit-trust-foundation/slices/slice-03-security-reporting-channel/CLOSURE_BRIEF.md +22 -0
- package/specs/quiver-v50-audit-trust-foundation/slices/slice-03-security-reporting-channel/EXECUTION_BRIEF.md +57 -0
- package/specs/quiver-v50-audit-trust-foundation/slices/slice-03-security-reporting-channel/slice.json +56 -0
- package/specs/quiver-v50-audit-trust-foundation/slices/slice-04-user-facing-i18n-error-coverage/CLOSURE_BRIEF.md +23 -0
- package/specs/quiver-v50-audit-trust-foundation/slices/slice-04-user-facing-i18n-error-coverage/EXECUTION_BRIEF.md +68 -0
- package/specs/quiver-v50-audit-trust-foundation/slices/slice-04-user-facing-i18n-error-coverage/slice.json +84 -0
- package/specs/quiver-v50-audit-trust-foundation/slices/slice-05-init-analyze-progress-and-summaries/CLOSURE_BRIEF.md +25 -0
- package/specs/quiver-v50-audit-trust-foundation/slices/slice-05-init-analyze-progress-and-summaries/EXECUTION_BRIEF.md +73 -0
- package/specs/quiver-v50-audit-trust-foundation/slices/slice-05-init-analyze-progress-and-summaries/slice.json +72 -0
- package/specs/quiver-v50-audit-trust-foundation/slices/slice-06-contributor-and-architecture-docs/CLOSURE_BRIEF.md +22 -0
- package/specs/quiver-v50-audit-trust-foundation/slices/slice-06-contributor-and-architecture-docs/EXECUTION_BRIEF.md +66 -0
- package/specs/quiver-v50-audit-trust-foundation/slices/slice-06-contributor-and-architecture-docs/slice.json +74 -0
- package/specs/quiver-v50-audit-trust-foundation/slices/slice-07-ci-and-documentation-lint-baseline/CLOSURE_BRIEF.md +29 -0
- package/specs/quiver-v50-audit-trust-foundation/slices/slice-07-ci-and-documentation-lint-baseline/EXECUTION_BRIEF.md +74 -0
- package/specs/quiver-v50-audit-trust-foundation/slices/slice-07-ci-and-documentation-lint-baseline/slice.json +81 -0
- package/specs/quiver-v51-cli-ergonomics-automation-contracts/EVIDENCE_REPORT.md +145 -0
- package/specs/quiver-v51-cli-ergonomics-automation-contracts/EXECUTION_PLAN.md +32 -0
- package/specs/quiver-v51-cli-ergonomics-automation-contracts/SPEC.md +109 -0
- package/specs/quiver-v51-cli-ergonomics-automation-contracts/STATUS.md +25 -0
- package/specs/quiver-v51-cli-ergonomics-automation-contracts/pr.md +69 -0
- package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-00-cli-contract-baseline/CLOSURE_BRIEF.md +20 -0
- package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-00-cli-contract-baseline/EXECUTION_BRIEF.md +58 -0
- package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-00-cli-contract-baseline/slice.json +56 -0
- package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-01-flow-json-compatibility/CLOSURE_BRIEF.md +21 -0
- package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-01-flow-json-compatibility/EXECUTION_BRIEF.md +61 -0
- package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-01-flow-json-compatibility/slice.json +68 -0
- package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-02-dashboard-section-validation-i18n/CLOSURE_BRIEF.md +25 -0
- package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-02-dashboard-section-validation-i18n/EXECUTION_BRIEF.md +65 -0
- package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-02-dashboard-section-validation-i18n/pr.md +134 -0
- package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-02-dashboard-section-validation-i18n/slice.json +80 -0
- package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-03-base-branch-resolution-policy/CLOSURE_BRIEF.md +31 -0
- package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-03-base-branch-resolution-policy/EXECUTION_BRIEF.md +80 -0
- package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-03-base-branch-resolution-policy/pr.md +159 -0
- package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-03-base-branch-resolution-policy/slice.json +102 -0
- package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-04-next-plan-graph-ux-edge-cases/CLOSURE_BRIEF.md +25 -0
- package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-04-next-plan-graph-ux-edge-cases/EXECUTION_BRIEF.md +74 -0
- package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-04-next-plan-graph-ux-edge-cases/pr.md +147 -0
- package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-04-next-plan-graph-ux-edge-cases/slice.json +91 -0
- package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-05-evidence-robustness-path-safety/CLOSURE_BRIEF.md +28 -0
- package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-05-evidence-robustness-path-safety/EXECUTION_BRIEF.md +73 -0
- package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-05-evidence-robustness-path-safety/pr.md +146 -0
- package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-05-evidence-robustness-path-safety/slice.json +100 -0
- package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-06-namespace-compatibility-windows-scripts/CLOSURE_BRIEF.md +36 -0
- package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-06-namespace-compatibility-windows-scripts/EXECUTION_BRIEF.md +76 -0
- package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-06-namespace-compatibility-windows-scripts/pr.md +155 -0
- package/specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-06-namespace-compatibility-windows-scripts/slice.json +111 -0
- package/specs/quiver-v52-schema-docs-release-hygiene/EVIDENCE_REPORT.md +95 -0
- package/specs/quiver-v52-schema-docs-release-hygiene/EXECUTION_PLAN.md +31 -0
- package/specs/quiver-v52-schema-docs-release-hygiene/SPEC.md +107 -0
- package/specs/quiver-v52-schema-docs-release-hygiene/STATUS.md +22 -0
- package/specs/quiver-v52-schema-docs-release-hygiene/pr.md +69 -0
- package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-00-schema-docs-release-baseline/CLOSURE_BRIEF.md +21 -0
- package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-00-schema-docs-release-baseline/EXECUTION_BRIEF.md +60 -0
- package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-00-schema-docs-release-baseline/slice.json +62 -0
- package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-01-json-schema-for-slice-json/CLOSURE_BRIEF.md +34 -0
- package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-01-json-schema-for-slice-json/EXECUTION_BRIEF.md +71 -0
- package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-01-json-schema-for-slice-json/pr.md +146 -0
- package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-01-json-schema-for-slice-json/slice.json +106 -0
- package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-02-generated-cli-reference/CLOSURE_BRIEF.md +33 -0
- package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-02-generated-cli-reference/EXECUTION_BRIEF.md +67 -0
- package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-02-generated-cli-reference/pr.md +144 -0
- package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-02-generated-cli-reference/slice.json +86 -0
- package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-03-changelog-package-release-smoke-hygiene/CLOSURE_BRIEF.md +38 -0
- package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-03-changelog-package-release-smoke-hygiene/EXECUTION_BRIEF.md +75 -0
- package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-03-changelog-package-release-smoke-hygiene/pr.md +159 -0
- package/specs/quiver-v52-schema-docs-release-hygiene/slices/slice-03-changelog-package-release-smoke-hygiene/slice.json +105 -0
- package/src/create-quiver/commands/ai.js +521 -0
- package/src/create-quiver/commands/changelog.js +93 -0
- package/src/create-quiver/commands/config.js +16 -5
- package/src/create-quiver/commands/evidence.js +33 -2
- package/src/create-quiver/commands/flow.js +1 -0
- package/src/create-quiver/commands/graph.js +8 -2
- package/src/create-quiver/commands/plan.js +6 -0
- package/src/create-quiver/commands/spec.js +28 -13
- package/src/create-quiver/index.js +408 -98
- package/src/create-quiver/lib/ai/analyze-project-discovery.js +387 -0
- package/src/create-quiver/lib/ai/analyze-project-docs.js +364 -0
- package/src/create-quiver/lib/ai/analyze-project-parser.js +277 -0
- package/src/create-quiver/lib/ai/analyze-project-prompts.js +214 -0
- package/src/create-quiver/lib/ai/analyze-project-review.js +99 -0
- package/src/create-quiver/lib/ai/analyze-project-sampling.js +402 -0
- package/src/create-quiver/lib/ai/analyze-project-schema.js +92 -0
- package/src/create-quiver/lib/ai/analyze-project-validation.js +309 -0
- package/src/create-quiver/lib/ai/artifacts.js +4 -1
- package/src/create-quiver/lib/ai/github.js +5 -2
- package/src/create-quiver/lib/ai/spec-templates.js +19 -0
- package/src/create-quiver/lib/cli/command-registry.js +72 -0
- package/src/create-quiver/lib/cli/parser.js +14 -0
- package/src/create-quiver/lib/evidence.js +161 -6
- package/src/create-quiver/lib/git.js +99 -0
- package/src/create-quiver/lib/i18n/messages/en.js +52 -7
- package/src/create-quiver/lib/i18n/messages/es.js +54 -9
- package/src/create-quiver/lib/init-docs.js +1 -1
- package/src/create-quiver/lib/init-layout.js +9 -8
- package/src/create-quiver/lib/lifecycle.js +24 -26
- package/src/create-quiver/lib/readiness.js +67 -56
- package/src/create-quiver/lib/spec-worktrees.js +16 -34
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# EXECUTION_BRIEF - slice-04 next/plan/graph UX edge cases
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
Some next/plan/graph audit findings may already be implemented. This slice must close gaps without unnecessary refactor.
|
|
6
|
+
|
|
7
|
+
## Objective
|
|
8
|
+
|
|
9
|
+
Close or validate secondary CLI UX edge cases without reimplementing completed behavior.
|
|
10
|
+
|
|
11
|
+
## Scope
|
|
12
|
+
|
|
13
|
+
- `next --auto-start` prompt behavior.
|
|
14
|
+
- `plan` missing-estimates note.
|
|
15
|
+
- `graph --level` empty state.
|
|
16
|
+
- `graph --json` vs `--format` docs.
|
|
17
|
+
- EN/ES and JSON safety.
|
|
18
|
+
|
|
19
|
+
## Acceptance Criteria
|
|
20
|
+
|
|
21
|
+
- Implemented behaviors are closed by evidence/tests only.
|
|
22
|
+
- Missing behaviors are implemented with tests.
|
|
23
|
+
- JSON output is not polluted by human notes.
|
|
24
|
+
- Docs match runtime behavior.
|
|
25
|
+
|
|
26
|
+
## Expected Files To Modify
|
|
27
|
+
|
|
28
|
+
- `src/create-quiver/commands/next.js`
|
|
29
|
+
- `src/create-quiver/commands/plan.js`
|
|
30
|
+
- `src/create-quiver/commands/graph.js`
|
|
31
|
+
- `src/create-quiver/lib/cli/selectors.js`
|
|
32
|
+
- `src/create-quiver/lib/i18n/messages/en.js`
|
|
33
|
+
- `src/create-quiver/lib/i18n/messages/es.js`
|
|
34
|
+
- `docs/reference/commands.md`
|
|
35
|
+
- `docs/CLI_UX_GUIDE.md`
|
|
36
|
+
- `tests/commands/next.test.js`
|
|
37
|
+
- `tests/commands/plan.test.js`
|
|
38
|
+
- `tests/commands/graph.test.js`
|
|
39
|
+
- `specs/quiver-v51-cli-ergonomics-automation-contracts/EVIDENCE_REPORT.md`
|
|
40
|
+
|
|
41
|
+
## Validations Required
|
|
42
|
+
|
|
43
|
+
- `node --test tests/commands/next.test.js`
|
|
44
|
+
- `node --test tests/commands/plan.test.js`
|
|
45
|
+
- `node --test tests/commands/graph.test.js`
|
|
46
|
+
- `node --test`
|
|
47
|
+
- `git diff --check`
|
|
48
|
+
|
|
49
|
+
## Risks
|
|
50
|
+
|
|
51
|
+
- Refactoring stable read-only command logic unnecessarily.
|
|
52
|
+
- Polluting JSON with human notes.
|
|
53
|
+
- Prompt behavior not respecting no-TTY.
|
|
54
|
+
|
|
55
|
+
## Dependencies
|
|
56
|
+
|
|
57
|
+
- Depends on `slice-00-cli-contract-baseline`.
|
|
58
|
+
|
|
59
|
+
## Instructions For Executor
|
|
60
|
+
|
|
61
|
+
1. Check current tests before implementing.
|
|
62
|
+
2. Add only missing behavior.
|
|
63
|
+
3. Prefer evidence/docs for already-complete findings.
|
|
64
|
+
4. Preserve read-only nature.
|
|
65
|
+
|
|
66
|
+
## Completion Checklist
|
|
67
|
+
|
|
68
|
+
- [ ] Acceptance criteria satisfied.
|
|
69
|
+
- [ ] Required validations run or blockers documented.
|
|
70
|
+
- [ ] Closure brief updated.
|
|
71
|
+
|
|
72
|
+
## Conditions Of Closure
|
|
73
|
+
|
|
74
|
+
- Secondary UX edges are closed without destabilizing read-only commands.
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
# PR - QUIVER-51-04 - Next/plan/graph UX edge cases
|
|
2
|
+
|
|
3
|
+
## Title
|
|
4
|
+
|
|
5
|
+
QUIVER-51-04 next plan graph UX edge cases
|
|
6
|
+
|
|
7
|
+
## Summary
|
|
8
|
+
|
|
9
|
+
Closes secondary read-only CLI UX gaps for `next`, `plan`, and `graph` without changing scheduling or graph algorithms. Existing `next --auto-start` prompt behavior is preserved by evidence, `plan` now reports missing estimates only in human output, and `graph` now has explicit empty-level and `--json` precedence coverage.
|
|
10
|
+
|
|
11
|
+
## PR Policy
|
|
12
|
+
|
|
13
|
+
- [x] One slice only.
|
|
14
|
+
- [ ] Grouped PR exception: at most 2-3 slices, all docs-only, research-only, or low-risk mechanical cleanup.
|
|
15
|
+
- [x] No behavior changes in a grouped PR.
|
|
16
|
+
- [x] No mixed docs with UI, backend, refactor, or performance work.
|
|
17
|
+
- [x] Separate evidence for this slice is recorded in `EVIDENCE_REPORT.md`.
|
|
18
|
+
- [x] Whole PR is revertible without leaving partial state.
|
|
19
|
+
|
|
20
|
+
Individual PR required classification: functional CLI UX behavior, tests, and docs.
|
|
21
|
+
|
|
22
|
+
### Merge Policy
|
|
23
|
+
|
|
24
|
+
- [x] Human merge expected.
|
|
25
|
+
- [ ] Assisted auto-merge explicitly authorized for this PR or documented category.
|
|
26
|
+
- [ ] Assisted auto-merge conditions met: docs-only or chore-only, low risk, no runtime changes, no production configuration changes, green checks, and no pending comments.
|
|
27
|
+
|
|
28
|
+
Assisted auto-merge is not requested.
|
|
29
|
+
|
|
30
|
+
## Scope
|
|
31
|
+
|
|
32
|
+
- Preserve existing `next --auto-start` TTY/injected prompt behavior with test evidence.
|
|
33
|
+
- Add a human-only `plan` note for slices without positive `estimated_hours`.
|
|
34
|
+
- Keep `plan --json` free of human notes while reporting those hours as `0`.
|
|
35
|
+
- Add a localized human empty state for `graph --level <n>` when the selected level has no slices.
|
|
36
|
+
- Keep `graph --json --level <n>` machine-readable with empty `levels` and `conflicts`.
|
|
37
|
+
- Verify `graph --json` takes precedence over `--format tree|mermaid|dot`.
|
|
38
|
+
- Update command reference, UX guide, and command template docs.
|
|
39
|
+
|
|
40
|
+
## Files
|
|
41
|
+
|
|
42
|
+
- `src/create-quiver/commands/plan.js`
|
|
43
|
+
- `src/create-quiver/commands/graph.js`
|
|
44
|
+
- `src/create-quiver/lib/i18n/messages/en.js`
|
|
45
|
+
- `src/create-quiver/lib/i18n/messages/es.js`
|
|
46
|
+
- `tests/commands/plan.test.js`
|
|
47
|
+
- `tests/commands/graph.test.js`
|
|
48
|
+
- `docs/reference/commands.md`
|
|
49
|
+
- `docs/CLI_UX_GUIDE.md`
|
|
50
|
+
- `docs/COMMANDS.md.template`
|
|
51
|
+
- `specs/quiver-v51-cli-ergonomics-automation-contracts/STATUS.md`
|
|
52
|
+
- `specs/quiver-v51-cli-ergonomics-automation-contracts/EVIDENCE_REPORT.md`
|
|
53
|
+
- `specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-04-next-plan-graph-ux-edge-cases/slice.json`
|
|
54
|
+
- `specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-04-next-plan-graph-ux-edge-cases/CLOSURE_BRIEF.md`
|
|
55
|
+
- `specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-04-next-plan-graph-ux-edge-cases/pr.md`
|
|
56
|
+
|
|
57
|
+
## How to Test (DETAILED - REQUIRED)
|
|
58
|
+
|
|
59
|
+
### Required Environment
|
|
60
|
+
|
|
61
|
+
- Node.js supported by the repo.
|
|
62
|
+
- npm.
|
|
63
|
+
- Git.
|
|
64
|
+
|
|
65
|
+
### Worktree Access
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
cd /Users/fabrijk/Documents/Work/Proyectos\ Personales/nika/frameworks/quiver
|
|
69
|
+
git switch feature/QUIVER-51-04-v51-next-plan-graph-ux
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Run the Project
|
|
73
|
+
|
|
74
|
+
No runtime server is required. This is CLI behavior, tests, docs, and spec evidence.
|
|
75
|
+
|
|
76
|
+
### Use Cases
|
|
77
|
+
|
|
78
|
+
#### Case 1: plan missing estimates in human output
|
|
79
|
+
|
|
80
|
+
**Prerequisite:** a spec fixture or project slice without positive `estimated_hours`.
|
|
81
|
+
|
|
82
|
+
1. Run `node bin/create-quiver.js plan --lang en`.
|
|
83
|
+
2. Inspect stdout.
|
|
84
|
+
|
|
85
|
+
**Expected result:** stdout includes a human note that missing/non-positive estimates count as `0h`.
|
|
86
|
+
|
|
87
|
+
#### Case 2: plan missing estimates in JSON output
|
|
88
|
+
|
|
89
|
+
**Prerequisite:** same fixture as Case 1.
|
|
90
|
+
|
|
91
|
+
1. Run `node bin/create-quiver.js plan --json`.
|
|
92
|
+
2. Parse stdout as JSON.
|
|
93
|
+
|
|
94
|
+
**Expected result:** stdout is parseable JSON, affected slices report `hours: 0`, and no human note appears.
|
|
95
|
+
|
|
96
|
+
#### Case 3: graph empty level
|
|
97
|
+
|
|
98
|
+
**Prerequisite:** a project with pending slices but no selected graph level, for example level `99`.
|
|
99
|
+
|
|
100
|
+
1. Run `node bin/create-quiver.js graph --level 99 --lang es`.
|
|
101
|
+
2. Run `node bin/create-quiver.js graph --level 99 --json`.
|
|
102
|
+
|
|
103
|
+
**Expected result:** human output is localized empty-state text; JSON output has empty `levels` and `conflicts` arrays.
|
|
104
|
+
|
|
105
|
+
#### Case 4: graph JSON precedence over format
|
|
106
|
+
|
|
107
|
+
**Prerequisite:** a project with graphable slices.
|
|
108
|
+
|
|
109
|
+
1. Run `node bin/create-quiver.js graph --json --format mermaid`.
|
|
110
|
+
2. Parse stdout as JSON.
|
|
111
|
+
|
|
112
|
+
**Expected result:** stdout is JSON, not Mermaid, and contains the graph payload.
|
|
113
|
+
|
|
114
|
+
### Technical Verification
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
node --test tests/commands/next.test.js
|
|
118
|
+
node --test tests/commands/plan.test.js
|
|
119
|
+
node --test tests/commands/graph.test.js
|
|
120
|
+
node --test tests/commands/next.test.js tests/commands/plan.test.js tests/commands/graph.test.js tests/lib/i18n-catalog.test.js
|
|
121
|
+
node --test
|
|
122
|
+
npm run docs:check
|
|
123
|
+
git diff --check
|
|
124
|
+
node bin/create-quiver.js spec validate specs/quiver-v51-cli-ergonomics-automation-contracts
|
|
125
|
+
node bin/create-quiver.js check-slice specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-04-next-plan-graph-ux-edge-cases/slice.json --local --gate validation
|
|
126
|
+
node bin/create-quiver.js check-scope specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-04-next-plan-graph-ux-edge-cases/slice.json --base main --strict
|
|
127
|
+
node bin/create-quiver.js check-pr specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-04-next-plan-graph-ux-edge-cases/slice.json --base main
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## Evidence
|
|
131
|
+
|
|
132
|
+
- `node --test tests/commands/next.test.js tests/commands/plan.test.js tests/commands/graph.test.js tests/lib/i18n-catalog.test.js`: passed, 37 tests.
|
|
133
|
+
- `node --test`: passed, 632 tests.
|
|
134
|
+
- `npm run docs:check`: passed.
|
|
135
|
+
- `git diff --check`: passed.
|
|
136
|
+
|
|
137
|
+
## Rollback
|
|
138
|
+
|
|
139
|
+
1. Revert this slice commit with `git revert <commit-sha>`.
|
|
140
|
+
2. Run the technical verification commands above.
|
|
141
|
+
3. Confirm `plan` and `graph` return to the previous baseline behavior.
|
|
142
|
+
|
|
143
|
+
## Risks / Notes
|
|
144
|
+
|
|
145
|
+
- `next --auto-start` did not require runtime changes; existing prompt/no-TTY behavior is covered by tests.
|
|
146
|
+
- `plan` JSON does not include the human missing-estimates note.
|
|
147
|
+
- `graph --json` intentionally remains the machine-readable contract even when a human `--format` is also provided.
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slice_id": "slice-04-next-plan-graph-ux-edge-cases",
|
|
3
|
+
"ticket": "QUIVER-51-04",
|
|
4
|
+
"type": "quality",
|
|
5
|
+
"title": "Next/plan/graph UX edge cases",
|
|
6
|
+
"objective": "Close or validate secondary CLI UX edge cases without reimplementing completed behavior.",
|
|
7
|
+
"description": "Covers next auto-start prompt reuse, plan missing estimates, graph empty levels, and graph JSON/format documentation.",
|
|
8
|
+
"git": {
|
|
9
|
+
"branch_type": "feature",
|
|
10
|
+
"base_branch": "main",
|
|
11
|
+
"branch_slug": "v51-next-plan-graph-ux",
|
|
12
|
+
"branch_name": "feature/QUIVER-51-04-v51-next-plan-graph-ux"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"src/create-quiver/commands/next.js",
|
|
16
|
+
"src/create-quiver/commands/plan.js",
|
|
17
|
+
"src/create-quiver/commands/graph.js",
|
|
18
|
+
"src/create-quiver/lib/i18n/messages/en.js",
|
|
19
|
+
"src/create-quiver/lib/i18n/messages/es.js",
|
|
20
|
+
"docs/COMMANDS.md.template",
|
|
21
|
+
"docs/reference/commands.md",
|
|
22
|
+
"docs/CLI_UX_GUIDE.md",
|
|
23
|
+
"tests/commands/plan.test.js",
|
|
24
|
+
"tests/commands/graph.test.js",
|
|
25
|
+
"specs/quiver-v51-cli-ergonomics-automation-contracts/**"
|
|
26
|
+
],
|
|
27
|
+
"expected_read_paths": [
|
|
28
|
+
"src/create-quiver/commands/next.js",
|
|
29
|
+
"src/create-quiver/commands/plan.js",
|
|
30
|
+
"src/create-quiver/commands/graph.js",
|
|
31
|
+
"tests/commands/plan.test.js",
|
|
32
|
+
"tests/commands/graph.test.js",
|
|
33
|
+
"docs/reference/commands.md",
|
|
34
|
+
"docs/CLI_UX_GUIDE.md",
|
|
35
|
+
"docs/COMMANDS.md.template"
|
|
36
|
+
],
|
|
37
|
+
"allowed_write_paths": [
|
|
38
|
+
"src/create-quiver/commands/plan.js",
|
|
39
|
+
"src/create-quiver/commands/graph.js",
|
|
40
|
+
"src/create-quiver/lib/i18n/messages/en.js",
|
|
41
|
+
"src/create-quiver/lib/i18n/messages/es.js",
|
|
42
|
+
"tests/commands/plan.test.js",
|
|
43
|
+
"tests/commands/graph.test.js",
|
|
44
|
+
"docs/reference/commands.md",
|
|
45
|
+
"docs/CLI_UX_GUIDE.md",
|
|
46
|
+
"docs/COMMANDS.md.template",
|
|
47
|
+
"specs/quiver-v51-cli-ergonomics-automation-contracts/STATUS.md",
|
|
48
|
+
"specs/quiver-v51-cli-ergonomics-automation-contracts/EVIDENCE_REPORT.md",
|
|
49
|
+
"specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-04-next-plan-graph-ux-edge-cases/CLOSURE_BRIEF.md",
|
|
50
|
+
"specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-04-next-plan-graph-ux-edge-cases/slice.json",
|
|
51
|
+
"specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-04-next-plan-graph-ux-edge-cases/pr.md"
|
|
52
|
+
],
|
|
53
|
+
"depends_on": [
|
|
54
|
+
"slice-00-cli-contract-baseline"
|
|
55
|
+
],
|
|
56
|
+
"parallel_safe": "yes",
|
|
57
|
+
"parallel_safe_reason": "These read-only command UX cases are mostly independent.",
|
|
58
|
+
"must": [
|
|
59
|
+
"Close already-implemented cases by evidence/tests only.",
|
|
60
|
+
"Use common selector/prompt behavior for next --auto-start if missing.",
|
|
61
|
+
"Keep plan missing-estimates note out of JSON.",
|
|
62
|
+
"Keep graph empty-level message out of JSON.",
|
|
63
|
+
"Document graph --json precedence over --format."
|
|
64
|
+
],
|
|
65
|
+
"not_included": [
|
|
66
|
+
"Changing graph algorithms.",
|
|
67
|
+
"Changing plan scheduling semantics."
|
|
68
|
+
],
|
|
69
|
+
"acceptance": [
|
|
70
|
+
"next --auto-start respects common prompt/i18n behavior.",
|
|
71
|
+
"plan missing-estimates behavior is tested and JSON-safe.",
|
|
72
|
+
"graph --level empty state is tested and JSON-safe.",
|
|
73
|
+
"Docs match real behavior."
|
|
74
|
+
],
|
|
75
|
+
"tests": [
|
|
76
|
+
"node --test tests/commands/next.test.js",
|
|
77
|
+
"node --test tests/commands/plan.test.js",
|
|
78
|
+
"node --test tests/commands/graph.test.js",
|
|
79
|
+
"node --test",
|
|
80
|
+
"git diff --check"
|
|
81
|
+
],
|
|
82
|
+
"validation_hints": [
|
|
83
|
+
"If plan/graph behavior already exists, do not refactor; record evidence and add missing docs/tests only."
|
|
84
|
+
],
|
|
85
|
+
"estimated_hours": 5,
|
|
86
|
+
"status": "completed",
|
|
87
|
+
"blocked_reason": null,
|
|
88
|
+
"actual_hours": 4,
|
|
89
|
+
"started_at": "2026-06-02T16:30:00-0300",
|
|
90
|
+
"completed_at": "2026-06-02T16:46:10-0300"
|
|
91
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# CLOSURE_BRIEF - slice-05 evidence robustness and path safety
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
Implemented evidence command hardening for failure preservation, safe output/read paths, signal metadata, JSON list/show, docs, and i18n audit matrix coverage.
|
|
6
|
+
|
|
7
|
+
## Validation
|
|
8
|
+
|
|
9
|
+
- [x] `node --test tests/commands/evidence.test.js`
|
|
10
|
+
- [x] `node --test tests/lib/evidence.test.js`
|
|
11
|
+
- [x] `node --test tests/commands/evidence.test.js tests/lib/evidence.test.js tests/lib/i18n-catalog.test.js tests/commands/cli-contract.test.js`
|
|
12
|
+
- [x] `node --test tests/commands/i18n-audit-matrix.test.js tests/commands/evidence.test.js tests/lib/evidence.test.js tests/lib/i18n-catalog.test.js tests/commands/cli-contract.test.js`
|
|
13
|
+
- [x] `node --test`
|
|
14
|
+
- [x] `npm run docs:check`
|
|
15
|
+
- [x] `git diff --check`
|
|
16
|
+
|
|
17
|
+
## Closure Conditions
|
|
18
|
+
|
|
19
|
+
- [x] Exit code and failure evidence behavior preserved.
|
|
20
|
+
- [x] Signal behavior tested and documented.
|
|
21
|
+
- [x] Direct child execution remains synchronous with `shell: false`; no shell-created child process is introduced.
|
|
22
|
+
- [x] Path safety enforced for traversal and symlink escapes.
|
|
23
|
+
- [x] Redaction/truncation preserved.
|
|
24
|
+
- [x] JSON list/show remain parseable.
|
|
25
|
+
|
|
26
|
+
## Open Items
|
|
27
|
+
|
|
28
|
+
- None.
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# EXECUTION_BRIEF - slice-05 evidence robustness and path safety
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
Evidence is a trust artifact. It must remain reliable for success, failure, interruption, large output, secrets, and safe paths.
|
|
6
|
+
|
|
7
|
+
## Objective
|
|
8
|
+
|
|
9
|
+
Make evidence run/list/show robust for failures, signals, output limits, redaction, JSON, and safe paths.
|
|
10
|
+
|
|
11
|
+
## Scope
|
|
12
|
+
|
|
13
|
+
- `evidence run`.
|
|
14
|
+
- `evidence list`.
|
|
15
|
+
- `evidence show`.
|
|
16
|
+
- Output path policy.
|
|
17
|
+
- Path traversal and symlink safety.
|
|
18
|
+
- Exit code and signal behavior.
|
|
19
|
+
- Redaction/truncation.
|
|
20
|
+
|
|
21
|
+
## Acceptance Criteria
|
|
22
|
+
|
|
23
|
+
- Failing child exit codes are preserved.
|
|
24
|
+
- Evidence is written for command failures.
|
|
25
|
+
- Signal behavior is documented and tested.
|
|
26
|
+
- No orphan child processes remain.
|
|
27
|
+
- Output/read paths cannot escape the allowed policy.
|
|
28
|
+
- Redaction and truncation still work.
|
|
29
|
+
- JSON list/show remain parseable.
|
|
30
|
+
|
|
31
|
+
## Expected Files To Modify
|
|
32
|
+
|
|
33
|
+
- `src/create-quiver/commands/evidence.js`
|
|
34
|
+
- `src/create-quiver/lib/evidence.js`
|
|
35
|
+
- `src/create-quiver/lib/i18n/messages/en.js`
|
|
36
|
+
- `src/create-quiver/lib/i18n/messages/es.js`
|
|
37
|
+
- `tests/commands/evidence.test.js`
|
|
38
|
+
- `tests/lib/evidence.test.js`
|
|
39
|
+
- `docs/reference/commands.md`
|
|
40
|
+
- `specs/quiver-v51-cli-ergonomics-automation-contracts/EVIDENCE_REPORT.md`
|
|
41
|
+
|
|
42
|
+
## Validations Required
|
|
43
|
+
|
|
44
|
+
- `node --test tests/commands/evidence.test.js`
|
|
45
|
+
- `node --test tests/lib/evidence.test.js`
|
|
46
|
+
- `node --test`
|
|
47
|
+
- `git diff --check`
|
|
48
|
+
|
|
49
|
+
## Risks
|
|
50
|
+
|
|
51
|
+
- Breaking exit code semantics.
|
|
52
|
+
- Losing partial output on interruption.
|
|
53
|
+
- Allowing path escape through symlinks.
|
|
54
|
+
|
|
55
|
+
## Dependencies
|
|
56
|
+
|
|
57
|
+
- Depends on `slice-00-cli-contract-baseline`.
|
|
58
|
+
|
|
59
|
+
## Instructions For Executor
|
|
60
|
+
|
|
61
|
+
1. Define output path policy before implementation.
|
|
62
|
+
2. Preserve existing evidence format unless migration is compatible.
|
|
63
|
+
3. Test failure, signal, traversal, symlink, truncation, and redaction cases.
|
|
64
|
+
|
|
65
|
+
## Completion Checklist
|
|
66
|
+
|
|
67
|
+
- [ ] Acceptance criteria satisfied.
|
|
68
|
+
- [ ] Required validations run or blockers documented.
|
|
69
|
+
- [ ] Closure brief updated.
|
|
70
|
+
|
|
71
|
+
## Conditions Of Closure
|
|
72
|
+
|
|
73
|
+
- Evidence commands are safe and reliable under production failure modes.
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
# PR - QUIVER-51-05 - Evidence robustness and path safety
|
|
2
|
+
|
|
3
|
+
## Title
|
|
4
|
+
|
|
5
|
+
QUIVER-51-05 evidence robustness and path safety
|
|
6
|
+
|
|
7
|
+
## Summary
|
|
8
|
+
|
|
9
|
+
Hardens `evidence run/list/show` for production failure modes without changing the existing evidence Markdown contract. The slice preserves child exit codes, writes evidence on failures, records signal metadata, enforces safe project-local output/read paths, keeps redaction/truncation behavior, and documents JSON list/show usage.
|
|
10
|
+
|
|
11
|
+
## PR Policy
|
|
12
|
+
|
|
13
|
+
- [x] One slice only.
|
|
14
|
+
- [ ] Grouped PR exception: at most 2-3 slices, all docs-only, research-only, or low-risk mechanical cleanup.
|
|
15
|
+
- [x] No behavior changes in a grouped PR.
|
|
16
|
+
- [x] No mixed docs with UI, backend, refactor, or performance work.
|
|
17
|
+
- [x] Separate evidence for this slice is recorded in `EVIDENCE_REPORT.md`.
|
|
18
|
+
- [x] Whole PR is revertible without leaving partial state.
|
|
19
|
+
|
|
20
|
+
Individual PR required classification: functional CLI behavior, tests, docs, and audit matrix coverage.
|
|
21
|
+
|
|
22
|
+
### Merge Policy
|
|
23
|
+
|
|
24
|
+
- [x] Human merge expected.
|
|
25
|
+
- [ ] Assisted auto-merge explicitly authorized for this PR or documented category.
|
|
26
|
+
- [ ] Assisted auto-merge conditions met: docs-only or chore-only, low risk, no runtime changes, no production configuration changes, green checks, and no pending comments.
|
|
27
|
+
|
|
28
|
+
Assisted auto-merge is not requested.
|
|
29
|
+
|
|
30
|
+
## Scope
|
|
31
|
+
|
|
32
|
+
- Preserve `evidence run` child exit-code behavior for successful and failing commands.
|
|
33
|
+
- Keep writing evidence when the wrapped command exits with a non-zero status.
|
|
34
|
+
- Record signal termination metadata and return standard `128 + signal` exit codes for signaled processes.
|
|
35
|
+
- Add safe `evidence list` and `evidence show` helpers with parseable `--json` output.
|
|
36
|
+
- Reject output/read path traversal and symlink escapes before execution or reads.
|
|
37
|
+
- Preserve redaction and truncation.
|
|
38
|
+
- Update CLI help, command docs, and i18n audit matrix coverage.
|
|
39
|
+
|
|
40
|
+
## Files
|
|
41
|
+
|
|
42
|
+
- `src/create-quiver/commands/evidence.js`
|
|
43
|
+
- `src/create-quiver/lib/evidence.js`
|
|
44
|
+
- `src/create-quiver/index.js`
|
|
45
|
+
- `src/create-quiver/lib/i18n/messages/en.js`
|
|
46
|
+
- `src/create-quiver/lib/i18n/messages/es.js`
|
|
47
|
+
- `tests/commands/cli-contract.test.js`
|
|
48
|
+
- `tests/commands/evidence.test.js`
|
|
49
|
+
- `tests/lib/evidence.test.js`
|
|
50
|
+
- `docs/reference/commands.md`
|
|
51
|
+
- `docs/COMMANDS.md.template`
|
|
52
|
+
- `specs/quiver-v43-cli-i18n-audit-release-readiness/command-language-mode-matrix.json`
|
|
53
|
+
- `specs/quiver-v51-cli-ergonomics-automation-contracts/STATUS.md`
|
|
54
|
+
- `specs/quiver-v51-cli-ergonomics-automation-contracts/EVIDENCE_REPORT.md`
|
|
55
|
+
- `specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-05-evidence-robustness-path-safety/slice.json`
|
|
56
|
+
- `specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-05-evidence-robustness-path-safety/CLOSURE_BRIEF.md`
|
|
57
|
+
- `specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-05-evidence-robustness-path-safety/pr.md`
|
|
58
|
+
|
|
59
|
+
## How to Test (DETAILED - REQUIRED)
|
|
60
|
+
|
|
61
|
+
### Required Environment
|
|
62
|
+
|
|
63
|
+
- Node.js supported by the repo.
|
|
64
|
+
- npm.
|
|
65
|
+
- Git.
|
|
66
|
+
|
|
67
|
+
### Worktree Access
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
cd /Users/fabrijk/Documents/Work/Proyectos\ Personales/nika/frameworks/quiver
|
|
71
|
+
git switch feature/QUIVER-51-05-v51-evidence-robustness
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### Run the Project
|
|
75
|
+
|
|
76
|
+
No runtime server is required. This is CLI behavior, tests, docs, and spec evidence.
|
|
77
|
+
|
|
78
|
+
### Use Cases
|
|
79
|
+
|
|
80
|
+
#### Case 1: failing command still writes evidence
|
|
81
|
+
|
|
82
|
+
1. Run `node bin/create-quiver.js evidence run --output .quiver/evidence/failure.md -- node -e "console.error('failing command'); process.exit(7)"`.
|
|
83
|
+
2. Inspect `.quiver/evidence/failure.md`.
|
|
84
|
+
|
|
85
|
+
**Expected result:** CLI exits with code `7`; evidence file exists and contains `Exit code: 7` plus captured stderr.
|
|
86
|
+
|
|
87
|
+
#### Case 2: JSON list/show contract
|
|
88
|
+
|
|
89
|
+
1. Run `node bin/create-quiver.js evidence run -- node -e "console.log('json evidence')"`.
|
|
90
|
+
2. Run `node bin/create-quiver.js evidence list --json`.
|
|
91
|
+
3. Run `node bin/create-quiver.js evidence show <path-from-list> --json`.
|
|
92
|
+
4. Parse both JSON outputs.
|
|
93
|
+
|
|
94
|
+
**Expected result:** both commands emit parseable JSON; `show` includes the evidence content and parsed metadata.
|
|
95
|
+
|
|
96
|
+
#### Case 3: unsafe output path is rejected before command execution
|
|
97
|
+
|
|
98
|
+
1. Run `node bin/create-quiver.js evidence run --output ../escape.md -- node -e "require('fs').writeFileSync('marker.txt','ran')"`.
|
|
99
|
+
2. Inspect the project root and parent directory.
|
|
100
|
+
|
|
101
|
+
**Expected result:** CLI exits with an error before running the child command; no `marker.txt` or escaped evidence file is created.
|
|
102
|
+
|
|
103
|
+
#### Case 4: signal metadata
|
|
104
|
+
|
|
105
|
+
**Prerequisite:** signal behavior is covered by unit tests with a mocked `spawnSync` result.
|
|
106
|
+
|
|
107
|
+
1. Run `node --test tests/lib/evidence.test.js`.
|
|
108
|
+
2. Inspect the `runEvidenceCommand records signal metadata and signal exit code` test.
|
|
109
|
+
|
|
110
|
+
**Expected result:** signaled process records `Signal: SIGTERM` and returns exit code `143`.
|
|
111
|
+
|
|
112
|
+
### Technical Verification
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
node --test tests/commands/evidence.test.js
|
|
116
|
+
node --test tests/lib/evidence.test.js
|
|
117
|
+
node --test tests/commands/evidence.test.js tests/lib/evidence.test.js tests/lib/i18n-catalog.test.js tests/commands/cli-contract.test.js
|
|
118
|
+
node --test tests/commands/i18n-audit-matrix.test.js tests/commands/evidence.test.js tests/lib/evidence.test.js tests/lib/i18n-catalog.test.js tests/commands/cli-contract.test.js
|
|
119
|
+
node --test
|
|
120
|
+
npm run docs:check
|
|
121
|
+
git diff --check
|
|
122
|
+
node bin/create-quiver.js spec validate specs/quiver-v51-cli-ergonomics-automation-contracts
|
|
123
|
+
node bin/create-quiver.js check-slice specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-05-evidence-robustness-path-safety/slice.json --local --gate validation
|
|
124
|
+
node bin/create-quiver.js check-scope specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-05-evidence-robustness-path-safety/slice.json --base main --strict
|
|
125
|
+
node bin/create-quiver.js check-pr specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-05-evidence-robustness-path-safety/slice.json --base main
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## Evidence
|
|
129
|
+
|
|
130
|
+
- `node --test tests/commands/evidence.test.js tests/lib/evidence.test.js tests/lib/i18n-catalog.test.js tests/commands/cli-contract.test.js`: passed, 38 tests.
|
|
131
|
+
- `node --test tests/commands/i18n-audit-matrix.test.js tests/commands/evidence.test.js tests/lib/evidence.test.js tests/lib/i18n-catalog.test.js tests/commands/cli-contract.test.js`: passed, 40 tests.
|
|
132
|
+
- `node --test`: passed, 638 tests.
|
|
133
|
+
- `npm run docs:check`: passed.
|
|
134
|
+
- `git diff --check`: passed.
|
|
135
|
+
|
|
136
|
+
## Rollback
|
|
137
|
+
|
|
138
|
+
1. Revert this slice commit with `git revert <commit-sha>`.
|
|
139
|
+
2. Run the technical verification commands above.
|
|
140
|
+
3. Confirm `evidence run` returns to the previous baseline behavior and `evidence list/show` docs/help changes are removed.
|
|
141
|
+
|
|
142
|
+
## Risks / Notes
|
|
143
|
+
|
|
144
|
+
- Path checks intentionally reject traversal and symlink escapes for explicit output/read paths.
|
|
145
|
+
- `evidence run` still uses synchronous direct child execution with `shell: false`; this avoids introducing shell-created child processes.
|
|
146
|
+
- Redaction remains best effort; users should avoid commands that deliberately print secrets.
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slice_id": "slice-05-evidence-robustness-path-safety",
|
|
3
|
+
"ticket": "QUIVER-51-05",
|
|
4
|
+
"type": "feature",
|
|
5
|
+
"title": "Evidence robustness and path safety",
|
|
6
|
+
"objective": "Make evidence run/list/show robust for failures, signals, output limits, redaction, JSON, and safe paths.",
|
|
7
|
+
"description": "Hardens evidence commands while preserving existing output and exit-code contracts.",
|
|
8
|
+
"git": {
|
|
9
|
+
"branch_type": "feature",
|
|
10
|
+
"base_branch": "main",
|
|
11
|
+
"branch_slug": "v51-evidence-robustness",
|
|
12
|
+
"branch_name": "feature/QUIVER-51-05-v51-evidence-robustness"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"src/create-quiver/commands/evidence.js",
|
|
16
|
+
"src/create-quiver/lib/evidence.js",
|
|
17
|
+
"src/create-quiver/index.js",
|
|
18
|
+
"src/create-quiver/lib/i18n/messages/en.js",
|
|
19
|
+
"src/create-quiver/lib/i18n/messages/es.js",
|
|
20
|
+
"tests/commands/cli-contract.test.js",
|
|
21
|
+
"tests/commands/evidence.test.js",
|
|
22
|
+
"tests/lib/evidence.test.js",
|
|
23
|
+
"docs/COMMANDS.md.template",
|
|
24
|
+
"docs/reference/commands.md",
|
|
25
|
+
"specs/quiver-v43-cli-i18n-audit-release-readiness/command-language-mode-matrix.json",
|
|
26
|
+
"specs/quiver-v51-cli-ergonomics-automation-contracts/**"
|
|
27
|
+
],
|
|
28
|
+
"expected_read_paths": [
|
|
29
|
+
"src/create-quiver/commands/evidence.js",
|
|
30
|
+
"src/create-quiver/lib/evidence.js",
|
|
31
|
+
"src/create-quiver/index.js",
|
|
32
|
+
"src/create-quiver/lib/i18n/messages/en.js",
|
|
33
|
+
"src/create-quiver/lib/i18n/messages/es.js",
|
|
34
|
+
"tests/commands/cli-contract.test.js",
|
|
35
|
+
"tests/commands/evidence.test.js",
|
|
36
|
+
"tests/lib/evidence.test.js",
|
|
37
|
+
"docs/reference/commands.md",
|
|
38
|
+
"docs/COMMANDS.md.template",
|
|
39
|
+
"specs/quiver-v43-cli-i18n-audit-release-readiness/command-language-mode-matrix.json"
|
|
40
|
+
],
|
|
41
|
+
"allowed_write_paths": [
|
|
42
|
+
"src/create-quiver/commands/evidence.js",
|
|
43
|
+
"src/create-quiver/lib/evidence.js",
|
|
44
|
+
"src/create-quiver/index.js",
|
|
45
|
+
"src/create-quiver/lib/i18n/messages/en.js",
|
|
46
|
+
"src/create-quiver/lib/i18n/messages/es.js",
|
|
47
|
+
"tests/commands/cli-contract.test.js",
|
|
48
|
+
"tests/commands/evidence.test.js",
|
|
49
|
+
"tests/lib/evidence.test.js",
|
|
50
|
+
"docs/COMMANDS.md.template",
|
|
51
|
+
"docs/reference/commands.md",
|
|
52
|
+
"specs/quiver-v43-cli-i18n-audit-release-readiness/command-language-mode-matrix.json",
|
|
53
|
+
"specs/quiver-v51-cli-ergonomics-automation-contracts/STATUS.md",
|
|
54
|
+
"specs/quiver-v51-cli-ergonomics-automation-contracts/EVIDENCE_REPORT.md",
|
|
55
|
+
"specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-05-evidence-robustness-path-safety/CLOSURE_BRIEF.md",
|
|
56
|
+
"specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-05-evidence-robustness-path-safety/slice.json",
|
|
57
|
+
"specs/quiver-v51-cli-ergonomics-automation-contracts/slices/slice-05-evidence-robustness-path-safety/pr.md"
|
|
58
|
+
],
|
|
59
|
+
"depends_on": [
|
|
60
|
+
"slice-00-cli-contract-baseline"
|
|
61
|
+
],
|
|
62
|
+
"parallel_safe": "no",
|
|
63
|
+
"parallel_safe_reason": "Evidence run async/signal/path behavior is sensitive and should be isolated.",
|
|
64
|
+
"must": [
|
|
65
|
+
"Preserve child exit code behavior.",
|
|
66
|
+
"Document and test signal behavior.",
|
|
67
|
+
"Keep evidence writing on command failure.",
|
|
68
|
+
"Preserve redaction and truncation.",
|
|
69
|
+
"Define and enforce safe output/read path policy."
|
|
70
|
+
],
|
|
71
|
+
"not_included": [
|
|
72
|
+
"Changing evidence storage format unless compatible and documented.",
|
|
73
|
+
"Dashboard integration."
|
|
74
|
+
],
|
|
75
|
+
"acceptance": [
|
|
76
|
+
"Failing commands preserve exit codes and write evidence.",
|
|
77
|
+
"Signals do not leave orphan child processes.",
|
|
78
|
+
"Path traversal and symlink escape are covered.",
|
|
79
|
+
"JSON list/show remain parseable.",
|
|
80
|
+
"Secrets stay redacted."
|
|
81
|
+
],
|
|
82
|
+
"tests": [
|
|
83
|
+
"node --test tests/commands/evidence.test.js",
|
|
84
|
+
"node --test tests/lib/evidence.test.js",
|
|
85
|
+
"node --test tests/commands/i18n-audit-matrix.test.js",
|
|
86
|
+
"node --test tests/commands/cli-contract.test.js",
|
|
87
|
+
"npm run docs:check",
|
|
88
|
+
"node --test",
|
|
89
|
+
"git diff --check"
|
|
90
|
+
],
|
|
91
|
+
"validation_hints": [
|
|
92
|
+
"If replacing spawnSync with spawn, preserve existing CLI exit-code behavior."
|
|
93
|
+
],
|
|
94
|
+
"estimated_hours": 8,
|
|
95
|
+
"status": "completed",
|
|
96
|
+
"blocked_reason": null,
|
|
97
|
+
"actual_hours": 4,
|
|
98
|
+
"started_at": "2026-06-02T17:05:00-0300",
|
|
99
|
+
"completed_at": "2026-06-02T17:24:19-0300"
|
|
100
|
+
}
|