---
{
  "n": 46,
  "title": "Only commit and push once the whole journal is proven to boot",
  "abstract": "",
  "refs": [],
  "seen": [
    "agent",
    "user"
  ],
  "data": {
    "keywords": [
      "git commit",
      "git push",
      "git tag",
      "release",
      "VERSION",
      "CHANGELOG"
    ],
    "kept": false
  },
  "created": 1790031087.2828531,
  "updated": 1790093386.7285209,
  "deleted": 0.0,
  "completed": 0.0,
  "outcome": "",
  "type": "rule"
}
---
Messages 2178 and 2179. A release that has not been started for real can crash every project that installs it, as 2.78.3 did for Codex and 2.84.0 did to project records. Before every commit and push: the full suite passes, including tests/test_it_boots.py, which installs a packed copy into a fresh project, launches Claude and Codex from it, writes a project record, upgrades again and checks the record survives. When a change touches launching, installing or upgrading, also start a real journal in a scratch project and close it properly afterwards, leaving no process behind.
