@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,78 @@
|
|
|
1
|
+
# DepVerdict architecture overview
|
|
2
|
+
|
|
3
|
+
DepVerdict `0.6.0-alpha.1` is a decision-first, artifact-oriented CLI for
|
|
4
|
+
evidence-bounded dependency upgrade analysis. It separates deterministic repository
|
|
5
|
+
facts and policy from provider-assisted interpretation.
|
|
6
|
+
|
|
7
|
+
## Product workflow
|
|
8
|
+
|
|
9
|
+
```text
|
|
10
|
+
Project discovery
|
|
11
|
+
→ knowledge and evidence research
|
|
12
|
+
→ version analysis
|
|
13
|
+
→ source usage and coverage
|
|
14
|
+
→ repository impact and evidence
|
|
15
|
+
→ deterministic Upgrade Decision
|
|
16
|
+
→ product completion/report
|
|
17
|
+
→ optional experimental Migration Checklist
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Each stage validates its inputs and publishes versioned artifacts under
|
|
21
|
+
`.depverdict/` by default. A missing installed baseline, target, evidence source,
|
|
22
|
+
comparable version, or supported analyzer coverage remains explicit and fails
|
|
23
|
+
closed; it is not converted into a positive safety conclusion.
|
|
24
|
+
|
|
25
|
+
## Ownership boundaries
|
|
26
|
+
|
|
27
|
+
| Layer | Authority |
|
|
28
|
+
| --- | --- |
|
|
29
|
+
| Project Manifest | Dependency occurrence identity, declaration, project shape, and installed baseline when resolvable. |
|
|
30
|
+
| Knowledge artifacts | Registry target candidates, official/publisher sources, snapshots, and provenance. |
|
|
31
|
+
| Version Analysis | Schema-validated target-scoped findings and bounded AI-assisted interpretation. |
|
|
32
|
+
| Usage and Impact | Supported source occurrences, analyzer coverage, and evidence-backed impact. |
|
|
33
|
+
| Upgrade Decision | Deterministic decision, structured recommendation driver, and reason codes. |
|
|
34
|
+
| Product completion | User-facing completion state, next action, summary, and exit code. |
|
|
35
|
+
| Migration Checklist | Experimental, opt-in, evidence-bounded handoff requiring human review. |
|
|
36
|
+
|
|
37
|
+
Registry latest is discovery data, not caller intent and not a recommendation. An
|
|
38
|
+
explicit target is structured caller intent but still requires adequate evidence,
|
|
39
|
+
coverage, and deterministic policy. AI prose cannot create an urgency driver,
|
|
40
|
+
approve work, select repository paths, execute commands, or modify source.
|
|
41
|
+
|
|
42
|
+
## Identity and compatibility
|
|
43
|
+
|
|
44
|
+
The canonical identities are `@thomasminh1995/depverdict`, `depverdict`,
|
|
45
|
+
`.depverdict/`, and `DEPVERDICT_*`. During one `0.6.x` preview compatibility
|
|
46
|
+
window, `upgradelens`, `.upgradelens/` input fallback, and `UPGRADELENS_*`
|
|
47
|
+
fallback remain available with bounded warnings.
|
|
48
|
+
|
|
49
|
+
Persisted schema names, `generator.name: "UpgradeLens"`, task IDs, reason codes,
|
|
50
|
+
provider qualification identities, and public exports are compatibility protocols,
|
|
51
|
+
not current product presentation. They remain stable until a separately versioned
|
|
52
|
+
contract changes them.
|
|
53
|
+
|
|
54
|
+
## Safety and side effects
|
|
55
|
+
|
|
56
|
+
DepVerdict reads repository manifests, lockfiles, and supported source files and
|
|
57
|
+
writes only its artifacts or explicit caller-selected output paths. It does not:
|
|
58
|
+
|
|
59
|
+
- modify manifests or source;
|
|
60
|
+
- install or upgrade dependencies;
|
|
61
|
+
- execute suggested verification commands;
|
|
62
|
+
- authorize a developer or Coding Agent to patch code;
|
|
63
|
+
- synthesize proof that a migration is safe or complete.
|
|
64
|
+
|
|
65
|
+
Provider/model qualification is bound to exact runtime, dataset, prompt, schema,
|
|
66
|
+
policy, and presentation identity. Offline operation prevents registry and
|
|
67
|
+
evidence-source research but may still require a configured or injected AI runtime
|
|
68
|
+
for Version Analysis; absent evidence stays absent.
|
|
69
|
+
|
|
70
|
+
## Versioned records
|
|
71
|
+
|
|
72
|
+
Older MVP, IA, MP, RR, OSS, validation, and release documents record the
|
|
73
|
+
UpgradeLens identity, commands, artifact roots, and results that were true for
|
|
74
|
+
their milestone. They are retained as historical or versioned architecture records
|
|
75
|
+
and are not current command documentation. Use the root README and this overview
|
|
76
|
+
for the current DepVerdict interface, then consult a versioned record for the
|
|
77
|
+
design rationale of that specific contract.
|
|
78
|
+
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
# CLI progress contract
|
|
2
|
+
|
|
3
|
+
`depverdict analyze <repository>` exposes one presentation-only progress
|
|
4
|
+
stream for the complete sequential pipeline.
|
|
5
|
+
|
|
6
|
+
The deprecated `upgradelens` executable reaches the same runtime during the
|
|
7
|
+
`0.6.x` preview window and adds only its bounded compatibility warning.
|
|
8
|
+
|
|
9
|
+
## Modes
|
|
10
|
+
|
|
11
|
+
- `--progress auto`: interactive when `stderr.isTTY` is true, plain otherwise.
|
|
12
|
+
- `--progress interactive`: append-only interactive lines even when redirected.
|
|
13
|
+
- `--progress plain`: stable grep-friendly lines even on a TTY.
|
|
14
|
+
|
|
15
|
+
Neither renderer uses cursor movement, carriage-return rewriting, a hidden
|
|
16
|
+
cursor, or spinner animation. `NO_COLOR` replaces interactive glyph semantics
|
|
17
|
+
with text labels such as `START`, `WORKING`, `WAITING`, and `DONE`.
|
|
18
|
+
|
|
19
|
+
## Lifecycle and ownership
|
|
20
|
+
|
|
21
|
+
```text
|
|
22
|
+
pipeline scheduler
|
|
23
|
+
↓
|
|
24
|
+
stage lifecycle
|
|
25
|
+
↓
|
|
26
|
+
bounded activity updates
|
|
27
|
+
↓
|
|
28
|
+
progress event normalization
|
|
29
|
+
↓
|
|
30
|
+
interactive renderer | plain renderer
|
|
31
|
+
↓
|
|
32
|
+
final summary / failure output
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
The pipeline owns stage order, state, terminal outcome, monotonic start time,
|
|
36
|
+
elapsed duration, and heartbeat scheduling. A stage adapter may only supply a
|
|
37
|
+
constrained activity kind, a sanitized subject, and a `completed/total` pair
|
|
38
|
+
when both values are deterministic and already known. Renderers do not infer
|
|
39
|
+
business state from display text.
|
|
40
|
+
|
|
41
|
+
Every scheduled stage terminates as `COMPLETED`, `FAILED`, `SKIPPED`, or
|
|
42
|
+
`CANCELLED`. Stop-on-first-failure and cancellation produce deterministic
|
|
43
|
+
`SKIPPED` events for remaining stages; the plain renderer suppresses those
|
|
44
|
+
individual lines to avoid noise and prints the run terminal summary instead.
|
|
45
|
+
|
|
46
|
+
Events use contract version `1.0.0`, a monotonic sequence, an injected wall
|
|
47
|
+
timestamp, monotonic elapsed milliseconds, a strict field allowlist, and
|
|
48
|
+
immutable objects. Progress events are transient and are never persisted in
|
|
49
|
+
Project, Knowledge, Version, Usage, Impact, Evidence, Migration Checklist, or
|
|
50
|
+
report artifacts.
|
|
51
|
+
|
|
52
|
+
## Heartbeat
|
|
53
|
+
|
|
54
|
+
A stage emits a heartbeat only after five seconds without a lifecycle or
|
|
55
|
+
activity update. Activity resets the quiet interval. Each timer is `unref`'d
|
|
56
|
+
and is removed on completion, failure, cancellation, and runtime disposal.
|
|
57
|
+
Tests use an injected manual clock and scheduler; production does not use fake
|
|
58
|
+
time.
|
|
59
|
+
|
|
60
|
+
Heartbeat reports the latest safe activity and real stage elapsed time. It
|
|
61
|
+
does not produce a percentage, ETA, token stream, retry claim, or model
|
|
62
|
+
“thinking” state. A known count is displayed as `(completed/total)` without
|
|
63
|
+
converting it to a percentage.
|
|
64
|
+
|
|
65
|
+
Project Discovery and Repository Usage Discovery cooperatively yield to the
|
|
66
|
+
Node.js event loop after 64 completed scan units or 50 milliseconds of
|
|
67
|
+
completed-unit work, whichever occurs first. The operation-local scheduler
|
|
68
|
+
uses `setImmediate`; it does not sleep, parallelize scanning, change traversal
|
|
69
|
+
order, or emit heartbeat events itself. Yield points occur only after a
|
|
70
|
+
directory entry, manifest group, or source file has completed, so timers and
|
|
71
|
+
cancellation can run without exposing partially constructed records.
|
|
72
|
+
|
|
73
|
+
## Cancellation and output failures
|
|
74
|
+
|
|
75
|
+
The first `SIGINT` aborts the active analysis signal, marks the current stage
|
|
76
|
+
`CANCELLED`, skips remaining stages, clears heartbeat timers, omits success
|
|
77
|
+
output, and returns exit code 130. Because rendering is append-only there is
|
|
78
|
+
no hidden cursor or in-place frame to restore. The one-shot handler is removed
|
|
79
|
+
after the first interrupt; a second interrupt follows the platform's normal
|
|
80
|
+
immediate behavior.
|
|
81
|
+
|
|
82
|
+
OpenAI-compatible and generic HTTP provider calls receive the caller signal.
|
|
83
|
+
Other stage adapters check the signal at safe boundaries and before artifact
|
|
84
|
+
publication. Discovery and Usage check it at every completed unit and again
|
|
85
|
+
after each actual cooperative yield. Artifact writers remain validate-first
|
|
86
|
+
and atomic, including temporary-file cleanup on write failure.
|
|
87
|
+
|
|
88
|
+
Progress callbacks and renderer writes are isolated. Throwing observers,
|
|
89
|
+
invalid activity updates, or renderer exceptions do not change stage results,
|
|
90
|
+
provider call count, artifacts, scheduling, or qualification decisions.
|
|
91
|
+
|
|
92
|
+
## Privacy and limitations
|
|
93
|
+
|
|
94
|
+
Activity subjects are chosen from bounded stage-owned labels, normalized to
|
|
95
|
+
one line, stripped of control characters, escaped for plain output, and
|
|
96
|
+
limited to 120 characters. Adapters never provide raw prompts, evidence
|
|
97
|
+
bodies, repository source snippets, provider payloads, authorization headers,
|
|
98
|
+
private endpoints, or raw error bodies.
|
|
99
|
+
|
|
100
|
+
Research currently reports a meaningful stage activity but not package
|
|
101
|
+
`N/M`, because its existing concurrent orchestrator does not expose a stable
|
|
102
|
+
per-package callback. No count is invented. Migration Checklist remains
|
|
103
|
+
experimental, opt-in, and mandatory-human-review; progress does not change its
|
|
104
|
+
persisted qualification decision.
|
|
105
|
+
|
|
106
|
+
JavaScript parsing is synchronous within one source file. Cooperative
|
|
107
|
+
scheduling can therefore observe cancellation and run a due heartbeat only
|
|
108
|
+
after that file finishes parsing; it cannot interrupt a single parser call.
|
|
109
|
+
Current supported validation fixtures do not contain one file whose parse
|
|
110
|
+
alone exceeds the five-second quiet threshold. A real supported fixture that
|
|
111
|
+
does so would require a separate incremental-parser or isolation experiment.
|