Files
Himani Chauhan 4de24dec1d perf(migration): collapse runbook generation to a one-command flow; fix path leak (#373)
* perf(migration): collapse runbook generation to a one-command flow; fix path leak

Runbook generation was taking ~19 min not because of compute (all scanners +
greps run sub-second) but because the Step-0 workflow forced ~21 model
round-trips. This removes the main drivers and fixes the generator bug that
triggered a verify->fix->regenerate loop.

- One-command CLI as the canonical Step-0 path: add `--bpa-json` (pre-fetched
  CAM/MCP findings, no in-process mcpFetcher bridge) and `--llm-findings`
  (Tier-4 results merged + re-rendered + re-cached in one pass). The agent no
  longer reads the generator source or hand-mutates `result.gathered`.
- Union the local analyzer with BPA instead of short-circuiting: BPA stays
  authoritative, the analyzer fills source-only cascade findings BPA's scan
  scope missed (deduped by class name, rendered `BPA / CAM + analyzer`). Removes
  the manual "BPA clean vs real source" reconciliation and is a correctness win.
- Fix relPath: a finding whose path IS the workspace root (e.g. a Dispatcher
  config at the project root) rendered as the absolute path; now collapses to
  '.' so the runbook never leaks the local filesystem layout.
- SKILL.md Step 0 rewritten around the single command; programmatic API demoted
  to an "Advanced" note. scripts/README documents the new flags.
- Tests: relPath root-collapse, classKey dedup, sourceLabel unions,
  preFetchedBpa (no-bridge), mergeLlmFindings, end-to-end llmByPattern, and an
  analyzer-union+dedup test (skips cleanly without a JDK). 152 tests, 0 fail.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* fix(migration): close BPA-incomplete gaps, add Felix SCR scheduler + AMS mode

Follow-up to the one-command runbook flow: three real gaps surfaced running it
against a live project where a BPA/CAM source was attached, plus a mislabelled
dispatcher mode.

- bpaIncomplete: a BPA source present but structurally unable to report a pattern
  no longer marks it clean. templateModernization (CAM can't see templates) now
  falls through to the local content-scan; guavaCache (bpa-only; CAM filters the
  project's own bundles) falls through to the LLM tier instead of silent-clean.
- Scheduler detector: recognise the legacy Felix SCR form
  (org.apache.felix.scr.annotations @Service(Runnable.class) + @Property/@Properties
  with a scheduler.* property), which the OSGi-DS-only detector missed. Adds
  FelixScrScheduler (positive) + FelixPlainRunnable (negative) fixtures.
- Dispatcher detectMode: a monolithic layout WITH AMS markers (ams_* / *_farm.any
  / conf.d/whitelists) is now labelled `ams` instead of a misleading `flexible`.
  Same on-premise executor route as flexible — label only; added to CONVERTIBLE.
- Docs: SKILL.md + references/dispatcher/context.md mode taxonomy updated.
- Tests: migration JS suite 158 (156 pass, 2 skipped, 0 fail); analyzer harness
  115 pass, 0 fail; both skills validate.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Himani Chauhan <hichauha+adobe@adobe.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-18 16:16:35 +05:30
..