Skip to content

ci(vendor): add a vendor-drift workflow#5

Closed
estebanzimanyi wants to merge 87 commits into
MobilityDB:masterfrom
estebanzimanyi:ci/vendor-drift-gate
Closed

ci(vendor): add a vendor-drift workflow#5
estebanzimanyi wants to merge 87 commits into
MobilityDB:masterfrom
estebanzimanyi:ci/vendor-drift-gate

Conversation

@estebanzimanyi
Copy link
Copy Markdown
Member

@estebanzimanyi estebanzimanyi commented May 20, 2026

Step 3 of docs/MEOS_API_INGESTION_PLAN.md: a CI gate that regenerates vendor/meos-api/ from MEOS-API + MobilityDB master and fails the PR if any committed artefact is stale.

Trigger

  • PRs touching vendor/meos-api/**, Makefile, or the workflow itself
  • Push to master (post-merge sanity)
  • Daily 06:00 UTC cron (surfaces upstream drift with no open PR)
  • workflow_dispatch

Behaviour

The workflow installs clang libclang-dev libjson-c-dev libgsl-dev libproj-dev libgeos-dev postgresql-server-dev-all so libclang's sysroot resolves the same way as a local checkout, runs make vendor-meos-api, and git diff --exit-code -- vendor/meos-api/. On drift it emits:

::error::vendor/meos-api/ is stale. Run `make vendor-meos-api` locally and open a refresh PR.

Stacks on #4 (the make vendor-meos-api Makefile target + the vendored artefacts).

sirimeraoui and others added 18 commits March 23, 2026 15:56
MobilityAPI's working tree is the result of two distinct
contribution phases that today's repo doesn't make visible:

1. **pg_mfserv (March 2024)** — the founding OGC API – Moving
   Features Python server for MobilityDB, authored at ULB.
   - Maxime Schoemans (@mschoema) — initial commit, endpoint design.
   - Victor Morabito (@MrMaxime1er) — main developer of the
     pg_mfserv codebase: column discovery, request handling,
     exception handling, route refactors.

2. **MobilityAPI (2025–)** — the current production-grade
   implementation, also at ULB.
   - Sirine Meraoui (@sirimeraoui) — current maintainer; structured
     resource layout, tests, OGC conformance, documentation.

This commit adds three artefacts that surface the lineage:

- **README.md** — new `## History and Acknowledgements` section
  before `## License` crediting all three contributors and pointing
  to pg_mfserv as the archived predecessor.
- **AUTHORS.md** (new) — structured contributor list per phase.
- **CITATION.cff** (new) — machine-readable citation metadata for
  Zenodo / GitHub citation widget, including a `references:` block
  citing pg_mfserv as predecessor work.

License declared in CITATION.cff: PostgreSQL (matching the
MobilityDB main project's license posture).

The lineage credit is symmetric: pg_mfserv's README will gain an
archive banner pointing forward to MobilityAPI in the companion
PR on the pg_mfserv repository.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Add lineage credits: pg_mfserv predecessor, AUTHORS, CITATION
…ADME rewrite

The repo is now the canonical home of MobilityAPI but was missing
several artefacts that ecosystem-grade org repos carry:

1. **LICENSE.txt** — The PostgreSQL License, matching the
   MobilityDB main project's licence posture. Without this,
   the repository was effectively all-rights-reserved by
   default. Copyright Université libre de Bruxelles and
   MobilityAPI contributors.

2. **CONTRIBUTING.md** — Development setup, test instructions
   (./run.sh, ./run.sh --with-tests), code-style conventions
   (PEP 8 + ruff), PR conventions. Cross-references AUTHORS.md
   and the lineage section in the README.

3. **.github/workflows/python.yml** — Stub CI:
   - Lint job: ruff check on PRs (warning-only at this stage so
     legacy code isn't blocked; tighten when codebase has been
     once-through).
   - Import-smoke-test job: imports each application module so
     a minimal "code is at least loadable" gate runs on PRs.
   No DB-integration tests at this stage; that's a separate
   GitHub Actions service-container effort once the test
   harness stabilises.

4. **.github/ISSUE_TEMPLATE/{bug,feature}.md** + **PULL_REQUEST_TEMPLATE.md**
   — issue / PR scaffolding. Bug template asks for environment
   info; feature template prompts for OGC-spec references.

5. **README rewrite** — restructured for canonical-home framing:
   - Added badges (License, Python, OGC API conformance).
   - Lead with what MobilityAPI is (HTTP / OGC layer of the MEOS
     ecosystem) rather than the bare introduction.
   - Added a Status section pointing at issues + discussions.
   - Added a "Where MobilityAPI fits" section showing peer SQL
     layers (MobilityDB / MobilityDuck) and language bindings.
   - Cross-link to https://libmeos.org/bindings/mobilityapi/.
   - Added Contributing section pointing at CONTRIBUTING.md.
   - Fixed "Pyhton" / "Developement" typos and the orphaned
     ##Poetry section. Final License section points at LICENSE.txt
     and CITATION.cff.
   - Lineage section (PR #1) preserved unchanged.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Canonicalisation bundle: LICENSE, CI, contributor scaffolding, README rewrite
Vendor MobilityAPI's read-only copy of MEOS-API's published catalog +
projection artefacts under `vendor/meos-api/`, plus a Makefile target
`make vendor-meos-api` that regenerates them from upstream.

Files added:

  vendor/meos-api/
    PROVENANCE.json              -- per-artefact source URLs + regenerate cmd
    README.md                    -- refresh procedure
    meos-idl.json                -- 3546 fns / 70 structs / 16 enums
                                    (generated by MEOS-API run.py over
                                    MobilityDB master meos/include headers)
    meos-coverage.json           -- structural worklist (from open PR MobilityDB#4)
    meos-object-model-parity.json -- 29-pair portable-parity (from open PR MobilityDB#10)

The Makefile target clones MEOS-API + MobilityDB shallowly, installs
libclang, runs MEOS-API's `run.py` against MobilityDB's MEOS headers,
and copies the produced JSON artefacts into `vendor/meos-api/`.

Two of the four artefacts (`meos-coverage.json`,
`meos-object-model-parity.json`) currently come from open MEOS-API PR
branches because their generators are not yet on master; PROVENANCE.json
makes that explicit. The Makefile gracefully skips them if absent.

Step 2 of `docs/MEOS_API_INGESTION_PLAN.md`. The drift gate workflow
that fails on stale artefacts is step 3 (separate stacked PR).
@estebanzimanyi estebanzimanyi force-pushed the ci/vendor-drift-gate branch from d2d3d58 to 6d58be2 Compare May 20, 2026 15:10
@estebanzimanyi estebanzimanyi force-pushed the ci/vendor-drift-gate branch 2 times, most recently from efcad95 to 254c8a9 Compare May 20, 2026 17:23
Adds `.github/workflows/vendor-drift.yml` which regenerates the
vendored MEOS-API artefacts (`make vendor-meos-api`) on every PR
touching `vendor/meos-api/`, the Makefile, or the workflow itself,
plus on push to master and on a daily 06:00 UTC cron. On drift it
fails with an actionable message:

  ::error::vendor/meos-api/ is stale. Run `make vendor-meos-api`
  locally and open a refresh PR.

This is step 3 of `docs/MEOS_API_INGESTION_PLAN.md` ("CI gate that
regenerates the vendored artefacts and fails the PR if they drift").

Stacks on PR MobilityDB#4 (vendoring + Makefile).
@estebanzimanyi estebanzimanyi force-pushed the ci/vendor-drift-gate branch from 254c8a9 to ca4c130 Compare May 20, 2026 18:02
@estebanzimanyi estebanzimanyi changed the title ci(vendor): add vendor-drift workflow (step 3 of ingestion plan) ci(vendor): add a vendor-drift workflow May 22, 2026
@estebanzimanyi estebanzimanyi deleted the ci/vendor-drift-gate branch June 1, 2026 15:29
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.

4 participants