@dailephd/my-dev-kit-lab 0.5.2 → 0.6.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/CHANGELOG.md +32 -0
- package/README.md +5 -4
- package/dist/src/evaluation/affectedNeighborhood.js +712 -0
- package/dist/src/evaluation/indexFreshness.js +199 -0
- package/dist/src/evaluation/indexSnapshot.js +393 -0
- package/dist/src/evaluation/runMyDevKitRetrieval.js +34 -0
- package/dist/src/experiments/plugins/warmIndexReuse/execution.js +36 -0
- package/dist/src/experiments/plugins/warmIndexReuse/executionArtifact.js +3 -0
- package/dist/src/experiments/plugins/warmIndexReuse/metrics.js +71 -0
- package/dist/src/experiments/plugins/warmIndexReuse/warmIndexSession.js +26 -3
- package/dist/src/report/experiments/buildPluginExperimentReport.js +26 -2
- package/dist/src/report/experiments/buildWarmIndexReuseReport.js +131 -3
- package/dist/src/report/experiments/renderPluginExperimentReportText.js +139 -0
- package/dist/src/report/experiments/renderWarmIndexReuseHtml.js +167 -0
- package/dist/src/report/experiments/warmIndexReuseReportModel.js +8 -0
- package/docs/METRICS.md +62 -2
- package/examples/tutorial-browser/prepare.mjs +13 -13
- package/examples/tutorial-browser/server.mjs +13 -13
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,38 @@ All notable changes to my-dev-kit-lab are documented here.
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.6.1] - 2026-09-26
|
|
8
|
+
|
|
9
|
+
### Affected-neighborhood experiments
|
|
10
|
+
|
|
11
|
+
Affected-neighborhood evidence for warm-index runs.
|
|
12
|
+
|
|
13
|
+
- Loaded the baseline my-dev-kit graph of the already prepared warm index once per session, from the manifest-referenced symbol index and code graph, and retained it on the existing `WarmIndexSession` (`AffectedNeighborhoodGraphEvidenceV1`, status `complete`, `partial`, or `unavailable`). Graph nodes and edges keep their upstream IDs and edge kinds. Missing, malformed, unsupported, or path-escaping graph artifacts degrade the evidence explicitly and never fail the warm-index session.
|
|
14
|
+
- Mapped each task's confirmed changed indexed files (modified or missing files the index snapshot represents) and the baseline symbols they contain to graph nodes (`AffectedNeighborhoodSeedMappingV1`). A changed symbol means the baseline symbol was present in a confirmed changed indexed file; it is not proof that the symbol's own source text changed. Files the snapshot does not represent are never inferred as changed, and unresolved mappings stay explicit.
|
|
15
|
+
- Computed an exactly one-hop, bidirectional affected neighborhood over every structurally valid retained edge kind (no weighting by kind): the resolved seed nodes plus their direct neighbors, with `affectedEdgeCount` counting the unique baseline edges incident to at least one seed.
|
|
16
|
+
- Mapped each task's existing `expectedFiles` to exact file nodes and its `expectedSymbols` to symbol nodes only within those expected files (one candidate resolves, none is unresolved, several are ambiguous, and there is no global fallback), then computed task overlap and `taskOverlapPercent` over the resolvable task nodes.
|
|
17
|
+
- Classified each task as `related`, `unrelated`, or `unknown` and gave a categorical `reindexRecommendation` (`recommended`, `not-indicated`, or `unknown`). Positive overlap is `related` even under partial evidence; zero overlap is `unrelated` only when the evidence is complete; zero overlap under incomplete evidence is `unknown`; there is no freshness-only shortcut.
|
|
18
|
+
- Integrated the assessment into `executeTask`: it runs immediately after the task's freshness assessment and before warm retrieval, uses only in-memory evidence, never gates retrieval, and never changes run, task, provider, agent, correctness, or token-evidence status.
|
|
19
|
+
- Extended `warm-index-execution.json` additively (schema `my-dev-kit-lab-warm-index-execution-v1` unchanged) with a per-task `affectedNeighborhood` (an assessment object, `null` when none was performed, or absent in older artifacts). The graph itself is not persisted.
|
|
20
|
+
- Added six warm-side numeric metrics with explicit availability: `changedFileCount`, `changedSymbolCount`, `affectedNodeCount`, `affectedEdgeCount`, `taskOverlapCount`, and `taskOverlapPercent` (units `count` and `percent`). Available values appear as warm-outcome `ExperimentMetric` entries (`affected-neighborhood-changed-file-count`, `affected-neighborhood-changed-symbol-count`, `affected-neighborhood-node-count`, `affected-neighborhood-edge-count`, `affected-neighborhood-task-overlap-count`, `affected-neighborhood-task-overlap-percent`); unavailable values are omitted rather than reported as zero, and no run-level aggregate or score exists. `reindexRecommendation` is categorical evidence, not a numeric metric.
|
|
21
|
+
- Extended the warm-index report additively (schema `my-dev-kit-lab-warm-index-report-v1` unchanged) with a per-task affected-neighborhood block, summary counts by assessment status, relationship, and recommendation, bounded identity and diagnostic lists, and fixed recommendation explanations in `report.json`, `report.txt`, and `report.html`. Report code only presents persisted evidence and metric-owner values.
|
|
22
|
+
- No new CLI command or flag, experiment plugin, campaign preset, plot, or gallery item was added, nothing is reindexed automatically, and graph-diff, refreshed-index, and partial-refresh behavior remain later planned work.
|
|
23
|
+
- Extended the packed-package acceptance gate (`npm run verify:packed-package`) with installed-package affected-neighborhood acceptance against the real registry package `@dailephd/my-dev-kit@1.12.4`: a fresh case and a controlled changed-file case that produces real stale, related, and recommended evidence, cross-layer agreement of the execution assessment, metrics, and reports, immutability of the canonical and installed benchmarks, an unchanged CLI surface, and a clean tarball inventory. The obsolete fake-kit assertion that forbade any post-v0.6.0 evidence in the artifact was replaced with the additive persisted-assessment check.
|
|
24
|
+
|
|
25
|
+
## [0.6.0] - 2026-09-24
|
|
26
|
+
|
|
27
|
+
Index freshness and changed-file detection.
|
|
28
|
+
|
|
29
|
+
- Added `IndexSnapshotV1` (schema `my-dev-kit-lab-index-snapshot-v1`): after a warm-index run's one index build, Lab interprets the my-dev-kit manifest and symbol index and records baseline index evidence — manifest metadata, the exact indexed-file set the upstream index contract lists (never a directory walk), per-file SHA-256, size, and modified-time metadata, the index command, and an inventory of generated index artifacts. Snapshots are `complete`, `partial`, or `unavailable` with explicit reasons; source contents are never persisted.
|
|
30
|
+
- Added a configured my-dev-kit `--version` probe, run once per prepared index session outside the measured index build. An unsupported or failing probe is non-fatal and recorded as explicitly unavailable.
|
|
31
|
+
- Added `IndexFreshnessAssessmentV1` (schema `my-dev-kit-lab-index-freshness-v1`): a read-only comparison of the files the snapshot lists against their current state. SHA-256 is the comparison identity; modified time is diagnostic only. Modified and missing indexed files are confirmed changes; unreadable or unresolvable files stay explicit unresolved evidence; files absent from the snapshot are not inferred to be newly indexable. Exactly four statuses: `fresh`, `stale`, `partially-stale`, `unknown`.
|
|
32
|
+
- Freshness is assessed for every task immediately before its warm retrieval and is observational only: it never triggers or recommends reindexing, suppresses retrieval, or changes execution, provider, agent, correctness, or token-evidence status. One index is still built per benchmark project.
|
|
33
|
+
- Extended `warm-index-execution.json` additively (schema `my-dev-kit-lab-warm-index-execution-v1` unchanged) with project-level `indexSnapshot` and task-level `indexFreshness`.
|
|
34
|
+
- Extended the warm-index report additively (schema `my-dev-kit-lab-warm-index-report-v1` unchanged) with an index freshness summary (assessed, unassessed, fresh, stale, partially-stale, and unknown task counts) and per-task freshness evidence in `report.json`, `report.txt`, and `report.html`. Report evidence is bounded to 20 changed files and 10 unresolved entries per task, omits content hashes, and escapes dynamic strings; a task with no assessment is shown as not assessed, distinct from `unknown`. Report limitations and the run interpretation state what freshness does and does not establish.
|
|
35
|
+
- No new CLI command or flag, `ExperimentMetric`, plot, gallery item, or experiment plugin was added: the warm-index metrics, exactly four plots, and the three-item campaign gallery are unchanged, and no reindex recommendation exists.
|
|
36
|
+
- Extended the packed-package acceptance gate (`npm run verify:packed-package`) to prove the exact tarball ships the snapshot and freshness runtime and that an installed warm-index run produces snapshot, tool-version, freshness, and report freshness evidence while the target, installed package, and packaged examples stay unchanged.
|
|
37
|
+
- Validation of the implementation candidate: exact-SHA ordinary CI passed on Ubuntu, macOS, and Windows with Node 24 and latest, and the full local suite passed with the packed-package gate.
|
|
38
|
+
|
|
7
39
|
## [0.5.2] - 2026-09-23
|
|
8
40
|
|
|
9
41
|
Warm-index real-agent campaigns.
|
package/README.md
CHANGED
|
@@ -6,9 +6,7 @@ my-dev-kit provides local repository indexing and graph-guided retrieval. my-dev
|
|
|
6
6
|
|
|
7
7
|
Whole-ecosystem workflows are centralized in [my-dev-kit/docs/ECOSYSTEM_DEVELOPMENT_WORKFLOWS.md](https://github.com/dailephd/my-dev-kit/blob/main/docs/ECOSYSTEM_DEVELOPMENT_WORKFLOWS.md). Its [command-surface compatibility map](https://github.com/dailephd/my-dev-kit/blob/main/docs/ECOSYSTEM_DEVELOPMENT_WORKFLOWS.md#915-command-surface-compatibility-map) documents which Lab outputs can safely seed my-dev-kit investigation, Observer reference work, or Orchestrator evidence, and which look-alike artifacts are not direct inputs.
|
|
8
8
|
|
|
9
|
-
The latest release is v0.
|
|
10
|
-
|
|
11
|
-
The current release is v0.5.2, and the package and installed CLI are version 0.5.2. v0.5.1 (expanded warm-index benchmark suite) is the previous release; v0.6.0 (index freshness and changed-file detection) is next planned. See [docs/CURRENT_STATE.md](docs/CURRENT_STATE.md) for current state.
|
|
9
|
+
The latest release is v0.6.1 (affected-neighborhood experiments), and the package and installed CLI are version 0.6.1. The previous release is v0.6.0 (index freshness and changed-file detection). Version v0.6.2 (incremental-change and staleness plugin) is the next planned version. The v0.4.5 context-integrity evaluation remains intentionally frozen against the published `@dailephd/my-dev-kit@1.10.4` and `@dailephd/my-dev-kit-orchestrator@1.2.3` contracts; those versions are historical validation baselines, not a statement that they are the ecosystem's current releases. See [docs/CURRENT_STATE.md](docs/CURRENT_STATE.md) for current state.
|
|
12
10
|
|
|
13
11
|
v0.4.6 adds a supported `my-dev-kit-lab` installed CLI router (`--help`, `--version`, `security validate`, `audit`, the `experiment` family, `report render`, `plots generate`, `gallery build`, `demo final`, and the historical direct final-demo invocation form), a writable lab workspace model kept separate from the installed package and the inspected target, and a permanent packed-tarball installation/execution acceptance gate (`npm run verify:packed-package`). See [docs/ROADMAP.md](docs/ROADMAP.md) and [docs/CURRENT_STATE.md](docs/CURRENT_STATE.md) for status detail and [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) for the runtime path model. The "Installed CLI" section below documents the shipped command surface; the source-checkout `npm run` workflow in Quickstart remains available for contributors.
|
|
14
12
|
|
|
@@ -17,6 +15,8 @@ v0.4.6 adds a supported `my-dev-kit-lab` installed CLI router (`--help`, `--vers
|
|
|
17
15
|
- **Run context-strategy experiments:** compare `raw-full-file` with `my-dev-kit-guided` using deterministic fixtures or locally configured Codex and Claude CLIs.
|
|
18
16
|
- **Measure warm-index reuse (v0.5.0–v0.5.1, released):** the `warm-index-reuse` experiment plugin builds one my-dev-kit index per benchmark project, reuses it across that project's tasks, and compares every task with a matched `raw-full-file` baseline. Reports separate one-time index-build cost from per-task retrieval cost, show amortized index cost and cumulative measurements, and include deterministic fake-agent correctness and token evidence; `plots generate` renders four warm-index SVG charts. The v0.5.1 release adds a dedicated 12-task benchmark corpus (`benchmarks/contracts/warm-index-benchmark-cases.json`: six medium and six large/mixed tasks tagged `localized`, `cross-module`, or `broad-change`) for comparing warm-index behavior as task count grows. Estimated context tokens (a character-based context-size estimate) and fake-agent total tokens (simulated harness telemetry) are reported separately, and neither is provider billing telemetry.
|
|
19
17
|
- **Run selectable real-agent warm-index campaigns (v0.5.2, released):** `--campaign codex-full`, `claude-full`, or `codex-timeout-isolation` (with `--include-real-agents`) runs exactly one provider — Codex or Claude — against the exact raw and warm contexts the experiment already measured, over the frozen production corpus each preset owns. Provider outcomes (`completed`, `failed`, `timeout`, `invalid-output`, `agent-unavailable`, `agent-limit-reached`, `skipped`) are classified and reported separately from warm-index infrastructure status, so a campaign can complete its indexing/retrieval work even when provider evidence is partial or unavailable. A campaign run automatically produces the report, the same four warm-index SVG charts, a best-effort report screenshot (skipped without a browser runtime, never fatal), and a three-item gallery (report, plots, bounded execution evidence). Legacy runs without `--campaign` keep the existing deterministic fake-agent, report-only behavior unchanged. See [docs/WORKFLOWS.md](docs/WORKFLOWS.md#warm-index-reuse-experiment) and [docs/METRICS.md](docs/METRICS.md#warm-index-reuse-metrics).
|
|
18
|
+
- **Record index freshness evidence (v0.6.0):** a warm-index run captures an index snapshot after its one index build — the exact indexed file set from the my-dev-kit index contract, each with SHA-256 content identity, size, and modified-time metadata, plus the my-dev-kit version and index-command evidence — and assesses freshness immediately before each task's warm retrieval as `fresh`, `stale`, `partially-stale`, or `unknown`. The evidence appears in `warm-index-execution.json` and in the existing `report.json`/`report.txt`/`report.html` warm-index reports. It is observational only: it covers only files the snapshot lists (not the whole repository), never changes retrieval, execution or provider status, and adds no CLI flag, metric, plot, gallery item, or reindex recommendation in v0.6.0. See [docs/METRICS.md](docs/METRICS.md#index-freshness-evidence-v060) and [docs/WORKFLOWS.md](docs/WORKFLOWS.md#warm-index-reuse-experiment).
|
|
19
|
+
- **Assess affected-neighborhood evidence (v0.6.1, current):** using the baseline my-dev-kit graph of the same prepared warm index (loaded once per session), each task's confirmed modified or missing indexed files, and the baseline symbols those files contain, are mapped to graph nodes. The affected neighborhood is those seed nodes plus their direct one-hop neighbors (edges of any kind, either direction). The task's `expectedFiles` and file-scoped `expectedSymbols` are mapped to graph nodes and compared with that neighborhood, which yields six numeric warm-side metrics (`changedFileCount`, `changedSymbolCount`, `affectedNodeCount`, `affectedEdgeCount`, `taskOverlapCount`, `taskOverlapPercent`) plus categorical evidence: a `related`, `unrelated`, or `unknown` relationship and a `recommended`, `not-indicated`, or `unknown` `reindexRecommendation`. Incomplete evidence is reported as `unknown`, never as unrelated. The assessment is recorded additively in `warm-index-execution.json` and shown in the existing `report.json`/`report.txt`/`report.html` warm-index reports. It is observational only: retrieval, execution status, and provider status are unchanged, nothing is reindexed automatically, and no CLI flag, experiment plugin, plot, or gallery item was added. See [docs/METRICS.md](docs/METRICS.md#affected-neighborhood-metrics-v061) and [docs/WORKFLOWS.md](docs/WORKFLOWS.md#warm-index-reuse-experiment).
|
|
20
20
|
- **Audit repository health:** run conservative code-rot detectors for TypeScript/JavaScript, Python, Java, and Kotlin, or adapt security findings into the common audit report.
|
|
21
21
|
- **Validate CLI/package security:** inspect dependencies, package contents, path and subprocess boundaries, malformed inputs, optional static scanners, and bounded fuzz targets.
|
|
22
22
|
- **Validate Android projects:** run nineteen static checks by default, with Gradle operations, external tools, and network access available only through explicit opt-in flags.
|
|
@@ -200,7 +200,7 @@ When `--target` is omitted, the experiment runs in self mode against my-dev-kit-
|
|
|
200
200
|
| Plugin experiment report JSON | `lab-output/experiments/<plugin>/<target>/<run>/report.json` |
|
|
201
201
|
| Plugin experiment report HTML | `lab-output/experiments/<plugin>/<target>/<run>/report.html` |
|
|
202
202
|
| Plugin experiment report text | `lab-output/experiments/<plugin>/<target>/<run>/report.txt` |
|
|
203
|
-
| Warm-index execution evidence | `<experiment out>/warm-index-execution.json` (plus `indexes/`, `commands/`, and `agents/` beneath the same output root) |
|
|
203
|
+
| Warm-index execution evidence | `<experiment out>/warm-index-execution.json` (plus `indexes/`, `commands/`, and `agents/` beneath the same output root); the v0.6.0 artifact carries project-level `indexSnapshot` and per-task `indexFreshness` evidence; the v0.6.1 package adds per-task `affectedNeighborhood` evidence |
|
|
204
204
|
| Warm-index campaign presentation (v0.5.2) | `<experiment out>/plots/` (four charts), `<experiment out>/report.png` (best-effort), `<experiment out>/gallery/gallery-manifest.json` and `gallery-index.html` — automatic for `--campaign` runs only |
|
|
205
205
|
| Plot data | `lab-output/<plots>/plot-data.json` |
|
|
206
206
|
| SVG charts | `lab-output/<plots>/charts/*.svg` |
|
|
@@ -238,6 +238,7 @@ See [docs/METRICS.md](docs/METRICS.md) for full metric definitions.
|
|
|
238
238
|
- The generic experiment-plugin framework has two plugins: `context-strategy-comparison` and the v0.5.0-introduced `warm-index-reuse`. Later plugins such as incremental-change and context-window scaling are future roadmap work
|
|
239
239
|
- `warm-index-reuse` without `--campaign` still uses the deterministic fake agent only. With `--campaign`, exactly one real provider (Codex or Claude) runs per campaign preset — there is no multi-agent matrix, retry, provider switching, or scheduler. The v0.5.1 expanded corpus is deterministic fake-agent benchmark evidence when run without `--campaign`. No warm-index mode calculates a token-savings percentage, break-even task, winner, or ranking, and component-duration sums are not wall-clock latency
|
|
240
240
|
- The current release does not guarantee token savings; it produces auditable evidence for specific cases, targets, agents, and strategies
|
|
241
|
+
- Released v0.6.1 affected-neighborhood evidence is bounded to the baseline graph of the prepared index and to the snapshot-represented files: a changed symbol means the symbol was present in a confirmed changed indexed file, not that its own text was proven to change; `not-indicated` means only that this bounded analysis found no supporting evidence for reindexing, not that skipping a reindex is safe; unresolved or ambiguous expected symbols keep a task at `unknown` rather than unrelated
|
|
241
242
|
- Provider telemetry dashboards, semantic LLM judging, and cloud API billing integration are not yet implemented
|
|
242
243
|
- The six new stage-context strategies have no CLI flags yet, are configured programmatically, and do not yet include plots, screenshots, or gallery integration
|
|
243
244
|
- The published upstream artifacts the stage-context strategies read do not expose considered-but-unselected reads or unnecessary-read evidence; those metrics report `unavailable` rather than zero
|