Private Preview - features may change without notice
GramSpec
Start free

Keep it true · 9

The model changes

The answer to “where is your audit trail, and can we version this?” The model keeps its own history as people work, readable as sentences about what changed, and any version can be brought back. Connect a GitHub repo once and every version is committed there as well.

Version history. One flow is every save: checked against the version it was read at, sealed as a version when the meaning changes, and committed to a connected GitHub repo. The other is someone reading what changed and restoring an earlier version.GRAMSPECWhoever edits themodelWhoever asks whatchangedEvery saverefused if another windowgot there firstThe modelVersionssealed when the meaningchangesHistorywhat changed, as sentencesYour GitHub repoa commit for everyversion1234123 Version history. One flow is every save: checked against the version it was read at, sealed as a version when the meaning changes, and committed to a connected GitHub repo. The other is someone reading what changed and restoring an earlier version.GRAMSPECWhoeveredits themodelWhoeverasks whatchangedEvery saverefused ifanother windowgot there firstThe modelVersionssealed when themeaning changesHistorywhat changed, assentencesYour GitHubrepoa commit forevery version1234123
Blue circles are every save. Green squares look back, and bring a version back.

Every save

  1. Someone changes the model, and it saves by itself. On the drawing, in a sentence or in Read. Nobody has to remember to commit.
  2. A save is held against the version it was read at. If another window saved in between, the later save is refused with a choice, and an edit is never silently lost.
  3. A version is sealed when the meaning changes. At the pace of a working session, and only when what the model says is different. Moving boxes around never makes one. A rename is recorded as a rename, because the thing keeps its identity underneath.
  4. A connected repo gets a commit. One for each version, with a message that reads as the change. If GitHub cannot be reached the save still succeeds, and the next commit carries the newest state.

Looking back

  1. Someone opens History. Each version is listed with what changed, in the same sentences the model is read in.
  2. Any two versions can be compared. What was added, removed, renamed, and which rule about how many changed.
  3. Any version can be brought back. A restore is an ordinary save, so the same guard applies and what was there before stays in the history.

Taking the model out. The whole model exports as one open file, in the same form the repo receives, and that file opens again as a model. What the business decided its data means is theirs, and it outlives our software.