@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,453 @@
1
+ # DIFF-04-RERUN — DepVerdict Repository & Distribution Identity Readiness Review
2
+
3
+ Review completed: 2026-07-19T13:54:53Z
4
+ Review role: independent release-readiness review
5
+ Provider calls: 0
6
+
7
+ ## 1. Executive verdict and gate
8
+
9
+ ```text
10
+ Verdict: DEPVERDICT_REPOSITORY_DISTRIBUTION_IDENTITY_READY
11
+ Gate: PROCEED_TO_DIFF_05_FINAL_PREVIEW_DISTRIBUTION_QUALIFICATION
12
+ Candidate SHA: 001dd5ec9db4aa292228809ed129fb7d2db9756d
13
+ Blocker defects: 0
14
+ High defects: 0
15
+ ```
16
+
17
+ The exact local, remote, pull-request, hosted-CI, and package candidate identity
18
+ is correlated. The repository and current operational metadata use DepVerdict
19
+ directly. All four required hosted jobs passed. Historical Releases are again
20
+ truthful UpgradeLens records with a direct DepVerdict rename notice, and the
21
+ approved repair preserved the recorded release identities, refs, states,
22
+ created/published timestamps, and zero-asset inventories.
23
+
24
+ The incomplete pre-rename release/asset before-state remains explicitly bounded
25
+ and must not be described as proven. The maintainer accepted that irrecoverable
26
+ evidence gap in
27
+ `docs/decisions/diff-04-release-evidence-gap-acceptance.md`; the exact
28
+ DIFF-04-FIX operation itself has a retained pre-edit and post-edit inventory.
29
+
30
+ ## 2. Exact SHA correlation
31
+
32
+ | Identity | Result |
33
+ | --- | --- |
34
+ | Local branch | `feat/depverdict-rebrand` |
35
+ | Local HEAD | `001dd5ec9db4aa292228809ed129fb7d2db9756d` |
36
+ | Local commit | `001dd5e fix: complete DepVerdict distribution identity migration` |
37
+ | Remote branch | `origin/feat/depverdict-rebrand` = `001dd5ec9db4aa292228809ed129fb7d2db9756d` |
38
+ | Pull request | `#11`, open, `feat/depverdict-rebrand` → `develop` |
39
+ | PR head | `001dd5ec9db4aa292228809ed129fb7d2db9756d` |
40
+ | PR base | `develop` = `764591ec808bee7e2ff34870c5452b7dbf1e8ad9` |
41
+ | Default branch | `main` = `c91fbb0032b0e2f6209cb4a14aeeb68d9cf0c28d` |
42
+ | Merged/default candidate | Not applicable; PR `#11` is open and unmerged |
43
+ | Hosted workflow run | `29689431987` at `001dd5ec9db4aa292228809ed129fb7d2db9756d` |
44
+ | Package candidate | Clean local clone detached at `001dd5ec9db4aa292228809ed129fb7d2db9756d` |
45
+
46
+ The candidate clone did not include the pre-existing local rereview report,
47
+ RR02 captures, duplicate-suffix captures, tarballs, or temporary review data.
48
+ Those existing worktree files were inventoried and preserved.
49
+
50
+ ## 3. Hosted workflow, run, and job evidence
51
+
52
+ ```text
53
+ Workflow: DepVerdict CI
54
+ Run ID: 29689431987
55
+ Run number / attempt: 10 / 1
56
+ Event: pull_request
57
+ Status / conclusion: completed / success
58
+ Head branch: feat/depverdict-rebrand
59
+ Head SHA: 001dd5ec9db4aa292228809ed129fb7d2db9756d
60
+ Created: 2026-07-19T13:43:38Z
61
+ Completed: 2026-07-19T13:44:42Z
62
+ ```
63
+
64
+ | Job | Job ID | Result | Completed (UTC) |
65
+ | --- | ---: | --- | --- |
66
+ | Node 20 | `88199427909` | PASS | `2026-07-19T13:44:41Z` |
67
+ | Node 22 | `88199427892` | PASS | `2026-07-19T13:44:33Z` |
68
+ | Node 24 | `88199427898` | PASS | `2026-07-19T13:44:21Z` |
69
+ | Package smoke (Node 24) | `88199427915` | PASS | `2026-07-19T13:43:56Z` |
70
+
71
+ No required job was missing, pending, skipped, or failed. Workflow inspection
72
+ also verified:
73
+
74
+ - repository permission is only `contents: read`;
75
+ - checkout uses `persist-credentials: false`;
76
+ - official actions are pinned to full commit SHAs;
77
+ - the workflow uses `pull_request`, never `pull_request_target`;
78
+ - provider and authorization environment values are explicitly empty;
79
+ - no `secrets.*`, publish, release, tag, push, deployment, or writeback step
80
+ exists;
81
+ - the exact run uploaded zero Actions artifacts.
82
+
83
+ ## 4. Repository identity and redirect
84
+
85
+ | Check | Result |
86
+ | --- | --- |
87
+ | Canonical web URL | PASS; HTTP 200 |
88
+ | API owner/name | PASS; `thomasMinh1995/DepVerdict` |
89
+ | Repository ID | `1299421234`; node ID `R_kgDOTXOYMg` |
90
+ | Visibility/state | Public, unarchived, enabled |
91
+ | Default branch | `main` |
92
+ | Local `origin` | `https://github.com/thomasMinh1995/DepVerdict.git` for fetch and push |
93
+ | Former URL | PASS; HTTP 301 directly to `https://github.com/thomasMinh1995/DepVerdict` |
94
+ | Branches | PASS; nine branches visible, including `main`, `develop`, and the candidate branch |
95
+ | Pull requests | PASS; PR history `#1`–`#11` accessible |
96
+ | Issues | PASS; no separate public issue was present |
97
+ | Actions | PASS; exact candidate run and jobs accessible |
98
+ | Tags | PASS; exactly `v0.1.1` through `v0.5.0` accessible |
99
+ | Discussions | Disabled; non-blocking preview limitation |
100
+
101
+ No retained pre-rename numeric repository-ID capture was found. Current Git
102
+ history, refs, branches, PRs, Releases, Actions, and the direct redirect support
103
+ continuity, but this review does not turn that into a numeric before/after ID
104
+ proof.
105
+
106
+ ## 5. Security and community routes
107
+
108
+ The authenticated read-only GitHub endpoint
109
+ `/repos/thomasMinh1995/DepVerdict/private-vulnerability-reporting` returned
110
+ `{"enabled":true}`.
111
+
112
+ - `SECURITY.md` and both Issue Form routes point directly to
113
+ `https://github.com/thomasMinh1995/DepVerdict/security/advisories/new`.
114
+ - Public issue forms warn users not to disclose secrets, private source,
115
+ captures, or provider payloads.
116
+ - `SUPPORT.md` keeps security and sensitive conduct reports off public issues.
117
+ - `CODE_OF_CONDUCT.md` uses the verified private
118
+ `upgradelens.conduct@gmail.com` address and labels it as a temporary
119
+ legacy-named `0.6.x` transition route.
120
+ - PR and issue templates use DepVerdict identity.
121
+
122
+ The legacy-named conduct mailbox is a Medium transition limitation, not a High
123
+ defect for this preview.
124
+
125
+ ## 6. GitHub Release inventory and classification
126
+
127
+ The API returned exactly five published historical releases, all with zero
128
+ assets. No `v0.6.0-alpha.1` tag, draft, or release exists.
129
+
130
+ | Release ID | Tag / peeled target | Current title | Draft / prerelease | Created / published / updated (UTC) | Assets |
131
+ | ---: | --- | --- | --- | --- | ---: |
132
+ | `353312307` | `v0.1.1` / `95cd3025c27d2c4d8e97f711625541ee0da7dbc0` | `UpgradeLens v0.1.1 — MVP-01 Project Discovery Foundation` | false / false | `2026-07-13T17:10:16Z` / `17:16:09Z` / `2026-07-19T11:17:07Z` | 0 |
133
+ | `353747096` | `v0.2.0` / `411c9e6216d9476b48d72311c9163b2a563d1e60` | `UpgradeLens v0.2.0 — Knowledge Research` | false / false | `2026-07-14T11:12:11Z` / `11:22:02Z` / `2026-07-19T11:17:46Z` | 0 |
134
+ | `354822066` | `v0.3.0` / `8fea8ec5b06dd6c85a0f600be1d566d65ef2c7a2` | `UpgradeLens v0.3.0 — AI Version Analysis` | false / false | `2026-07-16T01:40:55Z` / `01:43:27Z` / `2026-07-19T11:17:47Z` | 0 |
135
+ | `355150303` | `v0.4.0` / `734be0b9395b0bd74454badc010e4df237319cc3` | `UpgradeLens v0.4.0 — Repository Impact Analytics` | false / false | `2026-07-16T14:33:06Z` / `14:35:09Z` / `2026-07-19T11:17:48Z` | 0 |
136
+ | `356244177` | `v0.5.0` / `74d57344db254d0109ea951dc7c44853cdad9be0` | `UpgradeLens v0.5.0 — Evidence-Bounded Migration Planning` | false / false | `2026-07-19T02:55:33Z` / `02:56:50Z` / `2026-07-19T11:17:48Z` | 0 |
137
+
138
+ Each body:
139
+
140
+ - states that the release was originally published under UpgradeLens;
141
+ - identifies the project as now DepVerdict;
142
+ - links directly to `https://github.com/thomasMinh1995/DepVerdict`;
143
+ - states that the historical release remains associated with its original tag
144
+ and commit;
145
+ - contains no dependency on the former repository URL.
146
+
147
+ Classification: PASS. The releases are truthful historical UpgradeLens records,
148
+ not retroactively presented as DepVerdict releases.
149
+
150
+ ## 7. Release immutability evidence and limitations
151
+
152
+ The post-edit body bytes exactly match the accepted candidate inventory:
153
+
154
+ | ID / tag | Body bytes | Body SHA-256 |
155
+ | --- | ---: | --- |
156
+ | `353312307` / `v0.1.1` | 2227 | `17c9f1ece26eb1f6af20fb438b800d0cd74f3117aea979566ebb5b16b11c28e1` |
157
+ | `353747096` / `v0.2.0` | 4588 | `32af0823ca8199a5c041b48ceb4b126d9a0cdec369128463f4da5e9d2d560411` |
158
+ | `354822066` / `v0.3.0` | 823 | `8b264cb667a555c392f9e688e49fbf91e8145beec19ef76d2b4edb5c1eef7262` |
159
+ | `355150303` / `v0.4.0` | 1335 | `b71c108f31b1cb31d331cb89bda5fd5aec8fa63ca857d3b86825cd69c3383ff3` |
160
+ | `356244177` / `v0.5.0` | 990 | `0d556e775bff4c27e16b0090b1203d4d09567d0c3e3d8b28ce353cee16e54eba` |
161
+
162
+ For the explicitly approved DIFF-04-FIX operation, the retained pre-edit and
163
+ post-edit inventories prove:
164
+
165
+ - release IDs and tags are unchanged;
166
+ - annotated tag objects and peeled commits are unchanged;
167
+ - `target_commitish` remains `main`;
168
+ - draft/prerelease states are unchanged;
169
+ - created and published timestamps are unchanged;
170
+ - asset arrays remained empty;
171
+ - only approved titles/bodies changed;
172
+ - GitHub-managed `updated_at` changed as the direct consequence of those
173
+ title/body edits and was not included in any PATCH payload;
174
+ - no release or tag was created, deleted, moved, or recreated.
175
+
176
+ Bounded limitation: no complete release-ID/state/timestamp/asset inventory was
177
+ retained from before the repository rename and the earlier misleading metadata
178
+ edits. The accepted evidence-gap decision explicitly classifies that before-state
179
+ as unknown and does not claim that assets never existed or never changed.
180
+ `v0.5.0` tag object/target continuity and publication state are independently
181
+ proven by retained DIFF-01 evidence. Earlier tag agreement and current zero-asset
182
+ state are supported by current state only.
183
+
184
+ This bounded, explicitly accepted limitation passes the present remediation gate
185
+ without being converted into an immutability claim.
186
+
187
+ ## 8. Package metadata and npm identity
188
+
189
+ | Field | Candidate | Result |
190
+ | --- | --- | --- |
191
+ | `name` | `@thomasminh1995/depverdict` | PASS |
192
+ | `version` | `0.6.0-alpha.1` | PASS |
193
+ | description | decision-first, evidence-bounded dependency upgrade analysis | PASS |
194
+ | repository | `git+https://github.com/thomasMinh1995/DepVerdict.git` | PASS |
195
+ | homepage | `https://github.com/thomasMinh1995/DepVerdict#readme` | PASS |
196
+ | bugs | `https://github.com/thomasMinh1995/DepVerdict/issues` | PASS |
197
+ | canonical bin | `depverdict` → `bin/depverdict.js` | PASS |
198
+ | legacy bin | `upgradelens` → `bin/upgradelens.js` | PASS |
199
+ | engine | Node `>=20` | PASS |
200
+
201
+ The normalized dry-run and actual tarball retain those exact fields. Both bin
202
+ files are present with mode `0755`.
203
+
204
+ Public npm registry evidence before and after the publish dry run:
205
+
206
+ - `@thomasminh1995/depverdict`: HTTP 404; no version, `latest`, `preview`, or
207
+ dist-tag exists;
208
+ - external `upgrade-lens`: `1.0.2` under `latest`, maintained by `zjpctt`, with
209
+ repository `zjp123/UpgradeDepDetective-`;
210
+ - DepVerdict did not publish, mutate, or claim that external package.
211
+
212
+ Authenticated npm scope ownership was not available and is assigned to the
213
+ DIFF-05 pre-publication gate. No credential was requested or displayed.
214
+
215
+ ## 9. Normative and legacy identity scan
216
+
217
+ | Classification | Representative results | Assessment |
218
+ | --- | --- | --- |
219
+ | Current normative DepVerdict identity | package URLs, README/CONTRIBUTING clone commands, security routes, Issue Forms, preview draft | PASS |
220
+ | Approved legacy compatibility | `upgradelens` bin, `.upgradelens/` complete-chain reads, `UPGRADELENS_*` fallback | PASS |
221
+ | Truthful historical record | frozen prior reports, historical release notes, protocol/schema identities | PASS |
222
+ | Migration documentation | former repository redirect, CLI/root/env compatibility map | PASS |
223
+ | Frozen protocol/test identity | `generator.name: "UpgradeLens"`, bounded prompts, fixtures, reason/task IDs | PASS |
224
+ | Stale normative identity | none found in inspected operational surfaces | PASS |
225
+
226
+ The former repository URL remains only in migration or explicitly dated
227
+ historical context. Current operational links do not rely on its redirect.
228
+ Repository identity tests, current Markdown link/fence checks, package metadata
229
+ tests, and release-remediation tests all passed.
230
+
231
+ ## 10. Compatibility behavior
232
+
233
+ Focused command:
234
+
235
+ ```text
236
+ node --test
237
+ test/identity-compatibility.test.js
238
+ test/migration-qualification-resolution.test.js
239
+ test/ci-workflow-metadata.test.js
240
+ test/repository-docs-identity.test.js
241
+ test/release-identity-remediation.test.js
242
+ ```
243
+
244
+ Result: 36 passed, 0 failed, 0 skipped.
245
+
246
+ Verified behavior:
247
+
248
+ - `depverdict` is canonical;
249
+ - `upgradelens` writes equivalent canonical artifacts;
250
+ - its warning is stderr-only and bounded once per process state;
251
+ - legacy `--stdout` stays machine-readable JSON;
252
+ - `.depverdict/` is the write root;
253
+ - a complete `.upgradelens/` chain may be read as fallback;
254
+ - split canonical/legacy chains fail closed with `ARTIFACT_ROOT_CONFLICT`;
255
+ - precedence is explicit option → `DEPVERDICT_*` → `UPGRADELENS_*` → default;
256
+ - secret values are not printed;
257
+ - schemas, task IDs, reason codes, and historical artifacts remain compatible;
258
+ - public export count remains 438.
259
+
260
+ ## 11. Canonical suite and package guard
261
+
262
+ The exact candidate was tested in a clean clone detached at
263
+ `001dd5ec9db4aa292228809ed129fb7d2db9756d`.
264
+
265
+ | Check | Result |
266
+ | --- | --- |
267
+ | `npm ci --ignore-scripts` | PASS; 11 dependencies installed |
268
+ | `npm run check` | PASS |
269
+ | Canonical tests | 651 total; 650 pass; 0 fail; 1 sandbox loopback skip |
270
+ | `npm run check:package` | PASS |
271
+ | Package guard | 250 files; 0 suspicious artifacts; 32 required assets |
272
+ | `git diff --check` | PASS |
273
+ | Clean candidate status | PASS; no source modifications |
274
+
275
+ The known local skip is the real loopback listener check unavailable in the
276
+ execution sandbox. It is unrelated to distribution identity, and the same
277
+ canonical suite passed in the exact-SHA hosted Node jobs.
278
+
279
+ ## 12. Tarball manifest, digest, and clean install
280
+
281
+ Dry-run and two actual isolated-cache packs produced identical metadata and
282
+ byte-identical tarballs:
283
+
284
+ ```text
285
+ name: @thomasminh1995/depverdict
286
+ version: 0.6.0-alpha.1
287
+ filename: thomasminh1995-depverdict-0.6.0-alpha.1.tgz
288
+ files: 250
289
+ packed bytes: 664399
290
+ unpacked bytes: 2553288
291
+ npm shasum: 992d406797fc8741139bf8f14cfe172c327d8129
292
+ npm integrity: sha512-P6g1ryzFDsGd1/0BI0qOoGP24Z3wqg4wS+5t4dENbEFoDsFq8ZFczqq1u0//7x9wzc71D4u4lIJ9U9l6XpPTAg==
293
+ SHA-256: b2d11b6c9caf95a7e77035bb99edd8fb31d8597c6e91441d47a2cbc066fccc48
294
+ ```
295
+
296
+ The official clean-install smoke passed:
297
+
298
+ ```text
299
+ Package smoke passed:
300
+ @thomasminh1995/depverdict@0.6.0-alpha.1
301
+ 250 extracted files
302
+ 32 required assets
303
+ 438 public exports
304
+ ```
305
+
306
+ Additional isolated consumer checks passed:
307
+
308
+ - `depverdict --version` and `--help`;
309
+ - `upgradelens --version` and `--help` with stderr deprecation warning;
310
+ - ESM import with 438 public exports;
311
+ - package schema JSON loading;
312
+ - Migration Planning qualification-record loading;
313
+ - `.upgradelens/` qualification fallback with
314
+ `LEGACY_ARTIFACT_ROOT_USED`;
315
+ - mismatched qualification identity remained fail-closed as
316
+ `IDENTITY_MISMATCH`.
317
+
318
+ RR02 captures, `.depverdict/`, `.upgradelens/`, credentials, `.env` files,
319
+ duplicate copies, local paths, and nested tarballs were excluded by the clean
320
+ candidate and package guard.
321
+
322
+ ## 13. npm dry run and no-publication confirmation
323
+
324
+ The only publish-shaped command was:
325
+
326
+ ```text
327
+ npm publish --dry-run --access public --tag preview --ignore-scripts --json
328
+ ```
329
+
330
+ It normalized the exact candidate as public
331
+ `@thomasminh1995/depverdict@0.6.0-alpha.1`, tag `preview`, 250 files, with the
332
+ same size and digests as the actual qualification pack. The public registry
333
+ returned HTTP 404 before and after the command.
334
+
335
+ No package was published. No `latest` or `preview` dist-tag was created or moved.
336
+
337
+ ## 14. Product positioning
338
+
339
+ PASS. Current public content consistently positions DepVerdict as:
340
+
341
+ - Public Technical Preview / Alpha;
342
+ - decision-first dependency upgrade analysis;
343
+ - deterministic policy rather than registry-latest recommendation;
344
+ - evidence-bounded, human-reviewed migration handoff;
345
+ - strongest current coverage in JS/TS and npm with explicit limits;
346
+ - experimental opt-in Migration Checklist;
347
+ - provider/model/runtime qualification bound to exact evidence.
348
+
349
+ No current product surface claims autonomous source migration, guaranteed
350
+ safety, equal support for every ecosystem, universal provider qualification,
351
+ production stability, general availability, or npm `latest`.
352
+
353
+ ## 15. Provider-call count
354
+
355
+ ```text
356
+ Provider calls: 0
357
+ ```
358
+
359
+ Local and hosted checks used deterministic fixtures, fakes, local test doubles,
360
+ or empty provider configuration. No real AI provider was contacted.
361
+
362
+ ## 16. Blocked, skipped, and limited checks
363
+
364
+ - LIMITED: complete pre-rename release-ID/state/timestamp/asset before-state was
365
+ not retained. The accepted decision records the gap without claiming proof.
366
+ - LIMITED: authenticated npm scope ownership was unavailable; it must be checked
367
+ by the maintainer at DIFF-05 without sharing credentials.
368
+ - LIMITED: no pre-rename numeric repository ID was retained.
369
+ - NOT APPLICABLE: candidate SHA on merged/default branch; PR `#11` remains open.
370
+ - NOT APPLICABLE: remote `v0.6.0-alpha.1` release classification; no such tag,
371
+ draft, or release exists.
372
+ - SKIPPED LOCALLY: one loopback listener test due to sandbox restrictions; exact
373
+ hosted Node 20/22/24 jobs passed.
374
+ - ENVIRONMENT RETRY: the first pack attempt used an unwritable global npm cache;
375
+ the required isolated-cache rerun passed.
376
+ - ENVIRONMENT RETRY: an unprivileged clean-install attempt was interrupted while
377
+ sandbox networking blocked dependency retrieval; the network-enabled isolated
378
+ rerun passed.
379
+
380
+ ## 17. Defects by severity
381
+
382
+ ### Blocker
383
+
384
+ None.
385
+
386
+ ### High
387
+
388
+ None.
389
+
390
+ ### Medium
391
+
392
+ 1. The verified conduct mailbox retains the former product name for one bounded
393
+ preview transition.
394
+ 2. Authenticated npm scope ownership remains a DIFF-05 pre-publication check.
395
+ 3. Branch protection is not enabled on the public branch inventory.
396
+ 4. Discussions are disabled.
397
+ 5. Complete pre-rename release/asset and numeric repository-ID evidence is
398
+ unavailable and must remain explicitly bounded.
399
+
400
+ ### Low
401
+
402
+ None material beyond documented preview limitations.
403
+
404
+ ## 18. Exact files created or changed by this review
405
+
406
+ Created or replaced:
407
+
408
+ ```text
409
+ docs/reviews/diff-04-depverdict-distribution-identity-readiness-rereview.md
410
+ ```
411
+
412
+ No other tracked file was changed. Temporary clones, npm caches, tarballs, and
413
+ consumer installs were created only below `/tmp`. Pre-existing RR02 captures
414
+ were not edited, staged, or packaged.
415
+
416
+ ## 19. Final acceptance matrix
417
+
418
+ | Area | Result | Evidence / reason |
419
+ | --- | --- | --- |
420
+ | Exact SHA | PASS | local, remote branch, PR head, hosted run, and package candidate are `001dd5e…`; default branch recorded separately |
421
+ | Hosted CI | PASS | Node 20/22/24 and package smoke succeeded in run `29689431987` |
422
+ | Repository | PASS | canonical owner/URL valid; former URL redirects; history and resources accessible |
423
+ | Local remote | PASS | `origin` directly uses DepVerdict |
424
+ | Security | PASS | PVR enabled; canonical private routes in current docs and forms |
425
+ | Releases | PASS | five historical releases are truthful UpgradeLens records with direct DepVerdict notices |
426
+ | Release history | PASS | exact approved repair preserved recorded IDs, tags, targets, states, created/published times, and zero assets; older evidence gap remains accepted and bounded |
427
+ | Package | PASS | scoped name/version/description/metadata and both bins are correct |
428
+ | CLI | PASS | canonical and legacy installed shims work; warning is bounded and stderr-only |
429
+ | Docs | PASS | no stale normative identity or redirect-dependent operational URL |
430
+ | Compatibility | PASS | root/env/artifact fallbacks remain deterministic and fail closed |
431
+ | Package guard | PASS | 250 files, 0 suspicious, 32 required assets |
432
+ | Clean install | PASS | CLI/help/version/import/schema/qualification checks pass |
433
+ | npm preflight | PASS | public preview dry run only; registry remained 404; authenticated ownership deferred to DIFF-05 |
434
+ | Positioning | PASS | bounded Technical Preview claims |
435
+ | Provider calls | PASS | zero |
436
+
437
+ ## 20. Final verdict and recommended next task
438
+
439
+ ```text
440
+ Verdict: DEPVERDICT_REPOSITORY_DISTRIBUTION_IDENTITY_READY
441
+ Gate: PROCEED_TO_DIFF_05_FINAL_PREVIEW_DISTRIBUTION_QUALIFICATION
442
+ ```
443
+
444
+ Recommended next task:
445
+
446
+ ```text
447
+ DIFF-05 — Final preview distribution qualification
448
+ ```
449
+
450
+ That task should obtain authenticated maintainer-only npm scope ownership
451
+ evidence, repeat exact-candidate pack/install checks, and prepare the separately
452
+ approved `preview` publication decision. This review does not authorize merge,
453
+ tag mutation, Release creation/editing, npm publication, or dist-tag mutation.