Skip to content

🔍 Upkeep Report #19

Description

@github-actions

🔍 Upkeep Report

Generated 2026-07-06T22:19:33.863Z

The repository is in good overall health: three of six reviewers (spec_flow, duplicate_orphan, visual_icon) found nothing, and the surfaced findings are drift-and-convention issues rather than functional defects. The dominant signal is that the most recent release (PR #22, 'bump 2.1.1' with Marketplace-action support) was applied to canonical artifacts but not carried into the mirror locations CLAUDE.md requires to stay in lockstep. Top priority is closing that propagation gap: (1) restore the plugin-version lockstep by bumping skills/upkeep-audit/.claude-plugin/plugin.json from 2.0.1 to 2.1.1 to match .claude-plugin/marketplace.json (high-confidence, high-severity, single-line fix), and (2) port the English README's new 'Or as a Marketplace action' subsection into all four locale READMEs (ja, ko, zh-CN, zh-TW) in one coordinated change, keeping the wei18/upkeep@v2 YAML byte-identical. A distant third is the low-severity, currently CI-masked JSON-parse convention divergence in src/find-issue.ts, worth reusing readJsonOrNull() but not urgent.

Summary

Severity Count
🔴 High 1
🟠 Medium 4
🟡 Low 1
Total 6

Themes

HIGH — The recent 2.1.1 Marketplace-action release was only partially propagated across the locations CLAUDE.md requires to move in lockstep

Five of the six findings trace back to a single systemic root cause: the last release cycle (commit a4e9a7d, PR #22 — 'shorten description under Marketplace 125-char limit; bump 2.1.1') introduced Marketplace-action support and a version bump into the English base and the marketplace manifest, but failed to carry that same change into its mandated mirror locations. Two distinct CLAUDE.md invariants were violated by the same omission: (1) the 5-locale doc-sync rule — README.md gained the '### Or as a Marketplace action' subsection (heading + prose + uses: wei18/upkeep@v2 YAML + requirements note), yet all four locale mirrors (docs/ja, docs/ko, docs/zh-CN, docs/zh-TW) still jump straight from their CI section to their Reviewers section with the block absent; and (2) the plugin-version lockstep rule — .claude-plugin/marketplace.json advanced to 2.1.1 while skills/upkeep-audit/.claude-plugin/plugin.json was left at 2.0.1, exactly one bump behind. In every case the English/canonical artifact moved forward and the mirror did not, so these are not independent defects but the residue of one incomplete propagation.
Files: README.md, docs/ja/README.md, docs/ko/README.md, docs/zh-CN/README.md, docs/zh-TW/README.md, .claude-plugin/marketplace.json, skills/upkeep-audit/.claude-plugin/plugin.json

HIGH — Localized READMEs are missing the new 'Or as a Marketplace action' subsection (5-locale structure drift)

A tighter sub-theme of the incomplete release: the four docs_staleness findings are mechanically distinct files but a single logical gap. Each locale README (ja, ko, zh-CN, zh-TW) omits the identical '### Or as a Marketplace action' block that README.md carries between its CI-automation and Reviewers sections, and in each the grep for 'Marketplace'/'wei18/upkeep@v2' matches only the unrelated plugin-install line. Because CLAUDE.md mandates byte-identical code blocks and the same section structure across all five locales, the remediation is one coordinated change (port the section, keep the YAML untranslated) landed in all four files together — not four independent edits. All four are ssot_direction stale_a (the locales lag the English base), so the base is treated as source of truth here.
Files: README.md, docs/ja/README.md, docs/ko/README.md, docs/zh-CN/README.md, docs/zh-TW/README.md

LOW — find-issue.ts parses JSON without the repo's 'degradation over crashing' guard

A standalone, lower-stakes convention divergence unrelated to the release above. src/find-issue.ts does a bare JSON.parse(readFileSync(...)) with no try/catch, whereas the sibling helper src/finalize.ts (readJsonOrNull) and the CLAUDE.md 'degradation over crashing' convention prescribe wrapping parses and returning a null/empty fallback. The finding is low severity and low confidence because CI currently masks it — .github/actions/report/action.yml writes '[]' on gh failure, so the input is always valid JSON — but the parser still diverges from the documented pattern and would throw on a malformed local input. Grouped alone as it shares no root cause with the release-propagation theme.
Files: src/find-issue.ts, src/finalize.ts

Findings

Severity Conf File Category Reviewers Problem
high high skills/upkeep-audit/.claude-plugin/plugin.json convention convention The plugin version is out of lockstep between the two files that CLAUDE.md requires to be bumped together. skills/upkeep-audit/.claude-plugin/plugin.json declares version "2.0.1" while .claude-plugin/marketplace.json declares plugins[].version "2.1.1".
medium high docs/ja/README.md i18n_sync docs_staleness The Japanese README is missing the entire "Or as a Marketplace action" subsection that exists in the English base README. Its headings jump straight from "CI で自動化" to "レビュアー", so the whole wei18/upkeep@v2 step-action usage block (heading + prose + YAML example + requirements note) is absent.
medium high docs/ko/README.md i18n_sync docs_staleness The Korean README is missing the entire "Or as a Marketplace action" subsection present in the English base README; its headings go directly from "CI에서 자동화" to "리뷰어", omitting the wei18/upkeep@v2 step-action usage block.
medium high docs/zh-CN/README.md i18n_sync docs_staleness The Simplified-Chinese README is missing the entire "Or as a Marketplace action" subsection present in the English base README; headings go directly from "在 CI 中自动化" to "审查器", omitting the wei18/upkeep@v2 step-action usage block.
medium high docs/zh-TW/README.md i18n_sync docs_staleness The Traditional-Chinese README is missing the entire "Or as a Marketplace action" subsection present in the English base README; headings go directly from "在 CI 自動化" to "審查員", omitting the wei18/upkeep@v2 step-action usage block.
low low src/find-issue.ts convention code_hygiene find-issue.ts parses JSON with a bare JSON.parse(readFileSync(...)) and no error handling, diverging from the repo's stated 'degradation over crashing' parser convention.

Full interactive HTML report: open this run → download the report-html artifact (expires 2026-10-04, ~90d).

Metadata

Metadata

Assignees

No one assigned

    Labels

    auditrepo audit findings

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions