You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
ci(actions): reconcile quality contract after centralized hourly admission #647
Protected main@a243f18da4a4ca8a8d068c39922537f1f8ed6ad0 already centralized hourly development admission in #490: .github/workflows/hourly-nim-product-development.yml is marked cwl-org-commercial-entrypoint: v1 and exposes repo-local workflow_dispatch, but no longer owns a local schedule/cron trigger.
The repository quality contract and operations runbook did not move with that authority change:
tests/quality/test_hourly_nim_product_development.py::test_hourly_workflow_schedule_credentials_and_queue_gate still requires cron: "47 * * * *";
docs/operations/HOURLY_NIM_PRODUCT_DEVELOPMENT.md still says the repo workflow itself runs at minute 47 every hour.
This is now a protected-main shared gate defect, not a domain change in #639. Exact hosted evidence is Rust Foundation run 35603427225, job 106344713116, where the Python quality lane fails only because the stale test cannot find the removed local cron contract.
Required repair
Keep the centralized admission architecture and current cadence ownership. Do not reintroduce a repository-local cron merely to satisfy the old test.
Update the quality contract to require:
cwl-org-commercial-entrypoint: v1;
repo-local workflow_dispatch/dry_run;
fail-closed inventory/credential/publication boundaries already tested; and
absence of a repo-local schedule/cron, so cadence remains owned by the central admission layer.
Update the operations runbook to state the same owner boundary: the TEPP workflow is the dispatchable commercial entrypoint; recurring cadence is supplied by the central CWL scheduler/admission owner rather than duplicated in the repository workflow.
Acceptance
protected-main-derived exact head passes the Python quality contract with branch coverage;
workflow logic is unchanged except for no-op documentation/test currentization;
no local cron is restored;
workflow_dispatch and existing credential, queue, verification, and late-publication controls stay intact;
affected runbook wording is code-current.
This is a shared foundation prerequisite for open TEPP lanes including #605 and #639. Do not close those dependent PRs; repair the owner contract first.
Owner repair is now isolated in Draft PR #648 from exact protected main@a243f18da4a4ca8a8d068c39922537f1f8ed6ad0.
Current head 844b06b343e844fffd89b13af347a54f6b4ae005 keeps the workflow itself unchanged, replaces the stale minute-47 cron assertion with cwl-org-commercial-entrypoint: v1 + workflow_dispatch/dry_run and explicit local schedule/cron refusal, currentizes the operations runbook, and adds a changelog fragment. Compare is ahead 3 / behind 0.
Exact-head runs are newly queued: Rust Foundation 35639332620, Semgrep 35639332538, Documentation 35639332555, Security 35639332675, CodeQL 35639332657. No predecessor receipt is being reused. Keep #647 open until current-head GREEN, qualifying independent review, and protected-main landing.
Activity
test(actions): bind centralized hourly admission contract (#647)
docs(actions): document central hourly cadence ownership (#647)
docs(changelog): record centralized hourly admission repair (#647)
seonghobae commentedon Sep 21, 2026
Owner repair is now isolated in Draft PR #648 from exact protected
main@a243f18da4a4ca8a8d068c39922537f1f8ed6ad0.Current head
844b06b343e844fffd89b13af347a54f6b4ae005keeps the workflow itself unchanged, replaces the stale minute-47 cron assertion withcwl-org-commercial-entrypoint: v1+workflow_dispatch/dry_runand explicit localschedule/cronrefusal, currentizes the operations runbook, and adds a changelog fragment. Compare is ahead 3 / behind 0.Exact-head runs are newly queued: Rust Foundation
35639332620, Semgrep35639332538, Documentation35639332555, Security35639332675, CodeQL35639332657. No predecessor receipt is being reused. Keep #647 open until current-head GREEN, qualifying independent review, and protected-main landing.test(actions): refuse any repository-local schedule trigger (#647)
fix(actions): align hourly quality contract with central admission (#647