Decisions that are not written down: the move to Gitea, the state kept in .git, the accounts file lock #191

Open
opened 2026-11-11 05:58:42 +00:00 by james.maes · 1 comment
Owner

From the release reviews of 1.1.1 (2026-11-10). Not part of 1.1.1; planned for 1.2.0 unless said otherwise.

  • No ADR records the move of the project's home to git.kof22.com as such: where merges are gated, and where signed commits, sign-off and tag protection are enforced now. ADRs 0006 and 0007 and parts of docs/RELEASING.md still describe GitHub.
  • No ADR for the format of what gclo keeps in a repository's .git (the recovery file, its configuration keys), or for the lock protocol of accounts.json.
  • None of the persisted files carries a schema version. Harmless for 1.1.1 (the formats read compatibly in both directions), but the next change of one needs it.
  • Package validation for gclo.Engine (EnablePackageValidation with the last published version as baseline), so that a change of its public surface fails the build instead of being found in a review.
From the release reviews of 1.1.1 (2026-11-10). Not part of 1.1.1; planned for 1.2.0 unless said otherwise. - No ADR records the move of the project's home to `git.kof22.com` as such: where merges are gated, and where signed commits, sign-off and tag protection are enforced now. ADRs 0006 and 0007 and parts of `docs/RELEASING.md` still describe GitHub. - No ADR for the format of what gclo keeps in a repository's `.git` (the recovery file, its configuration keys), or for the lock protocol of `accounts.json`. - None of the persisted files carries a schema version. Harmless for 1.1.1 (the formats read compatibly in both directions), but the next change of one needs it. - Package validation for `gclo.Engine` (`EnablePackageValidation` with the last published version as baseline), so that a change of its public surface fails the build instead of being found in a review.
james.maes added the deferreddocumentation labels 2026-11-11 05:58:42 +00:00
Author
Owner

One more for the schema-version point, found while adding forges to accounts (#204): accounts.json writes enum values as text (tokenSource, and from 1.2.0 forge). A version that does not know a value (a later forge, read by 1.2.0) fails to read that one account and then treats the whole file as unreadable. A property that is unknown is ignored; a value that is unknown is not. Whatever versioning the file gets should cover this: read the accounts that can be read and say which one cannot, or refuse by version before parsing.

One more for the schema-version point, found while adding forges to accounts (#204): `accounts.json` writes enum values as text (`tokenSource`, and from 1.2.0 `forge`). A version that does not know a value (a later forge, read by 1.2.0) fails to read that one account and then treats the whole file as unreadable. A property that is unknown is ignored; a value that is unknown is not. Whatever versioning the file gets should cover this: read the accounts that can be read and say which one cannot, or refuse by version before parsing.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: KofTwentyTwo/gclo#191