Skip to content

CI: stop Draft runner flood, scope main and firmware pushes, package on demand - #158

Merged
masarray merged 4 commits into
mainfrom
ci/stop-feature-run-flood-20261014
Oct 14, 2026
Merged

masarray merged 4 commits into
mainfrom
ci/stop-feature-run-flood-20261014

Conversation

@masarray

@masarray masarray commented Oct 14, 2026 •

Copy link
Copy Markdown
Owner

CI routing hotfix — synchronized with main (2026-10-15)

Actual implementation: one combined/atomic merge commit 90d54a930d638500443d4485c036257e16164474 updates 24 existing workflow files plus the CI routing contract script and documentation. It incorporates current main rather than reverting unrelated GUI/IED work.

Changes that reduce running jobs, not just hide checks

  • ESP32-P4 SMV and PTP firmware workflows: no feature-branch push triggers; push only to main with matching paths. Preserve explicit workflow_dispatch for on-demand firmware artifacts and workflow_call used by release.
  • ARStack Studio Release: tag v* / manual only. No Windows/firmware release package on normal protocol PRs.
  • 23 heavy path-scoped workflows: all top-level jobs skip Draft PRs; ready_for_review and later Ready-PR synchronize still run relevant GCC/Clang/MSVC, embedded, ESP-IDF, Qt, PTP and security regression. No tests deleted or silently marked PASS.
  • 8 main-push broad-scope workflows (C++, Security, Embedded, BRCB and Control variants) now use their existing relevant PR path filters for main. Normal CI on unrelated commits no longer fans out to all domains.
  • Interoperability server PR scopes only relevant IEC61850 header domains; a PTP-only header change no longer schedules MMS-server CI.
  • Existing concurrency maintained; missing Control variants given PR cancellation to avoid stale queued runs.
  • scripts/check_ci_trigger_policy.py enforces all these invariants; docs/CI_WORKFLOW_ROUTING.md documents Draft/checkpoint/Ready/main/release lifecycles.

Evidence

  • Exact-head CI Routing Policy run #38641929343: SUCCESS.
  • On same Draft commit: 23 heavyweight workflows SKIPPED, one cheap routing policy job SUCCESS. No firmware image, Windows packaging or C++ matrices ran just to validate CI YAML.
  • No PTP/SMV runtime code, GUI UX, ESP32 application default or installer source changed.

Merge safety and rollout

  • Still Draft and not deployed to main. GitHub reports mergeable/clean and comparison is current. This avoids inadvertently starting a double wave of heavy Ready-PR and main-merge jobs.
  • Promoting to Ready triggers one intentionally full path-scoped validation wave for the touched workflow files. After review/integration, main will use the new scopes. Do not infer that skipped jobs are validated or that CI-run count (skipped metadata records) is zero.
  • After merge, active older feature branches must synchronize their workflow YAML at an appropriate checkpoint; their own push events still follow their current branch's workflow until then.

@masarray masarray changed the title CI: stop feature push flood and defer heavy Draft/installer builds CI: stop Draft runner flood, scope main and firmware pushes, package on demand Oct 14, 2026

@masarray masarray left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CI policy review (2026-10-15) — audited exact PR head 90d54a930d63 against current main@35eda54.

Confirmed: 26 changed paths are limited to 24 existing workflows, scripts/check_ci_trigger_policy.py, and docs/CI_WORKFLOW_ROUTING.md; no SMV/PTP firmware or native GUI runtime code changed. The CI Routing Policy job passed at run 38641929343. Raw GitHub PR metadata currently reports mergeable_state=clean, though main has advanced by one unrelated Workbench-only commit.

Integration cautions:

  1. Skipped Draft jobs are intentionally not compiler/firmware/installer verification. Transitioning this 24-workflow PR to Ready will launch the path-matched heavy regression wave; merging will also result in main path-matched jobs because each modified workflow includes its own YAML in its trigger paths. Do not call these equivalent to a single cheap CI run.
  2. M3 Draft PR #157 / stacked #166 contains phase-guard-checkpoint, a special opt-in Draft job guarded by a PR-body marker, not the usual !draft condition. New routing script currently asserts len(guarded)==len(names) for every PTP workflow job. When synchronizing the new CI policy into M3, retain the bounded checkpoint and explicitly teach the routing checker about only this allowlisted opt-in condition, or migrate it to a controlled workflow_dispatch input. Blindly replacing M3's PTP YAML with this PR's variant would remove its verified targeted checkpoint.
  3. Keep #158 as Draft until one deliberate integration wave is scheduled; do not rush merge just to remove the Draft badge. No new CI run is requested by this review.

This review is informational; not approval of all downstream firmware/GUI matrix results.

@masarray
masarray marked this pull request as ready for review October 14, 2026 21:56
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-14T21:58:56.088720Z 74ad858 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 74ad858f60

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +15 to +18
- 'include/ariec61850/asn1/**'
- 'src/asn1/**'
- 'tests/fixtures/scl/**'
- '.github/workflows/brcb-hard-profile-ci.yml'

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Include OSI and ACSE dependencies in the BRCB push scope

The new main path filter omits src/osi/**, include/ariec61850/osi/**, src/acse/**, and their headers even though embedded/brcb_hard_profile/CMakeLists.txt directly compiles those sources into the lifecycle, connection, and negotiated-limits smoke targets. A merged OSI/ACSE change therefore no longer runs this specialized -fno-exceptions BRCB gate, so failures unique to the hard profile can reach main despite the workflow previously running on every main push. Add every directly compiled dependency domain to this scope.

AGENTS.md reference: AGENTS.md:L256-L261

Useful? React with 👍 / 👎.

- 'tests/fixtures/scl/**'
- '.github/workflows/brcb-hard-profile-ci.yml'
pull_request:
types: [opened, synchronize, reopened, ready_for_review]

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Handle converted-to-draft events to cancel active jobs

When a Ready PR is switched back to Draft while one of these expensive runs is active, GitHub emits the converted_to_draft pull-request activity, but the new types list excludes it. No replacement workflow run is created, so the PR-scoped cancel-in-progress concurrency policy cannot cancel the already-running matrix and the jobs continue consuming runners despite the PR now being Draft. Include converted_to_draft; its jobs will be skipped by the draft guard while the workflow-level concurrency cancels the older run.

AGENTS.md reference: AGENTS.md:L15-L16

Useful? React with 👍 / 👎.

@masarray
masarray merged commit e6b798c into main Oct 14, 2026
82 checks passed
masarray added a commit that referenced this pull request Oct 14, 2026
…mediates

M2F: constrain native Workbench GUI MMS string/hex/array serialization at source before oversized intermediates can be created. Preserve scalar canonical codec semantics and original runtime MMS values, respect UTF-8 boundaries, cap nested recursion, and add large-payload native regressions (2MB strings, 1MB octets, nested payloads, parity and zero budget). All 51 exact-head Qt CI steps passed. Compatible with newly merged CI optimization PR #158.
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.

1 participant