Skip to content

chore(stack): land #762 #763 #764 #765 #766 (v0.56.0) - #768

Merged
TheFJK merged 41 commits into
mainfrom
chore/stack-20260824-094351-aa3e54cd6c37b8e8
Aug 24, 2026
Merged

TheFJK merged 41 commits into
mainfrom
chore/stack-20260824-094351-aa3e54cd6c37b8e8

Conversation

@TheFJK

@TheFJK TheFJK commented Aug 24, 2026

Copy link
Copy Markdown
Collaborator

Consolidated PRs

These PRs are superseded by this one. They are NOT merged individually and receive no trust trail; the review that covers them is the one run against this branch (chore/stack-20260824-094351-aa3e54cd6c37b8e8).

Closes #744
Closes #749
Closes #753
Closes #754
Closes #755

Fixture added 30 commits August 23, 2026 08:26
…matter parses

`plugins/uberdev/skills/ubersimplify-pipeline/SKILL.md` line 3 held an unquoted
YAML plain scalar whose value carried a second `": "` — `… via code-fixer as one
refactor: commit per area …`, at column 330. In a block mapping a plain scalar
may not contain `": "`: the parser reads it as a nested mapping key and refuses
the WHOLE block with `mapping values are not allowed here`.

Every field went with it, `model: inherit` included, and nothing warned. A
SKILL.md with unparseable frontmatter still loads — the name falls back to the
directory name and the description to the first line of the body — so a dropped
field is indistinguishable from a working skill by eye.

Quoting the scalar leaves the resolved value byte-identical and matches the
shape the repo already uses: 6 of the other 29 skills and all 18 command files
double-quote their description. `commands/ubersimplify.md` is one of them — it
carries nearly the same sentence, `refactor: commit` included, which is exactly
why that file never had the bug.

Sweep: all 96 frontmatter-bearing markdown files in the repo were parsed with
PyYAML. This was the only one that failed; zero fail after.

Guard: tests/agent-description-budget.test.sh already owned the strict parse in
its A1 row — whose own comment named this defect "the same class as #744" — but
scoped it to agents/*.md, so the class stayed live one directory over. A1 now
sweeps every frontmatter surface the plugin ships (47 agents, 30 skills, 18
commands); a new A1b row asserts the fields each surface cannot work without are
actually present, since a dropped field fails open exactly the way an
unparseable block does; A0 gains anti-vacuity floors for the two new corpora;
and a new A5 row drives the same `parse_frontmatter` against synthetic mutants —
the #744 and #746 shapes included — so the row cannot rot into a permanent
green. The guard lands there rather than in tests/skill-size.test.sh because a
strict parse needs PyYAML, which windows-latest cannot import; skill-size runs
on both jobs and hosting it there would have cost the size ratchet its Windows
coverage.

Closes #744
@coderabbitai

coderabbitai Bot commented Aug 24, 2026 •

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 4a1daa0d-62ce-4794-8b2c-13642327b750


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Fixture added 5 commits August 24, 2026 03:20
…es their bytes

tests/vendor-provenance.test.sh V46 requires every
measured_diff_basis.uberdev_rev to be a commit of this repository
reachable from HEAD, so that `git show <uberdev_rev>:<path>` re-derives
the exact bytes the measurement counted.

Six components recorded b7dbe74, which
is the tip of the unmerged branch fix/746-agent-description-budget. That
work was re-cut by the #752 stack landing, and the register kept the
pre-landing SHA, so the rev resolves to nothing reachable and V46 fails
on clean main (62 passed / 1 failed).

This is a re-pin, not a re-baseline. For all six components the shipped
blob is byte-identical at b7dbe74, at origin/main and at this branch's
HEAD, and all six last changed at aa3e54c
("chore(stack): land #750 #751 (#752)") — the commit that actually put
those bytes in this history. The measurement re-derives unchanged.

Carried in this stack rather than a separate PR because V46 is red on
main itself, so no stack can reach a green gate until it is fixed.

tests/vendor-provenance.test.sh: 63 passed / 0 failed
tools/vendor/vendor-check.py: exit 0
Fixture added 2 commits August 24, 2026 05:44
…otes overwrote

The release commit filled in the v0.56.0 section by substituting the
placeholder line bump-version.sh inserts. `origin/main` already carried 13
copies of that same placeholder — earlier releases whose notes were never
written — and the substitution had no occurrence limit, so all 14 were
replaced. Thirteen already-published sections spanning 0.36.2 to 0.37.1,
dated 2026-06-12, were left claiming to have shipped work whose issue
numbers postdate them by two months.

CHANGELOG.md is one of the six mandatory version surfaces, so this would
have published a permanently wrong history for 13 versions with nothing to
distinguish it from the real notes.

Rebuilt from origin/main with only the new section inserted, so every
historical section is byte-identical to main again:

  0.56.0 notes occurrences  14 -> 1
  restored pending stubs    0 -> 13  (matches main)
  diff vs main              +63 / -0, one hunk

Found by the Reuse/Quality/Efficiency lens pass on the parked stack.
…he stack

Three code-simplifier lenses over #768's diff returned 41 findings. Only the
behaviour-preserving ones are applied here; everything that would change what
the code does is filed instead.

Guards that were vacuous, each demonstrated before the fix:

  * C11 greps a whole card for `StructuredOutput` to prove the body documents
    the dual-channel return. #763 put that literal into the `tools:`
    frontmatter of all eight cards, so the frontmatter satisfied it. Stripping
    the stanza from all eight bodies still passed; now scoped to `## Output`
    and it reds.
  * model-routing keyed "declares tools:" on bare key presence, so a key with
    an empty value counted as a declaration. Emptying one on a live card left
    the suite at PASS (383 checks) - the exact state #749 exists to red on. Now
    matches testers-agent-contract's semantics.
  * ci-shard-diagnose transcribed the harness's membership rule instead of
    running it. On a plan naming a fixture no invocation offers it reported
    `MATCH match=12 miss=0` for a shard that reds 11/12. It now carves the
    job's own run_one out of the live workflow and executes it.
  * The premerge Constants cap had a name-grep where its two siblings had
    value locks; it passed at any value. Five mutations now red it.
  * The unpinned sort/comm detector's narrow twin, plus a bare-terminator
    mutant row so the widening is itself tested.

Prose that contradicted the code it documents. `_growth_ratio` excludes
carried rows from both sides and `_growth_round_counts` adds a third
eligibility term, but five surfaces still described the pre-narrowing
behaviour. Executed against one document with 1 reviewer blocker + 2 carried
rows, the prose denominator gives 3 and the code gives 1 - 0.33 vs 1.00,
straddling the 0.50 ceiling, i.e. the two copies disagreed about whether the
loop stops. SKILL.md, commands/premerge.md and common-mistakes.md corrected;
RFC 0021 gets a new A6 amendment rather than an edit, because A5 was accurate
when it landed and the narrowings came after it.

Also: the fix-commit push now captures git's stderr the way the five SKILL.md
fences do (driven against a hostile pre-receive hook), an unreachable fallback
deleted after 50 executions with a live anti-vacuity control, the S10 loop
re-runs its extractor 3 times instead of 17, and several comments that named
dead consumers now name the live ones.

Verified: 20 suites green, all at or above baseline. Artifact bytes unchanged
where it matters - the premerge-findings refactor was diffed end to end and
all 17 run artifacts plus both streams are byte-identical to HEAD's copy.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment