@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.
Files changed (252) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +518 -0
  3. package/bin/depverdict.js +7 -0
  4. package/bin/upgradelens.js +7 -0
  5. package/docs/GR-01-Semantic-Grounding-Failure-Analysis.md +309 -0
  6. package/docs/GR-02-Versioned-Action-Evaluation-Criteria.md +187 -0
  7. package/docs/GR-03-Extractive-Contract-Safety-Experiment.md +242 -0
  8. package/docs/GR-04-Versioned-Production-Extractive-Contract.md +154 -0
  9. package/docs/IA-01-Repository-Usage-Discovery.md +122 -0
  10. package/docs/IA-02-Repository-Impact-Analysis.md +118 -0
  11. package/docs/IA-03-Repository-Impact-Evidence.md +160 -0
  12. package/docs/IA-04-CLI-Orchestration.md +235 -0
  13. package/docs/IA-05-Real-Provider-Validation.md +235 -0
  14. package/docs/IA-05-VinGrade-Validation.md +339 -0
  15. package/docs/MVP-01.md +48 -0
  16. package/docs/MVP-02-Architecture.md +536 -0
  17. package/docs/MVP-02-CLI-HTTP-Runtime.md +50 -0
  18. package/docs/MVP-02-HTTP-Lifecycle.md +37 -0
  19. package/docs/MVP-02-Knowledge-Manifest-Generation.md +75 -0
  20. package/docs/MVP-02-Knowledge-Manifest.md +279 -0
  21. package/docs/MVP-02-Knowledge-Research-Orchestration.md +62 -0
  22. package/docs/MVP-02-Knowledge-Store.md +87 -0
  23. package/docs/MVP-02-PyPI-Registry-Adapter.md +97 -0
  24. package/docs/MVP-02-Research-Planning.md +196 -0
  25. package/docs/MVP-02-Source-Provenance.md +81 -0
  26. package/docs/MVP-02-npm-Registry-Adapter.md +99 -0
  27. package/docs/RR-01-End-to-End-and-Real-Provider-Validation.md +393 -0
  28. package/docs/RR-01-RERUN-Extractive-Contract-Validation.md +566 -0
  29. package/docs/RR-02-Full-Product-Workflow-and-Developer-CLI-UX-Review.md +35 -0
  30. package/docs/RR02-FIX-01-Persistent-Qualification-Resolution.md +32 -0
  31. package/docs/RR02-FIX-02-Stage-aware-CLI-Progress-and-Heartbeat.md +28 -0
  32. package/docs/RR02-FIX-03-npm-Capture-Evidence-Exclusion.md +33 -0
  33. package/docs/RR02-FIX-03A-Complete-Package-Exclusion-and-Evidence-Commit.md +223 -0
  34. package/docs/RR02-FIX-04-Event-loop-safe-Heartbeat.md +393 -0
  35. package/docs/RR02-FIX-05-Materialize-Persisted-Qualification.md +207 -0
  36. package/docs/RR02-RERUN-CLI-Qualification-Progress-UX-and-Package-Validation.md +342 -0
  37. package/docs/VinGrade-MVP-02-Validation.md +480 -0
  38. package/docs/VinGrade-RC02-Live-Validation.md +273 -0
  39. package/docs/ai-capability-discovery.md +573 -0
  40. package/docs/ai-engineering-production-readiness.md +390 -0
  41. package/docs/ai-engineering-review.md +251 -0
  42. package/docs/ai-runtime-governance-discovery.md +754 -0
  43. package/docs/architecture-overview.md +78 -0
  44. package/docs/cli-progress.md +111 -0
  45. package/docs/decisions/diff-01-brand-distribution-identity.md +450 -0
  46. package/docs/decisions/diff-02-identity-compatibility-contract.md +274 -0
  47. package/docs/decisions/diff-03-repository-docs-community-migration.md +165 -0
  48. package/docs/decisions/diff-04-release-evidence-gap-acceptance.md +110 -0
  49. package/docs/discovery/mvp-05-ai-migration-planning-discovery.md +350 -0
  50. package/docs/gateway-runtime-discovery.md +614 -0
  51. package/docs/live-ai-validation.md +299 -0
  52. package/docs/migration-planning-qualification-resolution.md +99 -0
  53. package/docs/migrations/upgradelens-to-depverdict.md +97 -0
  54. package/docs/mp-r03-deterministic-upgrade-decision-architecture.md +135 -0
  55. package/docs/mp-r04-evidence-bounded-migration-handoff-architecture.md +116 -0
  56. package/docs/mp-r05-product-completion-and-decision-first-cli-architecture.md +162 -0
  57. package/docs/mvp-05-deterministic-context-runtime.md +127 -0
  58. package/docs/mvp-05-migration-checklist-contract.md +166 -0
  59. package/docs/mvp-05-migration-checklist-orchestration.md +105 -0
  60. package/docs/mvp-05-migration-evaluation-and-qualification.md +135 -0
  61. package/docs/mvp-05-provider-neutral-generator.md +79 -0
  62. package/docs/ollama-local-smoke-validation.md +156 -0
  63. package/docs/openai-compatible-runtime-discovery.md +789 -0
  64. package/docs/openrouter-one-dependency-validation.md +205 -0
  65. package/docs/oss-02-package-guard-hardening-architecture.md +131 -0
  66. package/docs/oss-04-public-ci-package-metadata-architecture.md +142 -0
  67. package/docs/package-content-policy.md +98 -0
  68. package/docs/releases/v0.5.0-technical-preview.md +114 -0
  69. package/docs/releases/v0.6.0-alpha.1-depverdict-preview.md +101 -0
  70. package/docs/reviews/diff-02-identity-contract-compatibility.md +413 -0
  71. package/docs/reviews/diff-03-repository-docs-community-migration.md +364 -0
  72. package/docs/reviews/diff-04-depverdict-distribution-identity-readiness-rereview.md +453 -0
  73. package/docs/reviews/diff-04-fix-post-rename-identity-release-remediation.md +310 -0
  74. package/docs/reviews/diff-05-final-preview-distribution-qualification.md +561 -0
  75. package/docs/reviews/mvp-05-final-product-value-workflow-rereview.md +471 -0
  76. package/docs/reviews/mvp-05-product-workflow-review.md +605 -0
  77. package/docs/reviews/oss-01-duplicate-artifact-investigation-cleanup.md +411 -0
  78. package/docs/reviews/oss-02-package-guard-hardening.md +303 -0
  79. package/docs/reviews/oss-03-community-scaffolding.md +378 -0
  80. package/docs/reviews/oss-04-public-ci-package-metadata.md +439 -0
  81. package/docs/reviews/oss-05-technical-preview-qualification.md +482 -0
  82. package/docs/reviews/upgradelens-vs-upgradedepdetective-source-comparison.md +355 -0
  83. package/docs/reviews/v0.5.0-pre-release-smoke.md +263 -0
  84. package/docs/reviews/v0.5.0-version-bump-release-verification.md +306 -0
  85. package/docs/runtime-contract-discovery.md +521 -0
  86. package/docs/structured-output-compatibility-report.md +100 -0
  87. package/docs/ts-fix-01-exact-duplicate-occurrence-target-selection-architecture.md +111 -0
  88. package/docs/version-analysis-architecture.md +827 -0
  89. package/eval/README.md +86 -0
  90. package/eval/datasets/generic/declared-constraint.json +59 -0
  91. package/eval/datasets/generic/evidence-conflict.json +73 -0
  92. package/eval/datasets/generic/major-breaking-release.json +66 -0
  93. package/eval/datasets/generic/missing-evidence.json +46 -0
  94. package/eval/datasets/generic/patch-release-low.json +59 -0
  95. package/eval/datasets/node/axios-patch-low.json +59 -0
  96. package/eval/datasets/node/react-major-breaking.json +66 -0
  97. package/eval/datasets/node/react-minor-compatibility.json +66 -0
  98. package/eval/datasets/python/fastapi-deprecation.json +66 -0
  99. package/eval/datasets/python/pydantic-major-breaking.json +66 -0
  100. package/eval/migration-planning/golden-dataset-v2.json +306 -0
  101. package/eval/migration-planning/golden-dataset.json +214 -0
  102. package/eval/schemas/expected-result.schema.json +88 -0
  103. package/eval/schemas/golden-case.schema.json +181 -0
  104. package/package.json +57 -0
  105. package/schemas/ai-scorecard.schema.json +132 -0
  106. package/schemas/benchmark-report.schema.json +189 -0
  107. package/schemas/benchmark.schema.json +55 -0
  108. package/schemas/capability-profile.schema.json +44 -0
  109. package/schemas/conformance-report.schema.json +150 -0
  110. package/schemas/deployment-profile.schema.json +64 -0
  111. package/schemas/evaluation-report.schema.json +158 -0
  112. package/schemas/knowledge-evidence-bundle.schema.json +150 -0
  113. package/schemas/knowledge-manifest.schema.json +548 -0
  114. package/schemas/metrics.schema.json +178 -0
  115. package/schemas/migration-checklist-extractive-candidate.schema.json +42 -0
  116. package/schemas/migration-checklist.schema.json +706 -0
  117. package/schemas/migration-evaluation-dataset-v2.schema.json +208 -0
  118. package/schemas/migration-evaluation-dataset.schema.json +204 -0
  119. package/schemas/migration-planning-qualification-record.schema.json +234 -0
  120. package/schemas/project-manifest.schema.json +308 -0
  121. package/schemas/qualification-record.schema.json +56 -0
  122. package/schemas/repository-impact-evidence.schema.json +232 -0
  123. package/schemas/repository-impact.schema.json +202 -0
  124. package/schemas/upgrade-decision.schema.json +273 -0
  125. package/schemas/usage-index.schema.json +179 -0
  126. package/schemas/version-analysis.schema.json +449 -0
  127. package/src/ai-runtime-debug.js +325 -0
  128. package/src/ai-runtime-error.js +42 -0
  129. package/src/ai-runtime.js +174 -0
  130. package/src/ai-scorecard.js +204 -0
  131. package/src/ai-version-analysis.js +484 -0
  132. package/src/artifact-root-compatibility.js +91 -0
  133. package/src/benchmark-report.js +111 -0
  134. package/src/benchmark-runner.js +191 -0
  135. package/src/canonical-json.js +69 -0
  136. package/src/cli.js +1299 -0
  137. package/src/conformance-report.js +158 -0
  138. package/src/conformance-runner.js +253 -0
  139. package/src/constants.js +73 -0
  140. package/src/cooperative-scheduler.js +79 -0
  141. package/src/dependencies.js +44 -0
  142. package/src/dependency-ai-context.js +625 -0
  143. package/src/detectors.js +253 -0
  144. package/src/discovery.js +234 -0
  145. package/src/ecosystem-version-adapter.js +294 -0
  146. package/src/environment-compatibility.js +77 -0
  147. package/src/evaluation-comparator.js +158 -0
  148. package/src/evaluation-report.js +76 -0
  149. package/src/evaluation-runner.js +248 -0
  150. package/src/evidence-source-adapter.js +472 -0
  151. package/src/files.js +89 -0
  152. package/src/governance-diagnostics.js +64 -0
  153. package/src/governance-loader.js +63 -0
  154. package/src/governance-metadata.js +346 -0
  155. package/src/governance-validator.js +360 -0
  156. package/src/http/bounded-fetch.js +278 -0
  157. package/src/http/cli-http-runtime.js +44 -0
  158. package/src/impact/input-loader.js +157 -0
  159. package/src/impact/matcher.js +40 -0
  160. package/src/impact/repository-impact.js +199 -0
  161. package/src/impact/runtime.js +24 -0
  162. package/src/impact/status.js +62 -0
  163. package/src/impact/writer.js +30 -0
  164. package/src/impact-evidence/input-loader.js +202 -0
  165. package/src/impact-evidence/repository-impact-evidence.js +234 -0
  166. package/src/impact-evidence/runtime.js +16 -0
  167. package/src/impact-evidence/writer.js +30 -0
  168. package/src/index.js +563 -0
  169. package/src/installed-version-baseline.js +196 -0
  170. package/src/knowledge-cache.js +324 -0
  171. package/src/knowledge-evidence-bundle.js +101 -0
  172. package/src/knowledge-evidence-producer.js +233 -0
  173. package/src/knowledge-manifest-builder.js +188 -0
  174. package/src/knowledge-manifest-writer.js +32 -0
  175. package/src/knowledge-manifest.js +255 -0
  176. package/src/knowledge-research.js +615 -0
  177. package/src/metrics-engine.js +205 -0
  178. package/src/migration-checklist/ai-candidate.js +320 -0
  179. package/src/migration-checklist/assembler.js +37 -0
  180. package/src/migration-checklist/context-runtime.js +828 -0
  181. package/src/migration-checklist/evaluation/action-criteria.js +244 -0
  182. package/src/migration-checklist/evaluation/comparator-v2.js +332 -0
  183. package/src/migration-checklist/evaluation/comparator.js +279 -0
  184. package/src/migration-checklist/evaluation/dataset-v2.js +227 -0
  185. package/src/migration-checklist/evaluation/dataset.js +336 -0
  186. package/src/migration-checklist/evaluation/extractive-fixtures-v2.js +148 -0
  187. package/src/migration-checklist/evaluation/metrics-v2.js +226 -0
  188. package/src/migration-checklist/evaluation/metrics.js +158 -0
  189. package/src/migration-checklist/evaluation/qualification-v2.js +321 -0
  190. package/src/migration-checklist/evaluation/qualification.js +239 -0
  191. package/src/migration-checklist/evaluation/runner-v2.js +294 -0
  192. package/src/migration-checklist/evaluation/runner.js +194 -0
  193. package/src/migration-checklist/evaluation/scorecard-v2.js +106 -0
  194. package/src/migration-checklist/evaluation/scorecard.js +86 -0
  195. package/src/migration-checklist/extractive-candidate.js +166 -0
  196. package/src/migration-checklist/extractive-prompt.js +62 -0
  197. package/src/migration-checklist/generator.js +702 -0
  198. package/src/migration-checklist/grounding-policy.js +117 -0
  199. package/src/migration-checklist/input-loader.js +613 -0
  200. package/src/migration-checklist/migration-checklist.js +635 -0
  201. package/src/migration-checklist/presentation.js +292 -0
  202. package/src/migration-checklist/progress.js +96 -0
  203. package/src/migration-checklist/prompt.js +83 -0
  204. package/src/migration-checklist/qualification-guard.js +462 -0
  205. package/src/migration-checklist/qualification-resolution.js +122 -0
  206. package/src/migration-checklist/qualification-store.js +225 -0
  207. package/src/migration-checklist/runtime.js +205 -0
  208. package/src/migration-checklist/verification.js +134 -0
  209. package/src/migration-checklist/writer.js +35 -0
  210. package/src/openai-compatible-provider.js +451 -0
  211. package/src/orchestration/failure-log.js +32 -0
  212. package/src/orchestration/pipeline.js +200 -0
  213. package/src/orchestration/progress-events.js +337 -0
  214. package/src/orchestration/progress-reporter.js +131 -0
  215. package/src/orchestration/text-writer.js +22 -0
  216. package/src/portable.js +13 -0
  217. package/src/product-completion.js +249 -0
  218. package/src/project-manifest-input.js +90 -0
  219. package/src/project-manifest.js +141 -0
  220. package/src/python-requirements.js +137 -0
  221. package/src/registry/npm-packument.js +256 -0
  222. package/src/registry/npm-registry-adapter.js +262 -0
  223. package/src/registry/pypi-project.js +300 -0
  224. package/src/registry/pypi-registry-adapter.js +235 -0
  225. package/src/registry/sanitize-registry-body.js +51 -0
  226. package/src/renderers/console.js +160 -0
  227. package/src/renderers/impact-presentation.js +278 -0
  228. package/src/renderers/markdown.js +172 -0
  229. package/src/research-plan.js +455 -0
  230. package/src/runtime-conformance.js +275 -0
  231. package/src/source-provenance.js +393 -0
  232. package/src/source-url.js +62 -0
  233. package/src/structured-output-schema.js +66 -0
  234. package/src/target-selector.js +306 -0
  235. package/src/upgrade-decision/input-loader.js +107 -0
  236. package/src/upgrade-decision/presentation.js +43 -0
  237. package/src/upgrade-decision/runtime.js +21 -0
  238. package/src/upgrade-decision/upgrade-decision.js +626 -0
  239. package/src/upgrade-decision/writer.js +30 -0
  240. package/src/usage/analyzer-registry.js +63 -0
  241. package/src/usage/coverage.js +116 -0
  242. package/src/usage/input-loader.js +139 -0
  243. package/src/usage/js/analyzer.js +240 -0
  244. package/src/usage/js/parser.js +21 -0
  245. package/src/usage/runtime.js +187 -0
  246. package/src/usage/scope.js +44 -0
  247. package/src/usage/source-files.js +50 -0
  248. package/src/usage/usage-index.js +217 -0
  249. package/src/usage/writer.js +31 -0
  250. package/src/version-analysis-loader.js +203 -0
  251. package/src/version-analysis-manifest.js +314 -0
  252. package/src/version-analysis-writer.js +30 -0
@@ -0,0 +1,561 @@
1
+ # DIFF-05 — Final Preview Distribution Qualification
2
+
3
+ Review completed: 2026-07-19T14:27:07Z
4
+ Review role: independent release engineer and product qualification reviewer
5
+ Real provider calls: 0
6
+ Provider cost: USD 0
7
+
8
+ ## 1. Executive verdict and gate
9
+
10
+ ```text
11
+ Verdict: PREVIEW_RELEASE_EVIDENCE_COMMIT_REQUIRED
12
+ Gate: COMMIT_EVIDENCE_AND_REFRESH_HOSTED_CI
13
+ Qualified product candidate: 001dd5ec9db4aa292228809ed129fb7d2db9756d
14
+ Blocker product defects: 0
15
+ High product defects: 0
16
+ ```
17
+
18
+ The exact hosted candidate passes product, package, CLI, compatibility,
19
+ decision-policy, handoff, retained-provider-qualification, security, release,
20
+ npm-authorization, and publish-dry-run gates.
21
+
22
+ It is not yet the final releasable commit. The independent DIFF-04 readiness
23
+ report is valid public evidence but remains untracked, and this DIFF-05 report is
24
+ new public release evidence. Committing either creates a new SHA and changes the
25
+ npm package manifest because the package includes `docs/`. The old hosted CI run
26
+ must not be reused for that evidence-bearing candidate.
27
+
28
+ No merge, tag, GitHub Release, npm publication, or dist-tag mutation was
29
+ performed.
30
+
31
+ ## 2. Exact candidate, SHA, and CI correlation
32
+
33
+ | Identity | Result |
34
+ | --- | --- |
35
+ | Local branch | `feat/depverdict-rebrand` |
36
+ | Local HEAD | `001dd5ec9db4aa292228809ed129fb7d2db9756d` |
37
+ | Remote branch | `001dd5ec9db4aa292228809ed129fb7d2db9756d` |
38
+ | Pull request | `#11`, open, not draft, not merged |
39
+ | PR direction | `feat/depverdict-rebrand` → `develop` |
40
+ | PR head | `001dd5ec9db4aa292228809ed129fb7d2db9756d` |
41
+ | PR base | `develop` = `764591ec808bee7e2ff34870c5452b7dbf1e8ad9` |
42
+ | Default branch | `main` = `c91fbb0032b0e2f6209cb4a14aeeb68d9cf0c28d` |
43
+ | Hosted workflow | `DepVerdict CI`, run `29689431987`, attempt 1 |
44
+ | Hosted event | `pull_request` |
45
+ | Hosted run SHA | `001dd5ec9db4aa292228809ed129fb7d2db9756d` |
46
+ | Hosted conclusion | `completed` / `success` |
47
+ | Package candidate | isolated clean clone detached at the same SHA |
48
+
49
+ Required hosted jobs:
50
+
51
+ | Job | Result |
52
+ | --- | --- |
53
+ | Node 20 | PASS |
54
+ | Node 22 | PASS |
55
+ | Node 24 | PASS |
56
+ | Package smoke (Node 24) | PASS |
57
+
58
+ These results qualify only `001dd5e…`. They do not qualify the future
59
+ evidence-bearing commit.
60
+
61
+ ## 3. Worktree scope and evidence-report treatment
62
+
63
+ The source worktree contained:
64
+
65
+ - the valid untracked DIFF-04 independent readiness report;
66
+ - pre-existing RR02 capture trees and duplicate-suffix captures;
67
+ - no local tarball or qualification cache in release scope;
68
+ - no unrelated tracked source modification.
69
+
70
+ Treatment:
71
+
72
+ ```text
73
+ DIFF-04 readiness report: INCLUDE_IN_EVIDENCE_COMMIT
74
+ DIFF-05 qualification report: INCLUDE_IN_EVIDENCE_COMMIT
75
+ RR02 captures: KEEP_LOCAL_NON_DISTRIBUTED
76
+ Temporary clones/caches/tarballs: KEEP_OUTSIDE_REPOSITORY
77
+ ```
78
+
79
+ The DIFF-04 report:
80
+
81
+ - identifies exact SHA `001dd5ec…` and hosted run `29689431987`;
82
+ - records the ready verdict and zero Blocker/High defects;
83
+ - contains no credential, authorization header, signed URL, provider payload,
84
+ or private machine path;
85
+ - is consistent with current source and repeated live GitHub evidence.
86
+
87
+ Its generic reference to a temporary system directory is not a private machine
88
+ path. No report was silently staged, discarded, or modified during this task.
89
+
90
+ ## 4. Product, repository, and distribution identity
91
+
92
+ | Field | Qualified value | Result |
93
+ | --- | --- | --- |
94
+ | Product | DepVerdict | PASS |
95
+ | Repository | `https://github.com/thomasMinh1995/DepVerdict` | PASS |
96
+ | Package | `@thomasminh1995/depverdict` | PASS |
97
+ | Version | `0.6.0-alpha.1` | PASS |
98
+ | Description | decision-first, evidence-bounded dependency upgrade analysis | PASS |
99
+ | Repository metadata | `git+https://github.com/thomasMinh1995/DepVerdict.git` | PASS |
100
+ | Homepage | `https://github.com/thomasMinh1995/DepVerdict#readme` | PASS |
101
+ | Bugs | `https://github.com/thomasMinh1995/DepVerdict/issues` | PASS |
102
+ | Canonical bin | `depverdict` | PASS |
103
+ | Legacy bin | `upgradelens` | PASS |
104
+ | License | MIT | PASS |
105
+ | Node engine | `>=20` | PASS |
106
+
107
+ The legacy executable is explicitly bounded to the `0.6.x` preview
108
+ compatibility window and emits a deprecation warning. Package keywords describe
109
+ dependency upgrades, migration planning, repository analysis, and developer
110
+ tooling. No package metadata claims ownership of the external `upgrade-lens`
111
+ package.
112
+
113
+ No `author` or `maintainers` field is declared in `package.json`; npm account
114
+ authorization is established separately. This is intentional optional metadata,
115
+ not an ownership claim.
116
+
117
+ ## 5. npm authorization and public availability
118
+
119
+ Authenticated read-only checks, with private profile data suppressed:
120
+
121
+ ```text
122
+ npm account: thomasminh1995
123
+ account matches personal scope: yes
124
+ profile read: authenticated
125
+ 2FA mode: auth-and-writes
126
+ 2FA/publish requirements understood: yes
127
+ access list query: authenticated
128
+ existing accessible packages: 0
129
+ scope publish authorization confirmed: yes, for the matching personal scope
130
+ ```
131
+
132
+ The empty package access list is expected because this is the first package in
133
+ the personal scope. It is not presented as an existing-package permission.
134
+ The future real publish remains interactive and must satisfy the account's
135
+ write-time 2FA requirement.
136
+
137
+ Public registry inventory:
138
+
139
+ | Package | Status | Ownership evidence |
140
+ | --- | --- | --- |
141
+ | `@thomasminh1995/depverdict` | HTTP 404 | not yet published |
142
+ | `upgradelens` | HTTP 404 | unclaimed public identity; not the intended package |
143
+ | `upgrade-lens` | `1.0.2` under `latest` | maintained by `zjpctt`; external repository |
144
+
145
+ DepVerdict did not publish, mutate, or claim either unscoped identity.
146
+
147
+ ## 6. Exact npm artifact
148
+
149
+ Two isolated-cache actual packs were byte-identical and matched the dry-run
150
+ manifest:
151
+
152
+ ```text
153
+ name: @thomasminh1995/depverdict
154
+ version: 0.6.0-alpha.1
155
+ filename: thomasminh1995-depverdict-0.6.0-alpha.1.tgz
156
+ files: 250
157
+ packed bytes: 664399
158
+ unpacked bytes: 2553288
159
+ npm shasum: 992d406797fc8741139bf8f14cfe172c327d8129
160
+ npm integrity: sha512-P6g1ryzFDsGd1/0BI0qOoGP24Z3wqg4wS+5t4dENbEFoDsFq8ZFczqq1u0//7x9wzc71D4u4lIJ9U9l6XpPTAg==
161
+ SHA-256: b2d11b6c9caf95a7e77035bb99edd8fb31d8597c6e91441d47a2cbc066fccc48
162
+ repeat byte comparison: PASS
163
+ ```
164
+
165
+ Both executable shims have mode `0755`.
166
+
167
+ The tarball includes the required CLI/runtime modules, 22 schemas, evaluation
168
+ datasets, Migration Checklist assets, compatibility modules, migration guide,
169
+ preview release note, README, and license.
170
+
171
+ It excludes:
172
+
173
+ - Git metadata;
174
+ - `.env` and credentials;
175
+ - `.depverdict/` and `.upgradelens/` runtime outputs;
176
+ - RR02 capture trees and transcripts;
177
+ - npm caches and `node_modules`;
178
+ - local tarballs;
179
+ - duplicate-suffixed files;
180
+ - private machine paths.
181
+
182
+ Seven intentionally packaged RR02 policy/decision documents were distinguished
183
+ from prohibited RR02 capture trees. Package guard independently accepted the
184
+ same boundary.
185
+
186
+ The accepted 250-file count is unchanged. After the two evidence reports are
187
+ committed, the expected package file count becomes 252 because `docs/` is
188
+ package-visible. That change must be requalified and explained on the new SHA.
189
+
190
+ ## 7. Package guard and clean installation
191
+
192
+ | Check | Result |
193
+ | --- | --- |
194
+ | `npm ci --ignore-scripts` | PASS |
195
+ | `npm run check` | PASS |
196
+ | `npm run check:package` | PASS |
197
+ | Package guard | 250 files, 0 suspicious, 32 required assets |
198
+ | Official package smoke | PASS |
199
+ | Extracted package files | 250 |
200
+ | Public exports | 438 |
201
+ | `git diff --check` | PASS |
202
+
203
+ A cold-cache `npm install --offline` could not resolve the declared
204
+ `@babel/parser` packument. This is a cache-availability limitation, not a
205
+ package failure. The clean consumer was rerun with network dependency resolution,
206
+ `--ignore-scripts`, no audit, no funding request, and no package lock; it passed.
207
+ The installed DepVerdict product workflow was then exercised offline without
208
+ registry or provider access.
209
+
210
+ ## 8. Public CLI and compatibility results
211
+
212
+ | Check | Result |
213
+ | --- | --- |
214
+ | `depverdict --version` | `0.6.0-alpha.1` |
215
+ | `depverdict --help` | PASS; DepVerdict-first and decision-first |
216
+ | `upgradelens --version` | `0.6.0-alpha.1` |
217
+ | `upgradelens --help` | PASS; equivalent with stderr deprecation warning |
218
+ | Machine-readable stdout | PASS |
219
+ | ESM import | PASS |
220
+ | Public exports | 438 |
221
+ | Schema JSON loading | 22/22 |
222
+ | Schema compilation | 22/22 |
223
+ | Retained qualification loading | PASS |
224
+ | Legacy qualification fallback | PASS with bounded diagnostic |
225
+ | Root conflict | fail closed as `ARTIFACT_ROOT_CONFLICT` |
226
+
227
+ The legacy warning is stderr-only and bounded once per process state. Canonical
228
+ and legacy executable identities write canonical artifacts.
229
+
230
+ ## 9. Zero-secret onboarding workflow
231
+
232
+ Two equivalent clean generic Node fixtures contained only:
233
+
234
+ - one declared runtime dependency;
235
+ - one declared development dependency;
236
+ - no lockfile;
237
+ - no credential;
238
+ - no provider configuration.
239
+
240
+ Packaged CLI results:
241
+
242
+ | Workflow | Result |
243
+ | --- | --- |
244
+ | Discovery with JSON stdout | PASS, exit 0 |
245
+ | Offline full analysis | PASS, truthful completion |
246
+ | Default incomplete behavior | `INSUFFICIENT_DATA`, exit 0 |
247
+ | `--fail-on-incomplete` | `INSUFFICIENT_DATA`, exit 2 |
248
+ | Artifact root | `.depverdict/` |
249
+ | Legacy write root | absent |
250
+ | Provider calls | 0 |
251
+ | Secret diagnostic scan | PASS |
252
+
253
+ The two dependencies remained `NOT_ANALYZED` with missing installed baseline,
254
+ target, and evidence. The output required human review and did not manufacture a
255
+ recommendation, confidence, impact-safe claim, migration action, path, or command.
256
+
257
+ The repeated semantic projection was identical. Wall-clock `generatedAt`,
258
+ fixture directory name, and lineage-derived IDs are intentionally variable and
259
+ were not misrepresented as byte-deterministic CLI output. Actual npm tarball
260
+ determinism is byte-for-byte proven separately.
261
+
262
+ ## 10. Decision, handoff, selector, and completion scenarios
263
+
264
+ Focused deterministic suite: 177 passed, 0 failed, 0 skipped.
265
+
266
+ | Scenario | Required result | Qualification |
267
+ | --- | --- | --- |
268
+ | Registry latest only | `INVESTIGATE`, never recommendation | PASS |
269
+ | Explicit newer target plus scoped evidence | `PLAN_UPGRADE` | PASS |
270
+ | Installed equals target | `KEEP_CURRENT` | PASS |
271
+ | Provider/output failure | `PARTIAL`, exit 2 | PASS |
272
+ | Insufficient data | default 0, strict 2 | PASS |
273
+ | Unsupported/unavailable coverage | no false `NOT_IMPACTED` | PASS |
274
+ | Exact duplicate occurrence selector | exactly one occurrence | PASS |
275
+ | Stale/conflicting selector | fail before provider construction | PASS |
276
+ | Actionable Migration Checklist | evidence-bounded, review-required | PASS |
277
+ | No grounded instruction | `NO_GROUNDED_ACTION`; no invented action/path/command | PASS |
278
+ | Cancellation | exit 130 | PASS |
279
+ | Offline run | no network/provider dependency; honest limits | PASS |
280
+
281
+ Decision-first console and Markdown ordering, deterministic renderers, JSON
282
+ stdout, partial failure isolation, coverage conservatism, target intent, and
283
+ completion projection all passed.
284
+
285
+ Provider calls across these scenarios: 0 real calls.
286
+
287
+ ## 11. Retained real-provider qualification
288
+
289
+ The production loader validated the retained machine-readable record rather
290
+ than relying on Markdown:
291
+
292
+ ```text
293
+ record schema: 1.0.0
294
+ record digest: sha256:e55b2d6f2f82091f5ce321e3e6b3a36cab8a34ea7608464ccd08b8ef49813847
295
+ qualification ID: sha256:4fa4954d6f254d94859bce17aec6209394d380e4635155a6f3ce23a7e9b70765
296
+ verdict: QUALIFIED
297
+ generated: 2026-07-17T03:32:16.710Z
298
+ mode: real
299
+ provider: openai-compatible
300
+ model: openai/gpt-5.5
301
+ adapter: openai-compatible
302
+ critical gates: 15/15 passed
303
+ critical violations: 0
304
+ ```
305
+
306
+ Resolving the record against the current task, dataset, evaluation criteria,
307
+ policy, prompt, schema, deterministic presentation, provider, model, adapter,
308
+ and runtime identity returned `QUALIFIED` and execution allowed.
309
+
310
+ The retained record currently resides under the supported legacy root and
311
+ resolved with `LEGACY_ARTIFACT_ROOT_USED`. A matching canonical record wins when
312
+ both roots are complete. Provider, model, or adapter changes each returned
313
+ `IDENTITY_MISMATCH` with execution disallowed.
314
+
315
+ No qualification was generalized to another provider, Claude, another model,
316
+ local/offline execution, or changed prompt/runtime. Migration Checklist remains
317
+ experimental, opt-in, evidence-bounded, and human-reviewed.
318
+
319
+ No provider credit was spent during DIFF-05.
320
+
321
+ ## 12. GitHub Releases, repository, security, and community
322
+
323
+ | Check | Result |
324
+ | --- | --- |
325
+ | Canonical repository | HTTP 200 |
326
+ | Former repository route | HTTP 301 directly to DepVerdict |
327
+ | Private Vulnerability Reporting | enabled |
328
+ | PR and hosted CI | exact candidate correlated |
329
+ | `v0.6.0-alpha.1` tag | absent |
330
+ | `v0.6.0-alpha.1` GitHub Release/draft | absent |
331
+ | Historical release count | 5 |
332
+ | Historical release asset count | zero for each |
333
+ | Historical release metadata drift | none |
334
+
335
+ Release IDs remain `353312307`, `353747096`, `354822066`, `355150303`, and
336
+ `356244177`. Titles remain truthful UpgradeLens titles, bodies retain the direct
337
+ DepVerdict rename notices, states remain non-draft/non-prerelease, and approved
338
+ body digests remain unchanged.
339
+
340
+ Security, support, conduct, issue, and PR routes are valid and DepVerdict-first.
341
+ Sensitive reports are not directed to public issues. The verified
342
+ legacy-named conduct mailbox remains an explicit preview limitation.
343
+
344
+ ## 13. Release notes, migration guide, and positioning
345
+
346
+ The current preview draft and migration guide pass:
347
+
348
+ - Technical Preview / Alpha status;
349
+ - scoped `@preview` installation command;
350
+ - no `latest` claim;
351
+ - DepVerdict-first canonical CLI and bounded legacy alias;
352
+ - canonical artifact/env identity plus bounded fallbacks;
353
+ - decision-first workflow and fail-on-incomplete semantics;
354
+ - experimental opt-in Migration Checklist;
355
+ - exact provider/model/runtime qualification boundary;
356
+ - mandatory human review;
357
+ - JS/TS and npm strengths with explicit ecosystem/coverage limits;
358
+ - no autonomous source modification;
359
+ - proposed verification commands are not executed by the product;
360
+ - recovery and rollback synthesis limitations;
361
+ - canonical security/support routes;
362
+ - UpgradeLens-to-DepVerdict upgrade path.
363
+
364
+ The draft truthfully says the preview is not yet published and has not passed the
365
+ final evidence-bearing distribution gate. No factual release-note edit was
366
+ required in this task. The later evidence commit should replace that
367
+ qualification-status sentence with publication-stable wording before CI so it
368
+ does not become stale after the final rerun.
369
+
370
+ No production-ready, universally safe, autonomous-migration, every-ecosystem,
371
+ all-model, or npm-`latest` overclaim was found.
372
+
373
+ ## 14. Publish-command rehearsal and no-publication proof
374
+
375
+ The exact allowed command was run:
376
+
377
+ ```text
378
+ npm publish --dry-run --access public --tag preview --ignore-scripts
379
+ ```
380
+
381
+ Result:
382
+
383
+ ```text
384
+ package: @thomasminh1995/depverdict@0.6.0-alpha.1
385
+ access: public
386
+ tag: preview
387
+ files: 250
388
+ packed bytes: 664399
389
+ unpacked bytes: 2553288
390
+ shasum: 992d406797fc8741139bf8f14cfe172c327d8129
391
+ exit: 0
392
+ ```
393
+
394
+ The package has no publish/install lifecycle script. The public registry
395
+ returned HTTP 404 after the dry run. No package, version, or dist-tag was
396
+ created or moved.
397
+
398
+ ## 15. Provider-call count and cost
399
+
400
+ ```text
401
+ Real AI provider calls: 0
402
+ Provider cost: USD 0
403
+ ```
404
+
405
+ All scenarios used deterministic fixtures, fake runtimes, injected failures, or
406
+ offline CLI operation. GitHub and npm network calls were metadata/authorization
407
+ checks, not AI-provider calls.
408
+
409
+ ## 16. Tests, retries, skips, and blocked checks
410
+
411
+ | Suite/check | Result |
412
+ | --- | --- |
413
+ | Canonical clean-clone tests | 651 passed, 0 failed, 0 skipped |
414
+ | Package guard | PASS |
415
+ | Focused product scenarios | 177 passed, 0 failed, 0 skipped |
416
+ | Official package smoke | PASS |
417
+ | Installed schema compilation | 22 passed |
418
+ | Retained critical qualification gates | 15 passed |
419
+ | Hosted Node 20/22/24/package smoke | PASS on `001dd5e…` |
420
+
421
+ Environment retries:
422
+
423
+ 1. A broad filename scan initially matched seven intentional RR02 policy
424
+ documents. The corrected capture-tree/transcript scan found zero prohibited
425
+ files.
426
+ 2. Cold-cache offline dependency installation was unavailable. A clean
427
+ network-resolved `--ignore-scripts` install passed, and the product workflow
428
+ itself then ran offline.
429
+ 3. An initial installed root-conflict probe called a non-public root export.
430
+ The same packaged internal module was then exercised directly and returned
431
+ `ARTIFACT_ROOT_CONFLICT`; public export count remained the expected 438.
432
+
433
+ Blocked release check:
434
+
435
+ - hosted CI does not yet exist for the required evidence-bearing commit.
436
+
437
+ ## 17. Defects by severity
438
+
439
+ ### Blocker
440
+
441
+ None.
442
+
443
+ ### High product/package/security defects
444
+
445
+ None.
446
+
447
+ ### Release-gating evidence condition
448
+
449
+ The two required public qualification reports are not in the exact hosted SHA.
450
+ The old SHA is not presented as final. This condition maps to
451
+ `PREVIEW_RELEASE_EVIDENCE_COMMIT_REQUIRED`, not to product readiness.
452
+
453
+ ### Medium
454
+
455
+ 1. The conduct mailbox retains the former product name for the bounded preview.
456
+ 2. Discussions are disabled.
457
+ 3. Public branches are not protected.
458
+ 4. Clean installation requires registry access unless dependency packuments are
459
+ already cached.
460
+ 5. Release-note qualification-status wording should become publication-stable in
461
+ the evidence commit.
462
+
463
+ ## 18. Known limitations
464
+
465
+ - pnpm and Yarn installed baselines are unresolved;
466
+ - Python environment/lockfile installed baselines are unresolved;
467
+ - source coverage is strongest for JavaScript/TypeScript;
468
+ - partial or unavailable coverage cannot prove non-impact;
469
+ - provider qualification is exact-identity only;
470
+ - Migration Checklist is experimental and human-reviewed;
471
+ - offline mode cannot invent targets, evidence, confidence, or recommendations;
472
+ - recovery/rollback plans are not synthesized or executed;
473
+ - npm publication remains separately authorized and interactive;
474
+ - the accepted pre-rename Release evidence gap remains bounded, not proven away.
475
+
476
+ ## 19. Exact files created or changed
477
+
478
+ Created:
479
+
480
+ ```text
481
+ docs/reviews/diff-05-final-preview-distribution-qualification.md
482
+ ```
483
+
484
+ Pre-existing and intentionally unchanged:
485
+
486
+ ```text
487
+ docs/reviews/diff-04-depverdict-distribution-identity-readiness-rereview.md
488
+ RR02 capture trees
489
+ ```
490
+
491
+ No source, schema, test, package metadata, GitHub setting, Release, tag, npm
492
+ package, or dist-tag was modified.
493
+
494
+ ## 20. Recommended release order and rollback boundary
495
+
496
+ Do not publish from `001dd5e…`. The later workflow should be:
497
+
498
+ 1. review and commit the DIFF-04 and DIFF-05 reports;
499
+ 2. make the preview release-note qualification sentence
500
+ publication-stable in the same evidence commit;
501
+ 3. verify the resulting package count change from 250 to 252 and rerun package
502
+ guard, deterministic pack, clean install, focused scenarios, and canonical
503
+ tests;
504
+ 4. push without force and wait for Node 20/22/24 plus package smoke on the exact
505
+ evidence SHA;
506
+ 5. independently correlate local, remote, PR head, package candidate, and hosted
507
+ run SHA;
508
+ 6. merge PR `#11` to `develop` only after review;
509
+ 7. promote the intended immutable release commit to `main` according to branch
510
+ policy and verify hosted CI again on that final release commit;
511
+ 8. create annotated tag `v0.6.0-alpha.1` on that exact `main` commit;
512
+ 9. create a GitHub prerelease from the approved release notes;
513
+ 10. only with separate interactive maintainer authorization, publish
514
+ `@thomasminh1995/depverdict@0.6.0-alpha.1` using public access and `preview`;
515
+ 11. verify registry metadata, downloaded tarball SHA-256/npm integrity, dist-tags,
516
+ both CLI shims, and a clean install;
517
+ 12. if publication fails, diagnose without moving the tag; if a bad immutable
518
+ package is published, deprecate the affected version and release a new
519
+ version rather than replacing bytes or force-moving refs.
520
+
521
+ Never move `latest`, force-move a tag, replace published artifact bytes, or
522
+ silently rewrite a GitHub Release.
523
+
524
+ ## 21. Final validation matrix, verdict, and next gate
525
+
526
+ | Area | Result | Evidence |
527
+ | --- | --- | --- |
528
+ | Exact SHA | PASS | local/remote/PR/hosted/package candidate = `001dd5e…` |
529
+ | Hosted CI | PASS | Node 20/22/24 and package smoke on current product SHA |
530
+ | Worktree scope | BLOCKED | two required evidence reports are not committed |
531
+ | Identity | PASS | repository/package/version/CLI canonical |
532
+ | npm authorization | PASS | authenticated matching personal scope; write 2FA enabled |
533
+ | Tarball | PASS | deterministic, complete, clean, 250 files |
534
+ | Clean install | PASS | both CLIs/import/22 schemas/qualification |
535
+ | Sample | PASS | zero-secret, truthful `INSUFFICIENT_DATA` |
536
+ | Decisions | PASS | registry latest never becomes recommendation |
537
+ | Selector | PASS | exact duplicate and fail-before-provider cases |
538
+ | Handoff | PASS | evidence-bounded and human-reviewed |
539
+ | Completion | PASS | full default/strict/partial/cancel exit matrix |
540
+ | Qualification | PASS | exact retained identity only, 15/15 gates |
541
+ | Releases | PASS | historical releases truthful and unchanged |
542
+ | Security | PASS | PVR and private routes valid |
543
+ | Release notes | PASS | preview scope and limitations accurate |
544
+ | Dry run | PASS | public `preview`; registry remains 404 |
545
+ | Provider calls | PASS | zero, cost USD 0 |
546
+
547
+ ```text
548
+ Verdict: PREVIEW_RELEASE_EVIDENCE_COMMIT_REQUIRED
549
+ Gate: COMMIT_EVIDENCE_AND_REFRESH_HOSTED_CI
550
+ ```
551
+
552
+ Next task:
553
+
554
+ ```text
555
+ DIFF-05-EVIDENCE — Commit public qualification evidence, stabilize the
556
+ pre-publication release-note sentence, requalify the expected 252-file tarball,
557
+ push without force, and wait for exact-SHA hosted CI.
558
+ ```
559
+
560
+ This qualification ends here. It does not authorize merge, tag, GitHub Release,
561
+ npm publication, or dist-tag mutation.