0%

Project Profile Research SSOT

Goal

  • Provide deterministic read-only project research as the single evidence source for installation and migration planning.

Files

  • MODIFY scripts/harness_dist/project_detect.py
  • CREATE scripts/project_research_runtime/
  • MODIFY scripts/project_research_runtime/project_profile.schema.json
  • MODIFY scripts/harness_dist/tests/test_classify.py

Work Items

  • Extract project detection into scripts/project_research_runtime, complete the section-01 ProjectProfile schema with evidence constraints, and make harness_dist/project_detect.py delegate to that API.
  • Represent repository/worktree roots, languages, frameworks, commands, source/plan layouts, provider surfaces, overlays, Git state, and platform state with evidence per fact.
  • Canonicalize ordering and serialization so identical committed project state yields an identical research digest; preserve unknown facts instead of guessing defaults.
  • Prove the research path performs no writes, subprocess mutations, Git staging, plan writes, provider launches, or cache changes.

Verification

  • Write failing positive, negative, interruption, concurrency, and idempotency cases before implementation.
  • Pin the consumer-visible outcome through the real CLI/runtime entry point.
  • Run focused pytest and the owning runtime self-test with a 150-second test timeout.
  • Run python -m scripts.harness_dist verify --root . when distributed artifact classification changes.