Skip to content

fix(ci): auto-merge-ready-prs.yml has not parsed since 2026-07-07 - #2256

Merged
gHashTag merged 2 commits into
masterfrom
fix/automerge-yaml-v2
Aug 19, 2026
Merged

fix(ci): auto-merge-ready-prs.yml has not parsed since 2026-07-07#2256
gHashTag merged 2 commits into
masterfrom
fix/automerge-yaml-v2

Conversation

@gHashTag

Copy link
Copy Markdown
Owner

Supersedes #2246, which went dirty on docs/NOW.md. Rebuilt on current master so it lands without a conflict.

One under-indented line has stopped this workflow parsing since 7644b30d (2026-07-07). GitHub says it plainly: "This run likely failed because of a workflow file issue" — zero jobs, run_started_at == updated_at to the second, 7+ consecutive failures.

Line 62, column 0 inside a run: | block scalar whose content indent is 10 (set by line 32). A non-empty line indented less terminates the scalar, so the parser reads the shell continuation as a top-level YAML node. YAML spec §8.1.1.

Consequence: this repository has had no working auto-merge for six weeks, which is why ready PRs accumulated to 29.

Whitespace only. The 10 spaces added are exactly the scalar's indent and are stripped by YAML — the shell receives byte-identical text. "".join(orig.split()) == "".join(fixed.split()) is True, and the characters between $TITLE and $BODY in the parsed run: string are a bare \n.

No merge condition changes: L1 regex, approved-review gate, failing-check gate, NotebookLM exclusion, --merge --delete-branch, both dry_run branches — untouched.

Verified with two independent parsers (PyYAML 6.0.3 and Ruby Psych/libyaml — both fail the original at 62:1, both parse the fix), a hand-written schema check, and bash -n on all four run: scripts. actionlint was unavailable, so this is not a GitHub schema check.

Not fixed here: 17 branches carry the same bug class elsewhere (a shell else under-indented out of its block at line 78), and 274 branches carry the broken blob, so a merge from one re-introduces it.

Not used as the fix: 139 branches including main have a copy that parses, but it is the older pre-hardening version lacking the L1 and approved-review gates. Restoring it would weaken the merge conditions.

Closes #2245

Line 62 sits at column 0 inside a run: | block scalar whose content indent is
10, set by line 32. A non-empty line indented less terminates the scalar, so
the parser reads the shell continuation as a top-level YAML node. GitHub
reports a run with zero jobs and run_started_at == updated_at.

Introduced by 7644b30, which added the L1 gate. Every run since has failed,
so this repository has had no working auto-merge for six weeks.

The 10 spaces added are exactly the scalar indent and are stripped by YAML:
the shell receives byte-identical text. Verified with two independent parsers
(PyYAML, Ruby Psych) plus bash -n. No merge condition, trigger, permission or
target is changed.
@gHashTag
gHashTag enabled auto-merge (squash) August 19, 2026 22:22
@github-actions

Copy link
Copy Markdown
Contributor

📓 NotebookLM Notebook linked to this PR

This notebook contains session context, decisions, and artifacts for this work.

@github-actions

Copy link
Copy Markdown
Contributor

PR Dashboard

Generated at: 2026-08-19 22:22:28 UTC

Summary

Status Count
Total Open PRs 25
PRs with Failing Checks 9
PRs with All Checks Green 16
READY 8
FAILING 9
PENDING 0

Seal Status

  • ⚠️ STALE -- sha256(compiler.rs)=375b2f88cc2f != manifest seal=87e5cbd3ad94.
    The committed NMSE numbers were certified against an older compiler.rs.
    Run scripts/reseal-check.sh locally for the two-step reseal command (advisory; not a merge gate).

@gHashTag
gHashTag merged commit 16a6e1e into master Aug 19, 2026
20 of 23 checks passed
gHashTag added a commit that referenced this pull request Sep 4, 2026
… instant (#3176) (#3190)

tri red now listed `Auto Merge Ready PRs` at 260+ in a row and I put that on
the dashboard as a live finding one pass ago. It was settled.

Its whole history: 1541 runs, every one a failure, never a success. The cause
was not the gate's logic -- the workflow file had not parsed since 2026-07-07,
so GitHub could not read its `on:` block and made a failed run on every push.
#2256 repaired the parse on 2026-08-20; of the 96 runs after that date, 95
came from one stale branch and 1 from another, and ZERO from master. Dormant
since 2026-08-28.

The tell was in the data all along: 1541 runs recorded as event=push, from a
file whose `on:` block has never in five commits contained push.

The command could not have known, and that is the defect: it reports the
LATEST run, which is the newest that exists rather than a recent one. Every
row now carries the instant of its latest run, from the same single request
that already asked for the verdict. Only one of eleven rows was failing NOW;
Issue Gate's newest run is five months old.

Mutation: dropping created_at from the request turns the structural test red.

Also the sweep that produced this. 45 lines read a commit message, branch or
PR title; 3 compare against a literal; 1 was a defect. gates.rs reads prose
because the GATE reads prose and labels the row PROXY -- not a defect, and it
says so. rule_observance's `w699-` prefix matches 0 of 40 merged PRs, but the
command already prints that zero and names the clause as enforced by nothing:
the rule is dead, not the practice, and resolving it owns to LOOP-RULES.md.

Census moved and is re-blessed here. 671 crate tests pass. SKILL.md 532-533.

Refs #3176

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

auto-merge-ready-prs.yml has not parsed since 2026-07-07 — one under-indented line

1 participant