Migration v3.5 → v3.6
v3.6 changes the preferred execution architecture while retaining schema 3 and the contract-3.5 underwriting/evaluation semantics.
Runtime identity
skill_version = 3.6.0
schema_version = 3
contract_revision = 3.5
runtime_fingerprint = ug-v3.6-claude-code-direct-fmp-20260829Do not reuse v3.5 audits or checkpoints. The evidence schema is compatible, but runtime identity is intentionally different so a cached package cannot be mistaken for the direct-FMP release.
New preferred path
export FMP_API_KEY="..."
python3 skills/us-undervalued-growth-screener/scripts/run_pipeline.py \
--config skills/us-undervalued-growth-screener/assets/claude-code-config.example.json \
--output-dir reports/us-undervalued-growth-screenerThe runner keeps bulk FMP responses on disk, uses a persistent SQLite cache, normalizes FY1 estimates, validates 20-day ADDV, builds the four discovery lanes, and prints only a compact run summary. Claude Code then reads selected candidate packets and performs the existing SEC/IR underwriting and strict final sequence.
Reused central infrastructure
The skill's fmp_client.py is generated from the repository-level scripts/fmp_client/ source of truth. Regenerate and verify it with:
python3 scripts/generate_fmp_client.py
python3 scripts/generate_fmp_client.py --checkNew files
scripts/fmp_client/specials/garp.py.tmpl- generated
skills/us-undervalued-growth-screener/scripts/fmp_client.py skills/us-undervalued-growth-screener/scripts/run_pipeline.pyskills/us-undervalued-growth-screener/assets/claude-code-config.example.jsonskills/us-undervalued-growth-screener/references/claude-code-execution.mdcommands/us-undervalued-growth-screen.md
Operational changes
- Direct FMP HTTP calls replace bulk FMP MCP calls in Claude Code.
- Adaptive market-cap-band splitting prevents silent company-screener truncation.
- Bulk analyst-estimate and EOD endpoints are attempted first; bounded per-symbol fallbacks remain available.
- Exact liquidity work is allocated by GARP opportunity lane.
- Raw provider payloads are never printed to stdout and should not be loaded into model context.
- The Claude Code default deep-dive commitment is three names.
evaluate_candidates.py,prepublish_audit.py, andbundle_run_artifacts.pyremain the publication gates.