create-quiver 0.17.1 → 0.17.2
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/ACTIVE_SLICES.md +43 -0
- package/CHANGELOG.md +4 -0
- package/auditoria-ux-ui-performance-documentacion.md +705 -0
- package/copys-landing-page.md +244 -0
- package/docs/TROUBLESHOOTING.md +53 -0
- package/docs/reference/commands.md +42 -0
- package/docs/workflows/existing-project-ai-quiver-setup.md +552 -0
- package/docs/workflows/existing-project.md +21 -0
- package/package.json +1 -1
- package/specs/quiver-v43-cli-i18n-audit-release-readiness/command-language-mode-matrix.json +1 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/EVIDENCE_REPORT.md +151 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/EXECUTION_PLAN.md +50 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/SPEC.md +207 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/STATUS.md +32 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/pr.md +73 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-00-analysis-run-contract/CLOSURE_BRIEF.md +32 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-00-analysis-run-contract/EXECUTION_BRIEF.md +63 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-00-analysis-run-contract/slice.json +70 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-01-provider-fixture-harness/CLOSURE_BRIEF.md +38 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-01-provider-fixture-harness/EXECUTION_BRIEF.md +60 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-01-provider-fixture-harness/slice.json +74 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-02-safe-context-boundary/CLOSURE_BRIEF.md +33 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-02-safe-context-boundary/EXECUTION_BRIEF.md +68 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-02-safe-context-boundary/slice.json +85 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-03-schema-error-grouping/CLOSURE_BRIEF.md +34 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-03-schema-error-grouping/EXECUTION_BRIEF.md +65 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-03-schema-error-grouping/slice.json +80 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-04-safe-repair-layer/CLOSURE_BRIEF.md +34 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-04-safe-repair-layer/EXECUTION_BRIEF.md +63 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-04-safe-repair-layer/slice.json +80 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-05-controlled-retry-layer/CLOSURE_BRIEF.md +34 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-05-controlled-retry-layer/EXECUTION_BRIEF.md +65 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-05-controlled-retry-layer/slice.json +81 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-06-audit-review-transaction/CLOSURE_BRIEF.md +35 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-06-audit-review-transaction/EXECUTION_BRIEF.md +71 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-06-audit-review-transaction/slice.json +88 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-07-semantic-validation-docs/CLOSURE_BRIEF.md +32 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-07-semantic-validation-docs/EXECUTION_BRIEF.md +66 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-07-semantic-validation-docs/slice.json +86 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-08-structural-map-hardening/CLOSURE_BRIEF.md +34 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-08-structural-map-hardening/EXECUTION_BRIEF.md +67 -0
- package/specs/quiver-v53-reliable-deep-project-analysis/slices/slice-08-structural-map-hardening/slice.json +81 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/EVIDENCE_REPORT.md +53 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/EXECUTION_PLAN.md +55 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/SPEC.md +184 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/STATUS.md +34 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-01-contract-regression-harness/CLOSURE_BRIEF.md +10 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-01-contract-regression-harness/EXECUTION_BRIEF.md +54 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-01-contract-regression-harness/slice.json +72 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-02-safe-discovery-sampling/CLOSURE_BRIEF.md +11 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-02-safe-discovery-sampling/EXECUTION_BRIEF.md +53 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-02-safe-discovery-sampling/slice.json +69 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-03-run-lifecycle-cli-io/CLOSURE_BRIEF.md +10 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-03-run-lifecycle-cli-io/EXECUTION_BRIEF.md +53 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-03-run-lifecycle-cli-io/slice.json +69 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-04-artifact-store-redaction/CLOSURE_BRIEF.md +10 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-04-artifact-store-redaction/EXECUTION_BRIEF.md +54 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-04-artifact-store-redaction/slice.json +73 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-05-path-aware-repair-engine/CLOSURE_BRIEF.md +10 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-05-path-aware-repair-engine/EXECUTION_BRIEF.md +57 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-05-path-aware-repair-engine/slice.json +72 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-06-retry-controller/CLOSURE_BRIEF.md +9 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-06-retry-controller/EXECUTION_BRIEF.md +52 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-06-retry-controller/slice.json +70 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-07-final-validation-review-write-gate/CLOSURE_BRIEF.md +10 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-07-final-validation-review-write-gate/EXECUTION_BRIEF.md +57 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-07-final-validation-review-write-gate/slice.json +75 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-08-doctor-agents-guidance/CLOSURE_BRIEF.md +9 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-08-doctor-agents-guidance/EXECUTION_BRIEF.md +51 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-08-doctor-agents-guidance/slice.json +66 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-09-release-smoke-rollback-docs/CLOSURE_BRIEF.md +10 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-09-release-smoke-rollback-docs/EXECUTION_BRIEF.md +54 -0
- package/specs/quiver-v54-deep-project-analysis-hardening/slices/slice-09-release-smoke-rollback-docs/slice.json +69 -0
- package/src/create-quiver/commands/ai.js +353 -70
- package/src/create-quiver/index.js +3 -0
- package/src/create-quiver/lib/ai/analyze-project-discovery.js +213 -2
- package/src/create-quiver/lib/ai/analyze-project-docs.js +3 -1
- package/src/create-quiver/lib/ai/analyze-project-parser.js +1 -0
- package/src/create-quiver/lib/ai/analyze-project-prompts.js +130 -0
- package/src/create-quiver/lib/ai/analyze-project-repair.js +402 -0
- package/src/create-quiver/lib/ai/analyze-project-sampling.js +31 -4
- package/src/create-quiver/lib/ai/analyze-project-validation.js +168 -0
- package/src/create-quiver/lib/ai/artifacts.js +83 -2
- package/src/create-quiver/lib/doctor.js +107 -12
- package/src/create-quiver/lib/i18n/messages/en.js +5 -0
- package/src/create-quiver/lib/i18n/messages/es.js +5 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# CLOSURE_BRIEF - slice-08 structural map hardening
|
|
2
|
+
|
|
3
|
+
## Status
|
|
4
|
+
|
|
5
|
+
Completed on 2026-06-11.
|
|
6
|
+
|
|
7
|
+
## Summary
|
|
8
|
+
|
|
9
|
+
Analyze-project now includes a bounded, generic structural map with route, component, context, config, script, import, and export signals. Extraction is best-effort, budgeted, and does not weaken path safety or reliability behavior.
|
|
10
|
+
|
|
11
|
+
## Evidence
|
|
12
|
+
|
|
13
|
+
- `discoverProjectFiles` includes `detected.structural_map`.
|
|
14
|
+
- Dry-run JSON exposes structural map metadata.
|
|
15
|
+
- Provider prompt includes compact structural map JSON.
|
|
16
|
+
- Unknown-stack fallback remains covered.
|
|
17
|
+
- Extraction warnings are non-fatal and bounded.
|
|
18
|
+
|
|
19
|
+
## Validation
|
|
20
|
+
|
|
21
|
+
- `node --test tests/lib/ai-analyze-project-discovery.test.js` passed: 4 tests.
|
|
22
|
+
- `node --test tests/commands/ai-analyze-project.test.js` passed: 3 tests.
|
|
23
|
+
- `node --test tests/commands/ai-analyze-project-provider.test.js` passed: 17 tests.
|
|
24
|
+
- `npm run smoke:create-quiver` passed.
|
|
25
|
+
- `git diff --check` passed.
|
|
26
|
+
|
|
27
|
+
## Decisions
|
|
28
|
+
|
|
29
|
+
- Structural extraction uses conservative regex heuristics only for common text source extensions.
|
|
30
|
+
- The map is context quality metadata; it does not replace semantic sampling or provider validation.
|
|
31
|
+
|
|
32
|
+
## Follow-ups
|
|
33
|
+
|
|
34
|
+
- Consider stack-specific adapters in a future spec only after generic structural mapping proves useful.
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# EXECUTION_BRIEF - slice-08 structural map hardening
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
After reliability is stable, context quality can improve by giving the provider a deterministic structural map. This should reduce drift and tokens without adding risky full-language parsing.
|
|
6
|
+
|
|
7
|
+
## Objective
|
|
8
|
+
|
|
9
|
+
Add a bounded, generic structural map to analyze-project context.
|
|
10
|
+
|
|
11
|
+
## Scope
|
|
12
|
+
|
|
13
|
+
- Imports/exports where cheaply detectable.
|
|
14
|
+
- Routes and entrypoints.
|
|
15
|
+
- Components and contexts.
|
|
16
|
+
- Configs and scripts.
|
|
17
|
+
- Prompt integration.
|
|
18
|
+
- Dry-run JSON reporting.
|
|
19
|
+
|
|
20
|
+
## Acceptance Criteria
|
|
21
|
+
|
|
22
|
+
- Dry-run reports structural map metadata.
|
|
23
|
+
- Provider prompt includes compact structural map context.
|
|
24
|
+
- Unknown stacks still work.
|
|
25
|
+
- Extraction failures do not block analysis.
|
|
26
|
+
- Unsafe paths remain excluded.
|
|
27
|
+
|
|
28
|
+
## Expected Files To Modify
|
|
29
|
+
|
|
30
|
+
- `src/create-quiver/lib/ai/analyze-project-discovery.js`
|
|
31
|
+
- `src/create-quiver/lib/ai/analyze-project-sampling.js`
|
|
32
|
+
- `src/create-quiver/lib/ai/analyze-project-prompts.js`
|
|
33
|
+
- analyze-project tests/fixtures
|
|
34
|
+
|
|
35
|
+
## Validations Required
|
|
36
|
+
|
|
37
|
+
- `node --test tests/commands/ai-analyze-project.test.js`
|
|
38
|
+
- `node --test tests/commands/ai-analyze-project-provider.test.js`
|
|
39
|
+
- `npm run smoke:create-quiver`
|
|
40
|
+
- `git diff --check`
|
|
41
|
+
|
|
42
|
+
## Risks
|
|
43
|
+
|
|
44
|
+
- Structural extraction can become overengineered.
|
|
45
|
+
- Regex-based parsing can misclassify files.
|
|
46
|
+
- Extra context can increase token usage if not bounded.
|
|
47
|
+
|
|
48
|
+
## Dependencies
|
|
49
|
+
|
|
50
|
+
- Depends on `slice-07-semantic-validation-docs`.
|
|
51
|
+
|
|
52
|
+
## Instructions For Executor
|
|
53
|
+
|
|
54
|
+
1. Keep extraction best-effort and bounded.
|
|
55
|
+
2. Prefer generic signals over framework-specific assumptions.
|
|
56
|
+
3. Do not change repair/retry behavior in this slice.
|
|
57
|
+
|
|
58
|
+
## Completion Checklist
|
|
59
|
+
|
|
60
|
+
- [ ] Structural map generated.
|
|
61
|
+
- [ ] Prompt integration tested.
|
|
62
|
+
- [ ] Dry-run output updated.
|
|
63
|
+
- [ ] Closure brief updated.
|
|
64
|
+
|
|
65
|
+
## Conditions Of Closure
|
|
66
|
+
|
|
67
|
+
- Analyze-project has better deterministic context without weakening reliability or safety.
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slice_id": "slice-08-structural-map-hardening",
|
|
3
|
+
"ticket": "QUIVER-53-08",
|
|
4
|
+
"type": "context-quality",
|
|
5
|
+
"title": "Structural map hardening",
|
|
6
|
+
"objective": "Improve provider context quality after the reliability kernel is stable.",
|
|
7
|
+
"description": "Adds a deterministic structural map for analyze-project using low-risk stack-agnostic signals such as imports, exports, components, contexts, routes, configs, and scripts.",
|
|
8
|
+
"git": {
|
|
9
|
+
"branch_type": "feature",
|
|
10
|
+
"base_branch": "main",
|
|
11
|
+
"branch_slug": "v53-structural-map-hardening",
|
|
12
|
+
"branch_name": "feature/QUIVER-53-08-v53-structural-map-hardening"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"src/create-quiver/lib/ai/analyze-project-discovery.js",
|
|
16
|
+
"src/create-quiver/lib/ai/analyze-project-sampling.js",
|
|
17
|
+
"src/create-quiver/lib/ai/analyze-project-prompts.js",
|
|
18
|
+
"tests/commands/ai-analyze-project.test.js",
|
|
19
|
+
"tests/commands/ai-analyze-project-provider.test.js",
|
|
20
|
+
"specs/quiver-v53-reliable-deep-project-analysis/STATUS.md",
|
|
21
|
+
"specs/quiver-v53-reliable-deep-project-analysis/EVIDENCE_REPORT.md",
|
|
22
|
+
"specs/quiver-v53-reliable-deep-project-analysis/slices/slice-08-structural-map-hardening/CLOSURE_BRIEF.md",
|
|
23
|
+
"specs/quiver-v53-reliable-deep-project-analysis/slices/slice-08-structural-map-hardening/slice.json"
|
|
24
|
+
],
|
|
25
|
+
"expected_read_paths": [
|
|
26
|
+
"src/create-quiver/lib/ai/analyze-project-discovery.js",
|
|
27
|
+
"src/create-quiver/lib/ai/analyze-project-sampling.js",
|
|
28
|
+
"src/create-quiver/lib/ai/analyze-project-prompts.js",
|
|
29
|
+
"tests/commands/ai-analyze-project.test.js"
|
|
30
|
+
],
|
|
31
|
+
"allowed_write_paths": [
|
|
32
|
+
"src/create-quiver/lib/ai/analyze-project-discovery.js",
|
|
33
|
+
"src/create-quiver/lib/ai/analyze-project-sampling.js",
|
|
34
|
+
"src/create-quiver/lib/ai/analyze-project-prompts.js",
|
|
35
|
+
"tests/commands/ai-analyze-project.test.js",
|
|
36
|
+
"tests/commands/ai-analyze-project-provider.test.js",
|
|
37
|
+
"tests/fixtures/analyze-project/**",
|
|
38
|
+
"specs/quiver-v53-reliable-deep-project-analysis/STATUS.md",
|
|
39
|
+
"specs/quiver-v53-reliable-deep-project-analysis/EVIDENCE_REPORT.md",
|
|
40
|
+
"specs/quiver-v53-reliable-deep-project-analysis/slices/slice-08-structural-map-hardening/CLOSURE_BRIEF.md",
|
|
41
|
+
"specs/quiver-v53-reliable-deep-project-analysis/slices/slice-08-structural-map-hardening/slice.json"
|
|
42
|
+
],
|
|
43
|
+
"depends_on": [
|
|
44
|
+
"slice-07-semantic-validation-docs"
|
|
45
|
+
],
|
|
46
|
+
"parallel_safe": "after_dependencies",
|
|
47
|
+
"parallel_safe_reason": "Context quality changes should happen after reliability behavior is stable and documented.",
|
|
48
|
+
"must": [
|
|
49
|
+
"Generate a deterministic structural map from low-risk generic signals.",
|
|
50
|
+
"Include imports, exports, route files, components, contexts, configs, and scripts where discoverable.",
|
|
51
|
+
"Keep unknown-stack fallback behavior.",
|
|
52
|
+
"Respect existing file and byte budgets.",
|
|
53
|
+
"Do not block analysis if structural extraction fails for a file."
|
|
54
|
+
],
|
|
55
|
+
"not_included": [
|
|
56
|
+
"Full AST support for every language.",
|
|
57
|
+
"Replacing semantic sampling.",
|
|
58
|
+
"Changing repair or retry behavior."
|
|
59
|
+
],
|
|
60
|
+
"acceptance": [
|
|
61
|
+
"Dry-run JSON includes structural map metadata without reading unsafe paths.",
|
|
62
|
+
"Provider prompt receives a compact structural map.",
|
|
63
|
+
"Unknown stack projects still analyze with generic fallback.",
|
|
64
|
+
"Structural extraction errors are warnings, not fatal analysis failures."
|
|
65
|
+
],
|
|
66
|
+
"tests": [
|
|
67
|
+
"node --test tests/commands/ai-analyze-project.test.js",
|
|
68
|
+
"node --test tests/commands/ai-analyze-project-provider.test.js",
|
|
69
|
+
"npm run smoke:create-quiver",
|
|
70
|
+
"git diff --check"
|
|
71
|
+
],
|
|
72
|
+
"validation_hints": [
|
|
73
|
+
"Keep parser heuristics conservative and bounded."
|
|
74
|
+
],
|
|
75
|
+
"estimated_hours": 8,
|
|
76
|
+
"actual_hours": 4,
|
|
77
|
+
"status": "completed",
|
|
78
|
+
"started_at": "2026-06-11T12:26:30Z",
|
|
79
|
+
"completed_at": "2026-06-11T12:29:09Z",
|
|
80
|
+
"blocked_reason": null
|
|
81
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Evidence Report - Quiver v54 Deep Project Analysis Hardening
|
|
2
|
+
|
|
3
|
+
**Status:** Implemented
|
|
4
|
+
**Last updated:** 2026-06-11
|
|
5
|
+
|
|
6
|
+
## Evidence Available Before Implementation
|
|
7
|
+
|
|
8
|
+
- Live `nika-erp` smoke showed base onboarding commands pass.
|
|
9
|
+
- Live provider run failed closed with audited schema drift instead of writing invalid docs.
|
|
10
|
+
- TTY loader was visible.
|
|
11
|
+
- No-TTY progress did not stream until final output.
|
|
12
|
+
- Default sampling selected `package-lock.json` and Quiver-generated docs too heavily.
|
|
13
|
+
- Provider drift included `claim`, `notes`, `confidence`, and missing `name`.
|
|
14
|
+
|
|
15
|
+
## Evidence Captured During Implementation
|
|
16
|
+
|
|
17
|
+
- `slice-01-contract-regression-harness`: deterministic fixtures and command/parser regression tests.
|
|
18
|
+
- `slice-02-safe-discovery-sampling`: lockfile metadata sampling, product-source priority, and live read-only `nika-erp` dry-run smoke.
|
|
19
|
+
- `slice-03-run-lifecycle-cli-io`: TTY loader and no-TTY linear progress.
|
|
20
|
+
- `slice-04-artifact-store-redaction`: bounded/redacted raw provider stream artifacts with hash metadata.
|
|
21
|
+
- `slice-05-path-aware-repair-engine`: fail-closed path-aware repair for safe drift.
|
|
22
|
+
- `slice-06-retry-controller`: compact retry prompts, retry cap, retry manifests, and audited provider failures.
|
|
23
|
+
- `slice-07-final-validation-review-write-gate`: review, confirmation, snapshot, write, and post-write validation gates.
|
|
24
|
+
- `slice-08-doctor-agents-guidance`: actionable AGENTS.md warning and safe `doctor --fix`.
|
|
25
|
+
- `slice-09-release-smoke-rollback-docs`: release smoke commands, expected evidence, and rollback guidance.
|
|
26
|
+
- Deterministic fixture tests cover `notes`, `claim` to `name`, unsupported `confidence`, invalid confidence, missing fields, malformed JSON, fenced JSON, embedded JSON, secret-like output, retry success, and retry exhaustion.
|
|
27
|
+
- `--dry-run` and `--dry-run --json` remain read-only and do not create `.quiver`.
|
|
28
|
+
- Provider mode without `--review` writes audit artifacts but no final docs.
|
|
29
|
+
- TTY loader and no-TTY linear progress are covered.
|
|
30
|
+
- Lockfiles are summarized as metadata and omitted from provider content by default.
|
|
31
|
+
- Raw provider artifacts are redacted, size-bounded, and include stream metadata/hash.
|
|
32
|
+
- `doctor` reports actionable AGENTS.md repair guidance and `doctor --fix` preserves manual content.
|
|
33
|
+
- Review cancel, confirmation decline, no-TTY review, invalid edited proposal, approved writes, snapshots, and post-write validation are covered.
|
|
34
|
+
- Release smoke docs and rollback guidance are updated.
|
|
35
|
+
|
|
36
|
+
## Validation Log
|
|
37
|
+
|
|
38
|
+
- PASS: `node --test tests/lib/ai/analyze-project-repair.test.js`
|
|
39
|
+
- PASS: `node --test tests/commands/ai-analyze-project-provider.test.js`
|
|
40
|
+
- PASS: `node --test tests/lib/ai-analyze-project-discovery.test.js`
|
|
41
|
+
- PASS: `node --test tests/commands/ai-analyze-project.test.js`
|
|
42
|
+
- PASS: `node --test tests/lib/ai-artifacts.test.js`
|
|
43
|
+
- PASS: `node --test tests/commands/ai-analyze-project-review.test.js tests/lib/ai-analyze-project-validation.test.js`
|
|
44
|
+
- PASS: `node --test tests/commands/doctor.test.js tests/lib/doctor.test.js`
|
|
45
|
+
- PASS: `npm run docs:check`
|
|
46
|
+
- PASS: `npm run schema:slice:check`
|
|
47
|
+
- PASS: `node bin/create-quiver.js spec validate specs/quiver-v54-deep-project-analysis-hardening --strict`
|
|
48
|
+
- PASS: `git diff --check`
|
|
49
|
+
- PASS: live read-only smoke in `nika-erp` using local CLI: `node bin/create-quiver.js ai analyze-project --deep --dry-run --json`
|
|
50
|
+
- `provider_execution`: `skipped`
|
|
51
|
+
- `writes`: `[]`
|
|
52
|
+
- `package-lock.json`: summarized under `detected.lockfiles`, omitted as `sampling:lockfile-metadata`
|
|
53
|
+
- safety exclusions included `.env`, `.git`, `.quiver`, `.next`, and `node_modules`
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Execution Plan - Quiver v54 Deep Project Analysis Hardening
|
|
2
|
+
|
|
3
|
+
## Sequential Order
|
|
4
|
+
|
|
5
|
+
1. `slice-01-contract-regression-harness`
|
|
6
|
+
2. `slice-02-safe-discovery-sampling` and `slice-03-run-lifecycle-cli-io`
|
|
7
|
+
3. `slice-04-artifact-store-redaction`, `slice-05-path-aware-repair-engine`, and `slice-08-doctor-agents-guidance`
|
|
8
|
+
4. `slice-06-retry-controller`
|
|
9
|
+
5. `slice-07-final-validation-review-write-gate`
|
|
10
|
+
6. `slice-09-release-smoke-rollback-docs`
|
|
11
|
+
|
|
12
|
+
## Parallelization Rules
|
|
13
|
+
|
|
14
|
+
- `slice-01` must land first because it defines the regression contract.
|
|
15
|
+
- `slice-02` and `slice-03` can run in parallel after `slice-01`.
|
|
16
|
+
- `slice-04` can start after `slice-03` defines run lifecycle/status and can run in parallel with `slice-05`.
|
|
17
|
+
- `slice-08` can run after `slice-01` and must not block provider hardening.
|
|
18
|
+
- `slice-06` must wait for lifecycle and repair contracts.
|
|
19
|
+
- `slice-07` must wait for sampling, artifacts, repair, and retry.
|
|
20
|
+
- `slice-09` closes release evidence after production gates pass.
|
|
21
|
+
|
|
22
|
+
## Critical Boundaries
|
|
23
|
+
|
|
24
|
+
- Read boundary: `slice-02`
|
|
25
|
+
- Provider/run boundary: `slice-03`
|
|
26
|
+
- Artifact/redaction boundary: `slice-04`
|
|
27
|
+
- Repair boundary: `slice-05`
|
|
28
|
+
- Retry boundary: `slice-06`
|
|
29
|
+
- Validation/write boundary: `slice-07`
|
|
30
|
+
|
|
31
|
+
## Required Validation Before Closing Spec
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
node --test tests/commands/ai-analyze-project-provider.test.js
|
|
35
|
+
node --test tests/commands/ai-analyze-project-review.test.js
|
|
36
|
+
node --test tests/commands/ai-analyze-project.test.js
|
|
37
|
+
node --test tests/commands/doctor.test.js
|
|
38
|
+
node --test tests/lib/ai-analyze-project-discovery.test.js
|
|
39
|
+
node --test tests/lib/ai/analyze-project-repair.test.js
|
|
40
|
+
npm run docs:check
|
|
41
|
+
npm run schema:slice:check
|
|
42
|
+
node bin/create-quiver.js spec validate specs/quiver-v54-deep-project-analysis-hardening --strict
|
|
43
|
+
git diff --check
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Release Evidence
|
|
47
|
+
|
|
48
|
+
Run a live smoke against `nika-erp` only after deterministic gates pass. The live smoke is release evidence, not a CI gate.
|
|
49
|
+
|
|
50
|
+
## Rollback
|
|
51
|
+
|
|
52
|
+
- Each runtime slice must be revertible independently.
|
|
53
|
+
- If repair causes quality issues, revert `slice-05` and `slice-06` while preserving discovery and dry-run.
|
|
54
|
+
- If artifact redaction fails, block release and revert `slice-04` before publishing.
|
|
55
|
+
- If final write gate regresses, revert `slice-07`; provider mode without `--review` must still avoid docs writes.
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
# Quiver v54 - Deep Project Analysis Hardening
|
|
2
|
+
|
|
3
|
+
**Date:** 2026-06-11
|
|
4
|
+
**Status:** Approved, not implemented
|
|
5
|
+
**Source:** User-approved requirement, live `nika-erp` smoke evidence, production review, and final slice cut review.
|
|
6
|
+
|
|
7
|
+
## Problem
|
|
8
|
+
|
|
9
|
+
`ai analyze-project --deep --provider codex --model gpt-5.5` now fails closed and audits invalid provider output, but the live `nika-erp` end-to-end test still showed production reliability gaps:
|
|
10
|
+
|
|
11
|
+
- Codex returned schema drift such as `claim`, `notes`, `confidence`, and objects missing `name`.
|
|
12
|
+
- `package-lock.json` consumed most of the context budget.
|
|
13
|
+
- Quiver-generated docs competed with product source files.
|
|
14
|
+
- TTY progress works, but no-TTY progress is not visible until the command finishes.
|
|
15
|
+
- Retry can take too long and repeat the same drift.
|
|
16
|
+
- `AGENTS.md` can be preserved safely but left contract-incomplete with only a warning.
|
|
17
|
+
|
|
18
|
+
The next iteration must make the command reliable in real projects without relaxing the schema or writing invalid final documentation.
|
|
19
|
+
|
|
20
|
+
## Objective
|
|
21
|
+
|
|
22
|
+
Make the command:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
npx --yes create-quiver@latest ai analyze-project --deep --provider codex --model gpt-5.5
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
produce a valid, reviewable project-analysis JSON proposal in `nika-erp`, or fail quickly with actionable diagnostics and complete audit artifacts while preserving these invariants:
|
|
29
|
+
|
|
30
|
+
- no product code writes;
|
|
31
|
+
- no final docs writes without valid final JSON and explicit review/confirmation;
|
|
32
|
+
- no secrets, unsafe paths, dependency dumps, caches, generated outputs, or binaries sent to the provider;
|
|
33
|
+
- no schema relaxation to accept arbitrary provider output.
|
|
34
|
+
|
|
35
|
+
## Scope
|
|
36
|
+
|
|
37
|
+
### Included
|
|
38
|
+
|
|
39
|
+
- Deterministic regression harness based on sanitized `nika-erp` provider drift.
|
|
40
|
+
- Safe discovery and sampling with quotas, lockfile summaries, symlink handling, and source-priority rules.
|
|
41
|
+
- Run lifecycle state machine, visible progress, stdout/stderr contract, timeouts, and cancellation cleanup.
|
|
42
|
+
- Artifact store with redaction, truncation, head/tail retention, hashes, manifest metadata, and size limits.
|
|
43
|
+
- Path-aware repair engine for strictly allowed drift only.
|
|
44
|
+
- Retry controller with compact prompts, drift signatures, timeouts, and early stop.
|
|
45
|
+
- Final validation and review/write gate ensuring invalid JSON never writes final docs.
|
|
46
|
+
- `doctor` guidance for incomplete existing `AGENTS.md`.
|
|
47
|
+
- Release smoke documentation separating deterministic CI gates from optional live provider evidence.
|
|
48
|
+
|
|
49
|
+
### Excluded
|
|
50
|
+
|
|
51
|
+
- Modifying product code in analyzed repositories.
|
|
52
|
+
- Generating specs automatically from analysis output.
|
|
53
|
+
- Writing documentation final without `--review` or explicit confirmation.
|
|
54
|
+
- Accepting arbitrary provider fields by loosening the schema.
|
|
55
|
+
- Building a full AST/indexing engine.
|
|
56
|
+
- Requiring live provider execution as a CI gate.
|
|
57
|
+
|
|
58
|
+
## Approved Acceptance Criteria
|
|
59
|
+
|
|
60
|
+
1. In `nika-erp`, the command either produces schema-valid JSON or fails controlled without final docs writes.
|
|
61
|
+
2. `--dry-run` creates no `.quiver/runs`, docs, code, or audit artifacts.
|
|
62
|
+
3. Provider mode without `--review` writes only audit artifacts, never final docs.
|
|
63
|
+
4. `--json` keeps stdout machine-readable and sends human progress to stderr or suppresses it.
|
|
64
|
+
5. TTY mode shows a loader and step names.
|
|
65
|
+
6. No-TTY mode prints line-based progress before provider execution and during validation/repair/retry/artifact writes.
|
|
66
|
+
7. First visible progress appears in less than 2 seconds.
|
|
67
|
+
8. `.env*`, secrets, `.git`, `.quiver`, dependency folders, `.next`, caches, dumps, binaries, certificates, credential files, and unsafe symlinks are never sent to the provider.
|
|
68
|
+
9. Lockfiles are summarized by default and never consume the main source budget.
|
|
69
|
+
10. Sampling reserves budget for product source and caps generated Quiver docs.
|
|
70
|
+
11. Raw provider stdout/stderr artifacts are redacted before persistence and size-bounded.
|
|
71
|
+
12. Artifacts keep head/tail, original size, persisted size, hash, truncation flag, command/options, `run_id`, `kind`, `schema_version`, and timestamps.
|
|
72
|
+
13. Repair is table-driven and path-aware.
|
|
73
|
+
14. Allowed repairs are limited to:
|
|
74
|
+
- remove unsupported `notes`;
|
|
75
|
+
- remove unsupported `confidence`;
|
|
76
|
+
- rename `claim` to `name` only where the path expects a human label, `name` is missing, and `claim` is a safe non-empty string.
|
|
77
|
+
15. Conflicting `name` and `claim` values are not repaired.
|
|
78
|
+
16. Repair has a maximum total threshold and per-path-family threshold.
|
|
79
|
+
17. Retry does not resend full selected context.
|
|
80
|
+
18. Retry has per-attempt timeout, total timeout, drift signature, and early stop when dominant drift repeats.
|
|
81
|
+
19. Canceling with `SIGINT`/`SIGTERM` terminates provider children and writes status `canceled`.
|
|
82
|
+
20. Final docs write requires valid schema, semantic validation, review approval, snapshot, and atomic writes.
|
|
83
|
+
21. Error output is compact, bounded to grouped summaries, and points to manifests for full details.
|
|
84
|
+
22. Deterministic fixtures are CI gates; live `nika-erp` smoke is release evidence only.
|
|
85
|
+
23. `doctor` gives a safe next action for incomplete existing `AGENTS.md` without overwriting human content.
|
|
86
|
+
|
|
87
|
+
## Architecture Rule
|
|
88
|
+
|
|
89
|
+
Implementation must preserve this boundary sequence:
|
|
90
|
+
|
|
91
|
+
```text
|
|
92
|
+
Read boundary -> Provider boundary -> Repair boundary -> Validation boundary -> Write boundary
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
No slice should cross more than one critical boundary without explicit tests. Repository content and provider output are untrusted until validated.
|
|
96
|
+
|
|
97
|
+
## Slice Roadmap
|
|
98
|
+
|
|
99
|
+
| Slice | Title | Status | Dependencies | Parallel Guidance |
|
|
100
|
+
|---|---|---|---|---|
|
|
101
|
+
| slice-01-contract-regression-harness | Contract & Regression Harness | pending | none | sequential first |
|
|
102
|
+
| slice-02-safe-discovery-sampling | Safe Discovery & Sampling | pending | slice-01 | parallel after slice-01 |
|
|
103
|
+
| slice-03-run-lifecycle-cli-io | Run Lifecycle & CLI IO | pending | slice-01 | parallel after slice-01 |
|
|
104
|
+
| slice-04-artifact-store-redaction | Artifact Store & Redaction | pending | slice-01, slice-03 | parallel with slice-05 after slice-03 |
|
|
105
|
+
| slice-05-path-aware-repair-engine | Path-Aware Repair Engine | pending | slice-01 | parallel with slice-02/03, before slice-06 |
|
|
106
|
+
| slice-06-retry-controller | Retry Controller | pending | slice-03, slice-05 | sequential |
|
|
107
|
+
| slice-07-final-validation-review-write-gate | Final Validation & Review Write Gate | pending | slice-02, slice-04, slice-05, slice-06 | sequential production gate |
|
|
108
|
+
| slice-08-doctor-agents-guidance | Doctor AGENTS.md Guidance | pending | slice-01 | parallel/non-blocking |
|
|
109
|
+
| slice-09-release-smoke-rollback-docs | Release Smoke & Rollback Docs | pending | slice-07 | final |
|
|
110
|
+
|
|
111
|
+
## Execution Order
|
|
112
|
+
|
|
113
|
+
```text
|
|
114
|
+
01
|
|
115
|
+
├─ 02
|
|
116
|
+
├─ 03
|
|
117
|
+
│ └─ 04
|
|
118
|
+
├─ 08
|
|
119
|
+
└─ 05
|
|
120
|
+
└─ 06
|
|
121
|
+
└─ 07
|
|
122
|
+
└─ 09
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## Production Guardrails
|
|
126
|
+
|
|
127
|
+
- Fail closed before final docs writes.
|
|
128
|
+
- Keep stdout parseable in `--json`.
|
|
129
|
+
- Keep progress accessible in no-TTY logs.
|
|
130
|
+
- Kill child processes on cancellation.
|
|
131
|
+
- Redact before persisting.
|
|
132
|
+
- Bound all artifacts and console output.
|
|
133
|
+
- Keep repair structural and auditable, not semantic.
|
|
134
|
+
- Preserve human-authored files by default.
|
|
135
|
+
|
|
136
|
+
## Validation Strategy
|
|
137
|
+
|
|
138
|
+
Deterministic gates:
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
node --test tests/commands/ai-analyze-project-provider.test.js
|
|
142
|
+
node --test tests/commands/ai-analyze-project-review.test.js
|
|
143
|
+
node --test tests/commands/ai-analyze-project.test.js
|
|
144
|
+
node --test tests/commands/doctor.test.js
|
|
145
|
+
node --test tests/lib/ai-analyze-project-discovery.test.js
|
|
146
|
+
node --test tests/lib/ai/analyze-project-repair.test.js
|
|
147
|
+
npm run docs:check
|
|
148
|
+
npm run schema:slice:check
|
|
149
|
+
node bin/create-quiver.js spec validate specs/quiver-v54-deep-project-analysis-hardening --strict
|
|
150
|
+
git diff --check
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Release evidence:
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
npx create-quiver ai analyze-project --deep --dry-run
|
|
157
|
+
npx create-quiver ai analyze-project --deep --provider codex --model gpt-5.5
|
|
158
|
+
npx create-quiver ai analyze-project --deep --review --provider codex --model gpt-5.5
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
The live `nika-erp` smoke must be documented, but CI must not depend on live provider credentials, network, or model availability.
|
|
162
|
+
|
|
163
|
+
## Risks
|
|
164
|
+
|
|
165
|
+
- Over-repairing provider output could turn low-quality JSON into schema-valid misinformation.
|
|
166
|
+
- Redaction after persistence could leak secrets into `.quiver/runs`.
|
|
167
|
+
- No-TTY progress in stdout could break automation.
|
|
168
|
+
- Lockfile summary could still read huge files inefficiently if implemented with full reads.
|
|
169
|
+
- Retry without drift signatures could waste time and money.
|
|
170
|
+
- A broad final-write slice could hide regressions unless artifacts and write gates are separated.
|
|
171
|
+
|
|
172
|
+
## Resolved Decisions
|
|
173
|
+
|
|
174
|
+
- Keep the schema strict.
|
|
175
|
+
- Repair only the explicitly allowed drift table.
|
|
176
|
+
- Use fixtures as CI gates and live smoke as release evidence.
|
|
177
|
+
- Separate artifact redaction from final validation/write gate.
|
|
178
|
+
- Keep `doctor` AGENTS guidance parallel and non-blocking for the provider hardening path.
|
|
179
|
+
|
|
180
|
+
## Open Questions
|
|
181
|
+
|
|
182
|
+
- Exact default timeout values should be chosen during implementation and documented in the slice closure.
|
|
183
|
+
- Exact repair thresholds should be chosen during implementation and documented in the slice closure.
|
|
184
|
+
- The final `AGENTS.md` repair command name should align with existing CLI command structure if one already exists.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Status - Quiver v54 Deep Project Analysis Hardening
|
|
2
|
+
|
|
3
|
+
**Status:** Implemented
|
|
4
|
+
**Last updated:** 2026-06-11
|
|
5
|
+
|
|
6
|
+
## Current State
|
|
7
|
+
|
|
8
|
+
The approved 9-slice plan has been implemented. Deterministic tests cover provider drift, safe sampling, TTY/no-TTY progress, artifact redaction, repair/retry, review write gates, doctor guidance, and release smoke documentation.
|
|
9
|
+
|
|
10
|
+
## Slice Status
|
|
11
|
+
|
|
12
|
+
| Slice | Status | Notes |
|
|
13
|
+
|---|---|---|
|
|
14
|
+
| slice-01-contract-regression-harness | completed | Drift fixtures and command/parser tests added. |
|
|
15
|
+
| slice-02-safe-discovery-sampling | completed | Lockfiles summarized as metadata; Quiver docs deprioritized. |
|
|
16
|
+
| slice-03-run-lifecycle-cli-io | completed | TTY loader and no-TTY linear progress covered. |
|
|
17
|
+
| slice-04-artifact-store-redaction | completed | Raw provider streams are redacted, bounded, hashed, and audited. |
|
|
18
|
+
| slice-05-path-aware-repair-engine | completed | Path-aware repair handles `notes`, safe `claim` to `name`, and unsupported question `confidence`. |
|
|
19
|
+
| slice-06-retry-controller | completed | Retry remains bounded, compact, audited, and failure artifacts persist. |
|
|
20
|
+
| slice-07-final-validation-review-write-gate | completed | Review, confirmation, snapshot, and post-write validation gates verified. |
|
|
21
|
+
| slice-08-doctor-agents-guidance | completed | `doctor` and `doctor --fix` give actionable AGENTS.md repair guidance. |
|
|
22
|
+
| slice-09-release-smoke-rollback-docs | completed | Release smoke and rollback docs updated. |
|
|
23
|
+
|
|
24
|
+
## Blockers
|
|
25
|
+
|
|
26
|
+
- None.
|
|
27
|
+
|
|
28
|
+
## Next Command
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
npm run docs:check
|
|
32
|
+
npm run schema:slice:check
|
|
33
|
+
node bin/create-quiver.js spec validate specs/quiver-v54-deep-project-analysis-hardening --strict
|
|
34
|
+
```
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# CLOSURE_BRIEF - slice-01 contract regression harness
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
Completed. Added deterministic provider-output fixtures and regression coverage for schema drift, safe repairs, retries, parse wrappers, invalid JSON, provider failures, and no-final-doc write guarantees.
|
|
6
|
+
|
|
7
|
+
## Validation
|
|
8
|
+
|
|
9
|
+
- PASS: `node --test tests/lib/ai/analyze-project-repair.test.js`
|
|
10
|
+
- PASS: `node --test tests/commands/ai-analyze-project-provider.test.js`
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# EXECUTION_BRIEF - slice-01 contract regression harness
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
The live `nika-erp` provider run exposed schema drift and UX issues that must be locked into deterministic tests before implementation changes continue.
|
|
6
|
+
|
|
7
|
+
## Objective
|
|
8
|
+
|
|
9
|
+
Create the regression contract and sanitized fixture harness for v54 without live provider requirements.
|
|
10
|
+
|
|
11
|
+
## Scope
|
|
12
|
+
|
|
13
|
+
- Add or update deterministic fixtures for `claim`, `notes`, `confidence`, missing `name`, repeated drift, timeout, cancellation, and invalid final JSON.
|
|
14
|
+
- Add golden expectations for no-write and compact-error behavior.
|
|
15
|
+
- Keep this slice focused on tests/contracts; runtime fixes belong to later slices.
|
|
16
|
+
|
|
17
|
+
## Acceptance Criteria
|
|
18
|
+
|
|
19
|
+
- Fixtures reproduce the observed `nika-erp` drift without credentials, network, or a live checkout.
|
|
20
|
+
- Tests assert `--dry-run` creates no `.quiver/runs`, docs, or code writes.
|
|
21
|
+
- Tests assert provider mode without `--review` writes only audit artifacts and no final docs.
|
|
22
|
+
- Tests assert `--json` stdout is parseable and not contaminated by progress.
|
|
23
|
+
- Tests assert console schema errors are grouped and bounded.
|
|
24
|
+
- The spec validates with this slice present.
|
|
25
|
+
|
|
26
|
+
## Completion Checklist
|
|
27
|
+
|
|
28
|
+
- [ ] Fixtures added or updated.
|
|
29
|
+
- [ ] Tests fail against missing behavior and pass after later slices.
|
|
30
|
+
- [ ] `slice.json` status and `CLOSURE_BRIEF.md` updated with evidence.
|
|
31
|
+
|
|
32
|
+
## Expected Files To Modify
|
|
33
|
+
|
|
34
|
+
- `tests/fixtures/analyze-project/**`
|
|
35
|
+
- `tests/commands/ai-analyze-project-provider.test.js`
|
|
36
|
+
- `tests/commands/ai-analyze-project.test.js`
|
|
37
|
+
- `tests/commands/ai-analyze-project-review.test.js`
|
|
38
|
+
- `tests/lib/ai/analyze-project-repair.test.js`
|
|
39
|
+
- This slice's closure/status/evidence files.
|
|
40
|
+
|
|
41
|
+
## Validation Required
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
node --test tests/commands/ai-analyze-project-provider.test.js
|
|
45
|
+
node --test tests/commands/ai-analyze-project.test.js
|
|
46
|
+
node bin/create-quiver.js spec validate specs/quiver-v54-deep-project-analysis-hardening --strict
|
|
47
|
+
git diff --check
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Constraints
|
|
51
|
+
|
|
52
|
+
- Do not call live providers.
|
|
53
|
+
- Do not implement runtime repair/retry in this slice.
|
|
54
|
+
- Do not store real provider secrets or raw private project data.
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slice_id": "slice-01-contract-regression-harness",
|
|
3
|
+
"ticket": "QUIVER-54-01",
|
|
4
|
+
"type": "test-infrastructure",
|
|
5
|
+
"title": "Contract & Regression Harness",
|
|
6
|
+
"objective": "Freeze deterministic regression expectations for hardening ai analyze-project before runtime changes.",
|
|
7
|
+
"description": "Adds sanitized fixtures and tests for the nika-erp schema drift, no-write guarantees, stdout/stderr contract, compact errors, and provider-mode write boundaries.",
|
|
8
|
+
"git": {
|
|
9
|
+
"branch_type": "feature",
|
|
10
|
+
"base_branch": "main",
|
|
11
|
+
"branch_slug": "v54-contract-regression-harness",
|
|
12
|
+
"branch_name": "feature/QUIVER-54-01-v54-contract-regression-harness"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"tests/fixtures/analyze-project/**",
|
|
16
|
+
"tests/commands/ai-analyze-project-provider.test.js",
|
|
17
|
+
"tests/commands/ai-analyze-project.test.js",
|
|
18
|
+
"tests/commands/ai-analyze-project-review.test.js",
|
|
19
|
+
"tests/lib/ai/analyze-project-repair.test.js",
|
|
20
|
+
"specs/quiver-v54-deep-project-analysis-hardening/**"
|
|
21
|
+
],
|
|
22
|
+
"expected_read_paths": [
|
|
23
|
+
"src/create-quiver/commands/ai.js",
|
|
24
|
+
"src/create-quiver/lib/ai/analyze-project-parser.js",
|
|
25
|
+
"src/create-quiver/lib/ai/analyze-project-validation.js",
|
|
26
|
+
"src/create-quiver/lib/ai/analyze-project-repair.js",
|
|
27
|
+
"tests/fixtures/analyze-project/**"
|
|
28
|
+
],
|
|
29
|
+
"allowed_write_paths": [
|
|
30
|
+
"tests/fixtures/analyze-project/**",
|
|
31
|
+
"tests/commands/ai-analyze-project-provider.test.js",
|
|
32
|
+
"tests/commands/ai-analyze-project.test.js",
|
|
33
|
+
"tests/commands/ai-analyze-project-review.test.js",
|
|
34
|
+
"tests/lib/ai/analyze-project-repair.test.js",
|
|
35
|
+
"specs/quiver-v54-deep-project-analysis-hardening/STATUS.md",
|
|
36
|
+
"specs/quiver-v54-deep-project-analysis-hardening/EVIDENCE_REPORT.md",
|
|
37
|
+
"specs/quiver-v54-deep-project-analysis-hardening/slices/slice-01-contract-regression-harness/CLOSURE_BRIEF.md",
|
|
38
|
+
"specs/quiver-v54-deep-project-analysis-hardening/slices/slice-01-contract-regression-harness/slice.json"
|
|
39
|
+
],
|
|
40
|
+
"depends_on": [],
|
|
41
|
+
"parallel_safe": "never",
|
|
42
|
+
"parallel_safe_reason": "This slice defines the contract used by every later slice.",
|
|
43
|
+
"must": [
|
|
44
|
+
"Use sanitized deterministic fixtures instead of live provider calls.",
|
|
45
|
+
"Assert no final docs writes for invalid final JSON.",
|
|
46
|
+
"Assert dry-run creates no .quiver/runs.",
|
|
47
|
+
"Assert --json stdout remains parseable."
|
|
48
|
+
],
|
|
49
|
+
"not_included": [
|
|
50
|
+
"Runtime repair implementation.",
|
|
51
|
+
"Sampling changes.",
|
|
52
|
+
"Retry implementation."
|
|
53
|
+
],
|
|
54
|
+
"acceptance": [
|
|
55
|
+
"nika-erp drift is reproducible offline.",
|
|
56
|
+
"No-write guarantees are covered by tests.",
|
|
57
|
+
"Schema-noise output is bounded by tests.",
|
|
58
|
+
"Spec validation passes."
|
|
59
|
+
],
|
|
60
|
+
"tests": [
|
|
61
|
+
"node --test tests/commands/ai-analyze-project-provider.test.js",
|
|
62
|
+
"node --test tests/commands/ai-analyze-project.test.js",
|
|
63
|
+
"node bin/create-quiver.js spec validate specs/quiver-v54-deep-project-analysis-hardening --strict",
|
|
64
|
+
"git diff --check"
|
|
65
|
+
],
|
|
66
|
+
"estimated_hours": 4,
|
|
67
|
+
"actual_hours": 4,
|
|
68
|
+
"status": "completed",
|
|
69
|
+
"started_at": "2026-06-11",
|
|
70
|
+
"completed_at": "2026-06-11",
|
|
71
|
+
"blocked_reason": null
|
|
72
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# CLOSURE_BRIEF - slice-02 safe discovery sampling
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
Completed. Lockfiles are summarized as metadata instead of selected as provider content, and Quiver-generated docs are deprioritized so product source consumes the main sample budget first.
|
|
6
|
+
|
|
7
|
+
## Validation
|
|
8
|
+
|
|
9
|
+
- PASS: `node --test tests/lib/ai-analyze-project-discovery.test.js`
|
|
10
|
+
- PASS: `node --test tests/commands/ai-analyze-project.test.js`
|
|
11
|
+
- PASS: live read-only `nika-erp` dry-run JSON smoke.
|