From 7d44caa8d4c09660fb3b5d2d9919d8141c6d5294 Mon Sep 17 00:00:00 2001 From: Seongho Bae Date: Fri, 4 Sep 2026 23:38:09 +0900 Subject: [PATCH] docs(ci): align gates after workflow optimization Signed-off-by: Seongho Bae --- CHANGELOG.md | 3 ++- docs/quality-gates.md | 2 +- tests/test_mv3_compatibility_contract.py | 10 +++++++--- tests/test_repository_contract.py | 14 +++++++++++--- 4 files changed, 21 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f747adeae..4844de44f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ All notable changes to OriginWeave are documented in this file. The format follo ## [Unreleased] +- Scoped pull-request workflow cancellation by workflow, repository, and PR while keeping push and manual runs independent; removed the completed nightly materializer and the redundant standalone `cargo check`, with all-target Clippy retained as the workspace compile/check gate. - Refreshed the product-gap queue to 126 open pull requests (54 ready, 72 draft) after #190, #188, #185, #192, #182, #184, #115, #181, #116, #117, #118, #183, #114, #127, #112, #109, #186, #110, #108, #111, #174, and #113 were merged into their immediate stacked prerequisites. PRs #147, #146, #145, #144, #143, #142, #141, #139, #136, #132, #129, and #128 moved to ready after exact-head checks and thread review; these are queue-consolidation results, not protected-main shipment. ### Added @@ -102,4 +103,4 @@ All notable changes to OriginWeave are documented in this file. The format follo - The hourly product agent has no Git metadata or repository authority. A separate post-verification publisher opens one PR and cannot approve or merge it. - The unprivileged OpenCode user is restricted to loopback egress during model execution, preventing runner-wide allow-listed endpoints from becoming direct source-exfiltration channels. -[Unreleased]: https://github.com/ContextualWisdomLab/OriginWeave/compare/main...HEAD \ No newline at end of file +[Unreleased]: https://github.com/ContextualWisdomLab/OriginWeave/compare/main...HEAD diff --git a/docs/quality-gates.md b/docs/quality-gates.md index b58f8902f..de72506b2 100644 --- a/docs/quality-gates.md +++ b/docs/quality-gates.md @@ -10,7 +10,7 @@ A PR is mergeable only when all apply: - required PR checks explicitly check out the pull request head SHA; GitHub synthetic merge-ref evidence is supplemental and cannot substitute for exact-head evidence; - production function, line, region, and branch coverage each at 100%; - all public Rust APIs documented and rustdoc warnings denied; -- format, check, test, Clippy, and documentation jobs pass; +- format, test, Clippy, and documentation jobs pass; Clippy is the workspace compile/check gate because CI lints every target, so a separate `cargo check` invocation is not required; - dependency and GitHub Action references are locked or commit-pinned; - generated build outputs are ignored and absent from `git ls-files`; - review threads are resolved with code or evidence; diff --git a/tests/test_mv3_compatibility_contract.py b/tests/test_mv3_compatibility_contract.py index b8637bf0f..a9a380508 100644 --- a/tests/test_mv3_compatibility_contract.py +++ b/tests/test_mv3_compatibility_contract.py @@ -178,9 +178,13 @@ def test_workflow_runs_the_real_browser_lane_without_model_credentials(self) -> self.assertNotIn("NVIDIA_NIM_API_KEY", workflow) self.assertNotIn("COPILOT_GITHUB_TOKEN", workflow) self.assertNotIn("contents: write", workflow) - self.assertIn("${{ github.workflow }}-${{ github.repository }}", workflow) - self.assertIn("${{ github.event.pull_request.number || github.run_id }}", workflow) - self.assertIn("cancel-in-progress: ${{ github.event_name == 'pull_request' }}", workflow) + self.assertIn( + "concurrency:\n" + " group: ${{ github.workflow }}-${{ github.repository }}-" + "${{ github.event.pull_request.number || github.run_id }}\n" + " cancel-in-progress: ${{ github.event_name == 'pull_request' }}", + workflow, + ) def test_doctoring_records_primary_chromium_evidence(self) -> None: """The exact browser baseline and non-compatibility claims must be documented.""" diff --git a/tests/test_repository_contract.py b/tests/test_repository_contract.py index 0ea3d1700..0b6c3b0eb 100644 --- a/tests/test_repository_contract.py +++ b/tests/test_repository_contract.py @@ -120,10 +120,18 @@ def test_ci_validates_the_exact_pull_request_head(self) -> None: self.assertIn(f"exact-coverage-{exact_head}", workflow) self.assertIn("permissions:\n contents: read", workflow) self.assertNotIn("contents: write", workflow) - self.assertIn("${{ github.workflow }}-${{ github.repository }}", workflow) - self.assertIn("${{ github.event.pull_request.number || github.run_id }}", workflow) - self.assertIn("cancel-in-progress: ${{ github.event_name == 'pull_request' }}", workflow) + self.assertIn( + "concurrency:\n" + " group: ${{ github.workflow }}-${{ github.repository }}-" + "${{ github.event.pull_request.number || github.run_id }}\n" + " cancel-in-progress: ${{ github.event_name == 'pull_request' }}", + workflow, + ) self.assertNotIn("cargo check --locked --workspace --all-targets", workflow) + quality_gates = (ROOT / "docs/quality-gates.md").read_text(encoding="utf-8") + self.assertIn("Clippy is the workspace compile/check gate", quality_gates) + changelog = (ROOT / "CHANGELOG.md").read_text(encoding="utf-8") + self.assertIn("Scoped pull-request workflow cancellation", changelog) def test_hourly_loop_uses_nvidia_nim_and_dedicated_publication_authority(self) -> None: """The product loop must use OpenCode/NIM without review or merge credentials."""