Skip to content

Hold the generated types package to the same regeneration as functions - #27

Merged
estebanzimanyi merged 1 commit into
MobilityDB:mainfrom
estebanzimanyi:feat/hold-types-to-the-same-regeneration
Sep 3, 2026
Merged

Hold the generated types package to the same regeneration as functions#27
estebanzimanyi merged 1 commit into
MobilityDB:mainfrom
estebanzimanyi:feat/hold-types-to-the-same-regeneration

Conversation

@estebanzimanyi

Copy link
Copy Markdown
Member

CI builds the committed functions/ snapshot, regenerates it from a freshly
derived catalog and reports the drift; types/ arrives generated and no step
regenerates it, so nothing would notice it drifting away from the catalog it is
supposed to be a projection of. A generated tree nothing regenerates is a
hand-written tree with a comment on top.

objectgen.py RUNS codegen.py and then projects the object model, so one
command regenerates both and neither can be refreshed without the other -- which
matters because types/ calls the wrappers codegen emits, and a functions/
refreshed alone leaves the object layer calling a surface that has moved. The CI
regeneration step and the refresh recipe both invoke it; its catalog argument now
defaults to tools/meos-idl.json, where the refresh stages one, so the command
reads the same in both places.

The committed-snapshot build and the drift report widen to cover both packages.
That build is the step that FAILS, and it is where a consumer breakage is caught:
a snapshot which no longer compiles is invisible to a job that regenerates first.

MEASURED on the catalog this tree was generated from: regeneration reproduces the
committed functions/ and types/ with 0 files differing against 116 tracked type
files, so the committed tree IS the projection rather than a snapshot of one.
go build ./functions ./types, go build ./... over all 12 packages, go vet ./types and the parity gate all exit 0.

CI builds the committed functions/ snapshot, regenerates it from a freshly
derived catalog and reports the drift; types/ arrives generated and no step
regenerates it, so nothing would notice it drifting away from the catalog it is
supposed to be a projection of. A generated tree nothing regenerates is a
hand-written tree with a comment on top.

`objectgen.py` RUNS `codegen.py` and then projects the object model, so one
command regenerates both and neither can be refreshed without the other -- which
matters because types/ calls the wrappers codegen emits, and a functions/
refreshed alone leaves the object layer calling a surface that has moved. The CI
regeneration step and the refresh recipe both invoke it; its catalog argument now
defaults to tools/meos-idl.json, where the refresh stages one, so the command
reads the same in both places.

The committed-snapshot build and the drift report widen to cover both packages.
That build is the step that FAILS, and it is where a consumer breakage is caught:
a snapshot which no longer compiles is invisible to a job that regenerates first.

MEASURED on the catalog this tree was generated from: regeneration reproduces the
committed functions/ and types/ with 0 files differing against 116 tracked type
files, so the committed tree IS the projection rather than a snapshot of one.
`go build ./functions ./types`, `go build ./...` over all 12 packages, `go vet
./types` and the parity gate all exit 0.
@estebanzimanyi
estebanzimanyi merged commit 948727e into MobilityDB:main Sep 3, 2026
2 checks passed
@estebanzimanyi
estebanzimanyi deleted the feat/hold-types-to-the-same-regeneration branch September 3, 2026 16:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant