Skip to content

Stop a pull-request description edit from restarting the whole catalogue CI #250

Open
1 of 2 issues completed
Open

Description

@devantler

🤖 Generated with Claude Code in an interactive session with the maintainer.

Evidence

After the catalogue import (#235), .github runs one CI workflow with about 250 jobs. It keeps the edited pull-request trigger so the release-contract check can re-judge a changed title. With cancel-in-progress set, any title or body edit cancels the run in flight and starts the whole suite again. On #243 at df7d772, a body edit cancelled run 36141894714 partway, and its always-run queue observer then reported the cancelled slots as a failure.

Problem

Editing a pull request description should not cost a full catalogue run, and a cancelled run should not leave a misleading failure behind.

Proposal

Move the release-contract check, the only part that depends on the title, into its own small workflow that triggers on edited, and require its status alongside CI - Required Checks in this repository's ruleset. Then ci.yaml can drop edited. The deletion check reads the body, so it moves with it or runs only when deploy/ changes.

Acceptance criteria

  • A title or body edit re-runs only the checks that read the title or body.
  • A pull request cannot merge while its current title fails the release contract.
  • ci.yaml no longer triggers on edited.

Activity

  1. added theissue type on Sep 25, 2026
  2. moved this to 📥 Backlog in 🌊 Project Boardon Sep 25, 2026
  3. self-assigned this
    on Oct 1, 2026
  4. added a commit that references this issue on Oct 1, 2026
  5. devantler commented on Oct 2, 2026

    @devantler
    ContributorAuthor

    🤖 Generated by the Agentic Engineer

    Metadata-guard publisher design

    This corrects the unsupported blanket approval hold on .github PR 354. Product work may progress autonomously. The actual unresolved trust-source finding requires a different publication boundary before the proposed status can become required.

    1. Keep the current reviewed-main required deploy workflow and full CI metadata-edit coverage during bootstrap.
    2. Load the metadata handler and validators from an immutable trusted source. Read the current PR through fixed native API routes; bind repository, PR number, head, base, title, body and complete commit/path data. Fail closed on unknown or incomplete reads.
    3. Put candidate-data rendering in a separate worker with no publisher credential, no persisted checkout credential, no plugins or Helm execution, and a bounded filesystem and network boundary. Prefer a network-disabled read-only container for Kustomize; its build definition and executable must come from the trusted source.
    4. Publish the result in a separate job with an identity candidate workflows cannot impersonate. The required status must bind that specific integration, rather than the shared GitHub Actions integration. Prepare the dedicated publisher setup for the maintainer to apply; keep its credential out of the candidate worker.
    5. Mark the captured head pending, validate, then reread native metadata before publishing success. Changed identities or metadata invalidate the result. Explicitly document the asynchronous delivery limit: a commit status cannot atomically bind mutable title/body text to the final GitHub merge transaction. Preserve the current protection until this product constraint is addressed and verified.
    6. Prove negative controls: candidate-created status names, missing or wrong publisher identity, altered workflow source, unsafe render inputs, metadata edits during validation, moved head/base, incomplete API pages, failed reads and stale publication. Inspect native status-author identity and required-rule readback in the real user path before activating the requirement.

    This is a reviewable design proposal. Publisher provisioning, defensive implementation and authenticated bootstrap remain outstanding. The existing full CI edit coverage stays in place until the replacement has native proof.

  6. devantler commented on Oct 3, 2026

    @devantler
    ContributorAuthor

    🤖 Generated by the Agentic Engineer

    The manual feedback slice merged in PR354. The reviewed-main workflow was exercised successfully against open PR416: https://github.com/devantler-tech/.github/actions/runs/37125103450 . It read current metadata, fetched candidate Git data without executing candidate code, validated release/deletion contracts and rechecked freshness. Native dispatch of an invalid PR number was rejected at admission: https://github.com/devantler-tech/.github/actions/runs/37125241630 . Actual diverged-history, producer-failure and hostile-candidate regressions are in required CI.

    The automatic optimization remains open: issue413 owns independent producer/head attribution and native edit enforcement. Full catalogue CI still runs on edited events until that proof exists.

  7. devantler commented on Oct 4, 2026

    @devantler
    ContributorAuthor

    🤖 Generated by the Agentic Engineer

    Another concrete reproduction at unchanged source commit 3186c0174bc1b2eccbd2a0032983067bb9c0ea66: correcting PR444’s Conventional Commit title started run37200572504 at 11:59:36 UTC. It completed with 233 jobs: 157 successful and 76 intentionally skipped, with no other outcome. Promoting the same commit at 13:06 started run37204431940 again. No source change separated these runs.

    This records the current cost of metadata-triggered full validation. The replacement’s remaining enforcement criteria stay with #413; the existing trigger remains in place until they are proved. The eventual cutover should cover both title/body edits and promotion behavior, while keeping source changes fully validated.

  8. devantler commented on Oct 4, 2026

    @devantler
    ContributorAuthor

    🤖 Generated by the Agentic Engineer

    The promotion-triggered full CI run37204431940 is now complete: 157 successful jobs and 76 skips at unchanged source 3186c01. Its elapsed interval was 13:06:19–14:34:29 UTC. The preceding title-triggered full run37200572504 also succeeded at that same source. The reviewed product change is merged in #444.

    This completes the native duplicate-work observation. Keep the full triggers until the separate metadata gate has actual healthy and rejected-event proof at the candidate head; this measurement alone does not establish that replacement.

  9. devantler commented on Oct 4, 2026

    @devantler
    ContributorAuthor

    🤖 Generated by the Agentic Engineer

    Delivered the bounded promotion optimization in #450, closing #447. Release v6.0.5 points to 1a7db1f; release 37224432623 and post-merge CI 37224433004 both succeeded.

    Before this change, one observed promotion repeated the same 233 job outcomes for 88 minutes 10 seconds (runs 37200572504 and 37204431940, unchanged head 3186c01, zero changed results). The new native promotion of reviewed head cc9214e retained exactly one catalogue CI run, 37222972304, before and after marking ready. Its separate promotion eligibility run 37224228788 completed successfully.

    The source, edit, reopen, main and merge-group checks remain. This issue stays open: removing edited runs still depends on the trusted producer/current-head enforcement and declarative readback in #413. No metadata enforcement is claimed by this optimization.

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

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

Fields

Priority

None yet

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions