Skip to content

Incremental updates: 8 issues to fix for production readiness #50

@jonathanpopham

Description

@jonathanpopham

Problem

  • Incremental sends a changedFiles field the API doesn't understand → 99% of graph nodes get new UUIDs on every single-file update
  • API reclassifies domains from scratch on every request → send 1 file, get garbage domains instead of the real domain model
  • Merge unconditionally replaces domains with the incremental response → correct domains destroyed after every edit

Solution

  • Send small zip through normal endpoint instead of broken AnalyzeIncremental
  • Preserve domains from last full generate on incremental — never overwrite them with partial results
  • Assign new files to existing domains client-side using directory prefix matching
  • Full refresh (analyze/commit) is the only time domains regenerate
  • Send existing graph alongside zip so API can preserve domains and only re-parse changed files (supermodeltools/supermodel-public-api#738)
  • Domain name stability across full refreshes via LLM prompt seeding (supermodeltools/supermodel-public-api#738)

Action items

Incremental fix (P0)

  • Swap `AnalyzeIncremental` → `AnalyzeSidecars` in daemon
  • Stop replacing domains on incremental merge
  • Delete dead `postIncrementalZip` code

Domain assignment

  • Detect new files after merge that have no domain, assign by directory prefix

Tests

  • Port graph-fusion's 25+ daemon/merge/render tests into CLI

Polish

  • Stop making two API calls in `analyze`
  • Setup wizard should offer to start `watch`
  • Hook should use absolute path to binary
  • Watch should clean sidecars on Ctrl+C
  • Fix global map mutation in zip.go
  • Hook should warn if daemon isn't running

API integration (depends on supermodeltools/supermodel-public-api#738)

  • Send existing graph JSON alongside zip on incremental requests
  • Seed LLM prompt with previous domain names on full refresh

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions