Skip to content

Synchronize CI/CD, Flatbuffers vendoring and wamp-ai and wamp-cicd Submodules between autobahn-python and zlmdb #1821

@oberstet

Description

@oberstet

Feature Description

We should aim to synchronize

  1. CI/CD design & implementation, and
  2. Flatbuffers vendoring
  3. wamp-ai and wamp-cicd Submodules

between autobahn-python and zlmdb as far as reasonable.

See also: crossbario/zlmdb#100

CI/CD

This requires to fix the following net delta for synchronization of CI/CD:

Justfile Recipes Comparison

Recipes Only in autobahn-python

  • bump-flatbuffers => add to zlmdb
  • install-flatc => rename in autobahn-python to install-flatc-system, adding a prominent message explaining why we normally DON'T need or want it (pointing to bundled flatc), asking "DO YOU REALLY WANT TO?"
  • docs-integrate-github-release => add to zlmdb
  • download-release-artifacts => add to zlmdb
  • generate-release-notes => add to zlmdb

Recipes Only in zlmdb

  • test-bundled-flatc => add to autobahn-python
  • test-smoke => add to autobahn-python
  • test-wheel-install => add to autobahn-python
  • test-sdist-install => add to autobahn-python
  • test-tox => remove from zlmdb (we don't use any tox anymore! remove also dev deps for tox if applicable)
  • test-tox-all => remove from zlmdb (we don't use any tox anymore! remove also dev deps for tox if applicable)

GitHub Workflows Comparison

Workflows and Artifacts description

  • zlmdb has zlmdb/.github/workflows/README.md => add similar to autobahn-python

Key Differences in release.yml

  • Identifiers use wamp-cicd/.github/workflows/identifiers.yml@main => zlmdb should use this (everywhere)!
  • Release types => zlmdb should use development vs stable (via identifiers)
  • FlatBuffers schemas: both projects should bundle Flatbuffers source schema (.fbs) and binary (compiled using the bundled flatc!) schema files (.bfbs) for:
(pypy311) oberstet@amd-ryzen5:~/work/wamp$ find zlmdb/src/zlmdb/ -name "*.fbs"
zlmdb/src/zlmdb/flatbuffers/reflection.fbs
(pypy311) oberstet@amd-ryzen5:~/work/wamp$ find autobahn-python/src/autobahn/ -name "*.fbs"
autobahn-python/src/autobahn/wamp/flatbuffers/session.fbs
autobahn-python/src/autobahn/wamp/flatbuffers/wamp.fbs
autobahn-python/src/autobahn/wamp/flatbuffers/roles.fbs
autobahn-python/src/autobahn/wamp/flatbuffers/auth.fbs
autobahn-python/src/autobahn/wamp/flatbuffers/pubsub.fbs
autobahn-python/src/autobahn/wamp/flatbuffers/types.fbs
autobahn-python/src/autobahn/wamp/flatbuffers/rpc.fbs
(pypy311) oberstet@amd-ryzen5:~/work/wamp$ 

Flatbuffers vendoring

This requires to fix the following net delta for synchronization of Flatbuffers vendoring:

autobahn-python is MISSING (copy/adapt from zlmdb):

  • src/autobahn/_flatc/__init__.py - Python wrapper for bundled flatc binary
  • src/autobahn/_flatc/bin/ - Directory for bundled flatc binary (built during wheel build)
  • pyproject.toml - Add flatc = "autobahn._flatc:main" to [project.scripts]
  • src/autobahn/flatbuffers/_git_version.py - Git version tracking for vendored flatbuffers
  • src/autobahn/flatbuffers/__init__.py - Add version() function with rich version parsing
  • src/autobahn/flatbuffers/reflection.fbs - FlatBuffers reflection schema source
  • src/autobahn/flatbuffers/reflection.bfbs - Compiled reflection schema (generated at build time)
  • hatch_build.py - Add _build_flatc() method to compile flatc during wheel build
  • hatch_build.py - Add _generate_reflection_bfbs() method
  • hatch_build.py - Add _update_flatbuffers_git_version() method
  • justfile - Add test-bundled-flatc recipe to verify flatc works after install
  • justfile - Update update-flatbuffers to also copy _git_version.py template and reflection.fbs

zlmdb is MISSING (copy/adapt from autobahn-python):

  • Nothing - zlmdb's implementation is the reference

Both projects should ensure:

  • WAMP .fbs schemas have corresponding .bfbs files in release artifacts
  • Version synchronization check between projects (already exists: zlmdb.check_autobahn_flatbuffers_version_in_sync(); needed: zlmdb.check_zlmdb_flatbuffers_version_in_sync())
  • Smoke tests verify flatc --version matches vendored FlatBuffers runtime version

wamp-ai and wamp-cicd Submodule Synchronization

Both projects use shared Git submodules from wamp-proto/wamp-ai and
wamp-proto/wamp-cicd. Consistent usage is an important goal for
maintainability across the WAMP project ecosystem.

Submodule Status

Submodule zlmdb autobahn-python Status
.ai (wamp-ai) ✅ Present ✅ Present ✅ In sync
.cicd (wamp-cicd) ✅ Present ✅ Present ✅ In sync
CLAUDE.md symlink ✅ → .ai/AI_GUIDELINES.md ✅ → .ai/AI_GUIDELINES.md ✅ In sync

wamp-cicd Reusable GitHub Actions

Action zlmdb autobahn-python Notes
upload-artifact-verified ✅ Used in wheels*.yml, main.yml ✅ Used in main.yml ✅ In sync
download-artifact-verified ✅ Used in release.yml ✅ Used in release.yml, release-post-comment.yml ✅ In sync
check-release-fileset ✅ Used in release.yml ✅ Used in release.yml ✅ In sync
validate-audit-file ❌ Not used ❌ Not used ⚠ Consider adding

wamp-cicd Reusable Workflows

Workflow zlmdb autobahn-python Action Required
identifiers.yml ⚠ Used in 3 workflows ✅ Used in 7 workflows zlmdb should use in release.yml, wheels.yml

zlmdb is MISSING identifiers.yml in:

  • release.yml - should use identifiers for release_type (development vs stable)
  • wheels.yml - should use identifiers for consistent naming

wamp-cicd Scripts

Script zlmdb autobahn-python Action Required
prepare-changelog.sh ❌ Inline in justfile ✅ Uses .cicd/scripts/ zlmdb should use shared script
generate-release-notes.sh ❌ Missing recipe ✅ Uses .cicd/scripts/ zlmdb should add recipe using shared
script
download-release-artifacts.sh ❌ Missing recipe ✅ Uses .cicd/scripts/ zlmdb should add recipe using shared
script
sanitize.sh ✅ Used via identifiers.yml ✅ Used via identifiers.yml ✅ In sync
sphinx_auto_section_anchors.py ❓ Check usage ❓ Check usage Verify both use for docs

zlmdb justfile recipes should use shared scripts:

  • prepare-changelog => change to: .cicd/scripts/prepare-changelog.sh "{{ version }}" "crossbario/zlmdb"
  • Add generate-release-notes recipe using .cicd/scripts/generate-release-notes.sh
  • Add download-release-artifacts recipe using .cicd/scripts/download-release-artifacts.sh

wamp-cicd Templates

Template zlmdb autobahn-python Notes
ISSUE_TEMPLATE/bug_report.md ✅ Present ✅ Present Should match .cicd/templates/
ISSUE_TEMPLATE/feature_request.md ✅ Present ✅ Present Should match .cicd/templates/
ISSUE_TEMPLATE/config.yml ✅ Present ✅ Present Should match .cicd/templates/
PULL_REQUEST_TEMPLATE/ ❓ Check ❓ Check Consider adding from .cicd/templates/

Both projects should:

  • Verify .github/ISSUE_TEMPLATE/ matches .cicd/templates/ISSUE_TEMPLATE/
  • Add .github/PULL_REQUEST_TEMPLATE/ from .cicd/templates/PULL_REQUEST_TEMPLATE/

wamp-ai Components

Component zlmdb autobahn-python Notes
AI_GUIDELINES.md ✅ Symlinked as CLAUDE.md ✅ Symlinked as CLAUDE.md ✅ In sync
AI_POLICY.md ✅ Available ✅ Available ✅ In sync
.githooks/commit-msg ✅ Available ✅ Available ⚠ Verify hooks are installed
.githooks/pre-push ✅ Available ✅ Available ⚠ Verify hooks are installed
justfile ✅ Available ✅ Available For AI audit management

Summary of Actions

zlmdb needs to:

  • Use identifiers.yml in release.yml and wheels.yml
  • Refactor prepare-changelog to use .cicd/scripts/prepare-changelog.sh
  • Add generate-release-notes recipe using .cicd/scripts/generate-release-notes.sh
  • Add download-release-artifacts recipe using .cicd/scripts/download-release-artifacts.sh
  • Verify .github/ISSUE_TEMPLATE/ matches .cicd/templates/ISSUE_TEMPLATE/
  • Add .github/PULL_REQUEST_TEMPLATE/ from .cicd/templates/

autobahn-python needs to:

  • Verify .github/ISSUE_TEMPLATE/ matches .cicd/templates/ISSUE_TEMPLATE/
  • Add .github/PULL_REQUEST_TEMPLATE/ from .cicd/templates/

Both projects should:

  • Keep .ai and .cicd submodules updated to latest main
  • Verify git hooks from .ai/.githooks/ are properly installed
  • Consider using validate-audit-file action for AI audit trail

Checklist

  • I have searched existing issues to avoid duplicates
  • I have described the problem clearly
  • I have provided use cases
  • I have considered alternatives
  • I have assessed impact and breaking changes

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions