Skip to content

chore: remove docs/topics - #650

Merged
kyle-sexton merged 1 commit into
mainfrom
chore/5575-remove-docs-topics
Oct 3, 2026
Merged

kyle-sexton merged 1 commit into
mainfrom
chore/5575-remove-docs-topics

Conversation

@kyle-sexton

Copy link
Copy Markdown
Contributor

Refs: melodic-software/claude-code-plugins#5575

Summary

Removes the docs/topics tree. Durable plans and specs now live in the pull request body and the linked issue (owner decision on melodic-software/claude-code-plugins#5575, option A).

Fix

git rm -r docs/topics; drop the README pointer to docs/topics/local-lane-guards.md.

Verification

  • git ls-tree -r HEAD docs/topics is empty and git grep -nIE 'docs/topics|topic-docs|contract-slice' finds nothing that this change owns (exceptions in Related).
  • Repo checks run locally: see the commit; the CI lanes run on ready.

Related

  • .github/actionlint.yaml is a standards-managed file; its comment still names a deleted ci-workflows plan path until the standards PR for this issue syncs down. Not edited here so the managed-files guard stays green.
  • Draft: opened to be flipped ready by the owner after review.

Durable plans and specs live in the pull request body and the linked
issue, so the docs/topics tree and the references that required it go.

Refs: melodic-software/claude-code-plugins#5575

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@kyle-sexton
kyle-sexton marked this pull request as ready for review October 3, 2026 16:49
@github-actions

github-actions Bot commented Oct 3, 2026

Copy link
Copy Markdown

claude-security-review has reviewed this pull request through f0b5345; a later push is reviewed from there.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 3, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-03T16:51:32.740550Z f0b5345 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@claude

claude Bot commented Oct 3, 2026 •

Copy link
Copy Markdown

Claude finished @kyle-sexton's task in 2m 9s —— View job


Code review — chore/5575-remove-docs-topics

  • Gather context (PR body, diff, CLAUDE.md)
  • Run skip gate (not trivial — deletion has real review surface)
  • Check for dangling references to the removed docs/topics tree
  • Review README.md edit for correctness
  • Post findings

Scope: README.md (pointer removal) + deletion of docs/topics/** (4 files, 2857 lines).

Finding: two test files still read the deleted docs at runtime

The PR's own verification (git grep -nIE 'docs/topics|topic-docs|contract-slice') didn't catch
these because the paths are built via path.join(...) with the segments as separate string
literals, not the literal substring docs/topics — so the grep pattern walks right past them.

  1. .github/scripts/ci-fanout-consolidation.test.cjs L15-L32
    adrPath points at docs/topics/ci-fanout-consolidation/ADR.md, and fs.readFileSync(adrPath, "utf8") runs at module load, outside any test() callback. With the file deleted, loading this module throws ENOENT, which crashes the whole file before any of its ~10 tests run. Per the test itself (line 399 of the same file / README.md line ~203), this file is picked up by node --test .github/scripts/*.test.cjs in the selector-contract CI lane — a required check — so this PR as-is breaks that lane.

  2. .github/scripts/claude-review-plugin-path.test.cjs L59-L72
    The "V2 architecture doc exists and names both skills" test reads docs/topics/claude-review-lanes/V2-PLUGIN-ARCHITECTURE.md, which this PR deletes. This one read is inside the test() callback, so only that test fails (ENOENT) rather than crashing the file, but it will fail in the same CI lane.

How to show it fails: node --test .github/scripts/ci-fanout-consolidation.test.cjs and node --test .github/scripts/claude-review-plugin-path.test.cjs on this branch — both will error with ENOENT: no such file or directory for the deleted paths.

Fix: delete or rewrite these two tests (and the ADR records #122 COMPLETED... test at the end of ci-fanout-consolidation.test.cjs, which also depends on adr) so they no longer assert on content that this PR removes, consistent with the owner's decision that the durable record now lives in the PR/issue rather than docs/topics.

Fix this →

Other checks

  • README.md edit itself reads correctly — the sentence stands fine without the removed pointer, and no broken markdown link/anchor is left behind.
  • No other dangling references to docs/topics, topic-docs, or contract-slice found; the one remaining hit (.github/actionlint.yaml:17) matches the PR body's documented, intentionally-unedited exception.

@kyle-sexton
kyle-sexton merged commit c11c7ec into main Oct 3, 2026
29 checks passed
@kyle-sexton
kyle-sexton deleted the chore/5575-remove-docs-topics branch October 3, 2026 16:50

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: f0b53451e2

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@@ -1,103 +0,0 @@
# ADR — CI fan-out consolidation (#122)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Remove the ADR-dependent test before deleting the ADR

When the selector-contract job next runs (for example, after any .github/** or .node-version change), .github/scripts/ci-fanout-consolidation.test.cjs still reads this exact path at module initialization, so node --test .github/scripts/*.test.cjs exits with ENOENT and the aggregated ci-status check fails. Update or remove the ADR assertions as part of deleting this document.

Useful? React with 👍 / 👎.

@@ -1,135 +0,0 @@
# Claude review lanes — V2 plugin architecture

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Retire the architecture-doc test before deleting its input

The V2 architecture doc exists and names both skills case in .github/scripts/claude-review-plugin-path.test.cjs still calls readFileSync on this file, so every future run of the selector-contract suite fails with ENOENT. Remove or replace that documentation assertion together with this deletion.

Useful? React with 👍 / 👎.

@github-actions

github-actions Bot commented Oct 3, 2026

Copy link
Copy Markdown

claude-review has reviewed this pull request through f0b5345; a later push is reviewed from there.

kyle-sexton added a commit that referenced this pull request Oct 3, 2026
No related issue: main has been red since c11c7ec (#650); this restores
it.

## Summary

#650 deleted `docs/topics/` while #656 added two AGENTS.md links into
it, and two tests still read files there. `lychee-offline` and
`selector-contract` fail on `main` and on every open PR.

## Fix

- AGENTS.md: the two Code Review Rules lines that linked into
`docs/topics/` now state their rule inline.
- `.github/scripts/ci-fanout-consolidation.test.cjs`: drop the ADR read
and the test that asserted the ADR's text.
- `.github/scripts/claude-review-plugin-path.test.cjs`: drop the test
that asserted the V2 architecture doc's text.

## Verification

- `node --test .github/scripts/*.test.cjs`: 192 pass, 0 fail.
- `git grep docs/topics` finds only the standards-managed
`.github/actionlint.yaml` comment that #650 already noted.

## Related

- Unblocks #659.
- Cause: #650 and #656 merged in parallel.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
kyle-sexton added a commit that referenced this pull request Oct 3, 2026
No related issue: first CI lane of the automation-lanes effort, planned
in a local decision brief.

**Hold: a human merges this.** It adds a lane that holds a secret and
`issues: write`, so it is a lane-power change; the babysit lane must not
merge it.

## Summary

Adds `.github/workflows/claude-intake-triage.yml`, a reusable workflow
that triages a newly opened issue: a read-only Claude run proposes
labels and a comment, and a step with no model validates and applies
them. README gains its entry.

## Fix

- Claude runs with `--permission-mode dontAsk`, tools
`Read,Grep,Glob,Bash`, Bash approved only for `gh issue view/list`, `gh
search issues`, `gh label list`, and `--json-schema` output whose label
enum is the caller's `allowed-labels` intersected with the repository's
live labels.
- `allowed_non_write_users: "*"` with the job `GITHUB_TOKEN`, so outside
reporters are triaged (the action then scrubs subprocess secrets and
keeps `.git/config` token-free).
- The apply step keeps only allowlisted, existing labels (`addLabels`
would otherwise create unknown ones), breaks @mentions, withholds a
comment matching a credential pattern, and applies `escalation-label`
(default `needs-human`) on any permission denial, a max-turns stop, or
`needs_human: true`.
- The CLI is installed at run time and passed through
`path_to_claude_code_executable` (`cli-version` input, else the
`CLAUDE_LANE_CLI_VERSION` variable, else `latest`; `bundled` keeps the
action's own). The step summary records the installed version and the
npm-published latest.
- Job `claude-intake-triage-status` goes red on a failed run; it is
advisory and must never be required.

## Verification

- `actionlint` and `zizmor --offline`: no findings.
- `node --test .github/scripts/*.test.cjs`: 183 pass, 2 fail; both
failures (`ci-fanout-consolidation`, `V2 architecture doc exists`) read
files under `docs/topics/`, which #650 removed, and fail on `main` too.
The outcome-wiring test now covers this lane.
- Local probes on Claude Code CLI 2.1.288: `dontAsk` denied Read of
`/etc/hostname` and `/proc/self/status` and recorded both in
`permission_denials` while reading a file in the working directory;
`--tools` restricted to `Read,Grep,Glob,Bash` plus `--json-schema` with
a label enum returned valid `structured_output`.
- Not yet run end to end: that needs the standards runner-policy
contract for the merged SHA and a synced caller; the pilot on
claude-code-plugins includes a prompt-injection canary issue.

## Related

- Pattern mirrored: `claude-review.yml` (outcome composite, status job).
- Coexists with `issue-triage-label.yml` (deterministic `needs-triage`
floor).
- Next: standards `runner-policy` contract and caller component, then
the claude-code-plugins pilot.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 5.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.

1 participant