Harden CI build gating with compiler/linker-only blockers and label state normalization - #6246
Conversation
Co-authored-by: makr-code <150588092+makr-code@users.noreply.github.com>
Co-authored-by: makr-code <150588092+makr-code@users.noreply.github.com>
Co-authored-by: makr-code <150588092+makr-code@users.noreply.github.com>
Co-authored-by: makr-code <150588092+makr-code@users.noreply.github.com>
Co-authored-by: makr-code <150588092+makr-code@users.noreply.github.com>
Co-authored-by: makr-code <150588092+makr-code@users.noreply.github.com>
|
Target: pr Doxygen Governance Gate
Doxygen warnings
source_workflow: Gate: PR Doxygen Governance |
✅ Wave C Policy Gate: Hash & SBOM IntegrityResult: ✅ Hash & SBOM Integrity PASSED Checks
|
✅ Wave C Policy Gate: Edition & License ValidationResult: ✅ Edition & License Validation PASSED Checks
|
✅ Wave C Policy Gate: Community Fail-Closed ValidationResult: ✅ Community Fail-Closed Validation PASSED Checks
|
✅ Wave C Policy Gate: Private Plugin Boundary EnforcementResult: ✅ Private Plugin Boundary Enforcement PASSED Checks
|
There was a problem hiding this comment.
🟡 Changes recommended
There are concrete workflow logic and automation correctness issues (notably build-mainline dispatch behavior and pentest label derivation error handling) that can lead to skipped builds or incorrect “resolved” labeling.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
Hardens CI/governance automation by tightening “hard build blocker” semantics to compiler/linker failures only, and normalizing workflow-driven labels toward an atomic status-group state machine to reduce stale/conflicting labels across trackers and maintenance issues.
Changes:
- Refines build-preflight blocking to require
ci/build-failedandci/compiler-linker-failed, while keeping non-blocking failures visible via separate labels. - Propagates stage outcomes (configure/build/validation) from reusable CMake builds to drive stage-aware labeling in mainline CI.
- Introduces/standardizes
status/*process labels and appliesreplace_status_grouptransitions across multiple governance/maintenance workflows.
File summaries
| File | Description |
|---|---|
| .github/workflows/security-pentest-quarterly.yml | Derives severity/process labels from latest pentest findings JSON and normalizes label groups. |
| .github/workflows/reusable-cmake-build.yml | Exposes configure/build/validation outcomes as reusable-workflow outputs. |
| .github/workflows/release-mainline.yml | Updates tracker text to reflect new blocker semantics (compiler/linker marker pairing). |
| .github/workflows/publish-wiki.yml | Refactors argument passing to wiki build/link validation scripts via bash arrays and clearer dry-run output. |
| .github/workflows/maintenance-issues.yml | Normalizes scanner/security issue labeling and status-group replacement behavior. |
| .github/workflows/maintenance-ci-health.yml | Adds health banding outputs and expands label normalization for chronic CI health issues. |
| .github/workflows/maintenance-build-issues.yml | Classifies chronic build errors into more specific labels and normalizes issue labels atomically. |
| .github/workflows/gate-pr-doxygen-governance.yml | Switches to replace_status_group for Doxygen label transitions and adds process labels. |
| .github/workflows/compliance-supply-chain.yml | Derives dependency freshness state labels, normalizes status groups, and adds recovery comments. |
| .github/workflows/compliance-governance-gates.yml | Tightens waiver command parsing trigger, adds waiver-requested state, and normalizes multiple issue state groups. |
| .github/workflows/build-mainline.yml | Adds pending-state marker job and stage-aware labeling (compiler/linker vs validation failures). |
| .github/workflows/build-llm-inference.yml | Consolidates LLM CI failure tracking per ref and normalizes failure/recovery labels. |
| .github/workflows/build-benchmarks.yml | Updates tracker text to reflect new blocker semantics. |
| .github/workflows/13-wave-b-transaction-ci-execution.yml | Improves shell quoting, report generation robustness, and bumps github-script to v7. |
| .github/workflows/13-wave-b-llm-wiki-benchmarks.yml | Improves shell redirection/quoting for GPU detection and output writes. |
| .github/workflows/13-wave-a-gpu-ci-execution.yml | Updates cache/artifact actions to v4 and refactors target lists to bash arrays for safer expansion. |
| .github/WORKFLOW_GUIDELINES.md | Documents new blocker semantics and introduces canonical CI label state machine guidance. |
| .github/milestones.yml | Updates milestone assignment rules to align with new status/* process labels for LLM triage. |
| .github/labels.yml | Updates label definitions/types and adds new CI/process/governance labels. |
| .github/actions/status-flags-and-issues/action.yml | Extends label palette and supports atomic replace_status_group transitions used across workflows. |
| .github/actions/check-build-status/action.yml | Updates preflight gate to block only on paired build-failed + compiler/linker marker labels. |
Review details
- Files reviewed: 21/21 changed files
- Comments generated: 4
- Review effort level: Lite
💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| try: | ||
| with open(files[-1], "r", encoding="utf-8") as fh: | ||
| findings = (json.load(fh).get("findings") or findings) | ||
| except Exception: | ||
| pass |
There was a problem hiding this comment.
Implemented in d4225c5. The pentest-label derivation now emits a warning when findings JSON parsing fails (or file is missing) and forces a non-resolved label state (severity:medium, status/needs-attention) instead of falling back to severity:low,status/resolved.
| build: | ||
| needs: mark-build-pending | ||
| uses: ./.github/workflows/reusable-cmake-build.yml |
There was a problem hiding this comment.
Implemented in d4225c5. mark-build-pending and update-build-labels now run for both push and workflow_dispatch, so manual dispatch no longer skips build via unmet needs, and pending status is still cleared by the final label update.
| | `ci/build-failed` | `build-mainline.yml` (push → develop, Build-Stage Failure Marker) | `build-mainline.yml` bei nächstem Erfolg | | ||
| | `ci/compiler-linker-failed` | `build-mainline.yml` (push → develop, Compiler/Linker-Fehler) | `build-mainline.yml` bei nächstem Erfolg | | ||
| | `ci/test-failed` | `build-mainline.yml` (push → develop, Test-Failure; non-blocking fuer Build-Preflight) | `build-mainline.yml` bei nächstem Erfolg | | ||
| | `ci/failure` | `maintenance-build-issues.yml`, `maintenance-ci-health.yml` | manuell / nach Behebung | | ||
| | `ci/chronic-failure` | `maintenance-ci-health.yml` (>30% Fehlerrate) | `maintenance-ci-health.yml` bei Erholung | | ||
| | `ci/build-error` | `maintenance-build-issues.yml` | manuell | | ||
| | `ci/compiler-linker-failed` | `build-mainline.yml`, `maintenance-build-issues.yml` | `build-mainline.yml`/Maintenance bei Erholung | | ||
| | `ci/failure-rate-high` | `maintenance-ci-health.yml` | `maintenance-ci-health.yml` bei Erholung | |
There was a problem hiding this comment.
Implemented in d4225c5. I removed the duplicate ci/compiler-linker-failed blocker-label row and merged source/cleanup semantics into a single entry covering both build-mainline.yml and maintenance-build-issues.yml.
Co-authored-by: makr-code <150588092+makr-code@users.noreply.github.com>
Co-authored-by: makr-code <150588092+makr-code@users.noreply.github.com>
Pull Request
Target Version (Required)
Target Version: [Unreleased]
Targets CI/governance automation behavior on
develop; this is infrastructure hardening, not a runtime release payload.Description
Build-preflight blocking is now strictly tied to compiler/linker failure markers, preventing false build stops from warnings, gaps, or mock-related findings.
The CI label lifecycle was also normalized toward an explicit status-state model to avoid stale or conflicting tracker labels.
Build blocker semantics
check-build-statusnow blocks only when bothci/build-failedandci/compiler-linker-failedare present.Stage-aware failure classification
build-mainline+ reusable cmake workflow now propagate configure/build/validation outcomes.State-machine label normalization
replace_status_grouptransitions across CI/governance workflows.status/needs-attention,status/needs-approval,status/resolved,status/recovered) and domain labels for CI lanes.Quarterly pentest workflow alignment
security-pentest-quarterly.ymlnow derives severity/process state from findings JSON and normalizes status groups after issue upsert.Linked Issues
Type of Change
Breaking Change Checklist
VERSIONandCMakeLists.txtdocs/migration/### Removed/### Changedsection updatedTesting
Security Tiering Impact (Required for Runtime Changes)
Impacted tier(s):
Trust-boundary crossings documented in PR description (example: T3 -> T2, T5 -> T4 brokered call)
Boundary controls validated for affected T3/T4/T5 paths (AuthN/AuthZ, validation, rate limits, audit)
Boundary-focused tests added/updated or explicit N/A rationale provided
If trust level/privilege increased, security maintainer approval is attached
📚 Research & Knowledge (wenn applicable)
/docs/research/angelegt?/docs/research/implementation_influence/eingetragen?Relevante Quellen:
AI-Generated Code (KI-generierter Code)
GetSymbolReferences_CppToolsgeprüft (siehe.github/instructions/cpp-language-service-tools.instructions.md)new/deleteohne explizites Review eingeführtAI Review Workflow (Required for AI-assisted PRs)
.github/prompts/pr-diff-findings-review.prompt.md.github/prompts/security-hardening-review.prompt.md(or N/A documented).github/prompts/api-change-impact-review.prompt.md(or N/A documented).github/copilot/REVIEW_SEVERITY_POLICY.mdHigh-Finding Exception Record (only if High is accepted)
High-finding exception claimed in this PR
Finding reference:
Maintainer approver:
Mitigation in current release:
Target fix milestone:
Tracking issue:
Validation evidence:
Release Readiness Gate (Required for release-scoped changes)
.github/prompts/release-readiness-check.prompt.mdfor branch transition scopeBRANCHING_STRATEGY.mdandRELEASE_STRATEGY.mdVERSIONING.mdandCHANGELOG.mdChecklist
[Unreleased]Scanner and IntelliSense Gates
criticalfindings in categoriessecurity,input_validation,query_correctness,distributed_consistency,concurrency,memoryhighfindings in the same categories (or explicitly approved)unknownscanner findings triaged (fixed, re-categorized, or justified)