@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,263 @@
|
|
|
1
|
+
# UpgradeLens v0.5.0 Pre-release Smoke and Release Gate
|
|
2
|
+
|
|
3
|
+
## 1. Executive Verdict
|
|
4
|
+
|
|
5
|
+
`V0_5_0_PRE_RELEASE_SMOKE_PASS_WITH_LIMITATIONS`
|
|
6
|
+
|
|
7
|
+
The release-critical product behavior is intact at the packaged boundary. The previous High exact-duplicate selector defect is closed, the canonical and focused suites have no failures, the tarball installs cleanly, all required product outcomes and exits are reproduced, the persisted real-provider qualification matches current identity, and the isolated Coding Agent handoff passes.
|
|
8
|
+
|
|
9
|
+
The verdict is not an unqualified pass because the npm package currently publishes seven historical validation Markdown files containing local absolute-path strings. No credential, provider body, qualification input, capture tree, or Git metadata was found. This is classified Medium packaging hygiene, not a Blocker or High product/safety defect.
|
|
10
|
+
|
|
11
|
+
## 2. Release Gate
|
|
12
|
+
|
|
13
|
+
`READY_FOR_VERSION_BUMP_AND_RELEASE_BRANCH_FLOW`
|
|
14
|
+
|
|
15
|
+
Blockers: 0. High defects: 0 open. The remaining findings are Medium, Low, or known fail-safe limitations consistent with the approved release positioning. This gate authorizes only the separate version-bump and release-branch flow; it does not state that v0.5.0 is published.
|
|
16
|
+
|
|
17
|
+
## 3. Environment
|
|
18
|
+
|
|
19
|
+
| Item | Value |
|
|
20
|
+
|---|---|
|
|
21
|
+
| Branch | `feat/mvp-05-evidence-migration-checklist` |
|
|
22
|
+
| Commit | `0f28eefba524e6180131b87c54bd7c3896a164b0` |
|
|
23
|
+
| Node.js | `v26.0.0` |
|
|
24
|
+
| npm | `11.12.1` |
|
|
25
|
+
| Current package | `upgradelens@0.4.0` |
|
|
26
|
+
| Provider activity in this smoke | 0 real-provider calls; controlled deterministic runtimes only |
|
|
27
|
+
| Qualification | Persisted real-provider record resolved `QUALIFIED` |
|
|
28
|
+
| Target material | Isolated generic fixtures, isolated VinGrade snapshot/replay, isolated positive Node fixture |
|
|
29
|
+
|
|
30
|
+
The pre-smoke worktree already contained one modified RR02 capture manifest and untracked RR02 capture directories. They were treated as user/pre-existing state and were not overwritten or cleaned. Smoke-created workspace state is limited to this report and the ignored release-smoke capture tree.
|
|
31
|
+
|
|
32
|
+
Temporary pack, cache, install, fixture, and handoff directories were isolated outside the repository. No target repository was upgraded or edited, and no migration action or verification command was executed.
|
|
33
|
+
|
|
34
|
+
## 4. Closed High Defect Evidence
|
|
35
|
+
|
|
36
|
+
The prior re-review correctly recorded one High defect: same-package, same-project, same-manifest, same-type duplicates produced retry selectors that could not identify an exact occurrence. That historical report remains unchanged.
|
|
37
|
+
|
|
38
|
+
Current packaged evidence independently closes it:
|
|
39
|
+
|
|
40
|
+
1. An unqualified selector fails ambiguous before runtime and prints two unique copy/paste selectors.
|
|
41
|
+
2. The candidates differ by stable occurrence IDs:
|
|
42
|
+
- `sha256:147ea6a55585564fcb362f6452eb27fe1780229727e2e753d420660f678e62af`
|
|
43
|
+
- `sha256:eb59f5ec40a6e315d228a639f0ad474efcfeeedf5e8a77e55162d4c24016430a`
|
|
44
|
+
3. Retry A selects only declaration `==1.0.0` as `explicit`; `==1.5.0` remains `registryLatest`.
|
|
45
|
+
4. Retry B selects only declaration `==1.5.0` as `explicit`; `==1.0.0` remains `registryLatest`.
|
|
46
|
+
5. Stale and package-conflicting occurrence selectors fail closed with zero provider calls.
|
|
47
|
+
6. Scoped npm and existing project-qualified selector forms remain compatible.
|
|
48
|
+
7. The VinGrade-shaped duplicate `pypi:langchain-openai` also emits two unique selectors, and each round-trips to exactly one occurrence with the other left at the registry default.
|
|
49
|
+
|
|
50
|
+
Result: `TS_FIX_01_EXACT_DUPLICATE_OCCURRENCE_SELECTION_VERIFIED`.
|
|
51
|
+
|
|
52
|
+
## 5. Test and Validation Matrix
|
|
53
|
+
|
|
54
|
+
| Validation | Result | Evidence |
|
|
55
|
+
|---|---|---|
|
|
56
|
+
| Full canonical suite | PASS WITH 1 REPORTED SKIP | 616 total; 615 pass; 0 fail; 1 skip |
|
|
57
|
+
| Full-suite skip | SKIPPED, not counted as pass | Online keep-alive lifecycle test could not open a local loopback listener in the sandbox |
|
|
58
|
+
| Focused MP-R01–MP-R05 | PASS | 80/80; 0 fail; 0 skip |
|
|
59
|
+
| Focused TS-FIX selector/propagation | PASS | 99/99; 0 fail; 0 skip |
|
|
60
|
+
| Schema, runtime invariant, tamper, deterministic replay group | PASS | 177/177; 0 fail; 0 skip |
|
|
61
|
+
| Qualification integrity and identity mismatch rejection | PASS | Included in the 177-test invariant group and packaged resolver smoke |
|
|
62
|
+
| Duplicate ambiguity/stale/conflict zero-call boundary | PASS | Packaged captures 020–024 |
|
|
63
|
+
| `git diff --check` | PASS | No whitespace errors |
|
|
64
|
+
| Package content guard | PASS | 226 files before addendum; 227 after addendum; 0 capture evidence; 20/20 required assets in both |
|
|
65
|
+
| Pack reproducibility after captures | PASS | Pre- and post-capture tarballs are byte-identical |
|
|
66
|
+
|
|
67
|
+
No expected test or fixture was changed to obtain these results. No validation was blocked other than the explicitly skipped sandbox loopback check.
|
|
68
|
+
|
|
69
|
+
## 6. Tarball Audit
|
|
70
|
+
|
|
71
|
+
| Item | Result |
|
|
72
|
+
|---|---|
|
|
73
|
+
| Acceptance identity | `upgradelens@0.4.0` |
|
|
74
|
+
| Filename | `upgradelens-0.4.0.tgz` |
|
|
75
|
+
| Size | 556,671 bytes |
|
|
76
|
+
| Unpacked size | 2,200,916 bytes |
|
|
77
|
+
| File count | 226 |
|
|
78
|
+
| Required assets | 20/20 |
|
|
79
|
+
| Public exports | 438 |
|
|
80
|
+
| SHA-256 | `4a3ec9758faa29bacf1579e631f675a550a7158b27c3de50318125422a37c28e` |
|
|
81
|
+
| Clean install | PASS, offline from tarball plus local runtime-dependency tarballs; no source link or dev-only dependency |
|
|
82
|
+
| Binary/help/import | PASS |
|
|
83
|
+
|
|
84
|
+
Required packaged components include the CLI binary, target selector and occurrence discriminator, installed baseline and coverage runtimes, Upgrade Decision runtime/schema, Migration Checklist v2 runtime/schema, Product Completion runtime, public documentation, evaluation data, and qualification support.
|
|
85
|
+
|
|
86
|
+
Forbidden entry audit found no `.env`, authorization file, `.upgradelens/review/**`, temporary acceptance repository, npm cache, qualification record/input, Git metadata, `node_modules`, OS/editor temporary file, or retained real-provider request/response body. A broad credential-pattern scan matched only the fixed `Bearer conformance-fixture-token` protocol fixture; it is not a credential.
|
|
87
|
+
|
|
88
|
+
Capture exclusion was rechecked after the 33-capture tree existed: the tarball remained byte-identical. An isolated npm cache was used; no global npm cache ownership was changed.
|
|
89
|
+
|
|
90
|
+
After this addendum was materialized, the supported pack workflow produced a 227-file tarball containing the addendum and still containing zero capture evidence. A second isolated offline clean install of that post-addendum tarball also passed with CLI version `0.4.0` and 438 public exports.
|
|
91
|
+
|
|
92
|
+
Packaging limitation: the blanket public `docs` surface includes two historical `docs/reviews/**` reports and seven historical validation Markdown files with local absolute-path strings. The strings disclose local path/username context but no secret. The current addendum is intentionally a public review document and contains no local absolute path. The acceptance tarball was built before this addendum was materialized; the release-commit minimal smoke must repack after the version bump.
|
|
93
|
+
|
|
94
|
+
## 7. Packaged CLI Scenario Matrix
|
|
95
|
+
|
|
96
|
+
| Scenario | Completion | Decision/handoff | Exit | Result |
|
|
97
|
+
|---|---|---|---:|---|
|
|
98
|
+
| Help/version/import | N/A | Decision-first help, exact target grammar, scoped example, occurrence field, experimental warning; 438 exports | 0 | PASS |
|
|
99
|
+
| Default registry path | `COMPLETED_WITH_REVIEW` | `INVESTIGATE`; registry fact did not become intent; zero plan/action | 0 | PASS |
|
|
100
|
+
| Explicit-target positive | `COMPLETED_WITH_REVIEW` | `PLAN_UPGRADE`, `USER_SELECTED_TARGET`, `ACTIONABLE_WITH_REVIEW` | 0 | PASS |
|
|
101
|
+
| Same installed/target | `COMPLETED` | `KEEP_CURRENT`; no action context or plan | 0 | PASS |
|
|
102
|
+
| Exact duplicate ambiguity | Selection failure | Two unique retry selectors; zero provider calls | 1 | PASS |
|
|
103
|
+
| Duplicate retry A | Stage success | A explicit; B registry default | 0 | PASS |
|
|
104
|
+
| Duplicate retry B | Stage success | B explicit; A registry default | 0 | PASS |
|
|
105
|
+
| Stale/conflicting occurrence | Selection failure | Fail closed; zero provider calls | 1 | PASS |
|
|
106
|
+
| Scoped npm | Stage success | `npm:@scope/pkg` preserved and selected explicit | 0 | PASS |
|
|
107
|
+
| Polyglot coverage | `INSUFFICIENT_DATA` | Python coverage unavailable; no false unused/not-impacted claim | 0 | PASS |
|
|
108
|
+
| Provider/output partial | `PARTIAL` | Successful occurrence retained; failed occurrence and recovery visible | 2 | PASS |
|
|
109
|
+
| Insufficient default | `INSUFFICIENT_DATA` | Trustworthy abstention; no invented plan | 0 | PASS |
|
|
110
|
+
| Insufficient strict | `INSUFFICIENT_DATA` | Same artifacts/decision, stricter exit only | 2 | PASS |
|
|
111
|
+
| Offline cached | `INSUFFICIENT_DATA` | 45 cache hits, 1 miss; 9 keep, 3 investigate, 0 plan; limitations retained | 0 | PASS |
|
|
112
|
+
| Offline empty cache | `INSUFFICIENT_DATA` | 46 cache misses; 47 not analyzed; zero runtime calls or invented facts | 0 | PASS |
|
|
113
|
+
| Controlled cancellation | `CANCELLED` | No successful completion published | 130 | PASS |
|
|
114
|
+
| Controlled fatal failure | `FAILED` | Failure precedence preserved | 1 | PASS |
|
|
115
|
+
|
|
116
|
+
The cached offline run used 44 controlled version-analysis calls and zero real-provider/network calls. The empty-cache run made zero runtime/network calls. Offline warnings and freshness/cache state are preserved in the generated Knowledge Manifest; the decision-first output remains conservative.
|
|
117
|
+
|
|
118
|
+
The packaged public exit projection exactly returned:
|
|
119
|
+
|
|
120
|
+
| Product outcome | Default | Strict |
|
|
121
|
+
|---|---:|---:|
|
|
122
|
+
| `COMPLETED` | 0 | 0 |
|
|
123
|
+
| `COMPLETED_WITH_REVIEW` | 0 | 2 |
|
|
124
|
+
| `PARTIAL` | 2 | 2 |
|
|
125
|
+
| `INSUFFICIENT_DATA` | 0 | 2 |
|
|
126
|
+
| `FAILED` | 1 | 1 |
|
|
127
|
+
| `CANCELLED` | 130 | 130 |
|
|
128
|
+
|
|
129
|
+
Zero actions and all-keep-current do not fail. Provider/output failures override retained success. Strict mode changes exit projection only and does not mutate business artifacts.
|
|
130
|
+
|
|
131
|
+
## 8. VinGrade Representative Result
|
|
132
|
+
|
|
133
|
+
This was a persisted representative replay, not a fresh 47-context real-provider rerun. It was supplemented by fresh packaged offline cached/empty-cache execution and packaged duplicate-selector round trips.
|
|
134
|
+
|
|
135
|
+
| Fact | Result |
|
|
136
|
+
|---|---|
|
|
137
|
+
| Occurrences reconciled | 47 |
|
|
138
|
+
| Exact installed baselines | 19 |
|
|
139
|
+
| Same installed/target | 9, all `KEEP_CURRENT` |
|
|
140
|
+
| Registry-default plans | 0 |
|
|
141
|
+
| Decisions | 9 keep; 8 investigate; 19 insufficient; 11 not analyzed |
|
|
142
|
+
| Retained provider failures | 8 |
|
|
143
|
+
| Product completion | `PARTIAL` |
|
|
144
|
+
| Exit | 2 |
|
|
145
|
+
| Python coverage | Unavailable/fail-closed, not unused or safe |
|
|
146
|
+
| `pypi:langchain-openai` duplicate | Two unique selectors; retry A/B each selected one occurrence |
|
|
147
|
+
| Real-provider calls in this smoke | 0 |
|
|
148
|
+
|
|
149
|
+
Zero migration actions are explained by keep-current, absent caller intent, insufficient evidence, unsupported coverage, and retained failures. They are not presented as proof that no work is required.
|
|
150
|
+
|
|
151
|
+
## 9. Qualification and Experimental Boundary
|
|
152
|
+
|
|
153
|
+
The machine-readable record is present, schema-valid, digest-valid, and resolved by the clean-installed package:
|
|
154
|
+
|
|
155
|
+
- verdict: `QUALIFIED`;
|
|
156
|
+
- qualification ID: `sha256:4fa4954d6f254d94859bce17aec6209394d380e4635155a6f3ce23a7e9b70765`;
|
|
157
|
+
- record digest: `sha256:e55b2d6f2f82091f5ce321e3e6b3a36cab8a34ea7608464ccd08b8ef49813847`;
|
|
158
|
+
- task/dataset: `migration-planning.v2` / `migration-planning-golden@2.0.0`;
|
|
159
|
+
- dataset digest: `sha256:c15089381612671c62c3b565d93ad4f5dff1705317ee9622d9ee12a68028d407`;
|
|
160
|
+
- criteria: `migration-action-evaluation@1.0.0`, digest `sha256:3e2d7c3e32794d2acb59fb834609806e7700cc6888780ffd3d26d1f106078ccc`;
|
|
161
|
+
- comparator/normalization/policy: `2.0.0` / `1.0.0` / `3.0.0`;
|
|
162
|
+
- policy digest: `sha256:b463a30d8044aed5aa8565fc08824b9f430145527da35142e452c3dad544c747`;
|
|
163
|
+
- prompt: version `2`, digest `sha256:68c227c7951cd9ad6e60283fc9d54416f7c7e76ebaaa85ce17acfe30252cfdd2`;
|
|
164
|
+
- candidate schema digest: `sha256:6ac9e1477e206ab082ac38cdb263254c996ee4684e04c80af6b9a08ceae0375d`;
|
|
165
|
+
- runtime: `real / openai-compatible / openai/gpt-5.5 / openai-compatible`.
|
|
166
|
+
|
|
167
|
+
All 15 critical gates pass. The previous real-provider explicit positive used this exact qualified identity, made two bounded requests, retained no request bodies, and observed zero hidden retries. This smoke reused the persisted record and deterministic fixtures rather than calling the provider again.
|
|
168
|
+
|
|
169
|
+
The clean-installed resolver returned `MIGRATION_QUALIFICATION_MATCHED` for current code. Therefore the selector/occurrence change did not alter the prompt, candidate, policy, dataset, criteria, or runtime identity and did not require requalification.
|
|
170
|
+
|
|
171
|
+
Migration Checklist v2 remains disabled by default, experimental, opt-in, and human-review required. Qualification does not certify semantic applicability or upgrade safety.
|
|
172
|
+
|
|
173
|
+
## 10. Coding Agent Handoff Smoke
|
|
174
|
+
|
|
175
|
+
The agent received only an isolated source snapshot (`package.json`, `src/main.js`) and the packaged explicit-target positive Migration Checklist v2. It received no raw upstream artifacts, prior reports, network, web, MCP, or write authority.
|
|
176
|
+
|
|
177
|
+
Result: PASS for bounded planning.
|
|
178
|
+
|
|
179
|
+
- External re-research: not needed and not performed.
|
|
180
|
+
- Installed/target/driver: `react 1.0.0 → 2.0.0`, explicit `USER_SELECTED_TARGET`.
|
|
181
|
+
- Evidence action: replace `oldApi` with `newApi` before the dependency update.
|
|
182
|
+
- Source inspection: performed first; one named import and one zero-argument invocation matched the handoff.
|
|
183
|
+
- Affected area: `src/main.js`.
|
|
184
|
+
- Verification commands: `npm run build`, `npm run test`; both marked available and not executed.
|
|
185
|
+
- Human boundary: approval and semantic review required before changes.
|
|
186
|
+
- Recovery: `RECOVERY_PLAN_NOT_PROVIDED`.
|
|
187
|
+
- Source modifications or out-of-handoff actions: none.
|
|
188
|
+
|
|
189
|
+
The handoff is sufficient to prepare a patch plan, not sufficient to authorize execution.
|
|
190
|
+
|
|
191
|
+
## 11. Documentation/Positioning Audit
|
|
192
|
+
|
|
193
|
+
README, packaged help, current architecture docs, and rendered product output consistently support the approved positioning:
|
|
194
|
+
|
|
195
|
+
> A CLI-first dependency upgrade intelligence release that resolves installed versions, evaluates repository-aware risk, produces deterministic upgrade decisions, and creates evidence-bounded, human-reviewed migration handoffs for explicitly selected targets.
|
|
196
|
+
|
|
197
|
+
Confirmed:
|
|
198
|
+
|
|
199
|
+
- `analyze` is the primary workflow.
|
|
200
|
+
- `--target` grammar, scoped npm example, and occurrence discriminator are correct.
|
|
201
|
+
- Ambiguity guidance is copy/paste safe.
|
|
202
|
+
- Registry latest is explicitly a fact, not a recommendation.
|
|
203
|
+
- Checklist v2 is experimental, opt-in, and human-review required.
|
|
204
|
+
- Verification commands are described as available, not executed.
|
|
205
|
+
- Python/unsupported analyzer coverage remains bounded and fail-closed.
|
|
206
|
+
- Documentation disclaims autonomous migration, source/lockfile edits, rollback generation, and upgrade-safety proof.
|
|
207
|
+
|
|
208
|
+
No full release notes were authored. A future release-note outline should lead with installed baseline resolution, coverage-aware impact, deterministic decisions, exact occurrence selection, decision-first completion/exits, and the experimental human-reviewed handoff boundary.
|
|
209
|
+
|
|
210
|
+
## 12. Remaining Defects and Limitations
|
|
211
|
+
|
|
212
|
+
| Severity | Finding | Release effect |
|
|
213
|
+
|---|---|---|
|
|
214
|
+
| Medium | Seven packaged historical validation Markdown files contain local absolute-path strings; blanket `docs` publication also includes internal review material | Scrub or intentionally exclude before/with release hygiene work; no credential or runtime/safety impact |
|
|
215
|
+
| Medium, existing | Product completion uses a deterministic `>50%` unanswered threshold without direct 49/50/51 boundary tests or clear user-facing rationale | Fail-safe and deterministic; does not block this positioning |
|
|
216
|
+
| Medium, existing | Standalone Checklist v2 does not embed qualification/runtime identity | Resolver and separate record provide auditability; keep experimental |
|
|
217
|
+
| Known limitation | Checklist v2 remains experimental, opt-in, and human-reviewed | Required release boundary |
|
|
218
|
+
| Known limitation | Recovery plan is not provided | Human must establish recovery before execution |
|
|
219
|
+
| Known limitation | Verification commands are available but were not executed | Do not claim verification success |
|
|
220
|
+
| Known limitation | Python source-impact analyzer/resolver coverage is incomplete | Coverage remains unavailable; no safe/unused inference |
|
|
221
|
+
| Known limitation | Unsupported ecosystems fail closed | No fabricated impact or action |
|
|
222
|
+
| Low | Offline cache-miss detail is strongest in machine artifacts; the summary gives conservative unknown/not-analyzed outcomes and a generic recovery step | Consider surfacing cache provenance more directly in future CLI UX |
|
|
223
|
+
|
|
224
|
+
There are no open Blocker or High findings from this smoke.
|
|
225
|
+
|
|
226
|
+
## 13. Version Consistency
|
|
227
|
+
|
|
228
|
+
| Surface | Version |
|
|
229
|
+
|---|---|
|
|
230
|
+
| `package.json` | `0.4.0` |
|
|
231
|
+
| Packaged CLI `--version` | `0.4.0` |
|
|
232
|
+
| Tarball | `upgradelens-0.4.0.tgz` |
|
|
233
|
+
| Public `VERSION` export | `0.4.0` |
|
|
234
|
+
| Upgrade Decision policy | `deterministic-upgrade-decision@1.1.0` |
|
|
235
|
+
| Migration Checklist schema | `2.0.0` |
|
|
236
|
+
| Product Completion schema | `1.0.0` |
|
|
237
|
+
| Qualification record schema | `1.0.0` |
|
|
238
|
+
|
|
239
|
+
The code/product is ready for the separate v0.5.0 bump. The current package is intentionally still 0.4.0; this task did not publish a release.
|
|
240
|
+
|
|
241
|
+
## 14. Next Release Steps
|
|
242
|
+
|
|
243
|
+
Proposed only; not executed:
|
|
244
|
+
|
|
245
|
+
```text
|
|
246
|
+
version bump to 0.5.0
|
|
247
|
+
→ commit/merge according to branch policy
|
|
248
|
+
→ rerun minimal smoke and repack on the release commit
|
|
249
|
+
→ merge to main
|
|
250
|
+
→ tag v0.5.0
|
|
251
|
+
→ create the GitHub Release
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
The minimal release-commit smoke should recheck version consistency, tarball contents including this addendum, capture exclusion, the seven local-path documentation findings, packaged help/version/import, explicit positive, duplicate A/B round trip, qualification resolution, and exit projection.
|
|
255
|
+
|
|
256
|
+
## 15. Files Created by Smoke
|
|
257
|
+
|
|
258
|
+
Workspace files created:
|
|
259
|
+
|
|
260
|
+
- `docs/reviews/v0.5.0-pre-release-smoke.md`
|
|
261
|
+
- `.upgradelens/review/v0.5.0-release-smoke/**` — 33 ignored capture directories plus consolidated and selector manifests
|
|
262
|
+
|
|
263
|
+
The capture tree is ignored and excluded from both tested tarballs. No production source, schema, test, fixture, package version, target repository, or pre-existing worktree change was modified by this smoke. No commit, merge, tag, push, release, or migration action was performed.
|
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
# UpgradeLens v0.5.0 Version Bump and Release Verification
|
|
2
|
+
|
|
3
|
+
## 1. Executive verdict
|
|
4
|
+
|
|
5
|
+
**Verdict: `V0_5_0_VERSION_BUMP_VERIFICATION_PASS_WITH_LIMITATIONS`**
|
|
6
|
+
|
|
7
|
+
**Gate: `READY_FOR_COMMIT_MERGE_TAG_AND_RELEASE`**
|
|
8
|
+
|
|
9
|
+
Package hygiene, the `0.4.0` to `0.5.0` metadata bump, source verification,
|
|
10
|
+
packaged-runtime verification, and clean installation all passed. There are no open
|
|
11
|
+
Blocker or High defects. The qualified Migration Checklist identity remains exact,
|
|
12
|
+
while the feature remains experimental, opt-in, and human-reviewed.
|
|
13
|
+
|
|
14
|
+
The limitations are the one known sandbox-loopback test skip and two previously
|
|
15
|
+
documented Medium product-boundary follow-ups that were outside this task. Neither
|
|
16
|
+
changes the release gate for the approved CLI-first positioning.
|
|
17
|
+
|
|
18
|
+
## 2. Scope and safety statement
|
|
19
|
+
|
|
20
|
+
This task made only portability edits to packaged historical documents, bumped npm
|
|
21
|
+
package metadata, and performed deterministic release verification. It did not change
|
|
22
|
+
feature behavior, decision policy, schemas, qualification identity, provider evidence,
|
|
23
|
+
or target repositories. It did not call a real provider or write ignored review
|
|
24
|
+
captures. It did not commit, merge, tag, push, create a release, or publish.
|
|
25
|
+
|
|
26
|
+
The existing worktree was inspected before editing. Unrelated modified and untracked
|
|
27
|
+
files were preserved. No destructive Git operation was used.
|
|
28
|
+
|
|
29
|
+
## 3. Pre-existing working-tree state
|
|
30
|
+
|
|
31
|
+
Baseline:
|
|
32
|
+
|
|
33
|
+
| Item | Value |
|
|
34
|
+
|---|---|
|
|
35
|
+
| Branch | `feat/mvp-05-evidence-migration-checklist` |
|
|
36
|
+
| Commit | `0f28eefba524` |
|
|
37
|
+
| Node | `v26.0.0` |
|
|
38
|
+
| npm | `11.12.1` |
|
|
39
|
+
| Package before task | `upgradelens@0.4.0` |
|
|
40
|
+
|
|
41
|
+
Pre-existing changes were a modified
|
|
42
|
+
`docs/rr02-rerun-cli-captures/manifest.json`, untracked
|
|
43
|
+
`docs/rr02-fix-05-cli-captures/`, untracked RR02 rerun capture directories
|
|
44
|
+
`008` through `018`, and the untracked
|
|
45
|
+
`docs/reviews/v0.5.0-pre-release-smoke.md`. Ignored release-smoke captures and the
|
|
46
|
+
persisted qualification record also already existed. This task did not edit those
|
|
47
|
+
pre-existing capture or qualification materials.
|
|
48
|
+
|
|
49
|
+
The accepted pre-task suite baseline was 615 pass, 0 fail, and one known
|
|
50
|
+
sandbox-loopback skip; MP focused 80/80; TS-FIX 99/99; invariants 177/177.
|
|
51
|
+
|
|
52
|
+
## 4. Seven reported documents and broader packaged path findings
|
|
53
|
+
|
|
54
|
+
The pre-release report identified seven files by a narrow scan for a macOS user-home
|
|
55
|
+
prefix and the platform-specific private temporary prefix:
|
|
56
|
+
|
|
57
|
+
| Reported file | Portability handling |
|
|
58
|
+
|---|---|
|
|
59
|
+
| `docs/IA-05-Real-Provider-Validation.md` | Replaced local checkout and transient artifact locations with repository or temporary-artifact placeholders. |
|
|
60
|
+
| `docs/IA-05-VinGrade-Validation.md` | Replaced local repository locations with portable checkout placeholders. |
|
|
61
|
+
| `docs/RR-01-End-to-End-and-Real-Provider-Validation.md` | Replaced local checkout, install, and acceptance locations with portable placeholders. |
|
|
62
|
+
| `docs/RR-01-RERUN-Extractive-Contract-Validation.md` | Replaced local checkout and temporary acceptance locations with portable descriptions. |
|
|
63
|
+
| `docs/RR02-FIX-05-Materialize-Persisted-Qualification.md` | Replaced a transient source location with a retained-evidence description. |
|
|
64
|
+
| `docs/ai-engineering-production-readiness.md` | Replaced local repository and temporary clone paths with portable placeholders. |
|
|
65
|
+
| `docs/live-ai-validation.md` | Replaced local repository, dataset, and transient output paths with repository-relative or temporary placeholders. |
|
|
66
|
+
|
|
67
|
+
A reproducible scan of extracted tarball bytes used the full required pattern family,
|
|
68
|
+
including Linux home and general temporary prefixes. That broader scan found three
|
|
69
|
+
additional packaged documents missed by the earlier seven-file scan:
|
|
70
|
+
|
|
71
|
+
| Additional file | Portability handling |
|
|
72
|
+
|---|---|
|
|
73
|
+
| `docs/VinGrade-MVP-02-Validation.md` | Replaced general temporary checkout/output paths with portable placeholders. |
|
|
74
|
+
| `docs/VinGrade-RC02-Live-Validation.md` | Replaced general temporary checkout/output paths with portable placeholders. |
|
|
75
|
+
| `docs/ai-engineering-review.md` | Replaced general temporary clone paths with portable placeholders. |
|
|
76
|
+
|
|
77
|
+
All ten files were corrected because they are the same packaging-hygiene class.
|
|
78
|
+
Review of their diffs confirmed that historical verdicts, test counts, and provenance
|
|
79
|
+
logic were unchanged; edits were limited to path portability and adjacent grammar.
|
|
80
|
+
|
|
81
|
+
## 5. Tarball absolute-path scan before and after
|
|
82
|
+
|
|
83
|
+
Method: create an actual npm tarball, extract it, and scan only extracted package
|
|
84
|
+
bytes for macOS and Linux user-home paths, platform temporary paths, Windows user
|
|
85
|
+
paths, local file URIs, and sandbox absolute paths.
|
|
86
|
+
|
|
87
|
+
| Scan | Files | Packed bytes | Machine-local line matches | Affected documents |
|
|
88
|
+
|---|---:|---:|---:|---:|
|
|
89
|
+
| Before correction, `0.4.0` | 227 | 563,323 | 78 | 10 |
|
|
90
|
+
| After correction, before bump | 227 | 563,244 | 0 | 0 |
|
|
91
|
+
| Bumped runtime-verification tarball, `0.5.0` | 227 | 563,244 | 0 | 0 |
|
|
92
|
+
| Final post-report tarball, `0.5.0` | 228 | Final pack manifest recorded separately | 0 | 0 |
|
|
93
|
+
|
|
94
|
+
Three literal local-file URI scheme strings remain in two historical documents:
|
|
95
|
+
`docs/VinGrade-MVP-02-Validation.md` and
|
|
96
|
+
`docs/VinGrade-RC02-Live-Validation.md`. Each is a generic protocol label in a
|
|
97
|
+
validation sentence or zero-count table, not a URI or machine path. No Markdown link
|
|
98
|
+
points to a local absolute path.
|
|
99
|
+
|
|
100
|
+
## 6. Version source of truth and files bumped
|
|
101
|
+
|
|
102
|
+
The authoritative release version is `package.json`. The CLI reads package metadata;
|
|
103
|
+
it has no independent hardcoded release version. The npm lock root metadata mirrors
|
|
104
|
+
the package version.
|
|
105
|
+
|
|
106
|
+
The standard command `npm version 0.5.0 --no-git-tag-version --ignore-scripts`
|
|
107
|
+
changed exactly:
|
|
108
|
+
|
|
109
|
+
- `package.json`: `0.4.0` to `0.5.0`.
|
|
110
|
+
- `package-lock.json` top-level version: `0.4.0` to `0.5.0`.
|
|
111
|
+
- `package-lock.json` root package version: `0.4.0` to `0.5.0`.
|
|
112
|
+
|
|
113
|
+
No Git tag was created.
|
|
114
|
+
|
|
115
|
+
## 7. Version consistency classification
|
|
116
|
+
|
|
117
|
+
| Classification | Result |
|
|
118
|
+
|---|---|
|
|
119
|
+
| Authoritative current version | `package.json` and both lockfile root locations are `0.5.0`. |
|
|
120
|
+
| Source CLI | `upgradelens --version` reports `0.5.0`. |
|
|
121
|
+
| Tarball metadata and filename | `upgradelens@0.5.0` and `upgradelens-0.5.0.tgz`. |
|
|
122
|
+
| Clean-installed CLI | Reports `0.5.0`. |
|
|
123
|
+
| Remaining `0.4.0` references | Historical captures and validation reports describing artifacts that actually ran as `0.4.0`; retained unchanged. |
|
|
124
|
+
| Stale current-version documentation | None found in README or current installation/usage guidance. |
|
|
125
|
+
| Independent version domains | Upgrade Decision policy, schemas, datasets, prompt, candidate digest, and qualification identity remain unchanged. |
|
|
126
|
+
|
|
127
|
+
In particular, the package bump did not alter Upgrade Decision policy `1.1.0`,
|
|
128
|
+
Migration Checklist schema/dataset `2.0.0`, qualification-record schema `1.0.0`,
|
|
129
|
+
product-completion schema `1.0.0`, prompt version `2`, or candidate schema digest
|
|
130
|
+
`sha256:6ac9e1477e206ab082ac38cdb263254c996ee4684e04c80af6b9a08ceae0375d`.
|
|
131
|
+
|
|
132
|
+
## 8. Source-tree test results
|
|
133
|
+
|
|
134
|
+
| Check | Result |
|
|
135
|
+
|---|---|
|
|
136
|
+
| Canonical `npm test` | 616 total: 615 pass, 0 fail, 1 skip |
|
|
137
|
+
| MP focused suite | 80/80 pass |
|
|
138
|
+
| TS-FIX exact-selector suite | 99/99 pass |
|
|
139
|
+
| Schema/lineage/tamper/identity/determinism invariants | 177/177 pass |
|
|
140
|
+
| `git diff --check` | Pass |
|
|
141
|
+
| Source CLI `--help` | Exit 0 |
|
|
142
|
+
| Source CLI `--version` | `0.5.0` |
|
|
143
|
+
| Source package import | Pass |
|
|
144
|
+
|
|
145
|
+
The canonical count is unchanged from the accepted baseline. The sole skip is the
|
|
146
|
+
explicit online CLI keep-alive local-loopback case; the sandbox does not expose the
|
|
147
|
+
required loopback capability. It was reported as skipped, not passed.
|
|
148
|
+
|
|
149
|
+
## 9. Package guard and tarball audit
|
|
150
|
+
|
|
151
|
+
`npm run check:package` passed at `upgradelens@0.5.0`: 228 files, zero capture
|
|
152
|
+
evidence, and all 20 required assets present. The dry-run manifest and actual
|
|
153
|
+
final tarball agreed on package identity and entry count. The final tarball adds only
|
|
154
|
+
this report to the already verified 227-file runtime candidate.
|
|
155
|
+
|
|
156
|
+
The extracted tarball contains runtime sources, schemas, public docs, evaluation
|
|
157
|
+
datasets, license, README, package metadata, and the CLI binary. It contains no
|
|
158
|
+
capture directory, ignored review runtime output, environment file, Git metadata,
|
|
159
|
+
dependency tree, credential, persisted qualification record, qualification input, or
|
|
160
|
+
machine-local artifact.
|
|
161
|
+
|
|
162
|
+
## 10. Clean install, CLI, import, and export results
|
|
163
|
+
|
|
164
|
+
The `0.5.0` tarball was installed into a new temporary npm prefix with lifecycle
|
|
165
|
+
scripts disabled and an isolated npm cache. The installed package is a physical
|
|
166
|
+
directory, not a link to the source checkout.
|
|
167
|
+
|
|
168
|
+
| Check | Result |
|
|
169
|
+
|---|---|
|
|
170
|
+
| `upgradelens --version` | `0.5.0` |
|
|
171
|
+
| `upgradelens --help` | Exit 0 |
|
|
172
|
+
| ESM package import | Pass |
|
|
173
|
+
| Public exports | 438 |
|
|
174
|
+
| Installed package metadata | `0.5.0` |
|
|
175
|
+
|
|
176
|
+
## 11. Packaged workflows and exit matrix
|
|
177
|
+
|
|
178
|
+
Deterministic packaged-boundary scenarios used immutable outputs or controlled fake
|
|
179
|
+
runtimes and made zero real-provider calls.
|
|
180
|
+
|
|
181
|
+
| Contract | Result |
|
|
182
|
+
|---|---|
|
|
183
|
+
| Registry-default target | `INVESTIGATE`; `UPGRADE_AVAILABLE_NO_RECOMMENDATION_DRIVER`; zero plan |
|
|
184
|
+
| Explicit target | `PLAN_UPGRADE`; `USER_SELECTED_TARGET`; exact occurrence retained |
|
|
185
|
+
| Installed equals target | `KEEP_CURRENT`; `COMPLETED`; exit 0 |
|
|
186
|
+
| Offline cached semantics | `COMPLETED_WITH_REVIEW`; limitation/review semantics retained |
|
|
187
|
+
| Offline empty semantics | `INSUFFICIENT_DATA`; no invented target |
|
|
188
|
+
| Retained provider/output failure | `PARTIAL`; exit 2 |
|
|
189
|
+
| Strict review outcome | `COMPLETED_WITH_REVIEW`; exit 2 |
|
|
190
|
+
| Strict insufficient outcome | `INSUFFICIENT_DATA`; exit 2 |
|
|
191
|
+
| Cancellation | `CANCELLED`; exit 130 |
|
|
192
|
+
| Fatal pipeline failure | `FAILED`; exit 1 |
|
|
193
|
+
| Checklist positive path | Runs only with the experimental flag and reports human review |
|
|
194
|
+
|
|
195
|
+
The installed export projected the complete exit matrix:
|
|
196
|
+
|
|
197
|
+
| Completion | Default exit | `--fail-on-incomplete` |
|
|
198
|
+
|---|---:|---:|
|
|
199
|
+
| `COMPLETED` | 0 | 0 |
|
|
200
|
+
| `COMPLETED_WITH_REVIEW` | 0 | 2 |
|
|
201
|
+
| `INSUFFICIENT_DATA` | 0 | 2 |
|
|
202
|
+
| `PARTIAL` | 2 | 2 |
|
|
203
|
+
| `FAILED` | 1 | 1 |
|
|
204
|
+
| `CANCELLED` | 130 | 130 |
|
|
205
|
+
|
|
206
|
+
Zero migration actions and all-`KEEP_CURRENT` outcomes remain successful completion,
|
|
207
|
+
not failures.
|
|
208
|
+
|
|
209
|
+
## 12. Duplicate occurrence selector results
|
|
210
|
+
|
|
211
|
+
The clean-installed CLI reproduced an ambiguous same-manifest dependency with two
|
|
212
|
+
stable, distinct `occurrence=sha256:...` selectors. Retrying candidate A applied the
|
|
213
|
+
explicit target only to declared version `==1.0.0`; candidate B applied it only to
|
|
214
|
+
declared version `==1.5.0`. In each replay the other occurrence retained
|
|
215
|
+
`registryLatest`, proving exact one-occurrence selection.
|
|
216
|
+
|
|
217
|
+
A stale occurrence failed with `TARGET_SELECTOR_NOT_FOUND`, and a selector whose
|
|
218
|
+
occurrence conflicted with its package fields failed with `TARGET_SELECTOR_CONFLICT`.
|
|
219
|
+
Both diagnostics explicitly confirmed that no provider call was made. The scoped npm
|
|
220
|
+
grammar remains documented and covered by the 99-test exact-selector suite.
|
|
221
|
+
|
|
222
|
+
## 13. Qualification and experimental boundary
|
|
223
|
+
|
|
224
|
+
The clean-installed resolver loaded
|
|
225
|
+
`.upgradelens/migration-planning-qualification.json` from the repository root and
|
|
226
|
+
returned:
|
|
227
|
+
|
|
228
|
+
| Field | Result |
|
|
229
|
+
|---|---|
|
|
230
|
+
| Status | `QUALIFIED` |
|
|
231
|
+
| Reason | `MIGRATION_QUALIFICATION_MATCHED` |
|
|
232
|
+
| Runtime | `openai-compatible / openai/gpt-5.5 / openai-compatible` |
|
|
233
|
+
| Qualification ID | `sha256:4fa4954d6f254d94859bce17aec6209394d380e4635155a6f3ce23a7e9b70765` |
|
|
234
|
+
| Source | machine-readable default-path record |
|
|
235
|
+
| Experimental override used | No |
|
|
236
|
+
|
|
237
|
+
The record and its digest were not modified by the package bump. Resolution did not
|
|
238
|
+
infer qualification from Markdown. Migration Checklist v2 remains qualified only for
|
|
239
|
+
the exact retained identity, experimental and opt-in for enablement, and
|
|
240
|
+
human-reviewed for execution. It is neither a default autonomous migration nor
|
|
241
|
+
authorization for a Coding Agent to change source.
|
|
242
|
+
|
|
243
|
+
## 14. Blocked and skipped checks
|
|
244
|
+
|
|
245
|
+
No release-critical check was blocked. One canonical test was skipped because local
|
|
246
|
+
loopback is unavailable in the execution sandbox; the same known skip existed in the
|
|
247
|
+
accepted baseline. Real-provider replay was intentionally not run because the
|
|
248
|
+
persisted machine-readable record, exact identity resolver, deterministic fixtures,
|
|
249
|
+
and package-boundary checks were sufficient. No real-provider credit was consumed.
|
|
250
|
+
|
|
251
|
+
The default npm cache was not usable due to local ownership state, so pack and install
|
|
252
|
+
used isolated temporary caches as permitted by the task. This did not weaken the
|
|
253
|
+
physical clean-install boundary.
|
|
254
|
+
|
|
255
|
+
## 15. Defects by severity
|
|
256
|
+
|
|
257
|
+
| Severity | Open findings | Release effect |
|
|
258
|
+
|---|---:|---|
|
|
259
|
+
| Blocker | 0 | None |
|
|
260
|
+
| High | 0 | None |
|
|
261
|
+
| Medium, task hygiene | 0 | The packaged local-path finding is closed. |
|
|
262
|
+
| Medium, existing | 2 | Deterministic completion threshold lacks direct boundary tests/rationale; standalone Checklist v2 does not embed qualification identity. Both remain fail-safe and outside this task. |
|
|
263
|
+
| Low | 0 new | None |
|
|
264
|
+
| Known limitation | 1 | Sandbox-loopback test skip; no packaged-runtime regression. |
|
|
265
|
+
|
|
266
|
+
## 16. Files changed and created
|
|
267
|
+
|
|
268
|
+
Task-owned changes:
|
|
269
|
+
|
|
270
|
+
- Portability edits:
|
|
271
|
+
`docs/IA-05-Real-Provider-Validation.md`,
|
|
272
|
+
`docs/IA-05-VinGrade-Validation.md`,
|
|
273
|
+
`docs/RR-01-End-to-End-and-Real-Provider-Validation.md`,
|
|
274
|
+
`docs/RR-01-RERUN-Extractive-Contract-Validation.md`,
|
|
275
|
+
`docs/RR02-FIX-05-Materialize-Persisted-Qualification.md`,
|
|
276
|
+
`docs/VinGrade-MVP-02-Validation.md`,
|
|
277
|
+
`docs/VinGrade-RC02-Live-Validation.md`,
|
|
278
|
+
`docs/ai-engineering-production-readiness.md`,
|
|
279
|
+
`docs/ai-engineering-review.md`, and
|
|
280
|
+
`docs/live-ai-validation.md`.
|
|
281
|
+
- Version bump: `package.json` and `package-lock.json`.
|
|
282
|
+
- Created:
|
|
283
|
+
`docs/reviews/v0.5.0-version-bump-release-verification.md`.
|
|
284
|
+
|
|
285
|
+
Pre-existing capture, smoke-report, ignored qualification, and ignored review-output
|
|
286
|
+
changes are not task-owned and were preserved.
|
|
287
|
+
|
|
288
|
+
## 17. Current package version
|
|
289
|
+
|
|
290
|
+
The current package version is **`0.5.0`**, bumped from **`0.4.0`**. Source metadata,
|
|
291
|
+
lockfile metadata, source CLI, tarball metadata/filename, and clean-installed CLI are
|
|
292
|
+
consistent.
|
|
293
|
+
|
|
294
|
+
## 18. Final release gate
|
|
295
|
+
|
|
296
|
+
**`READY_FOR_COMMIT_MERGE_TAG_AND_RELEASE`**
|
|
297
|
+
|
|
298
|
+
The gate is ready because packaged local-path findings are closed or proven generic,
|
|
299
|
+
all package version surfaces report `0.5.0`, canonical and focused suites have zero
|
|
300
|
+
failures, package guard and clean installation pass, the 438-export public surface is
|
|
301
|
+
unchanged, duplicate occurrence and decision-first contracts do not regress, no
|
|
302
|
+
Blocker/High defect is open, and qualification remains exact-identity fail-closed
|
|
303
|
+
with Checklist enablement still experimental and opt-in.
|
|
304
|
+
|
|
305
|
+
This report authorizes the next release workflow only. This task itself performed no
|
|
306
|
+
commit, merge, tag, push, release creation, or publication.
|