Skip to content

docs: require testing against template repos before declaring ready to merge - #408

Merged
d-morrison merged 7 commits into
mainfrom
docs/test-against-template-repos-rule
Aug 6, 2026
Merged

docs: require testing against template repos before declaring ready to merge#408
d-morrison merged 7 commits into
mainfrom
docs/test-against-template-repos-rule

Conversation

@d-morrison

Copy link
Copy Markdown
Collaborator

Summary

Adds a standing requirement to CLAUDE.md stating that before declaring a PR ready to merge (or clean) for PRs in gha that touch GitHub Actions or their component actions/workflows, the changes must be tested against one of the lab's template repos (rpt, qwt, qbt, qmt, etc.).

Verification

  • Verified CLAUDE.md formatting with markdownlint.

Comment thread CLAUDE.md Outdated
Comment thread CLAUDE.md Outdated
Comment thread CLAUDE.md Outdated
@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@d-morrison

Copy link
Copy Markdown
Collaborator Author

Addressed findings from review of 5e94e02:

# Finding Disposition Detail
1 Stale repo owners in template URLs ✅ Address Updated UCD-SERG/* URLs to current canonical repo locations: Morrison-Lab/rpt, d-morrison/qwt, d-morrison/qbt, and d-morrison/qmt.
2 Undefended factual claim regarding _selftest.yml ✅ Address Added detailed causal mechanism explaining that _selftest.yml exercises local composites or throwaway fixtures rather than full downstream project structures (R package vignettes, Quarto sites) pinning @v2 reusable workflows.
3 Testing mechanism & consistency with self-verify guidance ✅ Address Explicitly specified the testing mechanism (e.g. test.hac test bed or a template repo branch pointing uses: at the PR branch/SHA) and cross-referenced the existing "A PR fixing claude-code-review.yml (or claude.yml)..." section for reusable workflow self-verify limits.

@d-morrison

Copy link
Copy Markdown
Collaborator Author

@claude review

@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

👀 Picked up by workflow run #31026094798. Setup runs first; Claude itself responds after that.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Antigravity Agent Report (Code-Review)

Here is a comprehensive code review of PR #408.


Executive Summary

PR #408 introduces a standing guidance section to CLAUDE.md requiring developers and AI assistants to test changes to actions and reusable workflows against representative lab template repositories before declaring a PR clean or ready to merge.

Overall, this documentation addition is accurate, well-reasoned, and correctly points to existing downstream template repositories. Below are actionable suggestions for semantic formatting, link completeness, and streamlining prose.


Detailed Findings

1. Formatting & Readability: Apply Semantic Line Breaks

Location: CLAUDE.md:L1504-L1515

Finding:
Lines 1504, 1506, 1508, 1513, and 1515 are long, unbroken lines (up to 367 characters). In accordance with Rule 7 of the repository's guidelines (Suggest semantic line breaks in prose), text in CLAUDE.md should break at sentence/clause boundaries (~60–80 characters). This keeps git diffs tightly scoped to individual sentences when guidelines evolve in future PRs.

Suggested Revision:

## Test changes against a template repo before declaring ready to merge

Before declaring a PR ready to merge (or clean / ready for merge verdict)
for PRs in this repo (`gha`) that change GitHub Actions or their component
actions/workflows, test the changes using one of the lab's template repos
(`rpt`, `qwt`, `qbt`, `qmt`, etc.).

Running unit tests or `_selftest.yml` in `gha` alone is not sufficient when
modifying an action or workflow component because `_selftest.yml` exercises
local composites or throwaway fixtures rather than full downstream project
structures (such as R package vignettes or Quarto site builds) that pin `@v2`
reusable workflows. To ensure full compatibility and prevent downstream breakage:

- Test the updated action/workflow against a representative template repository
  or test bed (e.g., [`d-morrison/test.hac`](https://github.com/d-morrison/test.hac)
  or a template repo branch pointing `uses:` to the PR's branch/SHA):
  - **`rpt`** ([`Morrison-Lab/rpt`](https://github.com/Morrison-Lab/rpt)): R package template
  - **`qwt`** ([`d-morrison/qwt`](https://github.com/d-morrison/qwt)): Quarto website template
  - **`qbt`** ([`d-morrison/qbt`](https://github.com/d-morrison/qbt)): Quarto book template
  - **`qmt`** ([`d-morrison/qmt`](https://github.com/d-morrison/qmt)): Quarto manuscript template
- For PRs fixing reusable workflows (`claude-code-review.yml` or `claude.yml`)
  that cannot self-verify on the unmerged `@v2` floating tag, follow the
  manual/offline verification path documented in
  [A PR fixing claude-code-review.yml (or claude.yml) itself can't self-verify before merge](#a-pr-fixing-claude-code-reviewyml-or-claudeyml-itself-cant-self-verify-before-merge).

Verify that the action or workflow succeeds and behaves as expected in the
target template context before declaring the PR clean or ready to merge.

2. Completeness & Links: Fully Qualify and Link test.hac

Location: CLAUDE.md:L1508

Finding:
In the bullet point on line 1508, test.hac is referenced in backticks as an example test bed, but unlike rpt, qwt, qbt, and qmt, it is unlinked and lacks its owner prefix (d-morrison/test.hac).

To match the repository owner qualification and hyperlinking standard used for all template repositories in the list immediately following it, consider updating test.hac to a full Markdown link (e.g., d-morrison/test.hac).


3. Redundancy: Consolidate Opening and Closing Sentences

Location: CLAUDE.md:L1504, CLAUDE.md:L1515

Finding:
Line 1504 begins with:

"Before declaring a PR ready to merge (or clean / ready for merge verdict) for PRs in this repo (gha) that change GitHub Actions or their component actions/workflows..."

Line 1515 concludes the section with:

"Verify that the action or workflow succeeds and behaves as expected in the target template context before declaring the PR clean or ready to merge."

Per Rule 10 (Question redundant content), line 1515 largely restates the condition introduced in line 1504. Breaking up lines semantically as shown in Finding 1 helps make the flow more natural and eliminates redundant phrasing.

Comment thread CLAUDE.md Outdated
Comment thread CLAUDE.md Outdated
Comment thread CLAUDE.md Outdated
@d-morrison

Copy link
Copy Markdown
Collaborator Author

Working on this (ARDIA sweep) — paws off until I'm done.

…t redundancy

Address antigravity review findings on #408:
- Apply semantic line breaks to the new section (Rule 7).
- Remove the 'test.hac' reference: no test.hac repo exists under
  Morrison-Lab/d-morrison/UCD-SERG/ucdavis, so linking it would cite a
  nonexistent repo. Fold the 'point uses: at the PR branch/SHA' guidance
  into the paragraph instead.
- Cut the redundant closing 'Verify that...' sentence, folding the
  succeed-check into the setup paragraph (Rule 10).
@d-morrison

Copy link
Copy Markdown
Collaborator Author

ARD summary (round: antigravity findings)

Addressed all three inline findings in fb3ea2b:

# Finding Disposition
1 Semantic line breaks Addressed — reflowed the whole section at clause boundaries.
2 Link/qualify test.hac Addressed (differently)test.hac doesn't exist under Morrison-Lab, d-morrison, UCD-SERG, or ucdavis, so I removed the phantom reference rather than link a nonexistent repo, and folded the 'point uses: at the PR branch/SHA' guidance into the paragraph.
3 Redundant opening/closing Addressed — dropped the closing 'Verify that…' sentence, folding the succeed-check into the setup paragraph.

Also note the prior claude-review check failed in ~29s at the pre-fix head with no verdict posted (a stub/error run, not a code issue — a real 12-min review ran on #417 today, so the credential is fine). This push re-triggers it fresh.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Antigravity Agent Report (Code-Review)

An expert code review of Pull Request #408 (docs: require testing against template repos before declaring ready to merge) has been performed. Below are the actionable findings and recommendations from a comprehensive single-pass analysis against the repository's guidelines and standards in CLAUDE.md.


Key Findings & Recommendations

1. Repository Owner Inconsistency for rpt Template

Location: CLAUDE.md:L1516

In the template repos list, rpt is linked as Morrison-Lab/rpt:

- **`rpt`** ([`Morrison-Lab/rpt`](https://github.com/Morrison-Lab/rpt)) -- R package template

However, the other three template repositories in lines 1517–1519 use the d-morrison owner (d-morrison/qwt, d-morrison/qbt, d-morrison/qmt). Furthermore, elsewhere in CLAUDE.md (e.g. line 419, line 1488) and in changelog.d/retarget-doc-urls-after-org-move.fixed.md:L21 ("Repositories that did not move -- qwt, rme, rpt -- are untouched."), rpt is documented as remaining under d-morrison/rpt.

CLAUDE.md specifically warns under its owner retargeting rules:

"Read it as applying to any repeated string being retargeted -- an owner, a URL, a tag, a renamed input -- and grep for that string rather than for @v1."

Suggested Fix:

-- **`rpt`** ([`Morrison-Lab/rpt`](https://github.com/Morrison-Lab/rpt)) -- R package template
+- **`rpt`** ([`d-morrison/rpt`](https://github.com/d-morrison/rpt)) -- R package template

2. Technical Clarification: Testing Reusable Workflows Calling @v2 Composite Actions

Location: CLAUDE.md:L1512-L1513

The instructions state:

Instead, point a template repo's uses: at the PR's branch or SHA and confirm the workflow succeeds there:

When testing a PR that modifies a reusable workflow directly (e.g., .github/workflows/check-links.yml), pointing the template repo's workflow uses: at @<pr-branch> correctly executes the PR's reusable workflow.

However, if the PR modifies a nested composite action (e.g., .github/actions/check-secrets/action.yml) that a reusable workflow invokes via an explicit tag (e.g., uses: Morrison-Lab/gha/.github/actions/check-secrets@v2), pointing the template's top-level reusable workflow call to @<pr-branch> will still fetch the composite action from the un-slid @v2 tag on main, rather than the composite code on the PR branch.

To make these instructions bulletproof for contributors working on composite actions, add a brief note pointing out that when testing changes to internal composite actions, the composite step reference inside the test workflow must also temporarily point to @<pr-branch> (or be tested via direct step invocation) during template validation.


3. Formatting: Semantic Line Breaks in Added Prose

Location: CLAUDE.md:L1503-L1525

In accordance with Guideline 7 ("Suggest semantic line breaks in prose") from CLAUDE.md, long paragraphs should break at clause and sentence boundaries (roughly 60–80 characters) rather than wrapping arbitrarily across lines. This keeps git diffs tightly scoped when individual sentences are updated in future PRs.

Suggested Revision:

-Before declaring a PR ready to merge -- or reporting a clean / ready-for-merge
-verdict -- for a change in this repo (`gha`) that touches a GitHub Action or a
-component action/workflow, test that change against one of the lab's template
-repos.
-
-Running the unit tests or `_selftest.yml` in `gha` alone is not sufficient for
-such a change, because `_selftest.yml` exercises local composites and throwaway
-fixtures rather than the full downstream project structures -- an R package's
-vignettes, a Quarto site build -- that pin the `@v2` reusable workflows.
-Instead, point a template repo's `uses:` at the PR's branch or SHA and confirm
-the workflow succeeds there:
+Before declaring a PR ready to merge --
+or reporting a clean / ready-for-merge verdict --
+for a change in this repo (`gha`) that touches a GitHub Action or a component action/workflow,
+test that change against one of the lab's template repos.
+
+Running the unit tests or `_selftest.yml` in `gha` alone is not sufficient for such a change,
+because `_selftest.yml` exercises local composites and throwaway fixtures
+rather than the full downstream project structures --
+an R package's vignettes, a Quarto site build --
+that pin the `@v2` reusable workflows.
+Instead, point a template repo's `uses:` at the PR's branch or SHA
+and confirm the workflow succeeds there:

Comment thread CLAUDE.md
Comment thread CLAUDE.md
Comment thread CLAUDE.md Outdated
Comment thread CLAUDE.md
Comment thread CLAUDE.md Outdated
@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

…eview workflows

Address #408 round-2 review:
- Add a caveat that repointing a template's top-level uses: does NOT
  exercise a change to a nested composite action (its @v2 refs resolve
  at job-prep time from the released tag), so a composite-only test
  passes vacuously; instruct repointing the nested refs too.
- Replace the review-workflow exception's incorrect '@v2 self-verify'
  rationale with the real, empirically-confirmed obstacle: testing a
  review-workflow change runs claude-code-action against a modified
  caller, which fails its workflow-validation and reddens the check with
  no verdict (proven 2026-08-05 via a throwaway dispatched review).
- rpt link stays Morrison-Lab/rpt (verified: d-morrison/rpt 301-redirects
  there); the 'rpt untouched' changelog line is stale, tracked in #421.
@d-morrison

Copy link
Copy Markdown
Collaborator Author

ARD summary (round 2)

# Finding Disposition
1 rpt owner (Morrison-Lab vs d-morrison) Rebut — verified d-morrison/rpt 301-redirects to Morrison-Lab/rpt; keeping Morrison-Lab. Stale 'rpt untouched' changelog line tracked in #421.
2 Testing composites via top-level uses: Address (2ad2a3c) — added the nested-@v2-refs caveat.
3 Semantic line breaks Decline — Guideline 7 is a suggestion; current lines already break at clause boundaries and the CI one-sentence-per-line check passes.
4 Composite test passes vacuously Address (2ad2a3c) — same caveat; instruct repointing nested refs / invoking the composite directly.
5 Exception's stated reason is wrong Address (2ad2a3c) — replaced the '@v2 self-verify' reason with the real, empirically-confirmed obstacle (claude-code-action workflow-validation failure when the review workflow content differs from default), which applies to template-repo testing too.

Round-2 verified empirically via throwaway test PR #420 (closed) — which is itself an application of this very rule, and is what surfaced the corrected obstacle in finding 5.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Antigravity Agent Report (Code-Review)

Here is a comprehensive code review of PR #408.


Review Summary

This PR adds clear, actionable documentation to CLAUDE.md establishing a standing requirement to test GitHub Actions changes against one of the lab's template repos before declaring a PR ready to merge. The technical explanations of job-preparation composite resolution and OIDC App-token validation behavior for review workflows are accurate and well-reasoned.

A few findings regarding repo owner consistency, link wrapping, and semantic line break formatting are detailed below.


Findings

1. Inconsistent owner namespace across template repos

Location: CLAUDE.md:L1516-L1519

Issue:
The bulleted list mixes the Morrison-Lab org prefix for rpt with the d-morrison owner prefix for qwt, qbt, and qmt:

- **`rpt`** ([`Morrison-Lab/rpt`](https://github.com/Morrison-Lab/rpt)) -- R package template
- **`qwt`** ([`d-morrison/qwt`](https://github.com/d-morrison/qwt)) -- Quarto website template
- **`qbt`** ([`d-morrison/qbt`](https://github.com/d-morrison/qbt)) -- Quarto book template
- **`qmt`** ([`d-morrison/qmt`](https://github.com/d-morrison/qmt)) -- Quarto manuscript template

Recommendation:
Per the repo guidelines on owner retargeting ("Read it as applying to any repeated string being retargeted -- an owner, a URL, a tag, a renamed input..."), maintain namespace consistency across sibling lab template repos in the same list. Update the Quarto template references to Morrison-Lab if they have been retargeted alongside rpt:

- **`rpt`** ([`Morrison-Lab/rpt`](https://github.com/Morrison-Lab/rpt)) -- R package template
- **`qwt`** ([`Morrison-Lab/qwt`](https://github.com/Morrison-Lab/qwt)) -- Quarto website template
- **`qbt`** ([`Morrison-Lab/qbt`](https://github.com/Morrison-Lab/qbt)) -- Quarto book template
- **`qmt`** ([`Morrison-Lab/qmt`](https://github.com/Morrison-Lab/qmt)) -- Quarto manuscript template

2. Awkward line wrap and length in markdown link syntax

Location: CLAUDE.md:L1546-L1548

Issue:
The cross-reference link to the self-verify section wraps mid-clause across three lines, stranding a single word (merge) at the start of L1548 right before the opening parenthesis of the anchor target ](#a-pr-.... Consequently, L1548 reaches 93 characters:

Fall back to the manual/offline path in [A PR fixing claude-code-review.yml (or
claude.yml) itself can't self-verify before
merge](#a-pr-fixing-claude-code-reviewyml-or-claudeyml-itself-cant-self-verify-before-merge),

Recommendation:
Keep the full link anchor and text intact on a semantic clause boundary:

Fall back to the manual/offline path in
[A PR fixing claude-code-review.yml (or claude.yml) itself can't self-verify before merge](#a-pr-fixing-claude-code-reviewyml-or-claudeyml-itself-cant-self-verify-before-merge),
or give the action a `github_token` override that skips the OIDC exchange.

3. Semantic line break formatting in prose

Location: CLAUDE.md:L1502-L1549

Issue:
Paragraphs in the newly added section break continuously mid-clause across 75–81 character bounds (e.g., L1502–L1505, L1521–L1532, L1536–L1545).

Recommendation:
Per Item 7 of the review guidelines (Semantic Line Breaks), break lines at natural sentence or clause boundaries (~60–80 chars) so future diffs remain cleanly isolated to single changed clauses.

Comment thread CLAUDE.md
Comment thread CLAUDE.md Outdated
Comment thread CLAUDE.md
@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

Address #408 round-3 antigravity finding 2 (link text wrapped mid-anchor,
stranding 'merge'); keep the full link intact on one line (URL-inflation
exception).
@d-morrison

Copy link
Copy Markdown
Collaborator Author

ARD summary (round 3 — antigravity nits)

Primary claude-review returned Ready for merge on the prior head (all substantive findings resolved, independently re-verified). Antigravity's 3 remaining items:

# Finding Disposition
1 Owner namespace 'inconsistency' (rpt vs qwt/qbt/qmt) Rebut — verified: qwt/qbt/qmt live at d-morrison (Morrison-Lab/* all 404); only rpt moved. Making them 'consistent' would create dead links.
2 Cross-ref link wraps mid-anchor Address (27c6ef1) — link now on its own line.
3 Semantic line breaks Decline — Guideline 7 suggestion; lines already at clause boundaries in-target, CI passes, primary reviewer didn't flag it.

Substantively clean (claude Ready-for-merge; only style nits remain, both dispositioned).

@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

🤖 Antigravity Agent Report (Code-Review)

Code Review Summary

PR #408: docs: require testing against template repos before declaring ready to merge

This pull request adds an important standing requirement to CLAUDE.md requiring changes touching GitHub Actions or reusable workflows in gha to be tested against one of the lab's template repositories (Morrison-Lab/rpt, d-morrison/qwt, d-morrison/qbt, d-morrison/qmt) before declaring the PR ready to merge.

Overall, this is a well-crafted, thorough, and highly valuable addition to repo guidance. It documents critical edge cases—such as nested @v2 composite action resolution and OIDC validation constraints on review workflows—that prevent false-positive green test passes during verification.

Below are two minor actionable findings to refine technical accuracy and formatting.


Detailed Findings & Recommendations

1. Precision regarding composite action directory locations

Location: CLAUDE.md:L1521-L1533

Context:

Repointing the template's top-level `uses:` exercises a change to a reusable
workflow's own YAML, but not a change to a **composite action**
(`.github/actions/<x>/`, where most of this repo's capabilities live).
A reusable workflow pins its internal composite calls to a literal `@v2`
(e.g. `claude-code-review.yml` has ~10 such `uses: .../actions/<x>@v2` sites),
and those resolve at job-preparation time from the released tag regardless of
the ref the parent workflow file was fetched from (see [Re-running *failed jobs*
cannot verify a tag slide](#re-running-failed-jobs-cannot-verify-a-tag-slide)).

Finding:
The parenthetical states (.github/actions//, where most of this repo's capabilities live). Per the Layout section of CLAUDE.md and the repository root structure:

  • Public, consumer-facing capability composite actions live at the repository root (<capability>/action.yml, e.g., check-links/action.yml, test-coverage/action.yml, preview/action.yml). Reusable workflows call them via uses: Morrison-Lab/gha/<capability>@v2.
  • Internal helper composite actions live under .github/actions/<x>/action.yml (e.g., run-claude-review-attempt, detect-review-request). Reusable workflows call them via uses: Morrison-Lab/gha/.github/actions/<x>@v2.

Because reusable workflows pin both root capability composites (.../gha/<capability>@v2) and internal helper composites (.../gha/.github/actions/<x>@v2), changing either type of composite action will pass vacuously against the released tag unless the nested @v2 references in the reusable workflow are also repointed to the PR branch.

Suggested Revision:

-Repointing the template's top-level `uses:` exercises a change to a reusable
-workflow's own YAML, but not a change to a **composite action**
-(`.github/actions/<x>/`, where most of this repo's capabilities live).
-A reusable workflow pins its internal composite calls to a literal `@v2`
-(e.g. `claude-code-review.yml` has ~10 such `uses: .../actions/<x>@v2` sites),
+Repointing the template's top-level `uses:` exercises a change to a reusable
+workflow's own YAML, but not a change to a **composite action**
+(either root capability actions like `check-links/` or internal helpers under
+`.github/actions/`).
+A reusable workflow pins its internal composite calls to a literal `@v2`
+(e.g. `claude-code-review.yml` has ~10 such `uses: .../actions/<x>@v2` sites and
+reusable wrappers call root composites like `uses: .../check-links@v2`),
 and those resolve at job-preparation time from the released tag regardless of
 the ref the parent workflow file was fetched from (see [Re-running *failed jobs*
 cannot verify a tag slide](#re-running-failed-jobs-cannot-verify-a-tag-slide)).

2. Semantic line length suggestion

Location: CLAUDE.md:L1544

Finding:
Line 1544 ((Confirmed empirically 2026-08-05 via a throwaway dispatched review; the failure) is 81 characters long. Adjusting the line break keeps lines strictly within the target range (60–80 characters) per the lab's semantic line breaks convention.

Suggested Revision:

-(Confirmed empirically 2026-08-05 via a throwaway dispatched review; the failure
-surfaces as a fast `no execution output`, not a literal `401`.)
+(Confirmed empirically 2026-08-05 via a throwaway dispatched review;
+the failure surfaces as a fast `no execution output`, not a literal `401`.)

Verification Summary

  • Markdown Formatting: Links, headers, and bullet lists conform to standard Markdown and markdownlint standards.
  • Heading Anchor Verification: Both relative heading anchors (#re-running-failed-jobs-cannot-verify-a-tag-slide and #a-pr-fixing-claude-code-reviewyml-or-claudeyml-itself-cant-self-verify-before-merge) match GFM slug generation logic.
  • Accuracy & Empiricism: Empirical claims (including OIDC validation behavior) are well-defended and dated.

@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

Claude finished reviewView run


No cleanup needed — the earlier redirect and fetch attempts were both blocked before creating anything. I have everything needed to finalize the review.

Review: #408

Summary: Pure documentation change (1 file, CLAUDE.md, +48 lines) adding a new standing rule, "Test changes against a template repo before declaring ready to merge," requiring PRs that touch GitHub Actions/composites in this repo to be validated against a lab template repo (rpt, qwt, qbt, qmt) before being called merge-ready, plus caveats about composite-action @v2 resolution and an OIDC-validation exception for the review workflows themselves.

This is a confirming review. The most recent full review round already reached Ready for merge (2026-08-05T23:56:19Z, run 31057673981), after all findings from two earlier rounds were addressed:

  1. Stale/inconsistent repo-owner links — fixed.
  2. Undefended _selftest.yml-insufficiency claim — fixed with reasoning.
  3. No stated test mechanism / contradiction with existing self-verify guidance — fixed with an explicit mechanism and cross-reference.
  4. Composite-action @v2 resolution gap — fixed with an explicit caveat and grep-verified "~10 sites" figure.
  5. Exception's stated reason didn't follow from the cited section — fixed by replacing it with a concrete, empirically-confirmed OIDC/workflow-validation mechanism.

Since that verdict, the only change is commit 27c6ef1 (current head), which — per the author's round-3 ARD summary — only moves a cross-reference link onto its own line to fix a mid-anchor wrap; it declined the remaining semantic-line-break nit as a non-blocking style suggestion, correctly per this file's own Code review guidelines item 7 ("Raise violations as a suggestion, not a blocking requirement, and don't re-raise it if the author declines").

Independent re-verification performed this round (not just trusting prior rounds or the commit message):

  • All four template-repo links resolve exactly as written: Morrison-Lab/rpt (canonical, 200; d-morrison/rpt redirects to it), d-morrison/qwt (200 direct, Morrison-Lab/qwt 404s), d-morrison/qbt (200 direct, Morrison-Lab/qbt 404s), d-morrison/qmt (200 direct, Morrison-Lab/qmt 404s) — confirming the author's rebuttal that "fixing" the apparent owner inconsistency would create dead links was correct.
  • Grepped .github/workflows/claude-code-review.yml: exactly 10 uses: Morrison-Lab/gha/.github/actions/...@v2 lines, matching the new text's "~10 such sites" claim precisely.
  • Both new cross-reference anchors (#re-running-failed-jobs-cannot-verify-a-tag-slide, #a-pr-fixing-claude-code-reviewyml-or-claudeyml-itself-cant-self-verify-before-merge) resolve to real headings at CLAUDE.md:1281 and CLAUDE.md:1241 respectively, both of which appear before the new section (no forward-reference violation), and I hand-verified both anchors against GitHub's heading-slug algorithm.
  • The OIDC/workflow-validation claim underpinning the new exception is accurate per anthropics/claude-code-action's own issue tracker and FAQ (issue #443: "the workflow file must exist and have identical content to the version on the repository's default branch"; the github_token override is a real, documented bypass).
  • The empirical citations check out: throwaway test PR #420 exists, closed, titled "[TEST — do not merge] fix(claude-code-review): disable self-review skip on mention or dispatch triggers #417 empirical 401 check"; deferred issue #421 exists and is open, tracking the separate stale-changelog-fragment issue the author declined to conflate with this fix.

No new findings. No AI-authorship tells, no unresolved ambiguity, no unsupported claims found in the current diff.

Verdict

Ready for merge — the prior round's Ready-for-merge verdict (comment) still stands; the one change since then is a cosmetic link-wrap fix, and my independent re-verification of every factual/technical claim in the diff (repo-owner redirects, composite-ref count, anchor-link resolution, the OIDC-validation mechanism, and both empirical PR/issue citations) found nothing inaccurate or unaddressed.

@github-actions

github-actions Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

💰 Cost: $1.6182 (review) — run

@d-morrison

Copy link
Copy Markdown
Collaborator Author

✅ Driven to clean via ARDIA: Ready for merge at 27c6ef1, all checks green, 0 open threads (3 review rounds; substantive composite-test + review-workflow-obstacle findings addressed, owner-consistency + line-break nits rebutted/declined with verification). Unclaiming — ready for your merge.

@d-morrison
d-morrison merged commit 783766e into main Aug 6, 2026
38 checks passed
@d-morrison
d-morrison deleted the docs/test-against-template-repos-rule branch August 6, 2026 00:52
d-morrison added a commit that referenced this pull request Aug 6, 2026
…gment

changelog.d/retarget-doc-urls-after-org-move.fixed.md claimed rpt was among
the repositories that 'did not move', but d-morrison/rpt now 301-redirects to
Morrison-Lab/rpt -- and that stale claim misled an automated review on #408
into flagging a correct Morrison-Lab/rpt link as wrong.

Drop rpt from the 'did not move' list (leaving qwt, rme) and note that it has
since moved, mirroring the fragment's existing 'that stopped holding once
ai-config renamed the marketplace' pattern.

The 'Ported from d-morrison/rpt' provenance notes elsewhere (CLAUDE.md, the
website reference page, code comments, the add-altdoc changelog fragment) are
left as-is: they are accurate historical statements (the code WAS ported from
d-morrison/rpt), the redirect keeps them navigable, and this matches the
fragment's own 'historical entries keep the name the repository had when they
were written' convention.

Closes #421

Co-Authored-By: Claude Opus 4.8 <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.

1 participant