@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,411 @@
|
|
|
1
|
+
# OSS-01 — Duplicate Artifact Investigation & Cleanup
|
|
2
|
+
|
|
3
|
+
## 1. Executive verdict
|
|
4
|
+
|
|
5
|
+
**Verdict: `TARBALL_HYGIENE_RESTORED_WITH_REVIEW_ITEMS`**
|
|
6
|
+
|
|
7
|
+
The package drift was reproduced and bounded. The 304-entry tarball contained 76
|
|
8
|
+
unintended numeric-suffix copies; every one was an untracked, byte-identical copy of
|
|
9
|
+
an existing canonical source or schema file, with no path reference, Git history, or
|
|
10
|
+
contract identity. A further 32 exact copies in `eval/`, `scripts/`, and `test/` were
|
|
11
|
+
not packaged but belonged to the same artifact set. Those 108 files were removed
|
|
12
|
+
only after per-file evidence was collected. No canonical file was changed.
|
|
13
|
+
|
|
14
|
+
Nine exact copies inside an untracked CLI-capture tree and one ignored `.DS_Store`
|
|
15
|
+
remain as non-packaged review items because this task's safety boundary prohibits
|
|
16
|
+
deleting unrelated retained evidence or ignored metadata. Two broad-scan matches are
|
|
17
|
+
intentional tracked files. None of the 12 retained matches enters the final package
|
|
18
|
+
except the intentional TS-FIX-01 architecture document.
|
|
19
|
+
|
|
20
|
+
## 2. Release gate impact
|
|
21
|
+
|
|
22
|
+
The previous 228-file release-candidate qualification was invalidated by current
|
|
23
|
+
working-tree package drift and could not authorize a publish. OSS-01 restores a
|
|
24
|
+
fully explained package boundary and closes the duplicate-artifact blocker, but it
|
|
25
|
+
does not authorize a public preview, tag, release, or npm publish.
|
|
26
|
+
|
|
27
|
+
**Next gate: `PROCEED_TO_OSS_02_PACKAGE_GUARD_HARDENING`**
|
|
28
|
+
|
|
29
|
+
## 3. Initial branch, commit and dirty-worktree state
|
|
30
|
+
|
|
31
|
+
The safety-baseline commands were captured before cleanup.
|
|
32
|
+
|
|
33
|
+
| Field | Initial value |
|
|
34
|
+
| --- | --- |
|
|
35
|
+
| Branch | `fix/public-preview-readiness` |
|
|
36
|
+
| Commit | `74d57344db254d0109ea951dc7c44853cdad9be0` |
|
|
37
|
+
| Tracked diff | Clean; `git diff --stat` and `git diff --name-status` had no output |
|
|
38
|
+
| Untracked state | Two pre-existing release-review reports, multiple CLI-capture/evidence trees, and the duplicate-suffixed candidate set |
|
|
39
|
+
| Ignored relevant match | Root `.DS_Store` |
|
|
40
|
+
| Package version | `0.5.0` |
|
|
41
|
+
|
|
42
|
+
The worktree was not globally clean, so all existing untracked reports, captures,
|
|
43
|
+
qualification material, and other review output were treated as user-owned. No
|
|
44
|
+
reset, clean, restore, checkout, broad glob deletion, or bulk filesystem deletion was
|
|
45
|
+
used.
|
|
46
|
+
|
|
47
|
+
## 4. Reproduced tarball count and manifest digest
|
|
48
|
+
|
|
49
|
+
The canonical pack workflow was run with an isolated npm cache. The actual tarball
|
|
50
|
+
was extracted and inventoried by relative path, byte size, mode, SHA-256 content
|
|
51
|
+
digest, top-level directory, and repository Git state.
|
|
52
|
+
|
|
53
|
+
| Measurement | Initial reproduced package |
|
|
54
|
+
| --- | --- |
|
|
55
|
+
| Entry count | 304 |
|
|
56
|
+
| npm package size | 593,013 bytes |
|
|
57
|
+
| npm unpacked size | 2,935,134 bytes |
|
|
58
|
+
| npm SHA-1 | `b3e053c5fe34a7596bec8962916a84459e1fba70` |
|
|
59
|
+
| Deterministic content-manifest digest | `sha256:9db3d6d5c03fa349b78bb1f607aff08468e83c5586867813b2b37f0e5d16092e` |
|
|
60
|
+
| Suspicious packaged paths | 77: 76 exact artifacts plus one intentional architecture document |
|
|
61
|
+
|
|
62
|
+
The 228-to-304 comparison used the same npm package boundary. The full 76-entry
|
|
63
|
+
increase is accounted for by 9 schema copies and 67 source copies. The two
|
|
64
|
+
pre-existing release-review reports were already included in the verified 228-entry
|
|
65
|
+
candidate, so they do not explain any part of this drift. `package.json` publishes
|
|
66
|
+
the broad `schemas` and `src` trees; the current guard checked required and forbidden
|
|
67
|
+
content but did not reject duplicate-style filenames, allowing untracked copies to
|
|
68
|
+
enter the tarball.
|
|
69
|
+
|
|
70
|
+
## 5. Complete candidate inventory
|
|
71
|
+
|
|
72
|
+
Candidate discovery walked the repository without shell filename expansion and
|
|
73
|
+
checked numeric suffixes, parenthesized numeric suffixes, copy/duplicate labels,
|
|
74
|
+
editor backup suffixes, swap/temporary suffixes, and `.DS_Store`. It safely handled
|
|
75
|
+
whitespace and nested paths; no symlink candidate, newline-bearing filename, Unicode
|
|
76
|
+
normalization collision, case-only collision, parenthesized/copy/backup/swap match,
|
|
77
|
+
or tarball artifact was found.
|
|
78
|
+
|
|
79
|
+
| Classification | Count | Packaged initially | Decision |
|
|
80
|
+
| --- | ---: | ---: | --- |
|
|
81
|
+
| `EXACT_DUPLICATE` | 117 | 76 | Delete 108 task-scope artifacts; retain 9 non-packaged captures |
|
|
82
|
+
| `INTENTIONAL_FILE` | 2 | 1 | Retain |
|
|
83
|
+
| `ORPHAN_ARTIFACT` | 1 | 0 | Retain ignored OS metadata |
|
|
84
|
+
| `NON_SEMANTIC_DUPLICATE` | 0 | 0 | None |
|
|
85
|
+
| `DIVERGENT_COPY` | 0 | 0 | None |
|
|
86
|
+
| `REQUIRES_HUMAN_REVIEW` | 0 | 0 | None |
|
|
87
|
+
| **Total** | **120** | **77** | **108 deleted, 12 retained** |
|
|
88
|
+
|
|
89
|
+
The 108 deletion candidates break down as 2 `eval`, 9 `schemas`, 6 `scripts`, 67
|
|
90
|
+
`src`, and 24 `test` files. The 76 packaged deletion candidates are exactly the 9
|
|
91
|
+
schema and 67 source files.
|
|
92
|
+
|
|
93
|
+
## 6. Per-file evidence table
|
|
94
|
+
|
|
95
|
+
For each `E1` row, both files were read as bytes and independently SHA-256 hashed:
|
|
96
|
+
the two full hashes matched, direct byte comparison passed, normalized-text
|
|
97
|
+
comparison passed, and candidate-only/canonical-only unique-line counts were `0/0`.
|
|
98
|
+
The candidate was untracked, absent from all Git history, unreferenced by exact path
|
|
99
|
+
or basename, and had no import, export, schema-loader, test-discovery, package,
|
|
100
|
+
documentation, dataset, manifest, or qualification identity. `E2` is the same proof,
|
|
101
|
+
but deletion is outside scope because the path is retained non-packaged capture
|
|
102
|
+
evidence. `I1` denotes a tracked/history-backed intentional identity. `O1` denotes
|
|
103
|
+
ignored OS metadata with no canonical sibling and no package membership.
|
|
104
|
+
|
|
105
|
+
| Candidate | Canonical sibling | Git state | Packaged | Byte-identical | Normalized-identical | Unique lines | Referenced by source | Referenced by package/docs/tests | Classification | Proposed action |
|
|
106
|
+
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
|
107
|
+
| `.DS_Store` | — | ignored; history=no | no | n/a | n/a | n/a | none | ignore rule only | `ORPHAN_ARTIFACT` | RETAIN (O1) |
|
|
108
|
+
| `docs/rr02-rerun-cli-captures/003-rerun-002-default-tty-auto/01-start 2.png` | `docs/rr02-rerun-cli-captures/003-rerun-002-default-tty-auto/01-start.png` | untracked; history=no | no | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | RETAIN (E2) |
|
|
109
|
+
| `docs/rr02-rerun-cli-captures/003-rerun-002-default-tty-auto/02-progress 2.png` | `docs/rr02-rerun-cli-captures/003-rerun-002-default-tty-auto/02-progress.png` | untracked; history=no | no | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | RETAIN (E2) |
|
|
110
|
+
| `docs/rr02-rerun-cli-captures/003-rerun-002-default-tty-auto/03-final 2.png` | `docs/rr02-rerun-cli-captures/003-rerun-002-default-tty-auto/03-final.png` | untracked; history=no | no | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | RETAIN (E2) |
|
|
111
|
+
| `docs/rr02-rerun-cli-captures/003-rerun-002-default-tty-auto/command 2.txt` | `docs/rr02-rerun-cli-captures/003-rerun-002-default-tty-auto/command.txt` | untracked; history=no | no | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | RETAIN (E2) |
|
|
112
|
+
| `docs/rr02-rerun-cli-captures/003-rerun-002-default-tty-auto/environment 2.json` | `docs/rr02-rerun-cli-captures/003-rerun-002-default-tty-auto/environment.json` | untracked; history=no | no | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | RETAIN (E2) |
|
|
113
|
+
| `docs/rr02-rerun-cli-captures/003-rerun-002-default-tty-auto/final-screen 2.png` | `docs/rr02-rerun-cli-captures/003-rerun-002-default-tty-auto/final-screen.png` | untracked; history=no | no | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | RETAIN (E2) |
|
|
114
|
+
| `docs/rr02-rerun-cli-captures/003-rerun-002-default-tty-auto/metadata 2.json` | `docs/rr02-rerun-cli-captures/003-rerun-002-default-tty-auto/metadata.json` | untracked; history=no | no | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | RETAIN (E2) |
|
|
115
|
+
| `docs/rr02-rerun-cli-captures/003-rerun-002-default-tty-auto/transcript.clean 2.txt` | `docs/rr02-rerun-cli-captures/003-rerun-002-default-tty-auto/transcript.clean.txt` | untracked; history=no | no | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | RETAIN (E2) |
|
|
116
|
+
| `docs/rr02-rerun-cli-captures/003-rerun-002-default-tty-auto/transcript.raw 2.txt` | `docs/rr02-rerun-cli-captures/003-rerun-002-default-tty-auto/transcript.raw.txt` | untracked; history=no | no | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | RETAIN (E2) |
|
|
117
|
+
| `docs/ts-fix-01-exact-duplicate-occurrence-target-selection-architecture.md` | — | tracked; history=yes | yes | n/a | n/a | n/a | none | tracked historical document identity | `INTENTIONAL_FILE` | RETAIN (I1) |
|
|
118
|
+
| `eval/migration-planning/golden-dataset 2.json` | `eval/migration-planning/golden-dataset.json` | untracked; history=no | no | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
119
|
+
| `eval/migration-planning/golden-dataset-v2 2.json` | `eval/migration-planning/golden-dataset-v2.json` | untracked; history=no | no | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
120
|
+
| `schemas/migration-checklist-extractive-candidate.schema 2.json` | `schemas/migration-checklist-extractive-candidate.schema.json` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
121
|
+
| `schemas/migration-checklist.schema 2.json` | `schemas/migration-checklist.schema.json` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
122
|
+
| `schemas/migration-checklist.schema 3.json` | `schemas/migration-checklist.schema.json` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
123
|
+
| `schemas/migration-evaluation-dataset-v2.schema 2.json` | `schemas/migration-evaluation-dataset-v2.schema.json` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
124
|
+
| `schemas/migration-evaluation-dataset.schema 2.json` | `schemas/migration-evaluation-dataset.schema.json` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
125
|
+
| `schemas/migration-evaluation-dataset.schema 3.json` | `schemas/migration-evaluation-dataset.schema.json` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
126
|
+
| `schemas/migration-planning-qualification-record.schema 2.json` | `schemas/migration-planning-qualification-record.schema.json` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
127
|
+
| `schemas/migration-planning-qualification-record.schema 3.json` | `schemas/migration-planning-qualification-record.schema.json` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
128
|
+
| `schemas/upgrade-decision.schema 2.json` | `schemas/upgrade-decision.schema.json` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
129
|
+
| `scripts/mp-r05-cli-captures 2.mjs` | `scripts/mp-r05-cli-captures.mjs` | untracked; history=no | no | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
130
|
+
| `scripts/package-content-guard 2.mjs` | `scripts/package-content-guard.mjs` | untracked; history=no | no | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
131
|
+
| `scripts/render-cli-transcript 2.py` | `scripts/render-cli-transcript.py` | untracked; history=no | no | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
132
|
+
| `scripts/render-cli-transcript 3.py` | `scripts/render-cli-transcript.py` | untracked; history=no | no | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
133
|
+
| `scripts/rr02-fix-01-captures 2.mjs` | `scripts/rr02-fix-01-captures.mjs` | untracked; history=no | no | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
134
|
+
| `scripts/rr02-fix-01-captures 3.mjs` | `scripts/rr02-fix-01-captures.mjs` | untracked; history=no | no | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
135
|
+
| `src/cooperative-scheduler 2.js` | `src/cooperative-scheduler.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
136
|
+
| `src/cooperative-scheduler 3.js` | `src/cooperative-scheduler.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
137
|
+
| `src/impact/status 2.js` | `src/impact/status.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
138
|
+
| `src/installed-version-baseline 2.js` | `src/installed-version-baseline.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
139
|
+
| `src/migration-checklist/ai-candidate 2.js` | `src/migration-checklist/ai-candidate.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
140
|
+
| `src/migration-checklist/ai-candidate 3.js` | `src/migration-checklist/ai-candidate.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
141
|
+
| `src/migration-checklist/assembler 2.js` | `src/migration-checklist/assembler.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
142
|
+
| `src/migration-checklist/assembler 3.js` | `src/migration-checklist/assembler.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
143
|
+
| `src/migration-checklist/context-runtime 2.js` | `src/migration-checklist/context-runtime.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
144
|
+
| `src/migration-checklist/evaluation/action-criteria 2.js` | `src/migration-checklist/evaluation/action-criteria.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
145
|
+
| `src/migration-checklist/evaluation/comparator 2.js` | `src/migration-checklist/evaluation/comparator.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
146
|
+
| `src/migration-checklist/evaluation/comparator-v2 2.js` | `src/migration-checklist/evaluation/comparator-v2.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
147
|
+
| `src/migration-checklist/evaluation/dataset 2.js` | `src/migration-checklist/evaluation/dataset.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
148
|
+
| `src/migration-checklist/evaluation/dataset-v2 2.js` | `src/migration-checklist/evaluation/dataset-v2.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
149
|
+
| `src/migration-checklist/evaluation/extractive-fixtures-v2 2.js` | `src/migration-checklist/evaluation/extractive-fixtures-v2.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
150
|
+
| `src/migration-checklist/evaluation/metrics 2.js` | `src/migration-checklist/evaluation/metrics.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
151
|
+
| `src/migration-checklist/evaluation/metrics-v2 2.js` | `src/migration-checklist/evaluation/metrics-v2.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
152
|
+
| `src/migration-checklist/evaluation/qualification 2.js` | `src/migration-checklist/evaluation/qualification.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
153
|
+
| `src/migration-checklist/evaluation/qualification-v2 2.js` | `src/migration-checklist/evaluation/qualification-v2.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
154
|
+
| `src/migration-checklist/evaluation/runner 2.js` | `src/migration-checklist/evaluation/runner.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
155
|
+
| `src/migration-checklist/evaluation/runner-v2 2.js` | `src/migration-checklist/evaluation/runner-v2.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
156
|
+
| `src/migration-checklist/evaluation/scorecard 2.js` | `src/migration-checklist/evaluation/scorecard.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
157
|
+
| `src/migration-checklist/evaluation/scorecard-v2 2.js` | `src/migration-checklist/evaluation/scorecard-v2.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
158
|
+
| `src/migration-checklist/extractive-candidate 2.js` | `src/migration-checklist/extractive-candidate.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
159
|
+
| `src/migration-checklist/extractive-candidate 3.js` | `src/migration-checklist/extractive-candidate.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
160
|
+
| `src/migration-checklist/extractive-prompt 2.js` | `src/migration-checklist/extractive-prompt.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
161
|
+
| `src/migration-checklist/extractive-prompt 3.js` | `src/migration-checklist/extractive-prompt.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
162
|
+
| `src/migration-checklist/generator 2.js` | `src/migration-checklist/generator.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
163
|
+
| `src/migration-checklist/generator 3.js` | `src/migration-checklist/generator.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
164
|
+
| `src/migration-checklist/grounding-policy 2.js` | `src/migration-checklist/grounding-policy.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
165
|
+
| `src/migration-checklist/grounding-policy 3.js` | `src/migration-checklist/grounding-policy.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
166
|
+
| `src/migration-checklist/input-loader 2.js` | `src/migration-checklist/input-loader.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
167
|
+
| `src/migration-checklist/migration-checklist 2.js` | `src/migration-checklist/migration-checklist.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
168
|
+
| `src/migration-checklist/migration-checklist 3.js` | `src/migration-checklist/migration-checklist.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
169
|
+
| `src/migration-checklist/presentation 2.js` | `src/migration-checklist/presentation.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
170
|
+
| `src/migration-checklist/presentation 3.js` | `src/migration-checklist/presentation.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
171
|
+
| `src/migration-checklist/progress 2.js` | `src/migration-checklist/progress.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
172
|
+
| `src/migration-checklist/progress 3.js` | `src/migration-checklist/progress.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
173
|
+
| `src/migration-checklist/prompt 2.js` | `src/migration-checklist/prompt.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
174
|
+
| `src/migration-checklist/prompt 3.js` | `src/migration-checklist/prompt.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
175
|
+
| `src/migration-checklist/qualification-guard 2.js` | `src/migration-checklist/qualification-guard.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
176
|
+
| `src/migration-checklist/qualification-guard 3.js` | `src/migration-checklist/qualification-guard.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
177
|
+
| `src/migration-checklist/qualification-resolution 2.js` | `src/migration-checklist/qualification-resolution.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
178
|
+
| `src/migration-checklist/qualification-resolution 3.js` | `src/migration-checklist/qualification-resolution.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
179
|
+
| `src/migration-checklist/qualification-store 2.js` | `src/migration-checklist/qualification-store.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
180
|
+
| `src/migration-checklist/qualification-store 3.js` | `src/migration-checklist/qualification-store.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
181
|
+
| `src/migration-checklist/runtime 2.js` | `src/migration-checklist/runtime.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
182
|
+
| `src/migration-checklist/runtime 3.js` | `src/migration-checklist/runtime.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
183
|
+
| `src/migration-checklist/verification 2.js` | `src/migration-checklist/verification.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
184
|
+
| `src/migration-checklist/verification 3.js` | `src/migration-checklist/verification.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
185
|
+
| `src/migration-checklist/writer 2.js` | `src/migration-checklist/writer.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
186
|
+
| `src/migration-checklist/writer 3.js` | `src/migration-checklist/writer.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
187
|
+
| `src/orchestration/progress-events 2.js` | `src/orchestration/progress-events.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
188
|
+
| `src/orchestration/progress-events 3.js` | `src/orchestration/progress-events.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
189
|
+
| `src/product-completion 2.js` | `src/product-completion.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
190
|
+
| `src/product-completion 3.js` | `src/product-completion.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
191
|
+
| `src/target-selector 2.js` | `src/target-selector.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
192
|
+
| `src/target-selector 3.js` | `src/target-selector.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
193
|
+
| `src/upgrade-decision/input-loader 2.js` | `src/upgrade-decision/input-loader.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
194
|
+
| `src/upgrade-decision/input-loader 3.js` | `src/upgrade-decision/input-loader.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
195
|
+
| `src/upgrade-decision/presentation 2.js` | `src/upgrade-decision/presentation.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
196
|
+
| `src/upgrade-decision/presentation 3.js` | `src/upgrade-decision/presentation.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
197
|
+
| `src/upgrade-decision/runtime 2.js` | `src/upgrade-decision/runtime.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
198
|
+
| `src/upgrade-decision/runtime 3.js` | `src/upgrade-decision/runtime.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
199
|
+
| `src/upgrade-decision/upgrade-decision 2.js` | `src/upgrade-decision/upgrade-decision.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
200
|
+
| `src/usage/coverage 2.js` | `src/usage/coverage.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
201
|
+
| `src/usage/coverage 3.js` | `src/usage/coverage.js` | untracked; history=no | yes | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
202
|
+
| `test/cooperative-scheduling.test 2.js` | `test/cooperative-scheduling.test.js` | untracked; history=no | no | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
203
|
+
| `test/cooperative-scheduling.test 3.js` | `test/cooperative-scheduling.test.js` | untracked; history=no | no | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
204
|
+
| `test/ecosystem-coverage-impact.test 2.js` | `test/ecosystem-coverage-impact.test.js` | untracked; history=no | no | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
205
|
+
| `test/fixtures/knowledge-manifest/duplicate-occurrence.json` | — | tracked; history=yes | no | n/a | n/a | n/a | none | exact test-fixture identity | `INTENTIONAL_FILE` | RETAIN (I1) |
|
|
206
|
+
| `test/installed-version-baseline.test 2.js` | `test/installed-version-baseline.test.js` | untracked; history=no | no | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
207
|
+
| `test/migration-checklist-context-runtime.test 2.js` | `test/migration-checklist-context-runtime.test.js` | untracked; history=no | no | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
208
|
+
| `test/migration-checklist-contract.test 2.js` | `test/migration-checklist-contract.test.js` | untracked; history=no | no | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
209
|
+
| `test/migration-checklist-contract.test 3.js` | `test/migration-checklist-contract.test.js` | untracked; history=no | no | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
210
|
+
| `test/migration-checklist-evaluation-v2.test 2.js` | `test/migration-checklist-evaluation-v2.test.js` | untracked; history=no | no | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
211
|
+
| `test/migration-checklist-evaluation.test 2.js` | `test/migration-checklist-evaluation.test.js` | untracked; history=no | no | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
212
|
+
| `test/migration-checklist-evaluation.test 3.js` | `test/migration-checklist-evaluation.test.js` | untracked; history=no | no | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
213
|
+
| `test/migration-checklist-extractive-experiment.test 2.js` | `test/migration-checklist-extractive-experiment.test.js` | untracked; history=no | no | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
214
|
+
| `test/migration-checklist-extractive-production.test 2.js` | `test/migration-checklist-extractive-production.test.js` | untracked; history=no | no | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
215
|
+
| `test/migration-checklist-generator.test 2.js` | `test/migration-checklist-generator.test.js` | untracked; history=no | no | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
216
|
+
| `test/migration-checklist-generator.test 3.js` | `test/migration-checklist-generator.test.js` | untracked; history=no | no | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
217
|
+
| `test/migration-checklist-orchestration.test 2.js` | `test/migration-checklist-orchestration.test.js` | untracked; history=no | no | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
218
|
+
| `test/migration-checklist-orchestration.test 3.js` | `test/migration-checklist-orchestration.test.js` | untracked; history=no | no | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
219
|
+
| `test/migration-handoff.test 2.js` | `test/migration-handoff.test.js` | untracked; history=no | no | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
220
|
+
| `test/package-content-guard.test 2.js` | `test/package-content-guard.test.js` | untracked; history=no | no | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
221
|
+
| `test/package-content-guard.test 3.js` | `test/package-content-guard.test.js` | untracked; history=no | no | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
222
|
+
| `test/product-completion-cli.test 2.js` | `test/product-completion-cli.test.js` | untracked; history=no | no | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
223
|
+
| `test/progress-orchestration.test 2.js` | `test/progress-orchestration.test.js` | untracked; history=no | no | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
224
|
+
| `test/progress-orchestration.test 3.js` | `test/progress-orchestration.test.js` | untracked; history=no | no | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
225
|
+
| `test/target-selector.test 2.js` | `test/target-selector.test.js` | untracked; history=no | no | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
226
|
+
| `test/upgrade-decision.test 2.js` | `test/upgrade-decision.test.js` | untracked; history=no | no | yes; same SHA-256 | yes | 0/0 | none | none | `EXACT_DUPLICATE` | DELETE (E1) |
|
|
227
|
+
|
|
228
|
+
## 7. Root-cause assessment and confidence
|
|
229
|
+
|
|
230
|
+
**`PROBABLE_ROOT_CAUSE` — medium confidence.**
|
|
231
|
+
|
|
232
|
+
The evidence is a coherent, untracked set of literal `" 2"` and `" 3"` copies
|
|
233
|
+
spanning source, schema, tests, evaluation data, and helper scripts. Each copy is
|
|
234
|
+
byte-identical to a canonical sibling, no candidate ever appeared in Git history,
|
|
235
|
+
and repository scripts contain no generator that writes numeric-suffixed source
|
|
236
|
+
names. File timestamps are clustered, but were used only as correlation.
|
|
237
|
+
|
|
238
|
+
This is most consistent with an external filesystem copy/conflict event such as a
|
|
239
|
+
Finder duplicate, cloud-sync conflict copy, editor/file-manager copy, archive
|
|
240
|
+
restoration, or prior tooling operation. The repository cannot distinguish the
|
|
241
|
+
specific actor, so no `CONFIRMED_ROOT_CAUSE` claim is made. Merge resolution is
|
|
242
|
+
unlikely because Git has no index/history trace; generated output is unlikely
|
|
243
|
+
because the same operation copied hand-authored sources, schemas, tests, and scripts.
|
|
244
|
+
The packaging configuration did not create the files, but its broad directory
|
|
245
|
+
inclusion and missing suspicious-name rule allowed 76 of them to ship.
|
|
246
|
+
|
|
247
|
+
## 8. Files deleted, retained, recovered or escalated
|
|
248
|
+
|
|
249
|
+
| Outcome | Count | Detail |
|
|
250
|
+
| --- | ---: | --- |
|
|
251
|
+
| Deleted | 108 | Explicitly reviewed exact copies: 2 eval, 9 schema, 6 script, 67 source, 24 test |
|
|
252
|
+
| Retained | 12 | 9 non-packaged capture copies, 1 ignored `.DS_Store`, 2 intentional tracked files |
|
|
253
|
+
| Recovered/ported | 0 | No unique content existed to recover |
|
|
254
|
+
| Escalated | 0 | No divergent or ownership-ambiguous packaged artifact remained |
|
|
255
|
+
|
|
256
|
+
Deletion was performed with an explicit path list after evidence collection. No
|
|
257
|
+
canonical sibling, capture copy, ignored file, qualification record, user report, or
|
|
258
|
+
other pre-existing output was deleted.
|
|
259
|
+
|
|
260
|
+
## 9. Proof that no unique change was lost
|
|
261
|
+
|
|
262
|
+
All 108 deleted files met the `EXACT_DUPLICATE` contract before deletion:
|
|
263
|
+
|
|
264
|
+
- candidate and canonical SHA-256 digests matched;
|
|
265
|
+
- direct byte comparison succeeded, which is stronger than formatting-based
|
|
266
|
+
semantic inference;
|
|
267
|
+
- normalized comparison also succeeded and unique-line deltas were `0/0`;
|
|
268
|
+
- every candidate was untracked and absent from all reachable Git history;
|
|
269
|
+
- exact relative-path and basename reference scans returned no references;
|
|
270
|
+
- canonical siblings remain present, including all package-required schemas and
|
|
271
|
+
runtime modules;
|
|
272
|
+
- no JS import/export, schema identity, dataset registry, manifest, test-discovery,
|
|
273
|
+
or qualification identity belonged to a candidate path;
|
|
274
|
+
- post-cleanup canonical tests, package guard, packaged import, schema/dataset
|
|
275
|
+
identity checks, and clean-install smoke passed.
|
|
276
|
+
|
|
277
|
+
There were no byte-different candidates, so no semantic merge judgment or hunk port
|
|
278
|
+
was needed. The cleanup cannot remove a change that existed only in a candidate
|
|
279
|
+
because byte equality proves each candidate's content already exists in its retained
|
|
280
|
+
canonical sibling.
|
|
281
|
+
|
|
282
|
+
## 10. Before/after tarball comparison
|
|
283
|
+
|
|
284
|
+
| Package state | Entries | Manifest digest | Explanation |
|
|
285
|
+
| --- | ---: | --- | --- |
|
|
286
|
+
| Initial reproduced | 304 | `sha256:9db3d6d5c03fa349b78bb1f607aff08468e83c5586867813b2b37f0e5d16092e` | Included 76 unintended exact copies |
|
|
287
|
+
| Cleanup, before this report | 228 | `sha256:50c3d79e5a2b5b361cac105bc8d19196467279c91299f53de3e2691f897693bb` | Exactly 76 duplicate entries removed |
|
|
288
|
+
| Final, including this report | 229 | `sha256:50c3d79e5a2b5b361cac105bc8d19196467279c91299f53de3e2691f897693bb` for the stable 228-entry release-content subset; the self-referential report entry verified separately | One intentional public OSS-01 report added |
|
|
289
|
+
|
|
290
|
+
No required asset disappeared. The initial-to-pre-report entry delta is exactly
|
|
291
|
+
`-76`; the pre-report-to-final delta is exactly `+1` and is this report. The final
|
|
292
|
+
manifest is therefore explained by content identity rather than by forcing a target
|
|
293
|
+
count.
|
|
294
|
+
|
|
295
|
+
Two consecutive final `npm pack` executions from the same source state produced
|
|
296
|
+
byte-identical tarballs. The report records the stable digest of every package entry
|
|
297
|
+
other than itself because embedding a digest that includes this report would mutate
|
|
298
|
+
the digest it claims to record.
|
|
299
|
+
|
|
300
|
+
## 11. Remaining suspicious-file scan
|
|
301
|
+
|
|
302
|
+
| Scope | Remaining match | Classification | Package impact |
|
|
303
|
+
| --- | --- | --- | --- |
|
|
304
|
+
| Working tree | 9 numeric-suffix files under the existing RR02 CLI-capture directory | `EXACT_DUPLICATE`, retained evidence | Excluded by package `files` rules; not packaged |
|
|
305
|
+
| Working tree | `.DS_Store` | `ORPHAN_ARTIFACT`, ignored OS metadata | Not packaged |
|
|
306
|
+
| Working tree and tarball | `docs/ts-fix-01-exact-duplicate-occurrence-target-selection-architecture.md` | `INTENTIONAL_FILE`; tracked historical architecture identity | Intentionally packaged |
|
|
307
|
+
| Working tree and tarball | `docs/reviews/oss-01-duplicate-artifact-investigation-cleanup.md` | `INTENTIONAL_FILE`; this task's required report | Intentionally packaged |
|
|
308
|
+
| Working tree | `test/fixtures/knowledge-manifest/duplicate-occurrence.json` | `INTENTIONAL_FILE`; tracked fixture referenced by tests | Tests are not packaged |
|
|
309
|
+
|
|
310
|
+
The extracted final tarball has no unintended numeric/copy/backup/editor artifact,
|
|
311
|
+
`.DS_Store`, capture/runtime output, `.env`, credential, local qualification
|
|
312
|
+
input/record, unexpected tarball, or Git metadata. The only broad-word match is the
|
|
313
|
+
intentional architecture document and this required investigation report. Existing
|
|
314
|
+
historical documentation may contain previously reported local-path examples; that
|
|
315
|
+
known Medium package-hygiene item is not duplicate drift and was not changed in
|
|
316
|
+
OSS-01.
|
|
317
|
+
|
|
318
|
+
## 12. Tests, package guard, clean install and exports
|
|
319
|
+
|
|
320
|
+
| Check | Result |
|
|
321
|
+
| --- | --- |
|
|
322
|
+
| `git diff --check` | Pass |
|
|
323
|
+
| Canonical `npm test` | 616 total: 615 pass, 0 fail, 1 known sandbox-loopback skip |
|
|
324
|
+
| `npm run check:package` | Pass; required assets present and capture count zero |
|
|
325
|
+
| `npm pack --dry-run --json` | Pass; final entry count explained |
|
|
326
|
+
| Actual tarball extraction | Pass; bytes inventoried and suspicious-name scan clean |
|
|
327
|
+
| Repeat-pack determinism | Pass; consecutive tarballs were byte-identical |
|
|
328
|
+
| Clean install from final tarball | Pass |
|
|
329
|
+
| Packaged CLI `--version` | Pass: `0.5.0` |
|
|
330
|
+
| Packaged CLI `--help` | Pass |
|
|
331
|
+
| ESM package import | Pass |
|
|
332
|
+
| Public export count | Pass: 438 |
|
|
333
|
+
| Schema loading/validation | Pass |
|
|
334
|
+
| Evaluation dataset and qualification identity | Pass; deterministic, no provider call |
|
|
335
|
+
|
|
336
|
+
## 13. Blocked/skipped checks
|
|
337
|
+
|
|
338
|
+
No release-hygiene check was blocked. One canonical test remains skipped because the
|
|
339
|
+
sandbox does not provide the loopback listener required by that online CLI test; it
|
|
340
|
+
is the same known baseline skip, not introduced by cleanup. Real-provider execution
|
|
341
|
+
was deliberately not run because it is a non-goal. No target repository was changed
|
|
342
|
+
and no qualification record was regenerated.
|
|
343
|
+
|
|
344
|
+
## 14. Defects by severity
|
|
345
|
+
|
|
346
|
+
| Severity | Count | Status |
|
|
347
|
+
| --- | ---: | --- |
|
|
348
|
+
| Blocker | 0 | None |
|
|
349
|
+
| High | 0 | None |
|
|
350
|
+
| Medium | 2 | Root-cause actor remains uncertain; package guard does not yet reject duplicate-style package drift |
|
|
351
|
+
| Low/review | 2 | Nine unrelated capture copies and ignored `.DS_Store` remain outside the package |
|
|
352
|
+
|
|
353
|
+
The Medium items do not leave an ambiguous or unintended file in the tarball. Guard
|
|
354
|
+
hardening is explicitly the next gate.
|
|
355
|
+
|
|
356
|
+
## 15. Package-guard follow-up requirements
|
|
357
|
+
|
|
358
|
+
OSS-02 should add deterministic checks without treating every occurrence of words
|
|
359
|
+
such as `duplicate` as an error:
|
|
360
|
+
|
|
361
|
+
1. Reject numeric duplicate suffixes (`" 2"`, `" 3"`, and parenthesized variants)
|
|
362
|
+
in protected packaged directories such as `src/`, `schemas/`, and published eval
|
|
363
|
+
assets.
|
|
364
|
+
2. Reject copy, backup, editor temporary, swap, `.DS_Store`, and archive artifacts
|
|
365
|
+
in the actual tarball.
|
|
366
|
+
3. Detect unexpected untracked packaged source, schema, and eval files while
|
|
367
|
+
preserving intentional tracked names such as the TS-FIX-01 document and
|
|
368
|
+
`duplicate-occurrence.json` fixture.
|
|
369
|
+
4. Compare an extracted actual-tarball manifest, not only source-tree expectations,
|
|
370
|
+
and surface explained additions/removals with a deterministic digest.
|
|
371
|
+
5. Add regression fixtures for whitespace, nested paths, shell-special characters,
|
|
372
|
+
Unicode/case behavior, symlinks, and intentional false positives.
|
|
373
|
+
|
|
374
|
+
No OSS-02 implementation is mixed into this cleanup.
|
|
375
|
+
|
|
376
|
+
## 16. Exact files changed/created by this task
|
|
377
|
+
|
|
378
|
+
- Created `docs/reviews/oss-01-duplicate-artifact-investigation-cleanup.md`.
|
|
379
|
+
- Removed 108 untracked, exact duplicate artifacts listed as `DELETE` in the
|
|
380
|
+
per-file evidence table: 2 eval, 9 schema, 6 script, 67 source, and 24 test files.
|
|
381
|
+
- Changed no tracked production source, schema, test, package metadata, version, or
|
|
382
|
+
canonical asset.
|
|
383
|
+
|
|
384
|
+
Because the removed artifacts were untracked, Git can show the new report but cannot
|
|
385
|
+
represent their deletion as a tracked diff.
|
|
386
|
+
|
|
387
|
+
## 17. Pre-existing changes preserved
|
|
388
|
+
|
|
389
|
+
The two untracked v0.5.0 review reports, all RR02/RR02-FIX-05 capture and rerun
|
|
390
|
+
evidence, the nine numeric-suffix capture copies, ignored `.DS_Store`, ignored
|
|
391
|
+
qualification material, and all unrelated untracked review output were preserved.
|
|
392
|
+
The branch, commit, `package.json` version, npm metadata, target repository, and
|
|
393
|
+
provider state were not changed. No commit, merge, tag, push, GitHub Release, npm
|
|
394
|
+
publish, or real-provider call was performed.
|
|
395
|
+
|
|
396
|
+
## 18. Final verdict and next gate
|
|
397
|
+
|
|
398
|
+
**Verdict: `TARBALL_HYGIENE_RESTORED_WITH_REVIEW_ITEMS`**
|
|
399
|
+
|
|
400
|
+
All suspicious candidates have a decision; every deletion has byte-level proof; no
|
|
401
|
+
unique content was lost; no unintended copy artifact remains in the actual tarball;
|
|
402
|
+
manifest deltas are fully explained; canonical tests, package verification, clean
|
|
403
|
+
installation, CLI/import/export, and schema/dataset identity checks pass; and there
|
|
404
|
+
is no Blocker or High defect. The retained review items are non-packaged evidence or
|
|
405
|
+
ignored metadata, and the precise external actor that created the copies cannot be
|
|
406
|
+
confirmed from repository evidence.
|
|
407
|
+
|
|
408
|
+
**Gate: `PROCEED_TO_OSS_02_PACKAGE_GUARD_HARDENING`**
|
|
409
|
+
|
|
410
|
+
This gate permits only the next hygiene task. It does not authorize a public preview,
|
|
411
|
+
tag, release, or publish.
|