Skip to content

Run pull request validation for organization fallback changes #11

Open

Description

Describe the bug

Organization-fallback pull requests receive no hosted validation result. MSXOrg/.github#8 reports zero check runs and zero commit statuses, although the verified readiness contract does not treat absent checks as passing. A contributor cannot truthfully mark the fallback change ready using local checks alone.

Expected behavior: every applicable source pull request to main publishes a named, complete validation result at its actual head. Changed Markdown cannot bypass shared rules, retargeting to main is covered, intentional PR-template absence/deletion is valid, and empty or unsupported-only input is not a pass. Canonical PR-format guidance governs authored records separately from file presence.

Regression status: the last working hosted validation configuration is unknown. Workaround: keep affected delivery PRs draft; local lint and structural checks provide development evidence but are not a substitute for the missing gate.

Environment

Public MSXOrg/.github, target main, pull request head d066ecb2908362d7e6e7e6023f215279d76f5997, inspected on 2026-10-31. The checkout contains no .github/workflows directory or repository validation scripts. The Actions API lists only the dynamic Copilot and Dependabot workflows. The inherited organization ruleset 19735160 also names no required status checks; enforcing a selected validation check is a separate governance action, not permission for this delivery PR to mutate a ruleset.

Steps to reproduce

Run these read-only commands:

gh api repos/MSXOrg/.github/commits/d066ecb2908362d7e6e7e6023f215279d76f5997/check-runs --jq '{total_count, check_runs}'
gh api repos/MSXOrg/.github/commits/d066ecb2908362d7e6e7e6023f215279d76f5997/status --jq '{state, total_count, statuses}'
gh api repos/MSXOrg/.github/actions/workflows --jq '[.workflows[] | {name, path}]'
gh api repos/MSXOrg/.github/rules/branches/main --jq '[.[] | {type, parameters}]'

Relevant details

This issue originally captured the no-existing-CI finding. The explicit follow-up assignments authorize only its bounded workflow/code correction in #12, including current-review defects and the user-selected no-template contract. Live required-check, ruleset, and access changes remain separately unapproved; no CI rollout belongs in #8. The owning readiness requirement is the Definition of Ready for Review item requiring completed required checks and explicitly stating that a PR reporting no checks has not met the gate. An owner must approve separately scoped corrective work; local source/scaffold checks must not be reported as nonexistent hosted checks.

Verified cause boundary: this checkout has no PR validation workflow, and GitHub reports no validation checks for the live PR head. No failed runner, dependency, or trigger-filter diagnosis is asserted beyond that evidence.

Keep the correction limited to one reviewable validation-workflow PR using existing MSX Markdown and immutable configuration sources. The user-selected no-template contract supersedes scaffold presence/parity checks; actual record quality remains a separate canonical PR Format review. Do not introduce release publication, a plugin marketplace, PSModule defaults, or unrelated repository scaffolding. Required-check enforcement must be handled through the approved governance path once the named check exists.

Acceptance criteria:

  • An applicable pull request to main, including Markdown-only changes and an edited retarget to main, receives a named completed check at its actual head.
  • Intentional PR-template absence is valid. Descriptions use canonical guidance only; validation does not require, copy, generate, or compare a repository template. The central deletion is delivered separately by PR authors use canonical guidance without repository templates #8.
  • Every selected existing Markdown input is actually linted with the shared rules; inline disables/configuration and local ignores cannot hide malformed content. A malformed anonymous case fails before correction and passes after correction.
  • Intentional deleted inputs are checked and reported as absent, not counted as linted content. Empty or unsupported-only scans still fail explicitly.
  • Actual-head, clean-checkout, literal-path, source correspondence, containment, and relevant-file guards remain effective. No template or fixture self-test substitutes for a real changed-input scan.
  • The check remains read-only, named Organization defaults validation, with no publication, label/tag mutation, consumer rollout, hooks, or live rule/access change. Required-check governance remains separately unapproved.

Technical decisions: use the approved immutable shared Markdown/configuration sources, literal stdin validation with noInlineConfig, explicit edited activity coverage, and source/head/containment guards. PR-format guidance is canonical authoring context, not a copied scaffold/runtime dependency. Preserve source-only scope, other community files, and the separately unapproved enforcement boundary.

Initial CI implementation plan (completed before the user-directed no-template revision):

  • Define a failing malformed-fallback fixture and confirm the absence of a hosted check at the reproducing PR head.
  • Add the smallest PR-triggered validation workflow and directly related local validation/documentation needed by its named check.
  • Verify both malformed and valid cases and inspect a completed result attached to the actual PR head.
  • Hand off the exact check name for required-check enforcement; record remaining governance blockers without bypassing them.

Supporting evidence

The check-runs API returns total_count: 0; the combined-status API returns state: pending, total_count: 0, and statuses: []. The local file inventory has no workflow or validation toolchain. Rules inspected for main include deletion, non-fast-forward, linear history, and pull-request rules, but no required_status_checks rule. This gap is not resolved by the fallback-format PR.

User-directed no-template revision

The central owner removes only .github/pull_request_template.md in #8; README/contribution authoring links are separate owner paths. The validator revision removes its owned copied scaffold fixture and presence/structure assumptions while preserving real Markdown, immutable shared-source, and head/containment checks. Original reproduction evidence above remains historical context, not a requirement to restore the removed template.

  • Reproduce the reviewed changed-Markdown bypass and edited retarget gap with anonymous cases before changing code.
  • Reproduce valid no-template and intentional-deletion inputs against the old source controller.
  • Remove copied-template assumptions and fix the demonstrated gaps while retaining no-input failure and read-only scope.
  • Reproduce and fix the current-review shared-linter flag and PowerShell wildcard-path defects.
  • Reproduce and fix the native runner default test-directory failure; CI exercises the default rather than bypassing it.
  • Inspect completed validation and the entire fresh review at the final PR head, then record the exact check/source and separately gated governance handoff.

Final current-review corrections also reproduce and fix case-only deletion and skipped-only summary/exit disagreement. All source/no-input guards remain in place; those case dispositions are recorded with exact commands and actual-head evidence in #12.

Activity

  1. MariusStorhaug commented on Oct 31, 2026

    @MariusStorhaug
    MemberAuthor

    Clarified that this is a captured no-existing-CI finding, not permission to invent or deploy a pipeline. The exact owning readiness gate is linked in the report. MSXOrg/docs#166 is completed and repository-only; it does not enforce checks for MSXOrg/.github. No ruleset or workflow has been changed.

  2. MariusStorhaug commented on Oct 31, 2026

    @MariusStorhaug
    MemberAuthor

    The separately scoped readiness assignment now authorizes the bounded workflow/code correction only; live enforcement and ruleset/access changes remain unapproved. The independent draft #12 records a working validator with 27 passing Pester checks, explicit malformed-template rejection, and direct immutable-source correspondence. It leaves PR #8 and its template/README unchanged; hosted wiring and current-head review are still in progress.

  3. MariusStorhaug commented on Oct 31, 2026

    @MariusStorhaug
    MemberAuthor

    The independent #12 code candidate is handed off at 0cce9dc. Organization defaults validation completed successfully at that actual head, from GitHub Actions/app 15368, with all 50 tests and five selected linter routes passing. The PR remains draft: the complete current-head review still requests human assessment of unpublished trigger/Markdown findings, and required-check enforcement is separately unapproved. Six inline and two detailed summary-only findings are fixed; no #8 files, ruleset, access, label, merge, or auto-merge change was made. Exact commands and malformed/valid evidence are preserved in the PR description.

  4. MariusStorhaug commented on Oct 31, 2026

    @MariusStorhaug
    MemberAuthor

    Applied the user-selected canonical-guidance-only/no-template contract to this same bounded CI Bug. The original captured absence-of-CI evidence is retained; acceptance now permits intentional template deletion and requires actual Markdown, head/source/containment, retarget, and no-input checks. Runtime/source interruptions were not treated as completion. The implementation and anonymous regression fixes are in #12; final exact-head validation/full review and separately unapproved governance remain explicit gates.

  5. MariusStorhaug commented on Oct 31, 2026

    @MariusStorhaug
    MemberAuthor

    The revised no-template CI delivery is verified at a6c4484. The completed Organization defaults validation job (GitHub Actions/app 15368) passes all 44 regressions and every applicable route. All nine review threads are resolved; the full summary was inspected, and its superseded cancelled-run citation is replaced by completed actual-head run 41248565958. Code, source/head/containment, no-input, Markdown and retarget gates are preserved. The owner externally marked the PR ready and maintenance is enabled with merge_pr=false; GitHub auto-merge is unset. Required-check enforcement remains separately unapproved, with no rules/access or merge change by this session.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions