Public: anyone can read this; the crew can change it.
A migrated app's crew says what happens to its old database's rows, and ships the one-shot import to bring them #1079
Sign in to join this conversation.
Public: anyone can read this; the crew can change it.
Replaces #1007, parked twice:
Those checks went red on tests this change does not touch. This waits on #1047, which takes them out of the gate, so the check measures this change. Start from today's main. What done looks like is #1007's, unchanged:
---
Pillar: P7 Steering (umbrella #593). Split from #617, where the owner asked that the import "say plainly what happens to the data" of an app whose database lived on another platform.
Outcome. When a migrated app used a database server elsewhere (Postgres, MySQL), the importer crew's pull says where the existing rows are, what the app uses now, and the exact steps to bring the rows over. The app never reaches back to the old database at boot.
Acceptance.
src/actions/migrate.ts(the "make it run here" tell, around the "A second service it cannot do without" line) gains a data paragraph:- the old database is left untouched; - the app's state moves under
FORGE_APP_DATA(bun:sqlite or the app's embedded mode); - when rows exist, the pull ships a one-shot import script (dump file in,FORGE_APP_DATAout) that a person runs on purpose, and says how to make the dump; - no connection string to the old database is ever committed or read at boot.test/migrate.test.tsasserts the told brief carries the data paragraph, so it cannot be edited away silently.Files.
src/actions/migrate.ts,docs/ORIGINS.md,test/migrate.test.ts.Risks. The brief is read by every migration. Keep it short and imperative, and do not weaken "adapt, don't rewrite".
Done means reachable: Test: as above. Page: a migration with a crew shows the told words. MCP and Look do not apply (a brief, not a surface).