Skip to content

T-OUKL-system-graph-project-facets-onto-aspects

State: closed/done · Impact: low · Complexity: small

Stop System Graph’s project-facets.get.ts from shelling out to moon query projects a second time for facts T-1VJD’s aspect layer already has the plumbing to read once per request.

products/system-graph/server/routes/walk/project-facets.get.ts (lines 32, 58-63) calls spawnRunnerAsync('moon').run(['query','projects']) directly, independent of detect-runners’s own moon provider, to answer “what’s this project’s moon layer/stack/language” — a third, separate project-role taxonomy alongside detect-runners’s tasks and manifest-graph’s aspects.

The route reads AspectFacts.moon.role off @sksizer/detect-runners/aspects’s collectAspects(), called once per request the same way buildSystemGraph already is. The route file itself is unchanged otherwise — it still aggregates/serves the same response shape, only its data source for the moon role fields changes.

  1. Replace project-facets.get.ts’s own spawnRunnerAsync('moon').run(['query','projects']) call with a collectAspects(root, opts) call, reading .moon.role per project.
  2. Confirm the route’s response shape is unchanged — this is a data-source swap, not an API change.
  3. Remove the now-dead spawnRunnerAsync('moon') import if nothing else in the route uses it.
AreaNote
products/system-graph/server/routes/walk/project-facets.get.tsmoon query projects shell-out replaced by AspectFacts.moon.role
  • AC-1: The route’s HTTP response is byte-for-byte identical, for the existing test fixtures, before and after this change.
  • AC-2: project-facets.get.ts no longer calls spawnRunnerAsync('moon') (grep-verified).
  • AC-3: The relevant system-graph route tests pass.
  • project-facets.get.ts’s own joining/aggregation logic besides the shell-out — unaffected, only its moon-role data source changes.
  • manifest-graph/sdlc consumer migration — T-3GMU/T-LCKH.

T-1VJD only — can run in parallel with T-LCKH/T-3GMU.

Detection-consolidation research: ../decisions/D-LSLH-collapse-verbs-workflows-chain-hooks/detection-consolidation.md §4 “What gets deleted”, §6 “PR 5”.

T-1VJD


← Back to Tasks