@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,274 @@
|
|
|
1
|
+
# DIFF-02 — Identity and Compatibility Contract
|
|
2
|
+
|
|
3
|
+
- Status: Accepted for implementation
|
|
4
|
+
- Date: 2026-07-19
|
|
5
|
+
- Scope: `0.6.0-alpha.1`
|
|
6
|
+
- Product identity: DepVerdict
|
|
7
|
+
- Distribution identity: `@thomasminh1995/depverdict`
|
|
8
|
+
- Canonical executable: `depverdict`
|
|
9
|
+
|
|
10
|
+
## Context
|
|
11
|
+
|
|
12
|
+
UpgradeLens `v0.5.0` established the current evidence formats, workflow semantics,
|
|
13
|
+
and historical release record. The next preview changes the product and
|
|
14
|
+
distribution identity to DepVerdict without invalidating those artifacts or
|
|
15
|
+
silently changing their meaning.
|
|
16
|
+
|
|
17
|
+
This decision is intentionally narrower than the later repository,
|
|
18
|
+
documentation, and community migration. The repository remains
|
|
19
|
+
`thomasMinh1995/UpgradeLens` during DIFF-02. Existing tags, especially `v0.5.0`,
|
|
20
|
+
and existing review or qualification records remain historical facts and are
|
|
21
|
+
not rewritten.
|
|
22
|
+
|
|
23
|
+
## Accepted identity map
|
|
24
|
+
|
|
25
|
+
| Surface | Canonical identity | Compatibility identity |
|
|
26
|
+
| --- | --- | --- |
|
|
27
|
+
| Product | DepVerdict | UpgradeLens in historical records |
|
|
28
|
+
| Future repository | `thomasMinh1995/DepVerdict` | Current repository is not renamed here |
|
|
29
|
+
| npm package | `@thomasminh1995/depverdict` | No second legacy package is introduced |
|
|
30
|
+
| CLI | `depverdict` | `upgradelens`, deprecated for the `0.6.x` preview window |
|
|
31
|
+
| Artifact root | `.depverdict/` | `.upgradelens/`, read-only fallback |
|
|
32
|
+
| Environment prefix | `DEPVERDICT_*` | `UPGRADELENS_*`, deprecated fallback |
|
|
33
|
+
| Preview version | `0.6.0-alpha.1` | `v0.5.0` remains immutable history |
|
|
34
|
+
|
|
35
|
+
## 1. Package and executable contract
|
|
36
|
+
|
|
37
|
+
The package name becomes `@thomasminh1995/depverdict`, and its version becomes
|
|
38
|
+
`0.6.0-alpha.1`. The package exposes two executable entries:
|
|
39
|
+
|
|
40
|
+
- `depverdict` is the canonical executable.
|
|
41
|
+
- `upgradelens` is a thin compatibility wrapper that invokes the same command
|
|
42
|
+
dispatcher with an explicit legacy invocation identity.
|
|
43
|
+
|
|
44
|
+
Both executables must produce the same exit codes, stdout payloads, and
|
|
45
|
+
artifacts for the same command and inputs. The only permitted difference is a
|
|
46
|
+
bounded deprecation diagnostic on stderr from the legacy executable. The
|
|
47
|
+
diagnostic is emitted at most once per process and must not contain secrets.
|
|
48
|
+
|
|
49
|
+
The alias remains through the `0.6.x` preview compatibility window. Its removal
|
|
50
|
+
requires a separate decision and release note; this implementation does not
|
|
51
|
+
silently remove it.
|
|
52
|
+
|
|
53
|
+
The npm preview publication itself is outside DIFF-02. When publication is
|
|
54
|
+
authorized later, it must use the `preview` dist-tag rather than `latest`.
|
|
55
|
+
|
|
56
|
+
## 2. Runtime product presentation
|
|
57
|
+
|
|
58
|
+
New runtime presentation uses DepVerdict:
|
|
59
|
+
|
|
60
|
+
- help and version banners;
|
|
61
|
+
- user-agent strings;
|
|
62
|
+
- decision-first outcome headings;
|
|
63
|
+
- runtime remediation text and command examples.
|
|
64
|
+
|
|
65
|
+
Historical persisted names are not presentation strings. They remain unchanged
|
|
66
|
+
where they participate in existing schema contracts.
|
|
67
|
+
|
|
68
|
+
## 3. Persisted schema compatibility
|
|
69
|
+
|
|
70
|
+
Existing artifact schemas, schema versions, reason codes, prompt versions,
|
|
71
|
+
policy versions, and provider qualification identities remain unchanged.
|
|
72
|
+
|
|
73
|
+
In particular, existing schemas require `generator.name` to equal
|
|
74
|
+
`"UpgradeLens"`. New `0.6.0-alpha.1` artifacts therefore continue to write that
|
|
75
|
+
value as a compatibility protocol identifier. The runtime product name
|
|
76
|
+
`DepVerdict` is separate from this persisted protocol identifier.
|
|
77
|
+
|
|
78
|
+
The existing internal version-analysis schema name
|
|
79
|
+
`upgradelens_version_analysis` also remains unchanged because it participates in
|
|
80
|
+
provider request and qualification compatibility.
|
|
81
|
+
|
|
82
|
+
This separation prevents a brand change from masquerading as an evidence-format
|
|
83
|
+
or provider-contract migration.
|
|
84
|
+
|
|
85
|
+
## 4. Artifact write-root contract
|
|
86
|
+
|
|
87
|
+
All implicit/default writes use `.depverdict/`.
|
|
88
|
+
|
|
89
|
+
An explicit output path supplied by the caller remains authoritative. The
|
|
90
|
+
runtime must not rewrite, relocate, copy, or delete explicitly addressed
|
|
91
|
+
artifacts.
|
|
92
|
+
|
|
93
|
+
The legacy `.upgradelens/` directory remains ignored by discovery alongside
|
|
94
|
+
`.depverdict/`. This prevents either generated tree from affecting project
|
|
95
|
+
analysis.
|
|
96
|
+
|
|
97
|
+
## 5. Legacy artifact read contract
|
|
98
|
+
|
|
99
|
+
Automatic compatibility reads use a whole-chain selection rule:
|
|
100
|
+
|
|
101
|
+
1. If every required canonical artifact exists, use the canonical chain.
|
|
102
|
+
2. If the canonical chain is complete and legacy artifacts also exist, use the
|
|
103
|
+
canonical chain and emit one bounded `LEGACY_ARTIFACT_ROOT_IGNORED`
|
|
104
|
+
diagnostic.
|
|
105
|
+
3. If no canonical member exists and every required legacy artifact exists, use
|
|
106
|
+
the legacy chain and emit one bounded `LEGACY_ARTIFACT_ROOT_USED`
|
|
107
|
+
diagnostic.
|
|
108
|
+
4. If both roots contain members but the canonical chain is incomplete, or the
|
|
109
|
+
only available inputs form a split/partial chain, fail closed with
|
|
110
|
+
`ARTIFACT_ROOT_CONFLICT`.
|
|
111
|
+
5. If neither root contains a member, select canonical paths so the established
|
|
112
|
+
missing-input behavior remains authoritative.
|
|
113
|
+
|
|
114
|
+
The resolver never combines artifacts from both roots. It never judges
|
|
115
|
+
lineage by timestamps and never repairs a chain by copying files.
|
|
116
|
+
|
|
117
|
+
Explicit input paths bypass automatic root selection. An explicitly selected
|
|
118
|
+
legacy path is allowed because caller intent is unambiguous.
|
|
119
|
+
|
|
120
|
+
## 6. Stage-boundary behavior
|
|
121
|
+
|
|
122
|
+
Automatic root selection is applied at input boundaries that consume persisted
|
|
123
|
+
workflow state, including:
|
|
124
|
+
|
|
125
|
+
- research manifest loading;
|
|
126
|
+
- version-analysis manifest, knowledge manifest, and evidence-bundle loading;
|
|
127
|
+
- migration-checklist workflow input loading;
|
|
128
|
+
- default migration-qualification resolution.
|
|
129
|
+
|
|
130
|
+
Each boundary declares its complete required input set. A downstream stage must
|
|
131
|
+
not fill missing canonical members from legacy storage.
|
|
132
|
+
|
|
133
|
+
A standalone stage may read a complete legacy input set and write its output to
|
|
134
|
+
the canonical default root. That does not grant later stages permission to
|
|
135
|
+
merge the roots. The caller must regenerate a complete canonical chain or use
|
|
136
|
+
explicit input paths.
|
|
137
|
+
|
|
138
|
+
## 7. Environment compatibility contract
|
|
139
|
+
|
|
140
|
+
Supported canonical variables are:
|
|
141
|
+
|
|
142
|
+
- `DEPVERDICT_AI_PROVIDER`
|
|
143
|
+
- `DEPVERDICT_AI_ENDPOINT`
|
|
144
|
+
- `DEPVERDICT_AI_MODEL`
|
|
145
|
+
- `DEPVERDICT_AI_AUTHORIZATION`
|
|
146
|
+
- `DEPVERDICT_AI_TIMEOUT_MS`
|
|
147
|
+
- `DEPVERDICT_AI_TIMEOUT_SECONDS`
|
|
148
|
+
- `DEPVERDICT_AI_MAX_RESPONSE_BYTES`
|
|
149
|
+
- `DEPVERDICT_AI_DEBUG`
|
|
150
|
+
|
|
151
|
+
Each maps one-to-one to the corresponding `UPGRADELENS_*` legacy variable.
|
|
152
|
+
|
|
153
|
+
Resolution precedence is:
|
|
154
|
+
|
|
155
|
+
1. explicit programmatic or CLI override;
|
|
156
|
+
2. canonical `DEPVERDICT_*` environment variable;
|
|
157
|
+
3. legacy `UPGRADELENS_*` environment variable;
|
|
158
|
+
4. established default.
|
|
159
|
+
|
|
160
|
+
When both mapped environment variables are present, the canonical value wins.
|
|
161
|
+
The runtime emits one bounded conflict diagnostic naming variable keys only.
|
|
162
|
+
When only a legacy variable is used, the runtime emits one bounded deprecation
|
|
163
|
+
diagnostic naming the key only.
|
|
164
|
+
|
|
165
|
+
Diagnostics must never print values. This is mandatory for
|
|
166
|
+
`*_AUTHORIZATION` and applies uniformly to every mapping. Unknown variables
|
|
167
|
+
under either prefix are ignored.
|
|
168
|
+
|
|
169
|
+
Injected environment objects are closed worlds: passing `{}` must not fall
|
|
170
|
+
through to `process.env`.
|
|
171
|
+
|
|
172
|
+
## 8. Diagnostic contract
|
|
173
|
+
|
|
174
|
+
Compatibility diagnostics go to stderr and never alter structured stdout.
|
|
175
|
+
Diagnostic emission is bounded within one invocation:
|
|
176
|
+
|
|
177
|
+
- one legacy-executable warning;
|
|
178
|
+
- at most one warning per mapped environment key;
|
|
179
|
+
- at most one artifact-root diagnostic per resolved input chain.
|
|
180
|
+
|
|
181
|
+
Diagnostics contain stable codes where programmatic interpretation is useful
|
|
182
|
+
and do not include absolute paths, environment values, authorization material,
|
|
183
|
+
or artifact contents.
|
|
184
|
+
|
|
185
|
+
## 9. Programmatic API contract
|
|
186
|
+
|
|
187
|
+
Existing public exports remain stable for this preview. Compatibility helpers
|
|
188
|
+
are internal implementation details unless separately promoted through a
|
|
189
|
+
future public-API decision.
|
|
190
|
+
|
|
191
|
+
Programmatic calls to `runCli` default to canonical invocation identity and do
|
|
192
|
+
not receive a legacy-executable warning. Tests and embedders may explicitly
|
|
193
|
+
provide invocation identity and isolated diagnostic state.
|
|
194
|
+
|
|
195
|
+
Existing loader return shapes and validation behavior remain unchanged except
|
|
196
|
+
for the documented automatic selection of a complete legacy artifact chain.
|
|
197
|
+
|
|
198
|
+
## 10. Qualification and evidence contract
|
|
199
|
+
|
|
200
|
+
Provider qualification does not become valid merely because the product was
|
|
201
|
+
renamed. The existing provider, endpoint, model, schema, prompt, policy, and
|
|
202
|
+
test-vector identity fields remain the qualification authority.
|
|
203
|
+
|
|
204
|
+
For an implicit default qualification path, canonical storage wins and a
|
|
205
|
+
complete legacy record may be used as fallback. An explicit qualification path
|
|
206
|
+
never falls back elsewhere. A malformed or mismatched selected record fails
|
|
207
|
+
closed; the resolver does not search another root for a more favorable answer.
|
|
208
|
+
|
|
209
|
+
## 11. Packaging and CI contract
|
|
210
|
+
|
|
211
|
+
The package-content guard must inspect the actual packed tarball and require
|
|
212
|
+
both executable files. Existing protections against captures, credentials,
|
|
213
|
+
local artifacts, and repository-only material remain active.
|
|
214
|
+
|
|
215
|
+
Package smoke verification must install the packed scoped package, invoke both
|
|
216
|
+
executables, verify canonical programmatic import, and confirm:
|
|
217
|
+
|
|
218
|
+
- canonical help/version output presents DepVerdict;
|
|
219
|
+
- the canonical executable has clean stderr for ordinary help/version calls;
|
|
220
|
+
- the legacy executable emits only its bounded warning;
|
|
221
|
+
- package export shape remains compatible;
|
|
222
|
+
- no publish or registry mutation occurs.
|
|
223
|
+
|
|
224
|
+
Hosted CI keeps read-only permissions, tests supported Node versions, and
|
|
225
|
+
sanitizes both canonical and legacy environment prefixes.
|
|
226
|
+
|
|
227
|
+
No repository rename, tag creation, commit, push, npm publish, or dist-tag
|
|
228
|
+
mutation is authorized by this decision.
|
|
229
|
+
|
|
230
|
+
## 12. Brand preflight
|
|
231
|
+
|
|
232
|
+
The required pre-implementation preflight ran at `2026-07-19T08:05:34Z`.
|
|
233
|
+
Exact-name checks found no direct collision for DepVerdict on npm, GitHub
|
|
234
|
+
repository search, PyPI, RubyGems, or the local executable path. General web
|
|
235
|
+
queries also returned no exact software or company result.
|
|
236
|
+
|
|
237
|
+
Crates.io returned an access denial, and unauthenticated GitHub code search was
|
|
238
|
+
unavailable, so those checks are recorded as unverified rather than clear.
|
|
239
|
+
Domain RDAP responses are only weak availability signals.
|
|
240
|
+
|
|
241
|
+
Classification: `BRAND_PREFLIGHT_CLEAR_WITH_LOW_RISK`.
|
|
242
|
+
|
|
243
|
+
This classification is time-sensitive, is not a reservation, and is not a
|
|
244
|
+
legal or trademark clearance.
|
|
245
|
+
|
|
246
|
+
## 13. Legacy compatibility removal criteria
|
|
247
|
+
|
|
248
|
+
The legacy CLI, environment mappings, and artifact fallback may be removed only
|
|
249
|
+
after all of the following are true:
|
|
250
|
+
|
|
251
|
+
- the complete `0.6.x` preview compatibility window has shipped;
|
|
252
|
+
- canonical CLI, environment, and artifact-root usage is documented in the
|
|
253
|
+
repository/community migration;
|
|
254
|
+
- telemetry-free evidence available to the project, such as issue reports and
|
|
255
|
+
preview feedback, reveals no unresolved Blocker or High migration defect;
|
|
256
|
+
- removal is announced in release notes before or with the removing release;
|
|
257
|
+
- the removing release includes an explicit breaking-change decision, focused
|
|
258
|
+
tests, and migration guidance;
|
|
259
|
+
- historical `.upgradelens/` artifacts remain readable by a documented retained
|
|
260
|
+
release even if a future major removes automatic fallback.
|
|
261
|
+
|
|
262
|
+
Calendar time alone is not a removal criterion. DIFF-02 does not authorize the
|
|
263
|
+
removal.
|
|
264
|
+
|
|
265
|
+
## Consequences
|
|
266
|
+
|
|
267
|
+
DepVerdict becomes the only canonical identity for new runtime use while one
|
|
268
|
+
bounded compatibility window protects existing automation and persisted
|
|
269
|
+
evidence. The implementation accepts some deliberate dual naming internally:
|
|
270
|
+
DepVerdict for the product, and UpgradeLens for unchanged artifact protocols.
|
|
271
|
+
|
|
272
|
+
Repository naming, broad documentation replacement, community-template
|
|
273
|
+
migration, release publication, and removal scheduling remain work for later
|
|
274
|
+
gates.
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
# DIFF-03 — Repository, Documentation, and Community Identity Migration
|
|
2
|
+
|
|
3
|
+
- Status: Accepted for implementation
|
|
4
|
+
- Date: 2026-07-19
|
|
5
|
+
- Scope: `0.6.0-alpha.1`
|
|
6
|
+
- Product identity: DepVerdict
|
|
7
|
+
- Repository at the DIFF-03 implementation checkpoint: `thomasMinh1995/UpgradeLens`
|
|
8
|
+
- Current canonical repository: `thomasMinh1995/DepVerdict`
|
|
9
|
+
- Post-rename status updated: 2026-07-19
|
|
10
|
+
|
|
11
|
+
## Context and two-phase boundary
|
|
12
|
+
|
|
13
|
+
DIFF-02 established the DepVerdict package, executable, artifact-root, and
|
|
14
|
+
environment identities. DIFF-03 originally made the repository experience use
|
|
15
|
+
that identity before the separate GitHub rename. The rename has since completed:
|
|
16
|
+
`https://github.com/thomasMinh1995/DepVerdict` is canonical. The former URL is
|
|
17
|
+
retained only as historical truth, migration explanation, and a redirect
|
|
18
|
+
compatibility aid. npm publication, runtime compatibility, and historical evidence
|
|
19
|
+
remain separate boundaries.
|
|
20
|
+
|
|
21
|
+
## 1. Normative and historical ownership
|
|
22
|
+
|
|
23
|
+
Each old-name reference is assigned one ownership class before editing:
|
|
24
|
+
|
|
25
|
+
| Class | Ownership and migration rule |
|
|
26
|
+
| --- | --- |
|
|
27
|
+
| `CURRENT_NORMATIVE` | Describes the current product or contributor workflow; migrate to DepVerdict. |
|
|
28
|
+
| `CURRENT_COMPATIBILITY_DOCUMENTATION` | Keep the old identity only while explaining the bounded `0.6.x` compatibility window. |
|
|
29
|
+
| `HISTORICAL_RECORD` | Preserve the name, command, version, path, URL, and result that were true when the record was produced. |
|
|
30
|
+
| `VERSIONED_ARCHITECTURE_RECORD` | Preserve when it defines a completed version or milestone; current operational documents may receive a narrowly scoped migration note or canonical example update. |
|
|
31
|
+
| `TEST_FIXTURE_ASSERTION` | Preserve when it protects schema, protocol, compatibility, or historical behavior. |
|
|
32
|
+
| `RUNTIME_IDENTITY_ALREADY_MIGRATED` | Do not change except to keep current documentation and checks aligned with DIFF-02. |
|
|
33
|
+
| `EXTERNAL_PROJECT_REFERENCE` | Preserve the external project's actual identity and comparison evidence. |
|
|
34
|
+
| `UNRELATED_TEXT` | Leave unchanged. |
|
|
35
|
+
|
|
36
|
+
Current normative owners include the root README and community policies, current
|
|
37
|
+
issue and pull-request templates, current operational documentation, the current
|
|
38
|
+
Technical Preview sample, package-facing metadata, and workflow presentation.
|
|
39
|
+
Milestone reports under `docs/reviews/`, RR/MP/MVP/OSS reports, capture evidence,
|
|
40
|
+
and `docs/releases/v0.5.0-technical-preview.md` remain historical records.
|
|
41
|
+
|
|
42
|
+
## 2. Product-name migration rule
|
|
43
|
+
|
|
44
|
+
Current prose uses **DepVerdict**. Canonical examples use:
|
|
45
|
+
|
|
46
|
+
- package `@thomasminh1995/depverdict`;
|
|
47
|
+
- executable `depverdict`;
|
|
48
|
+
- artifact root `.depverdict/`;
|
|
49
|
+
- environment prefix `DEPVERDICT_*`.
|
|
50
|
+
|
|
51
|
+
The old executable, artifact root, and environment prefix appear in current
|
|
52
|
+
material only to document compatibility or a verified transition route. The
|
|
53
|
+
persisted protocol identifier `generator.name: "UpgradeLens"`, schema names,
|
|
54
|
+
task IDs, reason codes, qualification identities, and old fixtures remain
|
|
55
|
+
unchanged under the DIFF-02 compatibility contract.
|
|
56
|
+
|
|
57
|
+
## 3. Live repository URL rule
|
|
58
|
+
|
|
59
|
+
After the completed manual rename:
|
|
60
|
+
|
|
61
|
+
- relative links remain preferred for repository files;
|
|
62
|
+
- clone, issue, metadata, badge, and security URLs use the canonical
|
|
63
|
+
`thomasMinh1995/DepVerdict` route;
|
|
64
|
+
- the former `thomasMinh1995/UpgradeLens` route may appear only in historical or
|
|
65
|
+
migration context.
|
|
66
|
+
|
|
67
|
+
GitHub redirects are a continuity aid, not the permanent documentation strategy.
|
|
68
|
+
|
|
69
|
+
## 4. Security advisory URL rule
|
|
70
|
+
|
|
71
|
+
Vulnerability reports use:
|
|
72
|
+
|
|
73
|
+
`https://github.com/thomasMinh1995/DepVerdict/security/advisories/new`
|
|
74
|
+
|
|
75
|
+
This canonical private route remains in `SECURITY.md` and the issue-form
|
|
76
|
+
configuration. No vulnerability report is routed through a public issue.
|
|
77
|
+
|
|
78
|
+
## 5. Conduct contact strategy
|
|
79
|
+
|
|
80
|
+
Decision: `KEEP_VERIFIED_LEGACY_CONTACT_FOR_ONE_PREVIEW`.
|
|
81
|
+
|
|
82
|
+
`upgradelens.conduct@gmail.com` remains the verified private conduct channel for
|
|
83
|
+
the DepVerdict community during the `0.6.x` preview transition. It is not described
|
|
84
|
+
as deprecated because no replacement exists and has been tested. A maintainer may
|
|
85
|
+
later create and verify a DepVerdict-named contact; documentation changes only
|
|
86
|
+
after that channel is proven usable. No new email is invented by this migration.
|
|
87
|
+
|
|
88
|
+
## 6. README, CLI, package, and installation contract
|
|
89
|
+
|
|
90
|
+
The README must:
|
|
91
|
+
|
|
92
|
+
- identify DepVerdict as a decision-first CLI for evidence-bounded dependency
|
|
93
|
+
upgrade analysis and visibly label it Public Technical Preview / Alpha;
|
|
94
|
+
- distinguish target availability from a recommendation;
|
|
95
|
+
- show `depverdict analyze .`, `--offline`, `--fail-on-incomplete`, and exact
|
|
96
|
+
supported target-selector examples;
|
|
97
|
+
- describe deterministic decisions, coverage-aware impact, evidence-bounded
|
|
98
|
+
handoff, and mandatory human review;
|
|
99
|
+
- state that source is not modified and suggested verification commands are not
|
|
100
|
+
executed;
|
|
101
|
+
- keep Migration Checklist experimental and opt-in;
|
|
102
|
+
- explain model/provider qualification as identity-specific and describe offline
|
|
103
|
+
limitations.
|
|
104
|
+
|
|
105
|
+
The planned npm command is
|
|
106
|
+
`npm install -g @thomasminh1995/depverdict@preview`. It must remain explicitly
|
|
107
|
+
pre-publication until distribution qualification confirms the preview exists.
|
|
108
|
+
Source setup uses the canonical DepVerdict clone URL and
|
|
109
|
+
`node ./bin/depverdict.js`.
|
|
110
|
+
|
|
111
|
+
## 7. Legacy compatibility window
|
|
112
|
+
|
|
113
|
+
The `upgradelens` executable, `.upgradelens/` read fallback, and
|
|
114
|
+
`UPGRADELENS_*` environment fallback remain for one bounded `0.6.x` preview
|
|
115
|
+
window. Canonical values win conflicts and legacy use warns without printing
|
|
116
|
+
values. The migration guide must state that removal requires a separate decision
|
|
117
|
+
and release note; the window is not an indefinite support promise.
|
|
118
|
+
|
|
119
|
+
## 8. Release and version ownership
|
|
120
|
+
|
|
121
|
+
`docs/releases/v0.5.0-technical-preview.md` remains an immutable UpgradeLens
|
|
122
|
+
historical release record. The current preview is owned by
|
|
123
|
+
`docs/releases/v0.6.0-alpha.1-depverdict-preview.md`. The new file is a release
|
|
124
|
+
draft, does not claim npm availability or `latest`, and does not claim autonomous
|
|
125
|
+
migration.
|
|
126
|
+
|
|
127
|
+
## 9. Badge and workflow-link strategy
|
|
128
|
+
|
|
129
|
+
Workflow display text uses DepVerdict. Any README workflow badge uses the
|
|
130
|
+
canonical repository URL. No npm badge is shown until a preview package has
|
|
131
|
+
actually been published. Hosted CI must be rerun at the exact post-remediation
|
|
132
|
+
commit.
|
|
133
|
+
|
|
134
|
+
## 10. Package boundary
|
|
135
|
+
|
|
136
|
+
The migration guide, this decision, the current release draft, current operational
|
|
137
|
+
documentation, and the DIFF-03 report are intentionally package-visible under the
|
|
138
|
+
existing `docs` allowlist. Community `.github/` files and the repository-only
|
|
139
|
+
sample remain excluded. Package guard required assets will include the current
|
|
140
|
+
migration decision and guide without treating a total tarball file count as a
|
|
141
|
+
business invariant.
|
|
142
|
+
|
|
143
|
+
Generated `.depverdict/` and `.upgradelens/` trees, RR02 captures, credentials,
|
|
144
|
+
environment files, duplicate/copy artifacts, and private qualification data remain
|
|
145
|
+
forbidden package content.
|
|
146
|
+
|
|
147
|
+
## 11. Post-rename manual checklist
|
|
148
|
+
|
|
149
|
+
Post-rename status:
|
|
150
|
+
|
|
151
|
+
1. GitHub repository rename, canonical origin, former-URL redirect, pull requests,
|
|
152
|
+
issues, Releases, Actions history, branch settings, and Private Vulnerability
|
|
153
|
+
Reporting were externally verified by DIFF-04.
|
|
154
|
+
2. `package.json`, clone examples, advisory routes, current release/migration
|
|
155
|
+
status, and identity tests are remediated by DIFF-04-FIX.
|
|
156
|
+
3. Historical GitHub Release presentation was remediated by the explicitly
|
|
157
|
+
approved DIFF-04-FIX live metadata edit.
|
|
158
|
+
4. Identity checks, link checks, package guard, clean-install smoke, and hosted CI
|
|
159
|
+
must run on the exact post-remediation commit/configuration.
|
|
160
|
+
|
|
161
|
+
The verified conduct address remains unchanged until a separately created
|
|
162
|
+
DepVerdict address has been tested. Removal of the UpgradeLens compatibility
|
|
163
|
+
identity requires the end of the documented preview window, usage review, a
|
|
164
|
+
separate compatibility decision, release notes, passing canonical-only tests, and
|
|
165
|
+
no remaining supported consumer dependency on the legacy interfaces.
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
# DIFF-04 — Historical release evidence-gap acceptance
|
|
2
|
+
|
|
3
|
+
- Status: `ACCEPTED`
|
|
4
|
+
- Scope: one-time UpgradeLens-to-DepVerdict GitHub Release presentation repair
|
|
5
|
+
- Baseline collected: 2026-07-19T10:42:43Z
|
|
6
|
+
- Maintainer approval recorded: 2026-07-19T11:18:54Z
|
|
7
|
+
- Canonical repository: `thomasMinh1995/DepVerdict`
|
|
8
|
+
|
|
9
|
+
## Decision boundary
|
|
10
|
+
|
|
11
|
+
A complete release-ID, state, timestamp, and asset inventory was not retained
|
|
12
|
+
before the repository rename and release-title edits. That missing before-state
|
|
13
|
+
cannot be recreated retrospectively and must not be described as proven.
|
|
14
|
+
|
|
15
|
+
The retained evidence and current read-only checks support a bounded repair:
|
|
16
|
+
|
|
17
|
+
- all five annotated remote tag objects and peeled commits match local refs;
|
|
18
|
+
- the retained DIFF-01 snapshot independently proves continuity for the
|
|
19
|
+
`v0.5.0` tag object and peeled commit;
|
|
20
|
+
- the retained DIFF-01 snapshot and current API agree on the `v0.5.0` published
|
|
21
|
+
timestamp and non-draft/non-prerelease state;
|
|
22
|
+
- all five current releases have zero assets;
|
|
23
|
+
- no evidence reviewed conflicts with the current tags or release targets.
|
|
24
|
+
|
|
25
|
+
This record does **not** claim that assets never existed, never changed, or were
|
|
26
|
+
never removed. It does **not** prove before-state release IDs, titles, bodies,
|
|
27
|
+
states, timestamps, or assets where no retained evidence exists.
|
|
28
|
+
|
|
29
|
+
## Invariant classification
|
|
30
|
+
|
|
31
|
+
| Invariant | Classification | Evidence |
|
|
32
|
+
| --- | --- | --- |
|
|
33
|
+
| `v0.5.0` tag object and peeled target continuity | `PROVEN` | DIFF-01 retained object `4750606ca85f990ee69d60ab4673caca5fbfb89b` and target `74d57344db254d0109ea951dc7c44853cdad9be0`; current local and remote refs match. |
|
|
34
|
+
| `v0.1.1`–`v0.4.0` current tag objects and peeled targets | `SUPPORTED_BY_CURRENT_STATE_ONLY` | Current local and remote refs match; no complete retained pre-rename ref inventory was found. |
|
|
35
|
+
| `v0.5.0` published timestamp and draft/prerelease state | `PROVEN` | DIFF-01 and current GitHub API agree on `2026-07-19T02:56:50Z`, draft false, prerelease false. |
|
|
36
|
+
| Earlier release IDs/states/timestamps before rename | `UNKNOWN_BEFORE_STATE` | Current API supplies values, but no complete retained before-state inventory was found. |
|
|
37
|
+
| Release asset state before rename | `UNKNOWN_BEFORE_STATE` | No retained asset IDs, names, sizes, digests, or explicit zero-asset inventory was found. |
|
|
38
|
+
| Current absence of release assets | `SUPPORTED_BY_CURRENT_STATE_ONLY` | Current GitHub API reports zero assets for all five releases. |
|
|
39
|
+
| Conflicting tag/target/asset evidence | `SUPPORTED_BY_CURRENT_STATE_ONLY` | No conflict was found in retained records, Git history, current refs, or current API state. |
|
|
40
|
+
|
|
41
|
+
## Maintainer acceptance
|
|
42
|
+
|
|
43
|
+
The maintainer explicitly accepted both the five-release metadata plan and this
|
|
44
|
+
bounded evidence-gap statement in the DIFF-04-FIX Codex task. Approval covered
|
|
45
|
+
only the approved titles and bodies. No credential was included in or retained by
|
|
46
|
+
the approval record.
|
|
47
|
+
|
|
48
|
+
## Pre-edit release baseline
|
|
49
|
+
|
|
50
|
+
This table is the mandatory baseline for all future release mutations. API
|
|
51
|
+
`target_commitish` currently reports `main`; the immutable target values below are
|
|
52
|
+
the peeled Git tag commits.
|
|
53
|
+
|
|
54
|
+
| ID | Tag | Tag object | Peeled commit | Draft / prerelease | Created / published / updated (UTC) | Assets |
|
|
55
|
+
| ---: | --- | --- | --- | --- | --- | ---: |
|
|
56
|
+
| `353312307` | `v0.1.1` | `5716a6f8d00119d106487830c37b37957b171919` | `95cd3025c27d2c4d8e97f711625541ee0da7dbc0` | false / false | `2026-07-13T17:10:16Z` / `17:16:09Z` / `2026-07-19T10:08:01Z` | 0 |
|
|
57
|
+
| `353747096` | `v0.2.0` | `2b82aae4ce49184175c2eb13a421610ca1c31a9a` | `411c9e6216d9476b48d72311c9163b2a563d1e60` | false / false | `2026-07-14T11:12:11Z` / `11:22:02Z` / `2026-07-19T10:08:52Z` | 0 |
|
|
58
|
+
| `354822066` | `v0.3.0` | `4849f78a594f468cdcfa45151498168869685a55` | `8fea8ec5b06dd6c85a0f600be1d566d65ef2c7a2` | false / false | `2026-07-16T01:40:55Z` / `01:43:27Z` / `2026-07-19T10:09:10Z` | 0 |
|
|
59
|
+
| `355150303` | `v0.4.0` | `6c7983000468d53704eeaf00bb9dd98c6d2e638a` | `734be0b9395b0bd74454badc010e4df237319cc3` | false / false | `2026-07-16T14:33:06Z` / `14:35:09Z` / `2026-07-19T10:09:31Z` | 0 |
|
|
60
|
+
| `356244177` | `v0.5.0` | `4750606ca85f990ee69d60ab4673caca5fbfb89b` | `74d57344db254d0109ea951dc7c44853cdad9be0` | false / false | `2026-07-19T02:55:33Z` / `02:56:50Z` / `2026-07-19T09:43:20Z` | 0 |
|
|
61
|
+
|
|
62
|
+
## Exact approved-operation candidate
|
|
63
|
+
|
|
64
|
+
Every body receives this exact prefix:
|
|
65
|
+
|
|
66
|
+
```markdown
|
|
67
|
+
> **Project rename:** This release was originally published under the
|
|
68
|
+
> **UpgradeLens** name. The project is now **DepVerdict**:
|
|
69
|
+
> https://github.com/thomasMinh1995/DepVerdict
|
|
70
|
+
>
|
|
71
|
+
> This historical release remains associated with its original tag and commit.
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
After the prefix and one blank line, the current body is preserved with each
|
|
75
|
+
body-local `DepVerdict` product-name token changed to `UpgradeLens`. No claim,
|
|
76
|
+
section, tag, target, state, timestamp, or asset is otherwise changed.
|
|
77
|
+
|
|
78
|
+
| ID / tag | Before title | Approved candidate title | Before body SHA-256 / bytes | Candidate body SHA-256 / bytes | Product-name replacements |
|
|
79
|
+
| --- | --- | --- | --- | --- | ---: |
|
|
80
|
+
| `353312307` / `v0.1.1` | `DepVerdict v0.1.1 — MVP-01 Project Discovery Foundation` | `UpgradeLens v0.1.1 — MVP-01 Project Discovery Foundation` | `72c80ae81fe4432ae5c5c19f5a88db7ed3ce114a879e763bb628c2758b0025dd` / 1963 | `17c9f1ece26eb1f6af20fb438b800d0cd74f3117aea979566ebb5b16b11c28e1` / 2227 | 6 |
|
|
81
|
+
| `353747096` / `v0.2.0` | `DepVerdict v0.2.0 — Knowledge Research` | `UpgradeLens v0.2.0 — Knowledge Research` | `357a718be404db84510663d485a59d95a9670028f2be77b60de9900e6ecc3080` / 4319 | `32af0823ca8199a5c041b48ceb4b126d9a0cdec369128463f4da5e9d2d560411` / 4588 | 11 |
|
|
82
|
+
| `354822066` / `v0.3.0` | `DepVerdict v0.3.0 — AI Version Analysis` | `UpgradeLens v0.3.0 — AI Version Analysis` | `6efaeca1fa7b38601e3cb1d1eee984740b36f7ae2da06093fb211f7815da2bfc` / 565 | `8b264cb667a555c392f9e688e49fbf91e8145beec19ef76d2b4edb5c1eef7262` / 823 | 0 |
|
|
83
|
+
| `355150303` / `v0.4.0` | `DepVerdict v0.4.0 — Repository Impact Analytics` | `UpgradeLens v0.4.0 — Repository Impact Analytics` | `83a35b7972090f6d0e6a54db6026b605875430109071d3be56d8ef8aa89cd0a5` / 1075 | `b71c108f31b1cb31d331cb89bda5fd5aec8fa63ca857d3b86825cd69c3383ff3` / 1335 | 2 |
|
|
84
|
+
| `356244177` / `v0.5.0` | `DepVerdict v0.5.0 — Evidence-Bounded Migration Planning` | `UpgradeLens v0.5.0 — Evidence-Bounded Migration Planning` | `e06386beb973627f65ab9190415eff7577e3da6f986e370eac96f68e2e0a2f44` / 731 | `0d556e775bff4c27e16b0090b1203d4d09567d0c3e3d8b28ce353cee16e54eba` / 990 | 1 |
|
|
85
|
+
|
|
86
|
+
The maintainer approved these five release IDs, titles, body transformation, and
|
|
87
|
+
the bounded evidence-gap statement. All five approved edits completed.
|
|
88
|
+
|
|
89
|
+
## Post-edit release baseline
|
|
90
|
+
|
|
91
|
+
Read-only GitHub API and remote-ref verification completed after the approved
|
|
92
|
+
edits. Release ID, tag, `target_commitish`, annotated tag object, peeled commit,
|
|
93
|
+
draft/prerelease state, created/published timestamps, and asset arrays are
|
|
94
|
+
unchanged. GitHub changed the API-managed `updated_at` timestamp when each
|
|
95
|
+
title/body changed; that field was not supplied in any PATCH payload.
|
|
96
|
+
|
|
97
|
+
| ID / tag | Current title | Body SHA-256 | Updated at (UTC) | Assets |
|
|
98
|
+
| --- | --- | --- | --- | ---: |
|
|
99
|
+
| `353312307` / `v0.1.1` | `UpgradeLens v0.1.1 — MVP-01 Project Discovery Foundation` | `17c9f1ece26eb1f6af20fb438b800d0cd74f3117aea979566ebb5b16b11c28e1` | `2026-07-19T11:17:07Z` | 0 |
|
|
100
|
+
| `353747096` / `v0.2.0` | `UpgradeLens v0.2.0 — Knowledge Research` | `32af0823ca8199a5c041b48ceb4b126d9a0cdec369128463f4da5e9d2d560411` | `2026-07-19T11:17:46Z` | 0 |
|
|
101
|
+
| `354822066` / `v0.3.0` | `UpgradeLens v0.3.0 — AI Version Analysis` | `8b264cb667a555c392f9e688e49fbf91e8145beec19ef76d2b4edb5c1eef7262` | `2026-07-19T11:17:47Z` | 0 |
|
|
102
|
+
| `355150303` / `v0.4.0` | `UpgradeLens v0.4.0 — Repository Impact Analytics` | `b71c108f31b1cb31d331cb89bda5fd5aec8fa63ca857d3b86825cd69c3383ff3` | `2026-07-19T11:17:48Z` | 0 |
|
|
103
|
+
| `356244177` / `v0.5.0` | `UpgradeLens v0.5.0 — Evidence-Bounded Migration Planning` | `0d556e775bff4c27e16b0090b1203d4d09567d0c3e3d8b28ce353cee16e54eba` | `2026-07-19T11:17:48Z` | 0 |
|
|
104
|
+
|
|
105
|
+
## Future mutation rule
|
|
106
|
+
|
|
107
|
+
Before every future GitHub Release mutation, capture release ID, tag, tag object,
|
|
108
|
+
peeled target, title/body digest, draft/prerelease state, timestamps, and complete
|
|
109
|
+
asset ID/name/size/digest inventory. After the mutation, recapture and compare the
|
|
110
|
+
same fields. Unexpected changes fail closed.
|