Skip to content

Restore exact-head documentation verification without reintroducing full CI queue load #279

Description

@seonghobae

Gap

Protected main@87c4daa1830bac5a5228b6036752ad5633232085 includes #284's queue/concurrency optimization and #286's Draft/closed native-job guards. The earlier documentation-verification safety repair remains intact in principle: a documentation-only exact head must still execute the applicable repository/documentation contracts and cannot be accepted from predecessor, skipped, cancelled, queued-only, synthetic, or status-only evidence.

The buyer/operability gap has two coupled control-plane parts:

  1. genuinely prose-only changes still need a protected-base classifier and an authorized workflow partition so repository/documentation contracts run without materializing unnecessary Rust build/test/rustdoc/Clippy/coverage work; and
  2. ci: stop draft PR jobs from occupying runners #286's PR lifecycle handling has an exercised ready_for_review defect: marking test(ci): stage protected docs-only classifier foundation #287 Ready on exact 7688798e4fd176450b32cb8188069418f67ccbd4 created native CI 33928039835 with conclusion skipped, while a later substantive synchronize on the already-Ready PR did materialize full native CI. A skipped ready transition is not GREEN.

This is protected-main CI ownership work. Scheduled product writers must not edit .github/** on leaf/product branches to work around either defect.

Current protected-main truth

Protected main #286 configures pull-request lifecycle events including ready_for_review, converted_to_draft, and closed, and guards native CI/MV3 jobs so Draft/closed PRs do not consume runners. This is useful capacity control, but the live #287 experiment proves that the Ready transition itself does not currently provide usable native exact-head verification. Do not weaken the Draft/closed guard merely to make the transition appear GREEN.

#284's separate optimization remains valid: PR cancellation is scoped to workflow/repository/PR, non-PR runs are preserved, the completed nightly materializer is gone, and the redundant standalone cargo check pass was removed. Those changes do not by themselves implement docs-only partitioning.

Protected classifier prerequisite

Ready PR #287 carries the workflow-free classifier foundation at exact af83c40dd2990a03064a92ca75430a9cc400f098, directly based on current protected main. Its first split incorrectly retained a test that read/asserted .github/workflows/ci.yml, making the prerequisite depend on the future activation it was supposed to precede. That test was removed at ab6d5d1a04a020f37727e2f5a6950c58feae8559; current af83c40d... additionally records the rename/copy similarity-to-blob-identity invariant without adding workflow authority.

The classifier consumes NUL-delimited non-combined git diff --raw -z --no-abbrev evidence and must prove ordinary prose-only blobs before permitting a lightweight lane. It must fail closed for workflow/classifier or instruction-authority changes, code-bearing paths, executable/symlink/gitlink/type-change surfaces, malformed/truncated/ambiguous records, non-canonical paths, unsupported status/mode/object-id combinations, or any evidence shape it cannot prove safe.

Exact-current #287 execution is terminal:

  • CI 33931806137: success;
  • Security Scan 33931806226: success;
  • SAST Semgrep 33931806165: success;
  • CodeQL PR 33931806139: failure.

The CodeQL failure is the same central dispatch/verdict control-plane signature independently observed on other OriginWeave heads, not an identified classifier-source finding. Detect-languages succeeded. Javascript-typescript job 101244865461, actions 101244865470, and python 101244865526 each successfully completed Request current-head CodeQL scan dispatch and then failed at Release runner or enforce current-head CodeQL verdict. Keep the prerequisite fail-closed and hand the central verdict problem to ContextualWisdomLab/.github#712; do not duplicate CodeQL locally or substitute the earlier skipped Ready-transition run.

Repair order and acceptance

  1. Get test(ci): stage protected docs-only classifier foundation #287's workflow-free classifier foundation through exact-head required central verdict, review/thread gates and normal protected-main promotion. Current leaf CI/Security/Semgrep success does not override the failed required CodeQL verdict or one-approval rule.
  2. After that classifier is immutable on protected main, use the authorized .github workflow-owner path to reconstruct/adopt test(ci): define fail-closed docs-only partition contract #282's valid workflow/config delta against the protected classifier. Keep test(ci): define fail-closed docs-only partition contract #282 open until its valid delta is actually adopted; do not close it merely to reduce PR count.
  3. In the same authorized owner lane, repair ci: stop draft PR jobs from occupying runners #286's Ready lifecycle so ready_for_review for a non-draft PR materializes the required native jobs instead of an all-skipped workflow. Preserve converted_to_draft/closed capacity handling and fail closed on uncertain event state.
  4. Run docs(ci): exercise prose-only CI partition #283 or a verified successor as the realistic prose-only canary. Acceptance requires the applicable Python repository/documentation contracts to execute on the exact head while Rust build/test/rustdoc/Clippy and Production coverage jobs are absent rather than cancelled/skipped.
  5. Run a code-bearing exact-head control proving normal Rust and coverage lanes still materialize and execute.
  6. Keep runner admission/provider/platform incidents distinct from trigger partitioning. A queued, runner-less, startup-failed, cancelled, skipped, or central-verdict-missing job is not GREEN.
  7. Preserve active ruleset 18156473: one counted approval, stale-review dismissal after push, required resolved threads, extra approval for unattributed changes, seven central required workflows, and deletion/non-fast-forward prohibitions. Do not self-approve or bypass.

Exact evidence

Keep this issue open until the protected-main CI has both an exercised docs-only exact-head partition and a working Ready-transition verification path, with no gate weakening.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions