@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,350 @@
|
|
|
1
|
+
# MVP-05 AI Migration Planning Discovery
|
|
2
|
+
|
|
3
|
+
## 1. Executive Summary
|
|
4
|
+
|
|
5
|
+
**Verdict: GO WITH REDUCED SCOPE.**
|
|
6
|
+
|
|
7
|
+
UpgradeLens hiện trả lời khá tốt câu hỏi “dependency nào có breaking change được dẫn chứng, và breaking change đó có trùng với symbol JavaScript/TypeScript đang dùng hay không?”. Hệ thống chưa trả lời được câu hỏi tiếp theo ở mức hữu dụng cho triển khai: “developer cần kiểm tra hoặc thay đổi gì, dựa trên hướng dẫn chính thức nào?”. Khoảng trống sản phẩm này là có thật và đủ giá trị để mở một MVP riêng.
|
|
8
|
+
|
|
9
|
+
Tuy nhiên, implementation hiện tại chưa đủ dữ liệu cho **AI Migration Planning đầy đủ**. `Version Analysis` chỉ lưu finding dạng free text, không có `affectedSymbols`, replacement API, prerequisite hoặc migration action có cấu trúc ([`AI_VERSION_ANALYSIS_CANDIDATE_SCHEMA`](../../src/ai-version-analysis.js#L39), [`finding`](../../schemas/version-analysis.schema.json#L239)). `Repository Impact` suy ra symbol bằng exact lexical match trên chính free-text summary và chỉ trả vị trí ở mức file ([`matchFindingToUsage`](../../src/impact/matcher.js#L26), [`symbolMatch`](../../schemas/repository-impact.schema.json#L105)). VinGrade validation cũng cho thấy 42 kết quả có risk `unknown`, 46/47 occurrences cần human review, Python chưa có Usage Analyzer, và positive `IMPACTED` path chưa được kiểm chứng bằng real-provider output ([`docs/IA-05-Real-Provider-Validation.md`](../IA-05-Real-Provider-Validation.md#L113)).
|
|
10
|
+
|
|
11
|
+
MVP được khuyến nghị là **Evidence-Grounded Migration Checklist**, không phải autonomous plan. Deterministic code phải quyết định eligibility, join artifact, giữ identity/version/status, chọn refs hợp lệ, copy symbol/file đã xác nhận và fail closed. AI chỉ được viết lại hoặc nhóm những hướng dẫn migration đã tồn tại trong selected official/publisher evidence thành checklist draft có step-level references. Mọi AI-authored step bắt buộc human review.
|
|
12
|
+
|
|
13
|
+
Không nên hỗ trợ trong MVP này: dependency upgrade ordering, inferred prerequisites, generated code examples, patches, rollback plans, effort estimates, numeric confidence hoặc tuyên bố `NOT_IMPACTED` đồng nghĩa với “safe to upgrade”.
|
|
14
|
+
|
|
15
|
+
**MP-01 có thể bắt đầu ngay** để định nghĩa contract và grounding policy. Chưa nên bắt đầu generator trước khi contract, eligibility rules và task-specific evaluation gates được chốt.
|
|
16
|
+
|
|
17
|
+
## 2. Current UpgradeLens Capabilities
|
|
18
|
+
|
|
19
|
+
### 2.1 Capability thực tế
|
|
20
|
+
|
|
21
|
+
| Câu hỏi | Trạng thái | Bằng chứng implementation | Giới hạn tin cậy |
|
|
22
|
+
| --- | --- | --- | --- |
|
|
23
|
+
| Dependency nào có breaking change? | **Đã hoạt động** cho occurrence đủ baseline, target và evidence | [`analyzeDependencyAiContext`](../../src/ai-version-analysis.js#L393) gọi provider-neutral runtime; finding taxonomy có `breakingChange`, `deprecation`, `compatibility` trong [`AI_VERSION_ANALYSIS_CANDIDATE_SCHEMA`](../../src/ai-version-analysis.js#L39). | Finding là AI inference dạng free text. Missing baseline/target/evidence tạo `skipped`, không tạo claim. Range declaration thường để delta/risk `unknown`. |
|
|
24
|
+
| Breaking change dựa trên evidence nào? | **Đã hoạt động ở mức reference/provenance** | Mỗi finding có `evidenceRefs`; [`trustValidateAiVersionAnalysisCandidate`](../../src/ai-version-analysis.js#L250) allowlist selected evidence IDs, loại finding không còn ref hợp lệ và chặn URL ngoài context. Public result giữ evidence metadata trong [`version-analysis.schema.json`](../../schemas/version-analysis.schema.json#L207). | Ref hợp lệ chứng minh source đã được chọn, chưa chứng minh semantic entailment. Existing `unsupportedClaimRate` chỉ là proxy dựa trên `CLAIMS_DROPPED`, không phải entailment proof ([`metricsFromReport`](../../src/metrics-engine.js#L111), [`ai-runtime-governance-discovery.md`](../ai-runtime-governance-discovery.md#L395)). |
|
|
25
|
+
| Dependency/symbol có được dùng trong repository không? | **Đã hoạt động cho JS/TS; chưa tồn tại cho Python/Java/Go/Rust** | Plugin registry dispatch theo ecosystem/extension trong [`createUsageAnalyzerRegistry`](../../src/usage/analyzer-registry.js#L29). Default registry chỉ đăng ký [`createJavaScriptUsageAnalyzer`](../../src/usage/runtime.js#L40). JS analyzer theo dõi binding references, shadowing, re-export và dynamic import trong [`analyzeJavaScriptUsage`](../../src/usage/js/analyzer.js#L180). | “Không có trong Usage Index” không phải repository-wide proof khi project/language chưa có analyzer. VinGrade xác nhận `DEPENDENCY_NOT_USED` sai về lý do đối với một số Python package dù kết luận sampled non-impact tình cờ đúng ([`IA-05`](../IA-05-Real-Provider-Validation.md#L154)). |
|
|
26
|
+
| File/vị trí nào có khả năng bị ảnh hưởng? | **Đã hoạt động nhưng chỉ là candidate file** | [`matchFindingToUsage`](../../src/impact/matcher.js#L26) exact-match symbol trong finding summary với Usage Index; Impact Evidence trả `matchedSymbols[].usages[].file` trong [`repository-impact-evidence.schema.json`](../../schemas/repository-impact-evidence.schema.json#L118). | Không có line, call site, member chain đầy đủ, snippet hay data/control flow. File chỉ là nơi imported symbol có reference; không chứng minh code path thực tế bị breaking change tác động. |
|
|
27
|
+
| Kết quả skipped có bị trình bày như non-impact không? | **Đã hoạt động ở presentation layer** | [`impactStatus`](../../src/renderers/impact-presentation.js#L94) đổi mọi version result khác `analyzed` thành `NOT_ANALYZED`; view model đánh dấu run `INCOMPLETE` nếu có kết quả này ([`buildImpactPresentationViewModel`](../../src/renderers/impact-presentation.js#L117)). | `Repository Impact Evidence` nội bộ vẫn có reason `DEPENDENCY_NOT_USED` khi không có usage record; consumer mới phải join Version Analysis status, không được đọc reason code đơn lẻ. |
|
|
28
|
+
| Hệ thống đã đưa ra migration action cụ thể chưa? | **Chưa tồn tại** | Prompt hiện cấm migration plan ([`buildVersionAnalysisPrompt`](../../src/ai-version-analysis.js#L219)); `nextAction` chỉ là enum điều hướng coarse-grained như `collectEvidence`, `reviewBeforeImpactAnalysis` ([`version-analysis.schema.json`](../../schemas/version-analysis.schema.json#L349)); Markdown report chỉ render status, finding, reason, symbol và file ([`renderMarkdownReport`](../../src/renderers/markdown.js#L56)). | Không có action, prerequisite, replacement API, command, validation step, rollback hoặc plan artifact. |
|
|
29
|
+
|
|
30
|
+
### 2.2 Capability mới chỉ có contract hoặc architectural seam
|
|
31
|
+
|
|
32
|
+
- Provider-neutral `AiRuntime.generateStructured()` và stable task request shape đã có trong [`src/ai-runtime.js`](../../src/ai-runtime.js#L1). Đây là seam có thể reuse, không phải Migration Planning implementation.
|
|
33
|
+
- Usage Analyzer registry đã multi-language-ready về interface, nhưng default runtime chỉ có JS/TS analyzer. Các analyzer Python/Java/Go/Rust là **not evidenced in repository**.
|
|
34
|
+
- Knowledge Evidence có `migrationGuide` kind ([`knowledge-evidence-bundle.schema.json`](../../schemas/knowledge-evidence-bundle.schema.json#L91)), nhưng không có structured migration instruction contract.
|
|
35
|
+
- Governance documentation dự kiến task ID `migration-planning.v1`, nhưng task-specific schema, dataset, metrics và qualification chưa tồn tại; tài liệu tự đánh dấu MVP-05 chỉ là `EXPERIMENTAL` cho đến khi có chúng ([`ai-runtime-governance-discovery.md`](../ai-runtime-governance-discovery.md#L412)).
|
|
36
|
+
- README mô tả migration planning là hướng tương lai, không phải capability hiện hành. Fixed pipeline chỉ có bảy stage và kết thúc ở Markdown Report ([`ANALYSIS_STAGES`](../../src/orchestration/pipeline.js#L1)).
|
|
37
|
+
|
|
38
|
+
## 3. Product Gap
|
|
39
|
+
|
|
40
|
+
### 3.1 UpgradeLens đang trả lời “rủi ro gì?”
|
|
41
|
+
|
|
42
|
+
Với một occurrence đủ điều kiện, hệ thống có thể cung cấp:
|
|
43
|
+
|
|
44
|
+
1. declared/current/target facts và mức chắc chắn của baseline;
|
|
45
|
+
2. evidence-grounded release findings;
|
|
46
|
+
3. breaking findings còn sống sau trust validation;
|
|
47
|
+
4. exact lexical symbol match với JS/TS usage;
|
|
48
|
+
5. candidate files và lý do deterministic;
|
|
49
|
+
6. trạng thái `IMPACTED`, `NOT_IMPACTED` hoặc `NOT_ANALYZED` ở report layer.
|
|
50
|
+
|
|
51
|
+
### 3.2 Hệ thống chưa trả lời “developer làm gì tiếp theo?”
|
|
52
|
+
|
|
53
|
+
Các dữ liệu sau **not evidenced in repository** dưới dạng operational migration output:
|
|
54
|
+
|
|
55
|
+
- action được trích từ official guide cho từng finding;
|
|
56
|
+
- replacement API/configuration có cấu trúc;
|
|
57
|
+
- prerequisite và dependency graph để sắp xếp upgrade;
|
|
58
|
+
- câu lệnh build/test/validation đã xác minh;
|
|
59
|
+
- before/after code example phù hợp exact source/target version;
|
|
60
|
+
- rollback procedure gắn với deployment/package-manager state;
|
|
61
|
+
- effort estimate đã calibrated;
|
|
62
|
+
- completion/verification state cho từng step.
|
|
63
|
+
|
|
64
|
+
Khoảng trống này đủ lớn cho một MVP vì report hiện buộc developer tự quay lại source evidence, tự tìm action và tự chuyển finding thành checklist. Tuy nhiên, phần giá trị gần nhất không đòi hỏi một “planner” tự do: report có thể liên kết official evidence, deterministic logic có thể dựng skeleton, và AI chỉ cần chuyển official instructions thành draft checklist.
|
|
65
|
+
|
|
66
|
+
Vì vậy:
|
|
67
|
+
|
|
68
|
+
- chỉ cải thiện report/official links (phương án C) tạo giá trị nhanh nhưng vẫn để developer tự tổng hợp;
|
|
69
|
+
- full AI plan (phương án A) vượt xa độ sẵn sàng input;
|
|
70
|
+
- reduced checklist (phương án B) lấp đúng khoảng trống có thể kiểm chứng;
|
|
71
|
+
- upstream improvements (phương án D) vẫn cần song song trước khi mở rộng checklist thành full plan.
|
|
72
|
+
|
|
73
|
+
## 4. Input Artifact Readiness
|
|
74
|
+
|
|
75
|
+
### 4.1 Đánh giá từng artifact
|
|
76
|
+
|
|
77
|
+
| Artifact | Dữ liệu dùng được | Thiếu / nullable / unreliable | Fact, inference và lineage |
|
|
78
|
+
| --- | --- | --- | --- |
|
|
79
|
+
| `project-manifest.json` | Repository/project identity, ecosystem, languages, package manager, manifest, dependency type/name và declared version ([`project-manifest.schema.json`](../../schemas/project-manifest.schema.json#L121)). | `declaredVersion` nullable; không có installed/resolved version, dependency graph, scripts/test commands, runtime/deployment constraints hay transitive inventory. Lockfile chỉ có thể giúp detector nhận package manager, không được parse thành dependency baseline. | Chủ yếu deterministic source facts. Artifact có schema/invariants; là lineage root. |
|
|
80
|
+
| `knowledge-manifest.json` | Package identity, occurrences, registry-designated latest, release index, official/publisher sources, trust, freshness và conflicts ([`knowledge-manifest.schema.json`](../../schemas/knowledge-manifest.schema.json#L311), [`source`](../../schemas/knowledge-manifest.schema.json#L474)). | `latest` có thể null; publication/deprecation metadata nullable; chỉ npm/PyPI package contracts; không có structured migration action. `latest` là registry fact, không phải recommended target. | Registry/source facts với provenance. Knowledge input lineage truy về exact Project Manifest digest. |
|
|
81
|
+
| `knowledge-evidence-bundle.json` | Bounded text, kind gồm `migrationGuide`, content digest, locator, release versions và source ID ([`evidenceItem`](../../schemas/knowledge-evidence-bundle.schema.json#L102)). | Text có thể broad, unversioned hoặc thiếu action; không có structured API replacement, prerequisite, command, code block semantics hay section range. Source discovery là bounded heuristic: tối đa năm source candidates và có thể thử repository-head `CHANGELOG.md`/`MIGRATION.md` ([`src/evidence-source-adapter.js`](../../src/evidence-source-adapter.js#L9), [`discoverEvidenceSourceRequests`](../../src/evidence-source-adapter.js#L179)). | Content/provenance là fact; ý nghĩa migration cần extraction/inference. Bundle lineage có exact Knowledge Manifest digest/research ID, nhưng chưa có step-level consumer refs. |
|
|
82
|
+
| `version-analysis.json` | Occurrence identity, analysis status, baseline/target/delta, release findings, evidence refs, evidence metadata, coverage/validation/human-review state ([`result`](../../schemas/version-analysis.schema.json#L291)). | `currentVersion` và `targetVersion` nullable; range baseline tạo unknown delta; target mặc định là registry latest fact; finding thiếu `affectedSymbols`, replacement API, migration action và prerequisites. `affectedSymbols` là **not evidenced in repository**. | Dependency/version fields deterministic; summaries/findings/risk là AI inference đã qua syntactic/ref guardrails. Manifest lineage giữ exact Project/Knowledge/Evidence digests. |
|
|
83
|
+
| `usage-index.json` | Deterministic dependency → symbol → files, analyzer IDs, scan counts và warnings ([`buildUsageIndex`](../../src/usage/usage-index.js#L127)). | Không line number, span, snippet, usage kind, call graph hoặc full API/member path. Chỉ JS/TS analyzer tồn tại; analyzer metadata trong artifact không biểu diễn coverage theo từng project/language. | Positive usage record là static-analysis fact trong supported scope. Absence ngoài supported scope không phải non-use fact. Exact Project/Version digests được kiểm tra bởi [`loadUsageDiscoveryInputs`](../../src/usage/input-loader.js#L86). |
|
|
84
|
+
| `repository-impact.json` | Mọi breaking finding, impacted flag, exact matched symbol và candidate files; deterministic sorting/invariants ([`buildRepositoryImpact`](../../src/impact/repository-impact.js#L129)). | Chỉ xét `breakingChange`; loại `default`/`*`; matcher case-sensitive exact lexical search trên free-text summary. Finding impact không giữ Version Analysis `evidenceRefs`. Không có line/snippet hoặc semantic use proof. | `impacted` là deterministic **inference** từ lexical coincidence, không phải semantic fact. Input lineage khóa Project/Version/Usage digests. |
|
|
85
|
+
| `repository-impact-evidence.json` | Stable evidence ID cho mỗi impact finding, reason code, matched symbol và file ([`buildRepositoryImpactEvidence`](../../src/impact-evidence/repository-impact-evidence.js#L168)). | Không chứa upstream version evidence refs/content; không phân biệt language coverage trong `DEPENDENCY_NOT_USED`; vẫn không có line/snippet. Consumer phải join Version Analysis và Knowledge Evidence Bundle. | Deterministic explanation của matcher, không phải proof rằng upgrade an toàn. Loader recompute matches và kiểm tra exact input lineage trong [`validateReferences`](../../src/impact-evidence/input-loader.js#L81). |
|
|
86
|
+
|
|
87
|
+
### 4.2 Các câu hỏi readiness bắt buộc
|
|
88
|
+
|
|
89
|
+
- **Structured `affectedSymbols`: chưa có.** Symbol được phát hiện ngược bằng cách tìm tên Usage Index trong finding summary.
|
|
90
|
+
- **Impact matcher còn lexical:** có, [`summaryContainsExactSymbol`](../../src/impact/matcher.js#L17) dùng Unicode-boundary regex và không semantic/fuzzy match.
|
|
91
|
+
- **Affected files thực tế:** chưa. Artifact chỉ xác nhận file có reference tới imported symbol trùng tên; gọi đây là *candidate affected file* là chính xác hơn.
|
|
92
|
+
- **Evidence đủ đề xuất code change:** đôi khi có thể chứa official migration instruction, nhưng không được đảm bảo hoặc cấu trúc hóa. Không đủ cho generated code/patch nói chung.
|
|
93
|
+
- **Target version và migration path:** target có thể biết chính xác nếu explicit hoặc registry latest, nhưng current thường unresolved; release interval chỉ đáng tin ở `exactBaseline`. Registry latest không phải recommended target, và không có multi-hop migration path/prerequisite graph.
|
|
94
|
+
- **Lineage:** đủ mạnh để truy exact input artifact bytes xuyên pipeline. Chưa có lineage contract từ một migration step tới `findingId` + `evidenceRef` + `impactEvidenceId`, vì output đó chưa tồn tại.
|
|
95
|
+
|
|
96
|
+
### 4.3 Kết luận readiness
|
|
97
|
+
|
|
98
|
+
Input **đủ cho một checklist giới hạn và fail-closed**, nếu mỗi repository-specific item chỉ dùng positive exact matches và mỗi AI-authored instruction chỉ dùng selected official/publisher evidence. Input **không đủ cho full migration plan**, đặc biệt với negative impact conclusions, polyglot repositories, ordering, code generation và rollback.
|
|
99
|
+
|
|
100
|
+
## 5. AI Suitability Analysis
|
|
101
|
+
|
|
102
|
+
| Responsibility | Phân loại khuyến nghị | Lý do và boundary |
|
|
103
|
+
| --- | --- | --- |
|
|
104
|
+
| Sắp xếp dependency upgrade order | **Chưa nên hỗ trợ** | Không có dependency/transitive graph, compatibility constraints hay prerequisite model. AI ordering sẽ là unsupported inference. Deterministic topological order cũng chưa thể tính. |
|
|
105
|
+
| Xác định prerequisite | **AI-generated, bắt buộc human review**, chỉ khi official evidence nói rõ | Deterministic layer phải giữ nguyên evidence refs và không tự suy ra prerequisite. Nếu evidence không explicit, output phải là `not available`, không được đoán. |
|
|
106
|
+
| Nhóm breaking changes | **Deterministic** | Có thể nhóm theo project/package/finding kind/target/evidence ID bằng identity sẵn có. AI không cần thiết cho grouping; chỉ có thể tạo display label không mang fact mới. |
|
|
107
|
+
| Đề xuất migration steps | **AI-generated, bắt buộc human review** | AI phù hợp để paraphrase bounded official instructions thành checklist ngắn. Không được tạo step khi evidence chỉ mô tả change mà không nêu action. |
|
|
108
|
+
| Đề xuất file/symbol cần sửa | **Deterministic** | Chỉ copy positive `matchedSymbols` và `usages.file` từ Impact Evidence. AI không được thêm/xóa/đổi location. Phải gọi đây là candidate review location. |
|
|
109
|
+
| Tạo code example | **Chưa nên hỗ trợ** | Exact source context, types, framework configuration và structured before/after examples không có trong artifacts. Version-correct example không thể bảo đảm. |
|
|
110
|
+
| Tạo patch tự động | **Chưa nên hỗ trợ** | Pipeline không đọc lại source sau IA-01 và không có semantic edit/compile/test loop. Patch vượt xa trust boundary. |
|
|
111
|
+
| Tạo validation checklist | **Deterministic + AI-assisted** | Deterministic skeleton có thể yêu cầu review exact finding/symbol/file và xác nhận project tests. AI chỉ được thêm official verification instruction có evidence ref; không bịa command. |
|
|
112
|
+
| Tạo rollback plan | **Chưa nên hỗ trợ** | Không có deployment state, package transaction, data migration hoặc rollback evidence. “Pin previous version” cũng có thể sai với schema/data migrations. |
|
|
113
|
+
| Ước lượng effort | **Chưa nên hỗ trợ** | Không có calibrated history, code complexity/call-site count hoặc organization context. Numeric estimate sẽ tạo false precision. |
|
|
114
|
+
| Đánh giá confidence | **Deterministic, không dùng AI score** | Giữ categorical facts như evidence coverage, validation status, source freshness/conflict, version certainty và analyzer coverage. Không sinh numeric confidence từ self-report của model. |
|
|
115
|
+
|
|
116
|
+
### Recommended responsibility split
|
|
117
|
+
|
|
118
|
+
**Deterministic layer** chịu trách nhiệm:
|
|
119
|
+
|
|
120
|
+
- validate schema, exact-byte lineage và cross-artifact identities;
|
|
121
|
+
- classify `eligible`, `not analyzed`, `unsupported coverage`, `no grounded action`;
|
|
122
|
+
- select only package/version-relevant official or publisher evidence;
|
|
123
|
+
- preserve target/current uncertainty and all human-review reasons;
|
|
124
|
+
- copy finding IDs, evidence IDs, exact positive symbol/file matches;
|
|
125
|
+
- generate stable IDs, stable ordering, limits và safe fallback records;
|
|
126
|
+
- reject unknown refs/URLs/locations and fields outside contract.
|
|
127
|
+
|
|
128
|
+
**AI layer** chỉ chịu trách nhiệm:
|
|
129
|
+
|
|
130
|
+
- paraphrase explicit official migration instruction thành concise checklist text;
|
|
131
|
+
- optionally merge duplicate instructions that share the same package, target and evidence basis;
|
|
132
|
+
- state unresolved questions in a dedicated review field, never resolve them by guessing.
|
|
133
|
+
|
|
134
|
+
**Human reviewer** phải approve mọi AI-authored instruction và quyết định code change, upgrade order, test command, rollout và rollback.
|
|
135
|
+
|
|
136
|
+
## 6. Trust and Hallucination Risks
|
|
137
|
+
|
|
138
|
+
| Failure mode | Vì sao hiện có thể xảy ra | Minimum guardrail |
|
|
139
|
+
| --- | --- | --- |
|
|
140
|
+
| Bịa replacement API/flag/command | Existing validator chỉ allowlist evidence refs/URLs; một câu sai vẫn có thể cite ref hợp lệ. | MVP output không có generated code/command fields. Drop AI step không có explicit official instruction; task eval đo invented API/command rate. |
|
|
141
|
+
| Bịa file hoặc affected symbol | Model có thể suy ra từ package conventions. | Location fields do deterministic join copy từ positive Impact Evidence; model không được emit location identities. |
|
|
142
|
+
| Đề xuất change không có evidence | Finding ref không tự chứng minh action. | Mỗi AI step cần ít nhất một selected evidence ID, `findingId`, claim type và human-review flag; missing/invalid ref làm drop toàn step. |
|
|
143
|
+
| Suy luận sai upgrade order/prerequisite | Không có dependency graph hoặc structured prerequisite. | Không hỗ trợ ordering. Chỉ giữ deterministic display order; prerequisite chỉ được paraphrase nếu evidence explicit. |
|
|
144
|
+
| Bỏ qua transitive dependency | Project Manifest inventory là declared dependencies, không có resolved transitive graph. | Nêu limitation ở artifact/report; không tuyên bố plan complete cho transitive graph. |
|
|
145
|
+
| Code snippet không đúng version/repository | Không có source spans/type/config context; current version thường unresolved. | Không generate code snippet/patch trong MVP. Official code example chỉ được link tới evidence, không biến thành repo-specific edit. |
|
|
146
|
+
| Biến `NOT_IMPACTED` thành “safe to upgrade” | Exact matcher có false-negative surface và JS/TS-only coverage. | Không sinh safety claim. `NOT_ANALYZED` blocks; `NOT_IMPACTED` chỉ có nghĩa “không có exact supported-scope match”. |
|
|
147
|
+
| Trình bày inference như fact | Version finding là AI inference; impact là lexical inference. | Mỗi output field có `basis`/status rõ: upstream fact, deterministic match, AI-authored instruction. Renderer giữ wording “candidate/review”, không “must change” nếu chưa được evidence xác nhận. |
|
|
148
|
+
| Dùng registry latest như recommendation | CLI hiện chọn `registryLatest` làm target fact. | Report target policy rõ ràng; không gọi latest là recommended version. Full target selection ngoài scope. |
|
|
149
|
+
| Python absence bị hiểu là dependency không dùng | Default registry chỉ có Node analyzer. | Repository-specific checklist chỉ dựa positive usage match. Negative conclusion cần explicit analyzer coverage; nếu không có, emit `UNSUPPORTED_USAGE_COVERAGE`. |
|
|
150
|
+
| Provider output không được task-qualified | Evaluation hiện gọi trực tiếp `analyzeDependencyAiContext` và schema MVP-03 ([`runEvaluation`](../../src/evaluation-runner.js#L193)). | Tạo migration-specific golden dataset, comparator, metrics và qualification record trước production enablement. MVP-03 qualification không được kế thừa tự động. |
|
|
151
|
+
|
|
152
|
+
### Điều kiện tối thiểu để một checklist item được coi là evidence-grounded
|
|
153
|
+
|
|
154
|
+
Một item chỉ được publish khi đồng thời thỏa:
|
|
155
|
+
|
|
156
|
+
1. mọi input artifact hợp lệ, cùng lineage và đúng package/project occurrence;
|
|
157
|
+
2. Version Analysis result là `analyzed`, không `invalid`, có non-null target và finding còn tồn tại;
|
|
158
|
+
3. item trỏ tới exact `analysisResultId`, `findingId` và ít nhất một upstream `evidenceRef` có trong selected context;
|
|
159
|
+
4. evidence source thuộc official/publisher allowlist, không stale/conflicted nếu policy không cho phép review-only output;
|
|
160
|
+
5. action được evidence nói rõ; chỉ “breaking change exists” không đủ để tạo migration action;
|
|
161
|
+
6. repository location, nếu có, phải trỏ tới exact positive `impactEvidenceId`/matched symbol/file; AI không tạo location;
|
|
162
|
+
7. URLs chỉ được copy từ Knowledge source metadata; không nhận URL từ model;
|
|
163
|
+
8. item ghi rõ AI-authored, `requiresHumanReview: true` và không được renderer nâng thành fact;
|
|
164
|
+
9. thiếu action evidence phải tạo deterministic `NO_GROUNDED_ACTION`/`MANUAL_REVIEW_REQUIRED`, không gọi AI để lấp khoảng trống;
|
|
165
|
+
10. output vượt schema, ref allowlist hoặc content policy phải bị drop/fail closed và để lại limitation code.
|
|
166
|
+
|
|
167
|
+
## 7. Alternative Options
|
|
168
|
+
|
|
169
|
+
| Phương án | User value | Input readiness | Complexity | Hallucination risk | Testability | Open-source demo | Multi-ecosystem |
|
|
170
|
+
| --- | --- | --- | --- | --- | --- | --- | --- |
|
|
171
|
+
| **A. Full AI Migration Planning ngay** | Cao nếu đúng, nhưng dễ tạo false confidence | **Thấp**: thiếu structured actions, graph, source spans, resolved baselines | Cao | **Rất cao** | Thấp; correctness/order/patch khó oracle | Hấp dẫn bề ngoài nhưng một sai API làm giảm trust mạnh | Thấp; Usage chỉ JS/TS và ecosystem semantics khác nhau |
|
|
172
|
+
| **B. Evidence-Grounded Migration Checklist** | **Cao và tập trung**: chuyển finding thành next-review actions | **Trung bình**: đủ evidence/ref/positive location cho bounded cases | Trung bình | Trung bình, có thể giảm bằng excluded fields + fail closed | **Cao** với step refs, invented-token cases và golden official instructions | **Tốt**: demo minh bạch “source → finding → checklist → file” | Khá tốt cho dependency-level instructions; location phụ thuộc analyzer coverage |
|
|
173
|
+
| **C. Report + official migration references** | Trung bình; giảm navigation cost nhưng developer vẫn tự tổng hợp | **Cao** | Thấp | Thấp | Rất cao | Tốt nhưng ít khác biệt sản phẩm | Cao nếu chỉ render source metadata |
|
|
174
|
+
| **D. Defer, cải thiện Version/Impact trước** | Giá trị migration bị chậm; tăng precision dài hạn | Không áp dụng | Trung bình–cao upstream | Thấp trong ngắn hạn | Cao | Demo ít tiến triển về end-to-end user action | Tốt nếu ưu tiên analyzer/lockfile contracts |
|
|
175
|
+
|
|
176
|
+
**Recommendation:** chọn B, dùng C làm deterministic fallback/presentation. Không chọn A. Không cần defer toàn bộ MVP-05, nhưng mọi capability tiến gần code change/order/rollback phải chờ D hoàn thành các prerequisite tương ứng.
|
|
177
|
+
|
|
178
|
+
## 8. Recommended MVP Boundary
|
|
179
|
+
|
|
180
|
+
### 8.1 Tên và mục tiêu
|
|
181
|
+
|
|
182
|
+
**MVP-05 — Evidence-Grounded Migration Checklist**
|
|
183
|
+
|
|
184
|
+
Mục tiêu: từ artifacts hiện có, tạo một checklist review có thể truy vết cho từng analyzed breaking finding; với positive exact usage match, đính kèm candidate symbols/files; với explicit official migration instruction, AI có thể tạo concise draft action bắt buộc human review.
|
|
185
|
+
|
|
186
|
+
### 8.2 Conceptual runtime flow
|
|
187
|
+
|
|
188
|
+
```text
|
|
189
|
+
Validated immutable artifacts
|
|
190
|
+
↓
|
|
191
|
+
Deterministic lineage + eligibility + context builder
|
|
192
|
+
↓
|
|
193
|
+
Bounded official/publisher evidence + exact finding/impact refs
|
|
194
|
+
↓
|
|
195
|
+
Provider-neutral structured AI draft (eligible contexts only)
|
|
196
|
+
↓
|
|
197
|
+
Task-specific trust validator and deterministic normalization
|
|
198
|
+
↓
|
|
199
|
+
Migration Checklist artifact
|
|
200
|
+
↓
|
|
201
|
+
Presentation-only Markdown/console section
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
Pipeline phải reuse [`AiRuntime`](../../src/ai-runtime.js#L27) nhưng dùng task/schema/prompt riêng, không mở rộng prompt MVP-03. Existing stages và artifacts không bị sửa logic.
|
|
205
|
+
|
|
206
|
+
### 8.3 Conceptual inputs
|
|
207
|
+
|
|
208
|
+
MVP đọc, không mutate:
|
|
209
|
+
|
|
210
|
+
- Project Manifest: occurrence/project/ecosystem facts;
|
|
211
|
+
- Knowledge Manifest: source authority, trust, URLs, freshness/conflict;
|
|
212
|
+
- Knowledge Evidence Bundle: exact evidence content;
|
|
213
|
+
- Version Analysis: target/baseline status, findings và evidence refs;
|
|
214
|
+
- Usage Index: supported positive usage facts;
|
|
215
|
+
- Repository Impact: deterministic match result;
|
|
216
|
+
- Repository Impact Evidence: stable match explanation/location.
|
|
217
|
+
|
|
218
|
+
Đọc đủ bảy artifacts là cần thiết: Impact artifacts hiện không giữ upstream evidence refs/content, còn Version Analysis không giữ evidence content.
|
|
219
|
+
|
|
220
|
+
### 8.4 Conceptual output
|
|
221
|
+
|
|
222
|
+
Output artifact ở mức khái niệm gồm:
|
|
223
|
+
|
|
224
|
+
- schema/generator/generated-at và exact input digests;
|
|
225
|
+
- overall completeness (`COMPLETE`, `INCOMPLETE`, `NO_GROUNDED_ACTION`), không có “safe” status;
|
|
226
|
+
- dependency occurrence identity, source/target facts và uncertainty;
|
|
227
|
+
- finding records với `analysisResultId`, `findingId`, upstream evidence refs;
|
|
228
|
+
- checklist items với stable ID, constrained kind, instruction text, basis, evidence refs, optional positive impact-evidence/location refs, limitations và mandatory review state;
|
|
229
|
+
- deterministic records cho `NOT_ANALYZED`, unsupported usage coverage và missing action evidence.
|
|
230
|
+
|
|
231
|
+
Đây không phải production schema proposal; field names chỉ mô tả boundary discovery.
|
|
232
|
+
|
|
233
|
+
### 8.5 Included
|
|
234
|
+
|
|
235
|
+
- official/publisher evidence-linked review checklist;
|
|
236
|
+
- deterministic grouping theo occurrence/finding;
|
|
237
|
+
- exact positive JS/TS symbol/file candidate locations;
|
|
238
|
+
- preservation of unknown/skipped/conflict/stale/human-review states;
|
|
239
|
+
- provider-neutral structured generation;
|
|
240
|
+
- report rendering không thêm business inference.
|
|
241
|
+
|
|
242
|
+
### 8.6 Explicit exclusions
|
|
243
|
+
|
|
244
|
+
- automatic target recommendation;
|
|
245
|
+
- cross-dependency ordering;
|
|
246
|
+
- inferred prerequisites không có official evidence;
|
|
247
|
+
- source rescanning/parsing trong planning stage;
|
|
248
|
+
- code examples, patches hoặc auto-fix;
|
|
249
|
+
- shell/package-manager commands do AI tạo;
|
|
250
|
+
- migration execution, test execution hoặc source modification;
|
|
251
|
+
- rollback plan;
|
|
252
|
+
- effort/severity/numeric confidence scoring;
|
|
253
|
+
- transitive dependency coverage claims;
|
|
254
|
+
- `NOT_IMPACTED` → safe-to-upgrade claim.
|
|
255
|
+
|
|
256
|
+
## 9. Proposed Tasks
|
|
257
|
+
|
|
258
|
+
Tối đa năm implementation tasks, theo thứ tự:
|
|
259
|
+
|
|
260
|
+
### MP-01 — Checklist Contract and Grounding Policy
|
|
261
|
+
|
|
262
|
+
Định nghĩa versioned conceptual/production contract, status taxonomy, constrained item kinds, step-level refs, lineage/invariants, eligibility matrix và explicit exclusions. Chốt semantics cho `NOT_ANALYZED`, `NOT_IMPACTED`, unsupported analyzer coverage và `NO_GROUNDED_ACTION` trước khi có prompt.
|
|
263
|
+
|
|
264
|
+
### MP-02 — Deterministic Context and Eligibility Runtime
|
|
265
|
+
|
|
266
|
+
Load/validate bảy artifacts, kiểm tra cross-artifact lineage/identity, join finding → source evidence → impact evidence, select bounded official/publisher content, và dựng immutable task context. Không gọi AI cho ineligible context.
|
|
267
|
+
|
|
268
|
+
### MP-03 — Provider-Neutral Generator and Trust Validation
|
|
269
|
+
|
|
270
|
+
Tạo task-specific prompt/schema dùng existing `AiRuntime`; chỉ cho model emit constrained instruction/review-question text và upstream refs. Implement allowlist, invented URL/ref/location rejection, no-action fallback, deterministic IDs/sort và mandatory human-review policy.
|
|
271
|
+
|
|
272
|
+
### MP-04 — Migration-Specific Evaluation and Qualification
|
|
273
|
+
|
|
274
|
+
Tạo golden datasets Node/Python/generic cho explicit action, missing action, stale/conflict, wrong ref, invented API/command, skipped result, positive impact và unsupported coverage. Metrics tối thiểu: step evidence-reference precision/coverage, unsupported/invented action rate, location preservation, eligibility correctness, schema/deterministic post-processing pass rate và human-review correctness. Qualification phải task-scoped `migration-planning.v1`.
|
|
275
|
+
|
|
276
|
+
### MP-05 — Orchestration and Presentation
|
|
277
|
+
|
|
278
|
+
Thêm stage sau Impact Evidence chỉ khi MP-04 gates đạt; render checklist + official refs + limitations, không tính lại business data. Pipeline fail-stop theo [`runAnalysisPipeline`](../../src/orchestration/pipeline.js#L27), đồng thời có package-local safe records cho ineligible findings theo contract MP-01.
|
|
279
|
+
|
|
280
|
+
## 10. Acceptance Criteria
|
|
281
|
+
|
|
282
|
+
MVP reduced scope chỉ đạt khi:
|
|
283
|
+
|
|
284
|
+
1. loader từ chối schema/lineage/identity mismatch trước model invocation;
|
|
285
|
+
2. `skipped`/`failed` Version Analysis không sinh migration action và được trình bày `NOT_ANALYZED`/incomplete;
|
|
286
|
+
3. mỗi AI-authored item có valid `analysisResultId`, `findingId`, selected evidence refs và `requiresHumanReview`;
|
|
287
|
+
4. mỗi repository-specific location khớp byte-for-byte với positive Impact Evidence symbol/file; model không sở hữu location field;
|
|
288
|
+
5. không có evidence instruction thì sinh deterministic no-action/manual-review record, không có generic guessed step;
|
|
289
|
+
6. output không có generated API replacement, code, patch, shell command, upgrade order, rollback hoặc effort/confidence score;
|
|
290
|
+
7. URL chỉ đến từ validated Knowledge source metadata; unknown evidence/URL/location làm item bị drop hoặc context fail closed;
|
|
291
|
+
8. target policy và nullable/unknown current baseline được hiển thị trung thực; `registryLatest` không được gọi là recommendation;
|
|
292
|
+
9. negative usage không được dùng làm safety proof nếu analyzer coverage không explicit; Python hiện phải mang coverage limitation;
|
|
293
|
+
10. post-processing, IDs, sorting và serialization deterministic với cùng validated input và cùng candidate output. Không tuyên bố live model text deterministic;
|
|
294
|
+
11. fake-runtime/unit/golden tests cover success, missing evidence, conflict/stale, invented ref/URL/API/command, not-analyzed, not-impacted, positive impact và multi-ecosystem contexts;
|
|
295
|
+
12. task-specific evaluation gates được chốt và pass trước khi default CLI orchestration enable stage;
|
|
296
|
+
13. renderer chỉ đọc checklist artifact/view model và không tạo claim/action mới;
|
|
297
|
+
14. source repository không bị sửa và planning stage không scan/parse source lần nữa;
|
|
298
|
+
15. documentation gọi output là human-review checklist, không phải autonomous migration plan.
|
|
299
|
+
|
|
300
|
+
## 11. Blockers and Prerequisites
|
|
301
|
+
|
|
302
|
+
### 11.1 Blockers của full AI Migration Planning
|
|
303
|
+
|
|
304
|
+
- Không có structured changed/replacement symbols, action, prerequisite hoặc migration path trong Version Analysis.
|
|
305
|
+
- Không resolve lockfile/current installed versions; common range baselines làm interval/delta chưa chắc chắn.
|
|
306
|
+
- Usage coverage chỉ JS/TS và không có explicit per-project coverage contract trong artifact.
|
|
307
|
+
- Exact lexical impact không chứng minh semantic affected call site; không có lines/snippets/member chains.
|
|
308
|
+
- Không có resolved dependency/transitive graph để order upgrades.
|
|
309
|
+
- Không có repository build/test commands hoặc deployment/data-migration state cho validation/rollback.
|
|
310
|
+
- Existing evaluation/scorecard chỉ chấm Version Analysis; migration semantic entailment và invented command/API rate chưa được đo.
|
|
311
|
+
- Không real provider/deployment nào được task-certified cho `migration-planning.v1`; **not evidenced in repository**.
|
|
312
|
+
|
|
313
|
+
### 11.2 Prerequisites của reduced checklist
|
|
314
|
+
|
|
315
|
+
- MP-01 contract phải định nghĩa step-level grounding và fail-closed status semantics.
|
|
316
|
+
- Task-specific trust policy phải mạnh hơn ref allowlisting hiện tại; citation tồn tại không đủ chứng minh action.
|
|
317
|
+
- Evaluation fixtures phải có explicit official instruction và adversarial unsupported candidates.
|
|
318
|
+
- Consumer phải join Version Analysis status trước Impact Evidence reason, không diễn giải `DEPENDENCY_NOT_USED` độc lập.
|
|
319
|
+
- Positive repository locations có thể ship trong current JS/TS scope; negative/safety claims phải chờ explicit analyzer coverage và thêm analyzer theo ecosystem.
|
|
320
|
+
|
|
321
|
+
### 11.3 Technical debt quan sát được
|
|
322
|
+
|
|
323
|
+
- README roadmap/capability text chưa phản ánh đầy đủ pipeline hiện hành; dùng implementation/contracts làm source of truth.
|
|
324
|
+
- Impact/Impact Evidence không preserve Version finding `evidenceRefs`; MVP-05 phải join lại Version Analysis thay vì giả refs tồn tại downstream.
|
|
325
|
+
- Usage Index ghi global analyzer IDs nhưng không mô tả per-project/per-language completeness, làm negative evidence khó dùng an toàn.
|
|
326
|
+
- `DEPENDENCY_NOT_USED` hiện conflates “không có usage record trong supported analyzer output” với “repository không dùng dependency”. Presentation đã bảo vệ skipped Version Analysis, nhưng artifact-level semantics vẫn cần thận trọng.
|
|
327
|
+
- Current unsupported-claim metric dựa trên validation warnings, chưa đo claim-evidence entailment.
|
|
328
|
+
|
|
329
|
+
Các debt này không chặn MP-01/MP-02. Chúng chặn việc mở rộng output thành full plan hoặc safety claim.
|
|
330
|
+
|
|
331
|
+
## 12. Final Verdict
|
|
332
|
+
|
|
333
|
+
### Verdict: GO WITH REDUCED SCOPE
|
|
334
|
+
|
|
335
|
+
**Fact:** UpgradeLens đã có provider-neutral structured AI runtime, exact artifact lineage, bounded source evidence, trust ref validation, deterministic JS/TS usage indexing, exact impact matching và truthful presentation states.
|
|
336
|
+
|
|
337
|
+
**Fact:** Current contracts không có structured migration action/replacement/prerequisite, current version thường nullable, Impact chỉ lexical/file-level, Usage chưa polyglot, và evaluation chưa task-specific cho migration planning.
|
|
338
|
+
|
|
339
|
+
**Inference:** Các artifacts đủ để tạo checklist draft có refs cho một tập bounded cases, nhưng không đủ để đảm bảo correctness/completeness của full migration plan.
|
|
340
|
+
|
|
341
|
+
**Recommendation:** Bắt đầu **MP-01 — Checklist Contract and Grounding Policy** ngay. Xây MVP-05 thành **Evidence-Grounded Migration Checklist**, kết hợp phương án B với official-reference fallback của phương án C. Chỉ enable CLI stage sau khi MP-04 task-specific gates pass. Hoãn vô thời hạn trong MVP này mọi capability order/prerequisite inference, code generation/patch, rollback, effort và autonomous execution.
|
|
342
|
+
|
|
343
|
+
Điều kiện để đánh giá lại full AI Migration Planning:
|
|
344
|
+
|
|
345
|
+
1. structured change/action/replacement contracts tồn tại;
|
|
346
|
+
2. exact current-version resolution và migration interval đáng tin hơn;
|
|
347
|
+
3. analyzer coverage được biểu diễn rõ và mở rộng cho ecosystem mục tiêu;
|
|
348
|
+
4. semantic affected-location precision/recall được đo;
|
|
349
|
+
5. dependency/prerequisite graph tồn tại;
|
|
350
|
+
6. migration-specific evaluation chứng minh near-zero invented API/command, step-level evidence grounding và correct human-review behavior.
|