Uh oh!
There was an error while loading. Please reload this page.
fix(playwright-testing-agent): recover audit report and CI fix lost in rebase; extend parity invariant to all eight types - #1422
Conversation
The hasIssueReference regex only matched bare #123 same-repo references. PR bodies that use the standard GitHub cross-repo format (owner/repo#123) or full GitHub URLs were incorrectly flagged as missing linked issues. Update the regex to optionally allow an owner/repo prefix before #number, and add a secondary URL match for https://github.com/.../issues/NNN and .../pull/NNN patterns. Add corresponding test cases. Fixes the validate-pr-template failure on PR #1392 whose body opens with: Closes#1393
…l taxonomy invariant Recovery branch off develop after a rebase on feat/playwright-testing-agent-updates went wrong. Verification first, so the scope here is deliberately small. What was NOT lost. The claim that commits were "absorbed into develop" is not a git mechanism — the branch was merged into develop, making ab9b51e, 190d2a7, 3dbf776, 4f55091, dd43fc4 and aea71a0 ancestors of it. The PR then showed almost no diff because develop...branch is empty for work already in the base. A file-by-file diff of aea71a0 against develop across all 11 differing files confirms nothing was lost: SKILL.md's persistence step was made portability-aware (fixing a real inconsistency), core-prompt's a11y Explore bullet was strengthened, README's five 404ing workflow badges were removed, and the rest is version/footer cosmetics. Restores the one genuine casualty: - .github/reports/audits/changelog-keepachangelog-audit-2026-07-29.md was gutted from 117 lines to 22 — body destroyed, only frontmatter and a footer left. Restored from aea71a0. The local worktree copy was damaged too, so it was restored from the commit rather than the working tree. Strengthens the taxonomy invariant from five types to all eight: - The three files that restate the requirement types phrased the tail three different ways (slash vs word forms, and an inconsistent trailing "or"), which is why the declaration covered only the five-type common prefix — that prefix was the maximal common substring. - Unified SKILL.md and AGENT.md onto core-prompt's wording. The word form was already the house standard (3 of 4 occurrences) and the slash form appeared in exactly one line, so this creates no internal inconsistency. - consistency.json now declares all eight types. Verified negatively in both ranges: breaking `performance rule` in AGENT.md and breaking `integration rule` in SKILL.md each fail the check and name the offending file. Note agent/instructions/AGENTS.md also carries a type list but is deliberately untouched — it is the preserved pre-migration export snapshot, not live source. Deliberately not taken from the old remote branch (eb4c018): it is behind develop (applying it would be 71 insertions against 3842 deletions) and it removes the test "a symlink pointing outside is rejected after resolution", which exists to prove the path-traversal oracle stays closed against symlinks. That test is verified present here. Also not taken: local 14ae0df, which left consistency.json as invalid JSON. Verified: parity hook passes; symlink test present; hooks 44/44; template-helpers 48/48; validate:agent-hooks passes; audit report 117 lines; markdownlint clean across 227 files. Diff against develop contains only these changes and the cherry-picked CI fix, with no deletions of newer work. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…ler invariant Adds the CHANGELOG.md entries this branch requires. The changelog-validation workflow needs an actual CHANGELOG.md commit — a Changelog section in the PR body does not satisfy it, which is what failed on #1392. All three entries are written to the repo's own changelog-rules limits (title <= 60 chars, description <= 150, <= 2 sentences) rather than the file's prevailing verbose style. Detail belongs in the PR body. Warnings drop 50 -> 42; the 2 errors are pre-existing and unrelated. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Missing required section(s): Changelog, Global DoD checklist This is a post-merge backstop for admin bypasses. Please review branch protection for develop. |
The issue claimed #1421, so the three entries cited the wrong number. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
⏱️ Aging and SLA annotation
Maintained by project-meta-sync workflow. |
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository YAML (base), Organization UI (inherited) Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
📜 Recent review details⏰ Context from checks skipped due to timeout. (5)
|
| Layer / File(s) | Summary |
|---|---|
Audit findings and verification.github/reports/audits/... | The report records eleven divergences, applied structural and reference fixes, deferred release-history decisions, remaining validator errors, and validation commands. |
Eight-type taxonomy alignmentagents/playwright-testing-agent/AGENT.md, agents/playwright-testing-agent/consistency.json, agents/playwright-testing-agent/skills/..., CHANGELOG.md | The requirement taxonomy now lists eight types and uses consistent “or” wording across the rule, agent guidance, and changelog. |
Cross-repository reference matchingscripts/validation/template-helpers.cjs, scripts/validation/__tests__/template-helpers.test.js, CHANGELOG.md | hasIssueReference now matches cross-repository shorthand and full GitHub issue or pull-request URLs. Tests cover the new formats. |
Estimated code review effort: 3 (Moderate) | ~20 minutes
Possibly related PRs
- lightspeedwp/.github#955: Directly relates to cross-repository and URL-based issue-reference validation.
- lightspeedwp/.github#1204: Relates to
CHANGELOG.mdstructure and compliance changes. - lightspeedwp/.github#1392: Relates to the Playwright Testing Agent taxonomy and validation updates.
Suggested labels:area:ci, area:ai
Suggested reviewers:ashleyshaw
🚥 Pre-merge checks | ✅ 3 | ❌ 2
❌ Failed checks (2 warnings)
| Check name | Status | Explanation | Resolution |
|---|---|---|---|
| Linked Issues check | The main recovery changes are present, but the required parity-drift verification and symlink-test preservation are not demonstrated in the provided changes. | Add or document tests for drift in both taxonomy ranges, and provide evidence that the symlink test remains present and the diff contains no deleted newer work. | |
| Docstring Coverage | Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. | Write docstrings for the functions missing them to satisfy the coverage threshold. |
✅ Passed checks (3 passed)
| Check name | Status | Explanation |
|---|---|---|
| Title check | ✅ Passed | The title clearly summarises recovery of the audit report and CI fix, plus expansion of the parity invariant. |
| Description check | ✅ Passed | The description provides the summary, linked issue, validation plan, checklist, and relevant context for the changes. |
| Out of Scope Changes check | ✅ Passed | The changed files support the linked objectives for audit recovery, issue-reference validation, taxonomy parity, documentation, changelog updates, and related tests. |
✨ Finishing Touches 💡 1
🛠️ Fix failing CI checks 💡
- Create stacked PR
- Commit on current branch
🧪 Generate unit tests (beta)
- Create PR with unit tests
- Commit unit tests in branch
feat/playwright-testing-agent-update-fix
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.
Comment @coderabbitai help to get the list of available commands.
There was a problem hiding this comment.
Pull request overview
This PR restores an accidentally truncated audit report, fixes PR-template validation to recognise cross-repo issue references, and strengthens the Playwright Testing Agent’s content-parity invariant by extending the requirement taxonomy from five types to all eight.
Changes:
- Widened
hasIssueReference()to detectowner/repo#123and full GitHub issue/PR URLs, with Jest coverage. - Extended the multi-provider consistency taxonomy phrase to cover all eight requirement types and unified the wording across the three restatement locations.
- Restored the full Keep a Changelog conformance audit content and recorded the work in
CHANGELOG.md.
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| scripts/validation/template-helpers.cjs | Update issue-reference detection logic to accept cross-repo references and URLs. |
| scripts/validation/tests/template-helpers.test.js | Add tests covering cross-repo references and full GitHub URLs. |
| CHANGELOG.md | Document the restored audit, the validator fix, and the taxonomy/parity extension. |
| agents/playwright-testing-agent/skills/agent-attached/hermes/test-pack-builder/SKILL.md | Align taxonomy wording to the unified eight-type list. |
| agents/playwright-testing-agent/consistency.json | Extend the shared phrase to include all eight requirement types for parity enforcement. |
| agents/playwright-testing-agent/AGENT.md | Align taxonomy wording to match the shared phrase and core prompt. |
| .github/reports/audits/changelog-keepachangelog-audit-2026-07-29.md | Restore the audit report body content that was lost during rebase/merge. |
Uh oh!
There was an error while loading. Please reload this page.
🔍 Reviewer Summary for PR #1422CI Status: ✅ Recommendations
|
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Signed-off-by: Zared Rogers <zared@lightspeedwp.agency>
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.github/reports/audits/changelog-keepachangelog-audit-2026-07-29.md:
- Around line 53-57: Update the preservation invariant in the audit entry to
state that all 462 non-placeholder list items were preserved, while three
placeholder items were intentionally removed. Keep the surrounding item counts
and scripted-pass details consistent, and use clear UK English.
In
`@agents/playwright-testing-agent/skills/agent-attached/hermes/test-pack-builder/SKILL.md`:
- Line 81: Update the list introduction in the classification guidance to
replace “classify it as one of:” with “classify it as one of the following:”,
preserving the existing eight taxonomy categories unchanged.
In `@CHANGELOG.md`:
- Line 31: Add issue links to the three specified Unreleased changelog entries
in CHANGELOG.md: the taxonomy entry at lines 31-31 and both new Fixed entries at
lines 120-123. Preserve their existing PR links and ensure each entry includes
an issue link as required by the changelog conventions.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository YAML (base), Organization UI (inherited)
Review profile: CHILL
Plan: Pro Plus
Run ID: 1888adb6-4769-44e5-8f5e-de662e12f4a7
📒 Files selected for processing (7)
.github/reports/audits/changelog-keepachangelog-audit-2026-07-29.mdCHANGELOG.mdagents/playwright-testing-agent/AGENT.mdagents/playwright-testing-agent/consistency.jsonagents/playwright-testing-agent/skills/agent-attached/hermes/test-pack-builder/SKILL.mdscripts/validation/__tests__/template-helpers.test.jsscripts/validation/template-helpers.cjs
📜 Review details
⏰ Context from checks skipped due to timeout. (2)
- GitHub Check: Mergify Merge Protections
- GitHub Check: Summary
⚠️ CI failures not shown inline (4)
GitHub Actions: reviewer / coderabbit-gate: fix(playwright-testing-agent): recover audit report and CI fix lost in rebase; extend parity invariant to all eight types
Conclusion: failure
##[group]Run actions/github-script@v7
with:
github-***REDACTED_SECRET_ASSIGNMENT***
script: const owner = context.repo.owner;
const repo = context.repo.repo;
const sha = context.payload.pull_request.head.sha;
const maxAttempts = 20;
const delayMs = 15000;
for (let i = 1; i <= maxAttempts; i++) {
const { data } = await github.rest.repos.getCombinedStatusForRef({
owner,
repo,
ref: sha,
});
const coderabbit = (data.statuses || []).find((s) => s.context === "CodeRabbit");
if (coderabbit && coderabbit.state === "success") {
core.info(`CodeRabbit is successful on attempt ${i}.`);
return;
}
if (coderabbit && coderabbit.state === "failure") {
core.setFailed("CodeRabbit failed; reviewer job is blocked until fixed.");
return;
}
core.info(`Waiting for CodeRabbit success (${i}/${maxAttempts})...`);
await new Promise((resolve) => setTimeout(resolve, delayMs));
}
core.setFailed("Timed out waiting for CodeRabbit success; reviewer job blocked.");
debug: false
user-agent: actions/github-script
result-encoding: json
retries: 0
retry-exempt-status-codes: 400,401,403,404,422
##[endgroup]
Waiting for CodeRabbit success (1/20)...
Waiting for CodeRabbit success (2/20)...
Waiting for CodeRabbit success (3/20)...
Waiting for CodeRabbit success (4/20)...
Waiting for CodeRabbit success (5/20)...
Waiting for CodeRabbit success (6/20)...
Waiting for CodeRabbit success (7/20)...
Waiting for CodeRabbit success (8/20)...
Waiting for CodeRabbit success (9/20)...
Waiting for CodeRabbit success (10/20)...
Waiting for CodeRabbit success (11/20)...
Waiting for CodeRabbit success (12/20)...
Waiting for CodeRabbit success (13/20)...
Waiting for CodeRabbit success (14/20)...
Waiting for CodeRabbit success (15/20)...
Waiting for CodeRabbit success (16/20)...
Waiting for CodeRabbit success (17/20)...
Waiting for CodeRabbit success (18/20)...
Waiting for CodeRabbit success (19/20)...
Waiting for CodeRabbit success (20...
GitHub Actions: reviewer / 1_coderabbit-gate.txt: fix(playwright-testing-agent): recover audit report and CI fix lost in rebase; extend parity invariant to all eight types
Conclusion: failure
##[group]Run actions/github-script@v7
with:
github-***REDACTED_SECRET_ASSIGNMENT***
script: const owner = context.repo.owner;
const repo = context.repo.repo;
const sha = context.payload.pull_request.head.sha;
const maxAttempts = 20;
const delayMs = 15000;
for (let i = 1; i <= maxAttempts; i++) {
const { data } = await github.rest.repos.getCombinedStatusForRef({
owner,
repo,
ref: sha,
});
const coderabbit = (data.statuses || []).find((s) => s.context === "CodeRabbit");
if (coderabbit && coderabbit.state === "success") {
core.info(`CodeRabbit is successful on attempt ${i}.`);
return;
}
if (coderabbit && coderabbit.state === "failure") {
core.setFailed("CodeRabbit failed; reviewer job is blocked until fixed.");
return;
}
core.info(`Waiting for CodeRabbit success (${i}/${maxAttempts})...`);
await new Promise((resolve) => setTimeout(resolve, delayMs));
}
core.setFailed("Timed out waiting for CodeRabbit success; reviewer job blocked.");
debug: false
user-agent: actions/github-script
result-encoding: json
retries: 0
retry-exempt-status-codes: 400,401,403,404,422
##[endgroup]
Waiting for CodeRabbit success (1/20)...
Waiting for CodeRabbit success (2/20)...
Waiting for CodeRabbit success (3/20)...
Waiting for CodeRabbit success (4/20)...
Waiting for CodeRabbit success (5/20)...
Waiting for CodeRabbit success (6/20)...
Waiting for CodeRabbit success (7/20)...
Waiting for CodeRabbit success (8/20)...
Waiting for CodeRabbit success (9/20)...
Waiting for CodeRabbit success (10/20)...
Waiting for CodeRabbit success (11/20)...
Waiting for CodeRabbit success (12/20)...
Waiting for CodeRabbit success (13/20)...
Waiting for CodeRabbit success (14/20)...
Waiting for CodeRabbit success (15/20)...
Waiting for CodeRabbit success (16/20)...
Waiting for CodeRabbit success (17/20)...
Waiting for CodeRabbit success (18/20)...
Waiting for CodeRabbit success (19/20)...
Waiting for CodeRabbit success (20...
GitHub Actions: Validate PR Template / 0_validate-pr-template.txt: fix(playwright-testing-agent): recover audit report and CI fix lost in rebase; extend parity invariant to all eight types
Conclusion: failure
##[group]Run actions/github-script@v7
with:
script: const { validatePullRequestBody } = require('./scripts/validation/template-helpers.cjs');
const marker = '<!-- template-enforcement -->';
const pr = context.payload.pull_request;
const author = pr.user?.login || '';
const isDependabot = author === 'dependabot[bot]' || author === 'app/dependabot';
const isImgbot = author === 'imgbot[bot]' || author === 'app/imgbot';
if (isDependabot || isImgbot) {
core.info(`Skipping PR template validation for bot author ${author}.`);
return;
}
const validation = validatePullRequestBody(pr.body || '', pr.labels || [], pr.head?.ref || '');
const comments = await github.paginate(github.rest.issues.listComments, {
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr.number,
per_page: 100
});
const previous = comments.find((comment) =>
comment.user?.type === 'Bot' && comment.body?.includes(marker)
);
if (validation.missing.length === 0) {
if (previous) {
await github.rest.issues.updateComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: previous.id,
body: `${marker}\n✅ Template check passed after update. Thanks for fixing the PR description.`
});
}
return;
}
const message = [
marker,
'🚫 This PR description is missing required template content.',
'',
`Missing required section(s): ${validation.missing.join(', ')}`,
'',
'Please update the PR body using one of the repository PR templates:',
'- https://github.com/lightspeedwp/.github/blob/develop/.github/pull_request_template.md',
'- https://github.com/lightspeedwp/.github/tree/develop/.github/PULL_REQUEST_TEMPLATE',
'',
'Empty placeholders, unchecked checklist boxes, and stub issue references do not count.'
].join('\n');
if (previous) {
await github.rest.issues.updateComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: previous.id,
body: message
});
} else {
await github.rest.issues....
GitHub Actions: Validate PR Template / validate-pr-template: fix(playwright-testing-agent): recover audit report and CI fix lost in rebase; extend parity invariant to all eight types
Conclusion: failure
##[group]Run actions/github-script@v7
with:
script: const { validatePullRequestBody } = require('./scripts/validation/template-helpers.cjs');
const marker = '<!-- template-enforcement -->';
const pr = context.payload.pull_request;
const author = pr.user?.login || '';
const isDependabot = author === 'dependabot[bot]' || author === 'app/dependabot';
const isImgbot = author === 'imgbot[bot]' || author === 'app/imgbot';
if (isDependabot || isImgbot) {
core.info(`Skipping PR template validation for bot author ${author}.`);
return;
}
const validation = validatePullRequestBody(pr.body || '', pr.labels || [], pr.head?.ref || '');
const comments = await github.paginate(github.rest.issues.listComments, {
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pr.number,
per_page: 100
});
const previous = comments.find((comment) =>
comment.user?.type === 'Bot' && comment.body?.includes(marker)
);
if (validation.missing.length === 0) {
if (previous) {
await github.rest.issues.updateComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: previous.id,
body: `${marker}\n✅ Template check passed after update. Thanks for fixing the PR description.`
});
}
return;
}
const message = [
marker,
'🚫 This PR description is missing required template content.',
'',
`Missing required section(s): ${validation.missing.join(', ')}`,
'',
'Please update the PR body using one of the repository PR templates:',
'- https://github.com/lightspeedwp/.github/blob/develop/.github/pull_request_template.md',
'- https://github.com/lightspeedwp/.github/tree/develop/.github/PULL_REQUEST_TEMPLATE',
'',
'Empty placeholders, unchecked checklist boxes, and stub issue references do not count.'
].join('\n');
if (previous) {
await github.rest.issues.updateComment({
owner: context.repo.owner,
repo: context.repo.repo,
comment_id: previous.id,
body: message
});
} else {
await github.rest.issues....
🧰 Additional context used
📓 Path-based instructions (12)
**/*
📄 CodeRabbit inference engine (CLAUDE.md)
**/*: Do not useclaude/as a branch prefix. Branches must use{type}/{scope}-{short-title}with lowercase kebab-case and an approved type prefix.
Feature, fix, chore, documentation, and similar branches must targetdevelop; onlyrelease/*andhotfix/*branches may merge tomain.
After a successful squash merge, delete the remote and local branch.
Never reuse a branch name after it has been merged; create a unique replacement name.
Reusable assets must be placed in the appropriate top-level portable folder rather than under.github/.
Do not move existing agents, instructions, or schemas without a migration issue recording the source path, target path, and validation plan.
Do not commitnode_modules/,build/, or other generated artefacts.
Do not add WordPress plugin- or theme-specific code to the organisation.githubcontrol-plane repository.
Do not place reports or task trackers indocs/or the repository root; use the designated reports and project directories.
Do not enqueue editor-only WordPress assets on the front end, or front-end-only assets in the editor.
**/*: Never output secrets, treat production and customer data as sensitive, and follow the OWASP Top 10 for web security.
Before editing, validate the branch withnpm run validate:branch-name -- --branch <name>; use{type}/{scope}-{short-title}, never use aclaude/prefix, and ensure feature/fix/chore branches targetdevelopwhile only release/hotfix branches targetmain.
Prefer minimal, modular solutions; justify heavier tools based on return on investment and maintenance cost.
When requirements are uncertain, propose safe defaults and ask one focused clarifying question.
Use the canonical coding, linting, quality-assurance, documentation-format, automation and community-standards instruction indexes when applying project standards.
Files:
scripts/validation/__tests__/template-helpers.test.jsCHANGELOG.mdagents/playwright-testing-agent/consistency.jsonagents/playwright-testing-agent/skills/agent-attached/hermes/test-pack-builder/SKILL.mdagents/playwright-testing-agent/AGENT.mdscripts/validation/template-helpers.cjs
**/*.{js,ts,jsx,tsx}
📄 CodeRabbit inference engine (CLAUDE.md)
Use ESLint and Prettier for JavaScript and TypeScript code.
Files:
scripts/validation/__tests__/template-helpers.test.js
**/*.{php,js,ts,jsx,tsx}
📄 CodeRabbit inference engine (CLAUDE.md)
Validate all input, escape all output, use nonces where applicable, and never commit secrets.
Files:
scripts/validation/__tests__/template-helpers.test.js
**/*.{js,ts,jsx,tsx,php,html,htm}
📄 CodeRabbit inference engine (CLAUDE.md)
Avoid unnecessary JavaScript, defer or lazy-load where possible, and prefer native blocks.
Files:
scripts/validation/__tests__/template-helpers.test.js
**/*.{js,cjs,mjs}
📄 CodeRabbit inference engine (CLAUDE.md)
Schema references in validation scripts must use paths relative to the script location; scripts under
.github/scripts/validation/should use../../../.schemas/.
Files:
scripts/validation/__tests__/template-helpers.test.jsscripts/validation/template-helpers.cjs
**/*.{css,html,js,jsx,php}
📄 CodeRabbit inference engine (AGENTS.md)
**/*.{css,html,js,jsx,php}: Follow WordPress Coding Standards for CSS, HTML, JavaScript and PHP, including inline documentation standards.
Identify and address accessibility and performance issues during code reviews.
Files:
scripts/validation/__tests__/template-helpers.test.js
**/*.{js,ts}
⚙️ CodeRabbit configuration file
**/*.{js,ts}: Review JavaScript/TypeScript:
- Ensure code is linted and follows project style guides.
- Check for dead code, unused variables, and clear function naming.
- Validate accessibility and performance optimisations.
- Ensure tests are isolated and do not depend on external state.
- Check for descriptive test names and clear test structure.
Files:
scripts/validation/__tests__/template-helpers.test.js
**/*.{md,mdx}
📄 CodeRabbit inference engine (CLAUDE.md)
Use UK English throughout documentation and Markdown content, including spellings such as
optimise,organisation,colour, andbehaviour.Use UK English and optimise written content for clarity, scalability, maintainability and profitable outcomes.
Files:
CHANGELOG.mdagents/playwright-testing-agent/skills/agent-attached/hermes/test-pack-builder/SKILL.mdagents/playwright-testing-agent/AGENT.md
**/*.{md,mdx,yml,yaml,json}
📄 CodeRabbit inference engine (CLAUDE.md)
Do not use a
referencesfrontmatter field; use inline links or footer sections instead.
Files:
CHANGELOG.mdagents/playwright-testing-agent/consistency.jsonagents/playwright-testing-agent/skills/agent-attached/hermes/test-pack-builder/SKILL.mdagents/playwright-testing-agent/AGENT.md
CHANGELOG.md
⚙️ CodeRabbit configuration file
CHANGELOG.md: Review CHANGELOG.md:
- Confirm entries follow Keep a Changelog 1.1.0 format.
- Each entry under [Unreleased] must include a PR link and issue link.
- Verify entries use the correct section headings (Added, Changed, Fixed, Deprecated, Removed, Security, Documentation, Performance).
- Check UK English spelling throughout.
Files:
CHANGELOG.md
**/*.json
📄 CodeRabbit inference engine (CLAUDE.md)
Portable JSON schemas must be stored under the root
.schemas/directory.Validate JSON files against the applicable schema when a schema is provided; the frontmatter schema is referenced at
schema/frontmatter.schema.json.
Files:
agents/playwright-testing-agent/consistency.json
agents/**/*
📄 CodeRabbit inference engine (AGENTS.md)
Portable, multi-file agents belong under root
agents/; each agent should use an{name}-agent/directory withAGENT.mdand provider-specific subdirectories such asclaude/,copilot/andopenai/.
Files:
agents/playwright-testing-agent/consistency.jsonagents/playwright-testing-agent/skills/agent-attached/hermes/test-pack-builder/SKILL.mdagents/playwright-testing-agent/AGENT.md
🪛 GitHub Actions: Meta Agent / 2_front-matter-validate.txt
CHANGELOG.md
[error] 1-1: Frontmatter freshness validation failed: body changed but last_updated was not updated (2026-07-30).
agents/playwright-testing-agent/AGENT.md
[error] 1-1: Frontmatter freshness validation failed: body changed but last_updated was not updated (2026-07-30).
[error] 1-1: Frontmatter freshness validation failed: body changed but version was not updated (2.1.0).
🪛 GitHub Actions: Meta Agent / front-matter-validate
CHANGELOG.md
[error] 1-1: Frontmatter freshness validation failed: body changed but last_updated was not updated (2026-07-30). Command: npm run validate:frontmatter:changed.
agents/playwright-testing-agent/AGENT.md
[error] 1-1: Frontmatter freshness validation failed: body changed but last_updated was not updated (2026-07-30). Command: npm run validate:frontmatter:changed.
[error] 1-1: Frontmatter freshness validation failed: body changed but version was not updated (2.1.0). Command: npm run validate:frontmatter:changed.
.github/reports/audits/changelog-keepachangelog-audit-2026-07-29.md
[error] 1-1: Frontmatter freshness validation failed: body changed but last_updated was not updated (2026-07-29). Command: npm run validate:frontmatter:changed.
🪛 LanguageTool
agents/playwright-testing-agent/skills/agent-attached/hermes/test-pack-builder/SKILL.md
[typographical] ~81-~81: Do not use a colon (:) before a series that is introduced by a preposition (‘of’). Remove the colon or add a noun or a noun phrase after the preposition.
Context: ...uirement statement - classify it as one of: functional flow, content rule, visual r...
(RP_COLON)
.github/reports/audits/changelog-keepachangelog-audit-2026-07-29.md
[style] ~41-~41: To make your writing clearer, consider a shorter, more direct phrase.
Context: ...extract-pr-entries.cjs` | — | Fixed as a consequence of D6 | | D8 | PR references carried no ti...
(AS_A_CONSEQUENCE_OF)
[typographical] ~44-~44: Conjunctions like ‘and’ should not follow semicolons. Consider using a comma, or removing the conjunction.
Context: ... were never tagged: 0.6.0, 0.1.0; and two dates disagree with their tags | "The r...
(CONJUNCTION_AFTER_SEMICOLON)
[uncategorized] ~77-~77: Use a comma before ‘so’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...mmits. Documented predecessors were used so the ranges match the document's own nar...
(COMMA_COMPOUND_SENTENCE_2)
[grammar] ~100-~100: Probably a preposition is missing after ‘references’.
Context: ... PR at all and that its description and references do not match each other. The single candid...
(ATD_VERBS_TO_COLLOCATION)
[uncategorized] ~106-~106: Possible missing comma found.
Context: ...xt steps 1. Decide D3 — reclassify, or document the extension. 2. Reconcile D9/D10 with...
(AI_HYDRA_LEO_MISSING_COMMA)
🔇 Additional comments (5)
.github/reports/audits/changelog-keepachangelog-audit-2026-07-29.md (1)
19-52: LGTM!Also applies to: 58-117
scripts/validation/template-helpers.cjs (1)
24-27: LGTM!scripts/validation/__tests__/template-helpers.test.js (1)
116-137: LGTM!agents/playwright-testing-agent/consistency.json (1)
6-7: LGTM!agents/playwright-testing-agent/AGENT.md (1)
91-91: LGTM!
Uh oh!
There was an error while loading. Please reload this page.
| - assign a requirement ID | ||
| - write one short requirement statement | ||
| - classify it as one of: functional flow, content rule, visual rule, accessibility rule, performance rule, analytics/conversion rule, integration rule, or error/empty state | ||
| - classify it as one of: functional flow, content rule, visual rule, accessibility rule, performance rule, analytics or conversion rule, integration rule, or error or empty state |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Fix the list introduction.
classify it as one of: uses a colon after the preposition of. Change it to classify it as one of the following:. This keeps the eight-type taxonomy unchanged and clears the reported RP_COLON finding.
Suggested wording
- - classify it as one of: functional flow, content rule, visual rule, accessibility rule, performance rule, analytics or conversion rule, integration rule, or error or empty state+ - classify it as one of the following: functional flow, content rule, visual rule, accessibility rule, performance rule, analytics or conversion rule, integration rule, or error or empty state📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| - classify it as one of: functional flow, content rule, visual rule, accessibility rule, performance rule, analytics or conversion rule, integration rule, or error or empty state | |
| - classify it as one of the following: functional flow, content rule, visual rule, accessibility rule, performance rule, analytics or conversion rule, integration rule, or error or empty state |
🧰 Tools
🪛 LanguageTool
[typographical] ~81-~81: Do not use a colon (:) before a series that is introduced by a preposition (‘of’). Remove the colon or add a noun or a noun phrase after the preposition.
Context: ...uirement statement - classify it as one of: functional flow, content rule, visual r...
(RP_COLON)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In
`@agents/playwright-testing-agent/skills/agent-attached/hermes/test-pack-builder/SKILL.md`
at line 81, Update the list introduction in the classification guidance to
replace “classify it as one of:” with “classify it as one of the following:”,
preserving the existing eight taxonomy categories unchanged.
Source: Linters/SAST tools
| ### Added | ||
| - **Content-parity invariant covers all eight requirement types** — `consistency.json` declares the full taxonomy so any type change breaks the check, which required unifying the list's phrasing across three files. ([PR #1422](https://github.com/lightspeedwp/.github/pull/1422)) |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Add issue links to the new Unreleased entries.
Each affected entry has a PR link but no issue link.
CHANGELOG.md#L31-L31: add an issue link to the taxonomy entry.CHANGELOG.md#L120-L123: add an issue link to both new Fixed entries.
As per path instructions, each entry under [Unreleased] must include a PR link and issue link.
📍 Affects 1 file
CHANGELOG.md#L31-L31(this comment)CHANGELOG.md#L120-L123
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@CHANGELOG.md` at line 31, Add issue links to the three specified Unreleased
changelog entries in CHANGELOG.md: the taxonomy entry at lines 31-31 and both
new Fixed entries at lines 120-123. Preserve their existing PR links and ensure
each entry includes an issue link as required by the changelog conventions.
Source: Path instructions
Signed-off-by: Ash Shaw <ashley@lightspeedwp.agency>
… wording - Add issue link (#1421) to three CHANGELOG.md entries per path instructions - Clarify preservation invariant wording in audit report (all 462 non-placeholder items preserved) - Fix list introduction in SKILL.md (classify it as one of the following) Fixes CodeRabbit review findings from PR #1422. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
🎨 Mermaid Diagram Validation❌ One or more Mermaid diagram checks failed.
|
📄 README Validation✅ All README checks passed.
|
ashleyshaw
commented
Aug 4, 2026
@Mergifyio merge |
❌ Sorry but I didn't understand the command. Please consult the commands documentation 📚. |
Uh oh!
There was an error while loading. Please reload this page.
PR #1422 - Recover Audit Report and CI Fix
Summary
Recovers an audit report destroyed during a rebase and applies CodeRabbit review fixes:
Linked Issues
Closes#1421
Test Plan
Checklist (Global DoD / PR)
Additional Context
This PR recovers work from a failed rebase where PR #1422 was auto-closed due to branch unavailability. All original content has been preserved and all CodeRabbit review findings have been addressed.
🤖 Generated with Claude Code