Discharge every abstract test of Annex A - #63
Merged
Conversation
The conformance job builds MobilityDB from master source and runs the Annex A tests that need data against it. Master is what this tier is written against: a job pinned to a release measures a MobilityDB the project no longer develops, so a defect already fixed upstream reads as a live one and blocks work that is not blocked, and deleting a temporal value whose span covers a whole composing sequence segfaults the backend on 1.3.0 and answers correctly on master. Naming a version somebody can install is a reason to also run a release, never a reason to develop against one. A published image is not the source either. The mobilitydb/mobilitydb tags are built by MobilityDB/MobilityDB-docker, a separate repository on its own schedule, so what a tag carries is that repository's packaging rather than the source under test: 18-3.6-master fails to load the library on a missing libgdal.so.39, and 17-3.5-master exits its own entrypoint because the pointcloud extension it asks for is not available. The build recipe is MobilityDB's own .github/workflows/pgversion.yml, and its apt hardening is taken from the checkout rather than copied, so the job follows the project's build as it changes. The families stay at their defaults, which is the surface the routes reach, and loading the extension is a step of its own so that a database which cannot carry MobilityDB says so before the fixture runs.
Appending a temporal primitive geometry to a feature, and appending values to a temporal property, each answer 201: both create a sub-resource, and Annex A requires 201 or 202 of the POST that does so.
Three live tests carry the abstract tests that had none: the moving-feature lifecycle (features-post, mf-delete, tgsequence-post, tpgeometry-delete), the temporal-property values (tproperty-post, tpvalue-delete) and the query parameters (leaf, subTrajectory). Each lifecycle creates its own subject and removes it, so the fixture the read-side tests assert against is untouched, and each parameter assertion is that the answer MOVES: a parameter read and not acted on cannot be told from one ignored. `atsDischargedBy` names, per abstract test needing a backend, the live test that discharges it, and the registry reports that name rather than an unconditional "awaits its live assertion" — which reports a row a named group already asserts as outstanding, so the tier's own coverage report understates its conformance. The map is built from what a test CALLS: the temporal-property lifecycle posts to the plural route, so it discharges tproperties-post-success and not the singular tproperty-post-success. `TestATSEveryLiveRowIsDischarged` keeps every row carrying an entry that names a test the suite declares.
estebanzimanyi
force-pushed
the
ats/annex-a-complete
branch
from
August 30, 2026 22:14
8c87f3e to
55cdf2c
Compare
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.
Annex A is the only conformance instrument Part 1 has, and each of its 45 abstract tests rests on evidence. Three commits of one topic.
The conformance job runs MobilityDB master, which is what this tier is built against. A job pinned to a release measures a MobilityDB the project does not develop, so a defect fixed upstream reads as a live one: deleting a temporal value whose span covers a whole composing sequence segfaults the backend on 1.3.0 and answers correctly on master. Naming a version somebody can install is a reason to also run a release, never a reason to develop against one.
Two POSTs answer 201, which Annex A requires of a POST that creates a sub-resource. Appending a temporal primitive geometry, and appending values to a temporal property, each create one.
Three live tests carry the remaining abstract tests — the moving-feature lifecycle (
features-post,mf-delete,tgsequence-post,tpgeometry-delete), the temporal-property values (tproperty-post,tpvalue-delete) and the query parameters (leaf,subTrajectory). Each lifecycle creates its own subject and removes it, so the fixture the read-side tests assert against stays as it is. Each parameter assertion is that the answer moves: a parameter read and not acted on cannot be told from one ignored.atsDischargedBynames, per abstract test needing a backend, the live test that discharges it, and the registry reports that name in place of an unconditional "awaits its live assertion", which reports a row a named group asserts as outstanding and makes the tier's own coverage report understate its conformance. The map is built from what a test calls: the temporal-property lifecycle posts to the plural route, so it dischargestproperties-post-successand not the singulartproperty-post-success.TestATSEveryLiveRowIsDischargedkeeps every row carrying an entry that names a test the suite declares, and fails in both directions — a dropped entry, and an entry naming a test that does not exist.Against master: 12 live groups pass, 0 placeholder skips, 17 of 17 backend-needing abstract tests discharged, and the 13 sample documents are identical.