Repository navigation
The version says 0.2.0, and the migrations since 0.1.0 are one - #126
Merged
Merged
Conversation
`version_0_2_0` is the six unreleased migrations' own statements in their own order — assembled, not regenerated. Twenty-three of them rewrite rows and two are renames, and a model differ writes neither: it drops every `UPDATE` and renders a rename as a drop and a create, which a schema comparison cannot see. `dotnet ef migrations script version_0_1_0` is byte-identical before and after at 95 statements once the history rows are stripped. `RoleMigrationTests` targeted a migration the squash deletes. It now starts at the previous release, which is the state its own summary always claimed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The preparation commit for 0.2.0: the version, the copies of it in
README.md, the six unreleased migrations squashed intoversion_0_2_0, and the runbook's dated readings refreshed.The squash is an assembly, not a regeneration
The 0.2.0 range holds 23
migrationBuilder.Sqlcalls across three migrations and two renames. A model differ emits DDL from a comparison of two models: it produces noUPDATEat all, and it rendersRenameTableandRenameColumnas a drop and a create. Regeneratingversion_0_2_0the way 0.1.0 was collapsed would therefore have produced a schema-identical, data-destroying migration — an installation upgrading from 0.1.0 would keeptemplate:permission keys that now match nothing, lose every row ofPermissionTemplates, and findAnonymizeAfterandSourceAnonymizedAtempty.So
version_0_2_0is the six migrations' own statements in their own order:Upis theirUpbodies concatenated chronologically,DowntheirDownbodies in reverse. Nothing was rewritten, so nothing could be dropped in rewriting.How that is checked
dotnet ef migrations script version_0_1_0 --context ApplicationDbContext, run before the assembly and after it — this is what a database standing at 0.1.0 actually receives:INSERT INTO "__EFMigrationsHistory"blocks with theirCOMMIT; START TRANSACTION;pairs, and the last row'sMigrationIdA schema comparison cannot see this difference, which is why it is not the proof. It was run anyway: 2972 lines from an empty database either side, differing only in
pg_dump's own\restrictsession token, with no column reordering. Two history rows and one, as expected —LtiDbContextgained nothing because nothing in the range touched it.20260920180000_version_0_2_0.Designer.cs's model compared line by line withApplicationDbContextModelSnapshot.cs: 2776 lines each, zero differing lines. The snapshot itself is untouched.RoleMigrationTestsis what caught the squashThree tests failed with
The migration '20260912215309_printoutClaim' was not found. They are the only thing in the repository that checks a data migration — they migrate to a named earlier migration, seed an installation's rows, migrate forward and assert what theUPDATEs did — and a squash deletes the id they target.Previousnow names20260907183332_version_0_1_0, the previous release's own migration. That is the state the class summary already said they start from ("an installation as 0.1.0 left it"), it is the real upgrade path, and it is the only id a squash leaves standing. The seeds touch only tables that exist at 0.1.0.Sabotaged afterwards to prove they still bite: breaking the grant-linking
UPDATEturnsAn_untouched_grant_is_linked_and_every_other_kind_is_left_alonered; breaking the key the managerUPDATEadds turnsA_manager_grant_from_before_roles_is_linkedred.Gates
989 passed, 0 failed, 0 skipped, 3 m 9 s. Build clean under
-warnaserror. No vulnerable package, transitive included.openapi.jsonidentical to what the development container serves,sha256 793eb42a…— which is the valueAlgoJudge-Docs/content-sources.jsonwill need to pin..env.examplematches the compose substitutions both ways, and no.envexists in tree or index.Two things this does not settle
Tagging the Server without the Client.
DECISIONS_AND_OPEN_QUESTIONS.mdof 2026-09-18 says Server and Client 0.2 are tagged together, because Ops defaults both images to the moving0and a 0.2 Server beside a 0.1.1 Client answers self-enrollment with 404. That was verified rather than assumed and remains true. Releasing the Server alone is a deliberate choice made with it in view; it belongs at the top of the release note, and the decision record needs amending to match.Dependabot #121 raises
dotnet-efto 10.0.12, and the tool version is written into the new migration'sProductVersionannotation and its history row. Merging it between this commit and the tag means assembling and re-verifying the migration again. Before this branch, or after the tag.