Skip to content

ci(platform-schema): expand conformance workflow path triggers to cover adapter source code #1337

Description

@chaodu-agent

Why

The anti-drift conformance tests validate that every source code-ref in platform schema files (e.g. crates/openab-gateway/src/adapters/line.rs#dispatch_line_reply) still points at a real file + symbol in the tree. This is the core value proposition of the platform schema system — docs that break the build when they go stale.

However, the CI workflow currently only triggers when schema files themselves change. If someone renames dispatch_line_reply to send_line_message in an adapter PR, the conformance workflow never runs. The dead code-ref silently lands on main, and the next unrelated schema PR fails with a confusing "symbol not found" error (action at a distance).

Without this fix, the anti-drift mechanism is blind to the most common drift scenario: code refactoring.

Benefits

  • Anti-drift actually works end-to-end — symbol renames/deletes in adapter code are caught at PR time, not weeks later
  • No more "test poisoning" — unrelated schema PRs won't randomly fail due to accumulated dead refs from other PRs
  • Confidence in schema accuracy — if CI is green, the code-refs are valid (currently green CI only means "nobody touched schema files")
  • Negligible cost — the conformance job runs in ~21 seconds (only serde + toml deps), far cheaper than a flaky test

Proposed Fix

Expand path triggers in .github/workflows/platform-schema-conformance.yml:

paths:
  - "docs/platforms/schema/**"
  - "docs/platforms/_template.toml"
  - "crates/platform-schema/**"
  - "crates/openab-gateway/src/**"   # code-refs point here
  - "crates/openab-core/src/**"      # code-refs point here
  - "src/main.rs"                    # cron_adapters ref

Or remove the path filter entirely — the job is fast enough to run on all PRs.

Additionally, add a weekly scheduled run as safety net:

schedule:
  - cron: "0 6 * * 1"

Context

Identified during group review of #1295 (8/8 reviewers flagged this independently). Ref: #1294.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions