Skip to content

bug(ci): verify-generated-types self-skips on autobot_shared-only changes that can alter both generated api.ts files #14885

Closed

Description

@mrveiss

Found while delivering #12986 in #14883, and deliberately NOT fixed there: it is a behaviour change to a gate, not a deduplication, so it belongs in its own change with its own measurement.

The gap

.github/workflows/verify-generated-types.yml's changes job declares two filters:

  • types — watches autobot-backend/**/*.py plus the autobot frontend's generated api.ts and lockfiles
  • slm_types — watches autobot-slm-backend/**/*.py plus the SLM frontend's equivalents

Neither watches autobot_shared/**/*.py.

Both products' OpenAPI schemas are dumped by importing the application, and both applications import from autobot_shared. A change confined to that tree can therefore alter the generated types while this workflow computes "nothing to verify" and self-skips — the same silent-coverage-shrink shape #12986 was filed about, one workflow over.

Why it was left out of #14883

The per-product split between types and slm_types is deliberate and must be preserved; #14883 records it explicitly in pipeline-scripts/check_workflow_path_filters.py's NOT_CONSUMERS table with this reasoning, so it reads as considered rather than missed. Adding autobot_shared/**/*.py to both widens when the gate runs, which is the safe direction, but it is still an unmeasured behaviour change and it did not belong bundled into a consolidation PR.

Ask

  1. Measure how often a pull request touches only autobot_shared/**/*.py and would newly trigger this workflow.
  2. If the cost is acceptable, add autobot_shared/**/*.py to both types and slm_types — keeping the per-product backend split intact — and move the workflow from NOT_CONSUMERS into the guard's declared-consumer table so it is policed from then on.
  3. Evidence must be a run showing the workflow triggering on an autobot_shared-only change, not a diff.

Acceptance criteria

  • A measured answer to whether autobot_shared changes can alter either generated api.ts
  • Either both filters watch it, or the reason they should not is recorded in the guard's table
  • pipeline-scripts/check_workflow_path_filters.py reflects whichever answer is chosen
  • actionlint passes

Related

Activity

  1. mrveiss commented on Aug 24, 2026

    @mrveiss
    OwnerAuthor

    Fixed in #14924, with one residual.

    All four acceptance criteria are delivered there: the measurement (both api.ts files depend on autobot_shared through the user-schema shims and normalize_pattern_anchors), both filters widened while keeping the per-product split, pipeline-scripts/check_workflow_path_filters.py asserting it from now on, and the workflow parsing cleanly.

    The "Ask" section's bullet 3 — a run rather than a diff — is not delivered and cannot be pre-merge without pushing a throwaway commit for CI evidence. Tracked as #14925: the push trigger now names the shared tree, so the first autobot_shared-only push to Dev_new_gui after the merge produces that run by itself.

    One adjacent defect was fixed in the same file rather than filed: verify-generated-types-slm used == 'true' where its sibling uses != 'false', so an empty filter output skipped it silently.

  2. mrveiss commented on Aug 24, 2026

    @mrveiss
    OwnerAuthor

    Delivered and merged as 1208b77ba (PR #14924).

    Measured before widening, rather than assumed. autobot_shared/user_management/schemas/user.py is the sole definition of the user schemas both backends re-export, and both api.ts files carry them; normalize_pattern_anchors rewrites both specs. 46 of the last 300 first-parent commits touch only autobot_shared/**/*.py — that is the size of the blind spot, and the added CI cost.

    Widened, not un-skipped. The required context is already the separate reporting job, and un-skipping a path-filtered required job is exactly what deadlocks PRs on "Expected — Waiting for status" (#13388). verify-types-run, verify-generated-types-slm and the required verify-generated-types all ran green.

    All four acceptance criteria met. The one item not delivered is the "Ask" bullet requesting an actual CI run on an autobot_shared-only change — that requires pushing a throwaway commit purely for CI evidence, which this repo forbids. Filed as #14925: the push trigger now watches the shared tree, so the first genuine such push after merge produces that evidence naturally.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions