@thomasminh1995/depverdict 0.6.0-alpha.1
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/LICENSE +21 -0
- package/README.md +518 -0
- package/bin/depverdict.js +7 -0
- package/bin/upgradelens.js +7 -0
- package/docs/GR-01-Semantic-Grounding-Failure-Analysis.md +309 -0
- package/docs/GR-02-Versioned-Action-Evaluation-Criteria.md +187 -0
- package/docs/GR-03-Extractive-Contract-Safety-Experiment.md +242 -0
- package/docs/GR-04-Versioned-Production-Extractive-Contract.md +154 -0
- package/docs/IA-01-Repository-Usage-Discovery.md +122 -0
- package/docs/IA-02-Repository-Impact-Analysis.md +118 -0
- package/docs/IA-03-Repository-Impact-Evidence.md +160 -0
- package/docs/IA-04-CLI-Orchestration.md +235 -0
- package/docs/IA-05-Real-Provider-Validation.md +235 -0
- package/docs/IA-05-VinGrade-Validation.md +339 -0
- package/docs/MVP-01.md +48 -0
- package/docs/MVP-02-Architecture.md +536 -0
- package/docs/MVP-02-CLI-HTTP-Runtime.md +50 -0
- package/docs/MVP-02-HTTP-Lifecycle.md +37 -0
- package/docs/MVP-02-Knowledge-Manifest-Generation.md +75 -0
- package/docs/MVP-02-Knowledge-Manifest.md +279 -0
- package/docs/MVP-02-Knowledge-Research-Orchestration.md +62 -0
- package/docs/MVP-02-Knowledge-Store.md +87 -0
- package/docs/MVP-02-PyPI-Registry-Adapter.md +97 -0
- package/docs/MVP-02-Research-Planning.md +196 -0
- package/docs/MVP-02-Source-Provenance.md +81 -0
- package/docs/MVP-02-npm-Registry-Adapter.md +99 -0
- package/docs/RR-01-End-to-End-and-Real-Provider-Validation.md +393 -0
- package/docs/RR-01-RERUN-Extractive-Contract-Validation.md +566 -0
- package/docs/RR-02-Full-Product-Workflow-and-Developer-CLI-UX-Review.md +35 -0
- package/docs/RR02-FIX-01-Persistent-Qualification-Resolution.md +32 -0
- package/docs/RR02-FIX-02-Stage-aware-CLI-Progress-and-Heartbeat.md +28 -0
- package/docs/RR02-FIX-03-npm-Capture-Evidence-Exclusion.md +33 -0
- package/docs/RR02-FIX-03A-Complete-Package-Exclusion-and-Evidence-Commit.md +223 -0
- package/docs/RR02-FIX-04-Event-loop-safe-Heartbeat.md +393 -0
- package/docs/RR02-FIX-05-Materialize-Persisted-Qualification.md +207 -0
- package/docs/RR02-RERUN-CLI-Qualification-Progress-UX-and-Package-Validation.md +342 -0
- package/docs/VinGrade-MVP-02-Validation.md +480 -0
- package/docs/VinGrade-RC02-Live-Validation.md +273 -0
- package/docs/ai-capability-discovery.md +573 -0
- package/docs/ai-engineering-production-readiness.md +390 -0
- package/docs/ai-engineering-review.md +251 -0
- package/docs/ai-runtime-governance-discovery.md +754 -0
- package/docs/architecture-overview.md +78 -0
- package/docs/cli-progress.md +111 -0
- package/docs/decisions/diff-01-brand-distribution-identity.md +450 -0
- package/docs/decisions/diff-02-identity-compatibility-contract.md +274 -0
- package/docs/decisions/diff-03-repository-docs-community-migration.md +165 -0
- package/docs/decisions/diff-04-release-evidence-gap-acceptance.md +110 -0
- package/docs/discovery/mvp-05-ai-migration-planning-discovery.md +350 -0
- package/docs/gateway-runtime-discovery.md +614 -0
- package/docs/live-ai-validation.md +299 -0
- package/docs/migration-planning-qualification-resolution.md +99 -0
- package/docs/migrations/upgradelens-to-depverdict.md +97 -0
- package/docs/mp-r03-deterministic-upgrade-decision-architecture.md +135 -0
- package/docs/mp-r04-evidence-bounded-migration-handoff-architecture.md +116 -0
- package/docs/mp-r05-product-completion-and-decision-first-cli-architecture.md +162 -0
- package/docs/mvp-05-deterministic-context-runtime.md +127 -0
- package/docs/mvp-05-migration-checklist-contract.md +166 -0
- package/docs/mvp-05-migration-checklist-orchestration.md +105 -0
- package/docs/mvp-05-migration-evaluation-and-qualification.md +135 -0
- package/docs/mvp-05-provider-neutral-generator.md +79 -0
- package/docs/ollama-local-smoke-validation.md +156 -0
- package/docs/openai-compatible-runtime-discovery.md +789 -0
- package/docs/openrouter-one-dependency-validation.md +205 -0
- package/docs/oss-02-package-guard-hardening-architecture.md +131 -0
- package/docs/oss-04-public-ci-package-metadata-architecture.md +142 -0
- package/docs/package-content-policy.md +98 -0
- package/docs/releases/v0.5.0-technical-preview.md +114 -0
- package/docs/releases/v0.6.0-alpha.1-depverdict-preview.md +101 -0
- package/docs/reviews/diff-02-identity-contract-compatibility.md +413 -0
- package/docs/reviews/diff-03-repository-docs-community-migration.md +364 -0
- package/docs/reviews/diff-04-depverdict-distribution-identity-readiness-rereview.md +453 -0
- package/docs/reviews/diff-04-fix-post-rename-identity-release-remediation.md +310 -0
- package/docs/reviews/diff-05-final-preview-distribution-qualification.md +561 -0
- package/docs/reviews/mvp-05-final-product-value-workflow-rereview.md +471 -0
- package/docs/reviews/mvp-05-product-workflow-review.md +605 -0
- package/docs/reviews/oss-01-duplicate-artifact-investigation-cleanup.md +411 -0
- package/docs/reviews/oss-02-package-guard-hardening.md +303 -0
- package/docs/reviews/oss-03-community-scaffolding.md +378 -0
- package/docs/reviews/oss-04-public-ci-package-metadata.md +439 -0
- package/docs/reviews/oss-05-technical-preview-qualification.md +482 -0
- package/docs/reviews/upgradelens-vs-upgradedepdetective-source-comparison.md +355 -0
- package/docs/reviews/v0.5.0-pre-release-smoke.md +263 -0
- package/docs/reviews/v0.5.0-version-bump-release-verification.md +306 -0
- package/docs/runtime-contract-discovery.md +521 -0
- package/docs/structured-output-compatibility-report.md +100 -0
- package/docs/ts-fix-01-exact-duplicate-occurrence-target-selection-architecture.md +111 -0
- package/docs/version-analysis-architecture.md +827 -0
- package/eval/README.md +86 -0
- package/eval/datasets/generic/declared-constraint.json +59 -0
- package/eval/datasets/generic/evidence-conflict.json +73 -0
- package/eval/datasets/generic/major-breaking-release.json +66 -0
- package/eval/datasets/generic/missing-evidence.json +46 -0
- package/eval/datasets/generic/patch-release-low.json +59 -0
- package/eval/datasets/node/axios-patch-low.json +59 -0
- package/eval/datasets/node/react-major-breaking.json +66 -0
- package/eval/datasets/node/react-minor-compatibility.json +66 -0
- package/eval/datasets/python/fastapi-deprecation.json +66 -0
- package/eval/datasets/python/pydantic-major-breaking.json +66 -0
- package/eval/migration-planning/golden-dataset-v2.json +306 -0
- package/eval/migration-planning/golden-dataset.json +214 -0
- package/eval/schemas/expected-result.schema.json +88 -0
- package/eval/schemas/golden-case.schema.json +181 -0
- package/package.json +57 -0
- package/schemas/ai-scorecard.schema.json +132 -0
- package/schemas/benchmark-report.schema.json +189 -0
- package/schemas/benchmark.schema.json +55 -0
- package/schemas/capability-profile.schema.json +44 -0
- package/schemas/conformance-report.schema.json +150 -0
- package/schemas/deployment-profile.schema.json +64 -0
- package/schemas/evaluation-report.schema.json +158 -0
- package/schemas/knowledge-evidence-bundle.schema.json +150 -0
- package/schemas/knowledge-manifest.schema.json +548 -0
- package/schemas/metrics.schema.json +178 -0
- package/schemas/migration-checklist-extractive-candidate.schema.json +42 -0
- package/schemas/migration-checklist.schema.json +706 -0
- package/schemas/migration-evaluation-dataset-v2.schema.json +208 -0
- package/schemas/migration-evaluation-dataset.schema.json +204 -0
- package/schemas/migration-planning-qualification-record.schema.json +234 -0
- package/schemas/project-manifest.schema.json +308 -0
- package/schemas/qualification-record.schema.json +56 -0
- package/schemas/repository-impact-evidence.schema.json +232 -0
- package/schemas/repository-impact.schema.json +202 -0
- package/schemas/upgrade-decision.schema.json +273 -0
- package/schemas/usage-index.schema.json +179 -0
- package/schemas/version-analysis.schema.json +449 -0
- package/src/ai-runtime-debug.js +325 -0
- package/src/ai-runtime-error.js +42 -0
- package/src/ai-runtime.js +174 -0
- package/src/ai-scorecard.js +204 -0
- package/src/ai-version-analysis.js +484 -0
- package/src/artifact-root-compatibility.js +91 -0
- package/src/benchmark-report.js +111 -0
- package/src/benchmark-runner.js +191 -0
- package/src/canonical-json.js +69 -0
- package/src/cli.js +1299 -0
- package/src/conformance-report.js +158 -0
- package/src/conformance-runner.js +253 -0
- package/src/constants.js +73 -0
- package/src/cooperative-scheduler.js +79 -0
- package/src/dependencies.js +44 -0
- package/src/dependency-ai-context.js +625 -0
- package/src/detectors.js +253 -0
- package/src/discovery.js +234 -0
- package/src/ecosystem-version-adapter.js +294 -0
- package/src/environment-compatibility.js +77 -0
- package/src/evaluation-comparator.js +158 -0
- package/src/evaluation-report.js +76 -0
- package/src/evaluation-runner.js +248 -0
- package/src/evidence-source-adapter.js +472 -0
- package/src/files.js +89 -0
- package/src/governance-diagnostics.js +64 -0
- package/src/governance-loader.js +63 -0
- package/src/governance-metadata.js +346 -0
- package/src/governance-validator.js +360 -0
- package/src/http/bounded-fetch.js +278 -0
- package/src/http/cli-http-runtime.js +44 -0
- package/src/impact/input-loader.js +157 -0
- package/src/impact/matcher.js +40 -0
- package/src/impact/repository-impact.js +199 -0
- package/src/impact/runtime.js +24 -0
- package/src/impact/status.js +62 -0
- package/src/impact/writer.js +30 -0
- package/src/impact-evidence/input-loader.js +202 -0
- package/src/impact-evidence/repository-impact-evidence.js +234 -0
- package/src/impact-evidence/runtime.js +16 -0
- package/src/impact-evidence/writer.js +30 -0
- package/src/index.js +563 -0
- package/src/installed-version-baseline.js +196 -0
- package/src/knowledge-cache.js +324 -0
- package/src/knowledge-evidence-bundle.js +101 -0
- package/src/knowledge-evidence-producer.js +233 -0
- package/src/knowledge-manifest-builder.js +188 -0
- package/src/knowledge-manifest-writer.js +32 -0
- package/src/knowledge-manifest.js +255 -0
- package/src/knowledge-research.js +615 -0
- package/src/metrics-engine.js +205 -0
- package/src/migration-checklist/ai-candidate.js +320 -0
- package/src/migration-checklist/assembler.js +37 -0
- package/src/migration-checklist/context-runtime.js +828 -0
- package/src/migration-checklist/evaluation/action-criteria.js +244 -0
- package/src/migration-checklist/evaluation/comparator-v2.js +332 -0
- package/src/migration-checklist/evaluation/comparator.js +279 -0
- package/src/migration-checklist/evaluation/dataset-v2.js +227 -0
- package/src/migration-checklist/evaluation/dataset.js +336 -0
- package/src/migration-checklist/evaluation/extractive-fixtures-v2.js +148 -0
- package/src/migration-checklist/evaluation/metrics-v2.js +226 -0
- package/src/migration-checklist/evaluation/metrics.js +158 -0
- package/src/migration-checklist/evaluation/qualification-v2.js +321 -0
- package/src/migration-checklist/evaluation/qualification.js +239 -0
- package/src/migration-checklist/evaluation/runner-v2.js +294 -0
- package/src/migration-checklist/evaluation/runner.js +194 -0
- package/src/migration-checklist/evaluation/scorecard-v2.js +106 -0
- package/src/migration-checklist/evaluation/scorecard.js +86 -0
- package/src/migration-checklist/extractive-candidate.js +166 -0
- package/src/migration-checklist/extractive-prompt.js +62 -0
- package/src/migration-checklist/generator.js +702 -0
- package/src/migration-checklist/grounding-policy.js +117 -0
- package/src/migration-checklist/input-loader.js +613 -0
- package/src/migration-checklist/migration-checklist.js +635 -0
- package/src/migration-checklist/presentation.js +292 -0
- package/src/migration-checklist/progress.js +96 -0
- package/src/migration-checklist/prompt.js +83 -0
- package/src/migration-checklist/qualification-guard.js +462 -0
- package/src/migration-checklist/qualification-resolution.js +122 -0
- package/src/migration-checklist/qualification-store.js +225 -0
- package/src/migration-checklist/runtime.js +205 -0
- package/src/migration-checklist/verification.js +134 -0
- package/src/migration-checklist/writer.js +35 -0
- package/src/openai-compatible-provider.js +451 -0
- package/src/orchestration/failure-log.js +32 -0
- package/src/orchestration/pipeline.js +200 -0
- package/src/orchestration/progress-events.js +337 -0
- package/src/orchestration/progress-reporter.js +131 -0
- package/src/orchestration/text-writer.js +22 -0
- package/src/portable.js +13 -0
- package/src/product-completion.js +249 -0
- package/src/project-manifest-input.js +90 -0
- package/src/project-manifest.js +141 -0
- package/src/python-requirements.js +137 -0
- package/src/registry/npm-packument.js +256 -0
- package/src/registry/npm-registry-adapter.js +262 -0
- package/src/registry/pypi-project.js +300 -0
- package/src/registry/pypi-registry-adapter.js +235 -0
- package/src/registry/sanitize-registry-body.js +51 -0
- package/src/renderers/console.js +160 -0
- package/src/renderers/impact-presentation.js +278 -0
- package/src/renderers/markdown.js +172 -0
- package/src/research-plan.js +455 -0
- package/src/runtime-conformance.js +275 -0
- package/src/source-provenance.js +393 -0
- package/src/source-url.js +62 -0
- package/src/structured-output-schema.js +66 -0
- package/src/target-selector.js +306 -0
- package/src/upgrade-decision/input-loader.js +107 -0
- package/src/upgrade-decision/presentation.js +43 -0
- package/src/upgrade-decision/runtime.js +21 -0
- package/src/upgrade-decision/upgrade-decision.js +626 -0
- package/src/upgrade-decision/writer.js +30 -0
- package/src/usage/analyzer-registry.js +63 -0
- package/src/usage/coverage.js +116 -0
- package/src/usage/input-loader.js +139 -0
- package/src/usage/js/analyzer.js +240 -0
- package/src/usage/js/parser.js +21 -0
- package/src/usage/runtime.js +187 -0
- package/src/usage/scope.js +44 -0
- package/src/usage/source-files.js +50 -0
- package/src/usage/usage-index.js +217 -0
- package/src/usage/writer.js +31 -0
- package/src/version-analysis-loader.js +203 -0
- package/src/version-analysis-manifest.js +314 -0
- package/src/version-analysis-writer.js +30 -0
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
# RR02-FIX-05 — Materialize Persisted Real-provider Qualification
|
|
2
|
+
|
|
3
|
+
## 1. Executive Verdict
|
|
4
|
+
|
|
5
|
+
**`QUALIFICATION_MATERIALIZED_AND_RELEASE_GATES_PASS`**
|
|
6
|
+
|
|
7
|
+
v0.5.0 readiness: **`GO_V0_5_0_WITH_NON_BLOCKING_UX_FOLLOWUPS`**.
|
|
8
|
+
Migration Checklist default enablement: **`KEEP_EXPERIMENTAL`**.
|
|
9
|
+
|
|
10
|
+
## 2. Why Materialization Was Required
|
|
11
|
+
|
|
12
|
+
RR02-RERUN proved the packaged FIX-04 heartbeat, cancellation, package and UX
|
|
13
|
+
gates, but stopped at `BLOCKED_BY_QUALIFICATION_INPUT`. Markdown evidence was
|
|
14
|
+
correctly rejected as runtime input. FIX-05 located the original structured
|
|
15
|
+
RR-01-RERUN evaluation and projected its unchanged qualification through the
|
|
16
|
+
supported atomic writer.
|
|
17
|
+
|
|
18
|
+
## 3. Source Search and Provenance
|
|
19
|
+
|
|
20
|
+
Search was limited to repository artifacts, report-referenced RR-01 outputs
|
|
21
|
+
and scoped temporary RR-01 acceptance locations that were not retained.
|
|
22
|
+
|
|
23
|
+
| Candidate source | Machine-readable | Runtime mode | Identity match | Verdict | Selected |
|
|
24
|
+
| --- | --- | --- | --- | --- | --- |
|
|
25
|
+
| `rr01-real-migration-evaluation.json` | Full v1 report | real | No, v1 task | `NOT_QUALIFIED` | No |
|
|
26
|
+
| `upgradelens-rr01-rerun-real-evaluation.json` | Full v2 report | real | Exact | `QUALIFIED` | Yes |
|
|
27
|
+
| RR-01 controlled/VinGrade result JSON files | ID/transcript only | real | Not independently validatable | N/A | No |
|
|
28
|
+
| RR-01 Markdown reports | Prose only | N/A | Rejected | N/A | No |
|
|
29
|
+
|
|
30
|
+
Selected source provenance:
|
|
31
|
+
|
|
32
|
+
- artifact ID: `upgradelens-rr01-rerun-real-evaluation.json`;
|
|
33
|
+
- source bytes: 118,466;
|
|
34
|
+
- source SHA-256:
|
|
35
|
+
`09fa990a934135ca94efc5ff4387c286fd52ad2d9199285f135ddb24810aa376`;
|
|
36
|
+
- qualification-object canonical SHA-256:
|
|
37
|
+
`05613e763f7a972942761ad68a10ed976ce9e7cd5a9a296fc8a2abc94fc57b68`;
|
|
38
|
+
- generatedAt: `2026-07-17T03:32:16.710Z`;
|
|
39
|
+
- original provider requests: 7;
|
|
40
|
+
- source mutated before writer projection: **NO**.
|
|
41
|
+
|
|
42
|
+
Only the selected file contained the complete strict qualification object.
|
|
43
|
+
Other files containing the same ID were pipeline observations, not competing
|
|
44
|
+
qualification sources.
|
|
45
|
+
|
|
46
|
+
## 4. Current Identity
|
|
47
|
+
|
|
48
|
+
- task: `migration-planning.v2`;
|
|
49
|
+
- dataset: `migration-planning-golden@2.0.0`;
|
|
50
|
+
- dataset digest: `sha256:c15089381612671c62c3b565d93ad4f5dff1705317ee9622d9ee12a68028d407`;
|
|
51
|
+
- criteria: `migration-action-evaluation@1.0.0`;
|
|
52
|
+
- criteria digest: `sha256:3e2d7c3e32794d2acb59fb834609806e7700cc6888780ffd3d26d1f106078ccc`;
|
|
53
|
+
- comparator/normalization: `2.0.0` / `1.0.0`;
|
|
54
|
+
- policy: `3.0.0`,
|
|
55
|
+
`sha256:b463a30d8044aed5aa8565fc08824b9f430145527da35142e452c3dad544c747`;
|
|
56
|
+
- prompt: `2`,
|
|
57
|
+
`sha256:68c227c7951cd9ad6e60283fc9d54416f7c7e76ebaaa85ce17acfe30252cfdd2`;
|
|
58
|
+
- candidate schema:
|
|
59
|
+
`sha256:6ac9e1477e206ab082ac38cdb263254c996ee4684e04c80af6b9a08ceae0375d`;
|
|
60
|
+
- trust: `migration-checklist-trust.extractive.v2`;
|
|
61
|
+
- presentation: `migration-checklist-extractive-presentation.v1`;
|
|
62
|
+
- runtime: real / `openai-compatible` / `openai/gpt-5.5` /
|
|
63
|
+
`openai-compatible`;
|
|
64
|
+
- qualification identity:
|
|
65
|
+
`sha256:4fa4954d6f254d94859bce17aec6209394d380e4635155a6f3ce23a7e9b70765`.
|
|
66
|
+
|
|
67
|
+
## 5. Original Qualification Validation
|
|
68
|
+
|
|
69
|
+
Current authoritative code recomputed the qualification from the full
|
|
70
|
+
structured dataset, metrics and runtime report. The recomputed qualification
|
|
71
|
+
was canonically identical to the source object:
|
|
72
|
+
|
|
73
|
+
- strict v2 schema: pass;
|
|
74
|
+
- real runtime and observed identity: pass;
|
|
75
|
+
- 19/19 thresholds: pass;
|
|
76
|
+
- 15/15 critical gates: pass;
|
|
77
|
+
- coverage/verdict invariants: pass;
|
|
78
|
+
- failed thresholds/gates: 0/0;
|
|
79
|
+
- source limitations: 0;
|
|
80
|
+
- secret/raw-payload prohibited keys: 0;
|
|
81
|
+
- verdict: `QUALIFIED`.
|
|
82
|
+
|
|
83
|
+
No provider was called and no field, digest, policy or verdict was edited.
|
|
84
|
+
|
|
85
|
+
## 6. Persisted Record Materialization
|
|
86
|
+
|
|
87
|
+
The public `writeMigrationPlanningQualificationRecord` API wrote:
|
|
88
|
+
|
|
89
|
+
`.upgradelens/migration-planning-qualification.json`
|
|
90
|
+
|
|
91
|
+
- permissions: `0600`;
|
|
92
|
+
- bytes: 9,622;
|
|
93
|
+
- record digest:
|
|
94
|
+
`sha256:e55b2d6f2f82091f5ce321e3e6b3a36cab8a34ea7608464ccd08b8ef49813847`;
|
|
95
|
+
- file SHA-256:
|
|
96
|
+
`7891afabc6979ab3f362cbdd7c312daacf84595e12a49150c709eda8e477aa69`;
|
|
97
|
+
- qualification ID preserved exactly;
|
|
98
|
+
- writer serialization/read-back exact;
|
|
99
|
+
- destination is ignored by `.gitignore`.
|
|
100
|
+
|
|
101
|
+
## 7. Record Integrity and Resolution
|
|
102
|
+
|
|
103
|
+
Production loader, resolver and guard confirmed:
|
|
104
|
+
|
|
105
|
+
- strict envelope and record digest;
|
|
106
|
+
- embedded qualification identity digest;
|
|
107
|
+
- default path relative to target root;
|
|
108
|
+
- `status: QUALIFIED`;
|
|
109
|
+
- `executionAllowed: true`;
|
|
110
|
+
- `experimentalOverrideUsed: false`;
|
|
111
|
+
- immutable decision;
|
|
112
|
+
- default and explicit source remain single-source decisions.
|
|
113
|
+
|
|
114
|
+
Focused coverage proves once-per-run resolution, writer determinism,
|
|
115
|
+
idempotence, invalid-source non-overwrite, manual-mutation corruption,
|
|
116
|
+
default analyze isolation and presentation consistency.
|
|
117
|
+
|
|
118
|
+
## 8. Qualification-dependent Scenario Matrix
|
|
119
|
+
|
|
120
|
+
| Scenario | Source | Status | Execution | Provider calls | Exit | Surface consistency | Capture |
|
|
121
|
+
| --- | --- | --- | --- | ---: | ---: | --- | --- |
|
|
122
|
+
| RERUN-006 | default path | `QUALIFIED` | Allowed, 0/0 contexts | 0 | 0 | Guard/progress/console/Markdown pass | `003-*` |
|
|
123
|
+
| RERUN-007 | `config/qualification.json` | `QUALIFIED` | Allowed, no fallback | 0 | 0 | Pass | `004-*` |
|
|
124
|
+
| RERUN-008 | absent | `MISSING` | Experimental only | 0 | 0 | No qualified claim | `005-*` |
|
|
125
|
+
| RERUN-009 | explicit valid mismatch | `IDENTITY_MISMATCH` | Blocked | 0 | 1 | Constrained | `006-*` |
|
|
126
|
+
| RERUN-010 | tampered digest | `CORRUPTED` | Blocked | 0 | 1 | Constrained | `007-*` |
|
|
127
|
+
| RERUN-011 | matching strict fixture | `NOT_QUALIFIED` | Blocked | 0 | 1 | Override did not bypass | `008-*` |
|
|
128
|
+
|
|
129
|
+
Negative fixtures were generated with authoritative qualification/writer APIs;
|
|
130
|
+
only the corruption scenario intentionally mutated its isolated temporary
|
|
131
|
+
record.
|
|
132
|
+
|
|
133
|
+
## 9. Provider Request Counts
|
|
134
|
+
|
|
135
|
+
New provider requests: **0**. Qualified runs had zero eligible contexts and
|
|
136
|
+
preserved lazy provider initialization. All negative scenarios blocked before
|
|
137
|
+
context/provider construction. No requalification occurred.
|
|
138
|
+
|
|
139
|
+
## 10. CLI Capture Evidence
|
|
140
|
+
|
|
141
|
+
`docs/rr02-fix-05-cli-captures/manifest.json` contains eight invocations and
|
|
142
|
+
11 screenshots. Every invocation has command, environment, raw/clean
|
|
143
|
+
transcript, metadata, exit code and final screen. RERUN-006 additionally has
|
|
144
|
+
start/progress/final evidence.
|
|
145
|
+
|
|
146
|
+
## 11. Regression and Package Results
|
|
147
|
+
|
|
148
|
+
- focused qualification/progress/cooperative/orchestration: 68/68 pass;
|
|
149
|
+
- MP-01–MP-05 and Extractive regressions: 74/74 pass;
|
|
150
|
+
- canonical parallel attempt 1: 544 pass, 1 lifecycle `SIGKILL` flake,
|
|
151
|
+
1 sandbox-only skip;
|
|
152
|
+
- isolated lifecycle reproduction: 1/1 pass;
|
|
153
|
+
- canonical parallel attempt 2: 545 pass, 0 fail, 1 sandbox-only skip;
|
|
154
|
+
- serial suite: 545 pass, 0 fail, 1 sandbox-only skip;
|
|
155
|
+
- package guard before report: 207 files, 0 captures, 15/15 required assets;
|
|
156
|
+
- final dry-run/package guard after report: 208 files, 0 captures, 15/15
|
|
157
|
+
required assets;
|
|
158
|
+
- fresh tarball: `upgradelens@0.4.0`, SHA-256
|
|
159
|
+
`c3a5648a15ddcddb752b930b2d581163964cd2c26af51c418fb9ca7906411919`;
|
|
160
|
+
- offline clean install: 12 packages; public version/help/import pass.
|
|
161
|
+
|
|
162
|
+
The first canonical failure is retained and is not replaced silently by the
|
|
163
|
+
retry or serial pass. No timeout or test infrastructure changed.
|
|
164
|
+
|
|
165
|
+
## 12. Privacy and Repository Policy
|
|
166
|
+
|
|
167
|
+
The persisted record contains no key, token, authorization header, raw
|
|
168
|
+
provider request/response, raw candidate/error payload, endpoint or private
|
|
169
|
+
reasoning. It is generated output, ignored by Git, not committed and excluded
|
|
170
|
+
from npm. The package retains only the public record schema/docs. Capture
|
|
171
|
+
trees and helpers are absent from the tarball.
|
|
172
|
+
|
|
173
|
+
## 13. Files Changed
|
|
174
|
+
|
|
175
|
+
- generated, Git-ignored:
|
|
176
|
+
`.upgradelens/migration-planning-qualification.json`;
|
|
177
|
+
- added: this report;
|
|
178
|
+
- added: `docs/rr02-fix-05-cli-captures/**`;
|
|
179
|
+
- canonical RR02-RERUN report receives a qualification-completion attempt
|
|
180
|
+
note.
|
|
181
|
+
|
|
182
|
+
Pre-existing RR02-RERUN evidence changes were preserved.
|
|
183
|
+
|
|
184
|
+
## 14. Remaining Limitations
|
|
185
|
+
|
|
186
|
+
- Migration Checklist remains experimental and requires human review.
|
|
187
|
+
- The known narrow-terminal detail truncation is a non-blocking UX follow-up.
|
|
188
|
+
- Parallel lifecycle timing remains load-sensitive; isolated, canonical retry
|
|
189
|
+
and serial runs passed.
|
|
190
|
+
- The sandbox-only local-loopback case is not counted as a pass.
|
|
191
|
+
|
|
192
|
+
## 15. Release Decision
|
|
193
|
+
|
|
194
|
+
v0.5.0: **`GO_V0_5_0_WITH_NON_BLOCKING_UX_FOLLOWUPS`**.
|
|
195
|
+
|
|
196
|
+
Migration Checklist: **`KEEP_EXPERIMENTAL`**.
|
|
197
|
+
|
|
198
|
+
The only next task is **v0.5.0 Release Execution Checklist**. This task did
|
|
199
|
+
not release, tag, publish or bump the package.
|
|
200
|
+
|
|
201
|
+
## 16. Scope Confirmation
|
|
202
|
+
|
|
203
|
+
No production/test/fixture/package source, evaluation identity, dataset,
|
|
204
|
+
criteria, comparator, normalization, policy, prompt, schema, trust,
|
|
205
|
+
generator, progress, scheduler, timeout or version changed. The source was
|
|
206
|
+
not reconstructed from Markdown and no provider requalification ran. Nothing
|
|
207
|
+
was staged, committed, pushed, tagged or published.
|
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
# RR02-RERUN — After FIX-04 CLI Qualification, Progress and Package Validation
|
|
2
|
+
|
|
3
|
+
## 1. Executive Verdict
|
|
4
|
+
|
|
5
|
+
Final v0.5.0 verdict: **`BLOCKED_BY_QUALIFICATION_INPUT`**.
|
|
6
|
+
|
|
7
|
+
The committed FIX-04 snapshot passed focused preflight, fresh packaging,
|
|
8
|
+
offline clean installation, public import/version/help, default TTY/plain/CI
|
|
9
|
+
workflows, the production CPU-bound heartbeat gate, cancellation, controlled
|
|
10
|
+
failure, normalized artifact equivalence, canonical parallel regression, and
|
|
11
|
+
the separately executed serial suite.
|
|
12
|
+
|
|
13
|
+
A persisted real-provider Migration Planning qualification record was not
|
|
14
|
+
available through either supported source. The validation did not synthesize,
|
|
15
|
+
copy, repair, or reconstruct one from prose. RERUN-006 and RERUN-007 therefore
|
|
16
|
+
could not establish the required exact identity and integrity evidence, and a
|
|
17
|
+
release GO is not permitted.
|
|
18
|
+
|
|
19
|
+
Migration Checklist default-enablement decision: **`KEEP_EXPERIMENTAL`**.
|
|
20
|
+
|
|
21
|
+
## 2. Committed Snapshot Precondition
|
|
22
|
+
|
|
23
|
+
- Branch: `feat/mvp-05-evidence-migration-checklist`
|
|
24
|
+
- HEAD: `44eb942e21ea78550700990a00bd74635ce48bcc`
|
|
25
|
+
- Subject: `fix: event-loop starvation`
|
|
26
|
+
- Expected pre-FIX-04 baseline: `a24899dee1714c8b6f7c20cd9a129e9e80a97261`
|
|
27
|
+
- Initial index: clean
|
|
28
|
+
- Initial worktree: clean
|
|
29
|
+
- Initial untracked files: none
|
|
30
|
+
|
|
31
|
+
Committed-tree inspection confirmed:
|
|
32
|
+
|
|
33
|
+
- `src/cooperative-scheduler.js` is present;
|
|
34
|
+
- Discovery and Usage import and call the scheduler at safe boundaries;
|
|
35
|
+
- abort checks are part of the committed scheduler integration;
|
|
36
|
+
- `test/cooperative-scheduling.test.js` is present;
|
|
37
|
+
- the package contains the scheduler module;
|
|
38
|
+
- `package.json` retains `!docs/*-cli-captures`.
|
|
39
|
+
|
|
40
|
+
All post-preflight product evidence used this exact committed HEAD.
|
|
41
|
+
|
|
42
|
+
## 3. Why This Rerun Was Required
|
|
43
|
+
|
|
44
|
+
The prior RR02-RERUN on `a24899d` stopped at RERUN-005 with
|
|
45
|
+
`NO_GO_QUALIFICATION_OR_PROGRESS`: a CPU-bound Usage stage was quiet for 8.4
|
|
46
|
+
seconds and did not allow the five-second heartbeat timer to run. FIX-04 added
|
|
47
|
+
event-loop-safe cooperative scheduling. Its remediation evidence was not
|
|
48
|
+
itself a release verdict, so this run restarted with a new tarball at
|
|
49
|
+
RERUN-001.
|
|
50
|
+
|
|
51
|
+
Historical evidence remains in capture sequences 001–007 and retains the old
|
|
52
|
+
no-go verdict. The current attempt is sequences 008–018.
|
|
53
|
+
|
|
54
|
+
## 4. Environment and Fresh Package Identity
|
|
55
|
+
|
|
56
|
+
- Package: `upgradelens@0.4.0`
|
|
57
|
+
- Platform: macOS arm64
|
|
58
|
+
- Node: `v26.0.0`
|
|
59
|
+
- Fresh isolated validation root: yes
|
|
60
|
+
- Fresh UpgradeLens tarball: yes; no prior UpgradeLens tarball reused
|
|
61
|
+
- Clean install: offline, isolated consumer, exact local dependency tarballs
|
|
62
|
+
- Installed packages: 12
|
|
63
|
+
- Public package import: passed; 408 exports observed
|
|
64
|
+
- Provider requests: 0
|
|
65
|
+
|
|
66
|
+
Installed/exercised tarball:
|
|
67
|
+
|
|
68
|
+
- file count: 207;
|
|
69
|
+
- compressed size: 491,143 bytes;
|
|
70
|
+
- unpacked size: 1,940,721 bytes;
|
|
71
|
+
- npm SHA-1: `c8277090a5d8996b3a46c1ef4284cbee3e1534d4`;
|
|
72
|
+
- SHA-256:
|
|
73
|
+
`72ee68a2d06c8a2b9f226a006a73851ac3c595db68783abaccd889924b74cb1c`.
|
|
74
|
+
|
|
75
|
+
The first isolated-cache install correctly returned `ENOTCACHED`. A new
|
|
76
|
+
consumer was then installed offline with the exact local dependency tarballs;
|
|
77
|
+
the UpgradeLens tarball itself remained the newly packed HEAD artifact.
|
|
78
|
+
|
|
79
|
+
## 5. Qualification Input and Identity Check
|
|
80
|
+
|
|
81
|
+
No `migration-planning-qualification.json` exists in the repository default
|
|
82
|
+
location, under the available Desktop repositories, or under the available
|
|
83
|
+
temporary validation roots. No supported relative override was supplied.
|
|
84
|
+
|
|
85
|
+
Consequences:
|
|
86
|
+
|
|
87
|
+
- strict schema, record integrity, and exact real-provider identity could not
|
|
88
|
+
be established for RERUN-006;
|
|
89
|
+
- the relative override path could not be exercised with a real persisted
|
|
90
|
+
record in RERUN-007;
|
|
91
|
+
- identity mismatch/corruption/`NOT_QUALIFIED` product scenarios were not
|
|
92
|
+
manufactured from test data;
|
|
93
|
+
- no provider was constructed or called.
|
|
94
|
+
|
|
95
|
+
RERUN-008 independently confirmed that an actually missing default record is
|
|
96
|
+
presented as `MISSING`, source `defaultPath`, qualification ID `none`, and
|
|
97
|
+
experimental override `YES`. It was never presented as qualified.
|
|
98
|
+
|
|
99
|
+
## 6. Preflight Results
|
|
100
|
+
|
|
101
|
+
| Gate | Result |
|
|
102
|
+
| --- | --- |
|
|
103
|
+
| Scheduler, Discovery, Usage, progress, orchestration and CLI | 45 passed, 0 failed |
|
|
104
|
+
| Qualification resolver/guard and Migration Checklist runtime | 75 passed, 0 failed |
|
|
105
|
+
| MP, duplicate occurrence, governance and Extractive Contract v2 | 75 passed, 0 failed |
|
|
106
|
+
| Package content guard before matrix | 207 files, 0 captures, 15/15 required assets |
|
|
107
|
+
| Committed snapshot | Clean and newer than `a24899d` |
|
|
108
|
+
|
|
109
|
+
No focused non-sandbox failure occurred.
|
|
110
|
+
|
|
111
|
+
## 7. Scenario Matrix
|
|
112
|
+
|
|
113
|
+
| Scenario | Packaged CLI | Qualification | Mode | Duration | Heartbeats | Exit | Provider calls | Result | Capture |
|
|
114
|
+
| --- | --- | --- | --- | ---: | ---: | ---: | ---: | --- | --- |
|
|
115
|
+
| RERUN-001 version | Yes | N/A | non-TTY | 1.1s | 0 | 0 | 0 | Pass | `008-...-version` |
|
|
116
|
+
| RERUN-001 help | Yes | N/A | non-TTY | 0.6s | 0 | 0 | 0 | Pass | `009-...-help` |
|
|
117
|
+
| RERUN-002 default auto | Yes | Not resolved by design | TTY interactive | 0.8s | 0 | 0 | 0 | Pass, seven stages | `010-...-default-tty-auto` |
|
|
118
|
+
| RERUN-003 default auto | Yes | Not resolved by design | non-TTY plain | 1.4s | 0 | 0 | 0 | Pass | `011-...-default-nontty-auto` |
|
|
119
|
+
| RERUN-004 explicit plain | Yes | Not resolved by design | 80-column PTY | 0.8s | 0 | 0 | 0 | Pass | `012-...-plain-tty` |
|
|
120
|
+
| RERUN-005 CPU heartbeat | Yes | Not resolved | TTY interactive | 22.1s total; Usage 16.0s | 3 | 0 | 0 | **Pass** | `013-...-cpu-heartbeat` |
|
|
121
|
+
| RERUN-006 persisted qualified | No | Record unavailable | N/A | N/A | N/A | N/A | 0 | Blocked by input | manifest |
|
|
122
|
+
| RERUN-007 relative override | No | Record unavailable | N/A | N/A | N/A | N/A | 0 | Blocked by input | manifest |
|
|
123
|
+
| RERUN-008 missing | Yes | `MISSING` | non-TTY plain | 1.0s | 0 | 0 | 0 | Pass | `014-...-missing-qualification` |
|
|
124
|
+
| RERUN-009 mismatch | No | No persisted fixture authorized | N/A | N/A | N/A | N/A | 0 | Not manufactured | manifest |
|
|
125
|
+
| RERUN-010 corrupted | No | No persisted fixture authorized | N/A | N/A | N/A | N/A | 0 | Not manufactured | manifest |
|
|
126
|
+
| RERUN-011 `NOT_QUALIFIED` | No | No persisted fixture authorized | N/A | N/A | N/A | N/A | 0 | Not manufactured | manifest |
|
|
127
|
+
| RERUN-012 cancellation | Yes | N/A | non-TTY plain | 5.8s total | 0 | 130 | 0 | Pass | `015-...-usage-cancellation` |
|
|
128
|
+
| RERUN-013 fatal failure | Yes | N/A | non-TTY plain | 0.6s | 0 | 1 | 0 | Pass | `016-...-fatal-stage-failure` |
|
|
129
|
+
| RERUN-014 CI-like | Yes | Not resolved by design | non-TTY/no color | 0.7s | 0 | 0 | 0 | Pass | `017-...-ci-like` |
|
|
130
|
+
| Artifact repeat | Yes | Not resolved by design | non-TTY plain | 0.8s | 0 | 0 | 0 | Pass | `018-artifact-determinism-repeat` |
|
|
131
|
+
| RERUN-015 final package | Tar inspection | N/A | N/A | N/A | N/A | N/A | 0 | Pass | this report |
|
|
132
|
+
|
|
133
|
+
## 8. CPU-bound Heartbeat Evidence
|
|
134
|
+
|
|
135
|
+
The clean-installed public binary ran the controlled 60,000-file workload
|
|
136
|
+
using the production five-second threshold:
|
|
137
|
+
|
|
138
|
+
```text
|
|
139
|
+
Repository Usage Discovery — Scanning supported source files [0.0s]
|
|
140
|
+
Repository Usage Discovery — Scanning supported source files [5.0s]
|
|
141
|
+
Repository Usage Discovery — Scanning supported source files [10.0s]
|
|
142
|
+
Repository Usage Discovery — Scanning supported source files [15.0s]
|
|
143
|
+
Repository Usage Discovery — Writing Repository Usage Index [16.0s]
|
|
144
|
+
Repository Usage Discovery completed [16.0s]
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
The three heartbeat records occur after the quiet threshold and before the
|
|
148
|
+
terminal record. Elapsed values are monotonic. There is no percentage, ETA,
|
|
149
|
+
token stream, model-thinking claim, scanner-forged heartbeat, or heartbeat
|
|
150
|
+
after terminal state.
|
|
151
|
+
|
|
152
|
+
## 9. Qualification Consistency Results
|
|
153
|
+
|
|
154
|
+
- Default analysis ran seven stages and did not resolve qualification.
|
|
155
|
+
- Default analysis did not schedule Migration Checklist.
|
|
156
|
+
- Missing qualification was resolved once for the experimental run and was
|
|
157
|
+
consistently shown as `MISSING`.
|
|
158
|
+
- Console output reported source, path, ID and override state without claiming
|
|
159
|
+
qualification.
|
|
160
|
+
- The experimental missing-record policy completed with mandatory review and
|
|
161
|
+
zero eligible contexts/provider calls.
|
|
162
|
+
- Focused tests passed persisted `QUALIFIED`, mismatch, corruption,
|
|
163
|
+
`NOT_QUALIFIED`, one-source, immutable-decision and zero-provider-call
|
|
164
|
+
contracts.
|
|
165
|
+
|
|
166
|
+
Focused tests are not substituted for the missing packaged real-provider
|
|
167
|
+
record. That distinction is the release blocker.
|
|
168
|
+
|
|
169
|
+
## 10. Cancellation and Failure Results
|
|
170
|
+
|
|
171
|
+
RERUN-012 sent the first `SIGINT` after Usage emitted
|
|
172
|
+
`SCAN_SUPPORTED_SOURCE`. Usage reached `STAGE CANCELLED` at 0.1 seconds of that
|
|
173
|
+
stage, the run exited 130, later stages were absent, no success summary was
|
|
174
|
+
printed, and `.upgradelens/usage-index.json` was absent.
|
|
175
|
+
|
|
176
|
+
RERUN-013 passed a file where a repository directory was required. Project
|
|
177
|
+
Discovery emitted one constrained `STAGE FAILED`, the run emitted
|
|
178
|
+
`completed=0/7 next=REVIEW_FAILURE_DETAILS`, exited 1, and did not schedule
|
|
179
|
+
later stages or print a success summary. No raw stack was exposed.
|
|
180
|
+
|
|
181
|
+
## 11. Artifact Determinism
|
|
182
|
+
|
|
183
|
+
The same packaged command was repeated against the same target. Project
|
|
184
|
+
Manifest, Usage Index, Repository Impact and Repository Impact Evidence were
|
|
185
|
+
equivalent after removing only runtime timestamps and the exact-byte lineage
|
|
186
|
+
digests that necessarily change when those timestamps change. All dependency,
|
|
187
|
+
symbol, file, finding, evidence, ordering, IDs, statuses and presentation data
|
|
188
|
+
were identical.
|
|
189
|
+
|
|
190
|
+
The committed cooperative test independently proves exact-byte equality with
|
|
191
|
+
fixed clocks for yield-disabled, yield-enabled and alternate batch policies.
|
|
192
|
+
|
|
193
|
+
## 12. CLI Capture Inventory
|
|
194
|
+
|
|
195
|
+
- Historical invocations retained: 7
|
|
196
|
+
- Current attempt invocations: 11
|
|
197
|
+
- Total manifest entries: 18
|
|
198
|
+
- Current sequences: 008–018
|
|
199
|
+
- Current final screens: 11/11
|
|
200
|
+
- Current additional progress screens: 9
|
|
201
|
+
- Missing final screens: 0
|
|
202
|
+
- Raw transcripts: 18
|
|
203
|
+
- Clean transcripts: 18
|
|
204
|
+
- Real-provider requests: 0
|
|
205
|
+
- Sanitization failures: 0
|
|
206
|
+
|
|
207
|
+
The stable-sorted manifest is
|
|
208
|
+
`docs/rr02-rerun-cli-captures/manifest.json`. Every new UpgradeLens CLI
|
|
209
|
+
invocation has command, environment, raw/clean transcript, metadata, exit
|
|
210
|
+
code, and final screen. TTY scenarios used a real PTY; non-TTY images were
|
|
211
|
+
rendered from their actual transcripts.
|
|
212
|
+
|
|
213
|
+
## 13. UX Scorecard
|
|
214
|
+
|
|
215
|
+
| Criterion | Score | Evidence |
|
|
216
|
+
| --- | ---: | --- |
|
|
217
|
+
| Current activity | 2 | RERUN-002 and RERUN-005 |
|
|
218
|
+
| Meaningful detail | 2 | Stable stage/activity labels |
|
|
219
|
+
| Elapsed time | 2 | 5/10/15-second production heartbeats |
|
|
220
|
+
| Completed history | 2 | Interactive and plain lifecycle trails |
|
|
221
|
+
| Warnings in context | 1 | Missing qualification is contextual; limited warning variety |
|
|
222
|
+
| Final summary | 2 | Default TTY, plain and CI |
|
|
223
|
+
| Visual stability | 2 | Append-only; no cursor rewrite |
|
|
224
|
+
| TTY awareness | 2 | Auto interactive versus auto plain |
|
|
225
|
+
| Honest progress | 2 | No invented percentage, ETA, retry or thinking |
|
|
226
|
+
| Failure recovery | 2 | Cancellation and fatal failure captures |
|
|
227
|
+
| **Total** | **19/20** | UX release target met |
|
|
228
|
+
|
|
229
|
+
The historical Medium 80-column detail-truncation limitation remains a
|
|
230
|
+
non-blocking follow-up. It was not changed or used to alter this validation.
|
|
231
|
+
|
|
232
|
+
## 14. Package Contents and Clean Install
|
|
233
|
+
|
|
234
|
+
The exercised tarball contained the committed scheduler and all 15
|
|
235
|
+
authoritative runtime/schema/dataset/documentation assets. Inspection and the
|
|
236
|
+
package guard found:
|
|
237
|
+
|
|
238
|
+
- 207 files;
|
|
239
|
+
- zero `docs/*-cli-captures` entries;
|
|
240
|
+
- zero capture helper entries;
|
|
241
|
+
- all 15 required assets;
|
|
242
|
+
- executable CLI and public runtime present;
|
|
243
|
+
- clean offline install and public import passed.
|
|
244
|
+
- `npm pack --dry-run --json` passed with the isolated validation cache.
|
|
245
|
+
|
|
246
|
+
An initial dry-run without the isolated-cache argument hit the host's
|
|
247
|
+
root-owned default npm cache (`EPERM`). The required rerun with the isolated
|
|
248
|
+
validation cache passed; this was an environment permission issue, not a
|
|
249
|
+
package-content failure.
|
|
250
|
+
|
|
251
|
+
RERUN capture trees, FIX-04 capture trees, PNGs, transcripts and temporary
|
|
252
|
+
capture helpers are absent from the package.
|
|
253
|
+
|
|
254
|
+
Fresh RERUN-015 tarball created after the report/capture tree existed:
|
|
255
|
+
|
|
256
|
+
- file count: 207;
|
|
257
|
+
- compressed size: 491,159 bytes;
|
|
258
|
+
- unpacked size: 1,940,925 bytes;
|
|
259
|
+
- npm SHA-1: `97fca29e73ee63d806857deca9c3d38a8e5b31c0`;
|
|
260
|
+
- SHA-256:
|
|
261
|
+
`dff64ad860a346e3d5c5db76c9102941779c50fd6e2c07df3d18dbc438f43746`.
|
|
262
|
+
|
|
263
|
+
## 15. Canonical and Serial Regression Results
|
|
264
|
+
|
|
265
|
+
Canonical parallel `npm run check`:
|
|
266
|
+
|
|
267
|
+
- 546 tests;
|
|
268
|
+
- 545 passed;
|
|
269
|
+
- 0 failed;
|
|
270
|
+
- 1 known sandbox-only local-loopback skip;
|
|
271
|
+
- package guard passed with 207 files, zero captures and 15/15 assets.
|
|
272
|
+
|
|
273
|
+
Separate serial `npm test -- --test-concurrency=1`:
|
|
274
|
+
|
|
275
|
+
- 546 tests;
|
|
276
|
+
- 545 passed;
|
|
277
|
+
- 0 failed;
|
|
278
|
+
- 1 known sandbox-only local-loopback skip.
|
|
279
|
+
|
|
280
|
+
The serial pass is reported separately and is not a replacement for the
|
|
281
|
+
canonical result. The canonical parallel run passed on its first attempt.
|
|
282
|
+
|
|
283
|
+
## 16. Defects and Remaining Limitations
|
|
284
|
+
|
|
285
|
+
### Release blocker — persisted qualification input unavailable
|
|
286
|
+
|
|
287
|
+
The exact real-provider qualification record required by RERUN-006/007 is not
|
|
288
|
+
available. This is an evidence-input blocker, not an inferred
|
|
289
|
+
`NOT_QUALIFIED` result and not identity drift.
|
|
290
|
+
|
|
291
|
+
### Non-blocking technical debt
|
|
292
|
+
|
|
293
|
+
1. Migration Checklist remains experimental and requires a separate
|
|
294
|
+
default-enablement review.
|
|
295
|
+
2. Narrow 80-column activity detail may truncate while stage and elapsed
|
|
296
|
+
identity remain readable.
|
|
297
|
+
3. The local-loopback lifecycle case is skipped by this sandbox and is not
|
|
298
|
+
counted as a pass.
|
|
299
|
+
4. Runtime-generated timestamps intentionally alter exact bytes and downstream
|
|
300
|
+
exact-byte lineage between separate CLI runs; fixed-clock tests retain the
|
|
301
|
+
exact deterministic contract.
|
|
302
|
+
|
|
303
|
+
## 17. Release Decision
|
|
304
|
+
|
|
305
|
+
**v0.5.0 readiness: `BLOCKED_BY_QUALIFICATION_INPUT`.**
|
|
306
|
+
|
|
307
|
+
The FIX-04 heartbeat remediation is release-ready on the observed packaged
|
|
308
|
+
workflows. Package, progress, cancellation, failure, deterministic contract,
|
|
309
|
+
and regressions do not block this candidate. Release GO remains prohibited
|
|
310
|
+
until the existing real-provider qualification record is materialized through
|
|
311
|
+
the supported persisted contract and exact identity/integrity can be checked.
|
|
312
|
+
|
|
313
|
+
**Migration Checklist default enablement: `KEEP_EXPERIMENTAL`.**
|
|
314
|
+
|
|
315
|
+
Next task: materialize/persist the existing qualified record without
|
|
316
|
+
reconstructing it from prose, then rerun only the qualification-dependent
|
|
317
|
+
release gates before a v0.5.0 Release Execution Checklist.
|
|
318
|
+
|
|
319
|
+
## 18. Scope Confirmation
|
|
320
|
+
|
|
321
|
+
- No production, test, fixture, package, qualification, dataset, policy,
|
|
322
|
+
prompt, schema, trust, generator, or VinGrade file was changed.
|
|
323
|
+
- No lifecycle timeout, heartbeat interval, yield policy, expected transcript,
|
|
324
|
+
or test infrastructure was changed.
|
|
325
|
+
- No record was synthesized, repaired or requalified.
|
|
326
|
+
- No old UpgradeLens tarball was reused.
|
|
327
|
+
- No network or real-provider call occurred.
|
|
328
|
+
- No file was staged or committed.
|
|
329
|
+
- No push, tag, publish or release occurred.
|
|
330
|
+
- Only this canonical report and new canonical capture evidence changed.
|
|
331
|
+
- Migration Checklist remains experimental.
|
|
332
|
+
|
|
333
|
+
## FIX-05 Qualification Completion Attempt
|
|
334
|
+
|
|
335
|
+
FIX-05 located the original machine-readable RR-01-RERUN real-provider
|
|
336
|
+
evaluation, validated its complete v2 qualification against current identity,
|
|
337
|
+
and materialized the unchanged `QUALIFIED` object through the supported atomic
|
|
338
|
+
writer. Packaged RERUN-006 through RERUN-011 passed with zero new provider
|
|
339
|
+
requests. Final decision is now
|
|
340
|
+
`GO_V0_5_0_WITH_NON_BLOCKING_UX_FOLLOWUPS`; Migration Checklist remains
|
|
341
|
+
`KEEP_EXPERIMENTAL`. Full evidence is in
|
|
342
|
+
`RR02-FIX-05-Materialize-Persisted-Qualification.md`.
|