cosmograph merge sets — 2026-09-08

15 open PRs by thorwhalen on cosmograph-org/cosmograph, merged onto origin/main @ 3716f38a. Grey lines are stack relationships (a PR based on another PR); coloured arcs are conflicts.

Changes and conflicts

575576577579587602604616631633634636637630632graph-opsstoriesSSOTsolo
stack (base → head) textual conflict semantic conflict (tests) dashed circle = conflicts with base alone

Minimal conflicts

changeskindevidence
#602textualDoes not merge onto main at all: 4 conflicted files (package-lock.json, packages/app/next.config.js, useProjectConfigSave.tsx, CosmographProjectStore.ts). Its merge-base with main is b88b1a08 — its base branch stories_refactor moved on without it. GitHub calls it MERGEABLE because it is targeted at stories_refactor, not main.
#577 #616textualOne overlapping region of tests/unit/commands.test.ts: #577 adds four command ids to the sorted registry list, #616 rewrites the mock factory and adds 3D ids to the same file. Resolution is the union of both edits. Never binds on its own — every closed set containing #616 also contains #587, so the semantic conflict below fires first.
#577 #587semanticFour test files fail to load: store/commands/schemas.ts:89 calls z.enum(CosmographTraversalDirection) and the symbol is undefined at module-evaluation time — the stories refactor reshuffles the packages/cosmograph/src/cosmograph/index.ts barrel. Both PRs green alone; {575,576,577} passes and {587} passes.
#579 #631semantic#631's drift test tests/unit/params-ssot.test.ts asserts the committed ai/schemas/*.json match the TypeScript sources; #579 adds pointColorHopDirection, pointColorHopSeeds, the hopDistance strategy and TraversalDirectionType without regenerating them. Both PRs green alone; {575,576,579} and {575,576,631} both pass. Fix is mechanical: pnpm run ai:params-ssot after the merge.

Maximal good sets

setnPRsdroppedverified
A12#575 #576 #587 #604 #616 #630 #631 #632 #633 #634 #636 #637#577 #579 #602pass (50 s)
B8#575 #576 #579 #587 #604 #616 #630 #632#577 #602 #631 #633 #634 #636 #637pass (40 s)
C10#575 #576 #577 #630 #631 #632 #633 #634 #636 #637#579 #587 #602 #604 #616pass (66 s)
D6#575 #576 #577 #579 #630 #632#587 #602 #604 #616 #631 #633 #634 #636 #637pass (43 s)

Evaluation log

16 evaluations. Validation = pnpm run build:cosmos + pnpm run test + pnpm run lint:ci, the local equivalent of CI's Lint and Unit Tests jobs.

setverdicttimedetailwhy evaluated
#575 #576 #577 #579 #587 #602 #604 #616 #630 #631 #632 #633 #634 #636 #637fail0smerge conflict at ui/snapshot-save-dialog: package-lock.json, packages/app/features/project-builder/hooks/useProjectConfigSave.tsx, packages/app/features/project-builder/store/CosmographProjectStore.ts, packages/app/next.config.jsfull union
#587 #602fail0smerge conflict at ui/snapshot-save-dialog: package-lock.json, packages/app/features/project-builder/hooks/useProjectConfigSave.tsx, packages/app/features/project-builder/store/CosmographProjectStore.ts, packages/app/next.config.jsmanual
#575 #576 #577 #579 #587 #604 #616 #630 #631 #632 #633 #634 #636 #637fail0smerge conflict at snapshots_w_3d: tests/unit/commands.test.tsfull union minus singleton-conflict #602
#575 #576 #579 #587 #604 #616 #630 #631 #632 #633 #634 #636 #637fail99sbuild=0 test=1 lint=0hitting set {602,577}
#575 #576 #577 #579 #587 #604 #630 #631 #632 #633 #634 #636 #637fail54sbuild=0 test=1 lint=0hitting set {602,616}
#575 #576 #577pass37sbuild=0 test=0 lint=0graph-ops stack alone (sanity)
#575 #576 #579pass31sbuild=0 test=0 lint=0hop-color stack alone (sanity)
#575 #576 #579 #631fail38sbuild=0 test=1 lint=0hypothesis A: hop-color params vs SSOT drift test
#575 #576 #577 #587fail45sbuild=0 test=1 lint=0hypothesis B: commands schemas vs stories refactor
#575 #576 #631pass44sbuild=0 test=0 lint=0isolate C3: 579 is the culprit, not the graph-ops base
#587pass46sbuild=0 test=0 lint=0stories root alone (sanity)
#575 #576 #587 #604 #616 #630 #631 #632 #633 #634 #636 #637pass50sbuild=0 test=0 lint=0candidate MSS A: drop 602, 577, 579
#575 #576 #577 #630 #631 #632 #633 #634 #636 #637pass66sbuild=0 test=0 lint=0candidate MSS C: keep 577, drop stories + 579
#575 #576 #587pass47sbuild=0 test=0 lint=0minimality of C4: is 587 innocent against the graph-ops base?
#575 #576 #579 #587 #604 #616 #630 #632pass40sbuild=0 test=0 lint=0candidate MSS B: drop 602, 577 and the SSOT stack
#575 #576 #577 #579 #630 #632pass43sbuild=0 test=0 lint=0candidate MSS D: keep 577 and 579, drop stories + SSOT