Skip to content

chore(836-fleet-adoption): prune leaked topic-doc PLAN.md from main - #966

Merged
kyle-sexton merged 1 commit into
mainfrom
chore/836-prune-plan-doc
Jul 22, 2026
Merged

chore(836-fleet-adoption): prune leaked topic-doc PLAN.md from main#966
kyle-sexton merged 1 commit into
mainfrom
chore/836-prune-plan-doc

Conversation

@kyle-sexton

@kyle-sexton kyle-sexton commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Summary

docs/topics/836-fleet-adoption/PLAN.md is a contract-tier topic doc per docs/conventions/topic-docs/README.md: tracked on the task branch only, pruned before merge. PR #945 squash-merged before this prune step ran, so the file leaked onto main. This PR removes it.

Its content is already preserved in PR #945's body (pasted there at PR creation).

Related

No linked issue: this is a mechanical cleanup with no separate tracking issue.

Test plan

  • git rm only — no other changes; no build/test impact.

docs/topics/836-fleet-adoption/PLAN.md is a contract-tier topic doc
(docs/conventions/topic-docs/README.md): tracked on the task branch only,
pruned before merge. The prune step was missed before PR #945 squash-merged,
so it landed on main. Removing it now; its content is already preserved in
PR #945's body.
@claude

claude Bot commented Jul 22, 2026

Copy link
Copy Markdown

Claude finished @kyle-sexton's task in 44s —— View job


PR Review

  • Gather context
  • Review the diff
  • Post findings

Verdict: clean — no issues found.

This PR is exactly what it says: a single git rm of docs/topics/836-fleet-adoption/PLAN.md with no other changes.

Verified:

  • Diff confirms only one file deleted, nothing else touched.
  • git log confirms the file was introduced by 5811b2e (PR feat(observability): hook-observability fleet adoption #945's squash commit) — the leak is real and this is the correct remediation.
  • docs/conventions/topic-docs/README.md line 33 explicitly classifies PLAN.md as a contract-tier doc: "Committed on the task branch only; pruned before merge." This PR is executing that prune retroactively.
  • No build, test, or runtime impact. File has no referencing import, config, or CI step.

Good to merge.

@kyle-sexton
kyle-sexton merged commit 13f5e51 into main Jul 22, 2026
26 of 27 checks passed
@kyle-sexton
kyle-sexton deleted the chore/836-prune-plan-doc branch July 22, 2026 09:27
kyle-sexton added a commit that referenced this pull request Jul 22, 2026
…opic is fully landed (#1004)

## Summary

`docs/topics/lint-static-analysis-gaps/PLAN.md` is a contract-tier topic
doc per `docs/conventions/topic-docs/README.md`: committed on the task
branch only, pruned before merge once the topic's outcome lands
(§"Contract-slice lifecycle"). It was added by PR #829 and never pruned.
Epic #830 and all 6 sub-issues (#831-#836) plus the related
setup-lifecycle epic (#837) are now merged and closed, so the topic's
outcome has fully landed — pruning now, mirroring the same fix already
applied to #836's leaked plan doc in PR #966.

Content preserved for the record (from commit `4a289ab389`, PR #829):

<details>
<summary>Epic Brief (pruned)</summary>

# Lint / static-analysis gaps

## Brief

### TLDR

Close the fleet's lint/static-analysis gaps with one epic in this repo
(typos hook plugin, Go
coverage in both lanes, lychee-offline + pyright batch additions, .NET
runtime guard,
hook-observability convention, bespoke-guard routing), plus two epics
owned elsewhere
(setup-lifecycle convention here as its own design effort; standards
adoption sweep +
ecosystem-declaration in `melodic-software/standards`).

### Goal

Local lanes catch what CI gates, so agents fix findings at edit time
instead of burning
commit–push–CI round-trips. Every addition follows the plugin
philosophy: consumer-config-driven,
zero shipped opinions, runtime detection over assumptions, advisory
hooks that auto-fix silently
and surface only residual unfixables.

Epic sub-items (discuss-first honored — file only on explicit request;
epic + sub-issues shape):

1. **typos hook plugin** — per-file autofix (`typos -w`), consumer
`_typos.toml` ancestor walk-up,
false-positive remediation via consumer allowlist entries
(`extend-words` /
`extend-identifiers` / `extend-ignore-re`), advisory residual-only
context, hook-precision +
   hook-telemetry conventions.
2. **Go coverage, both lanes** — new `go` batch ecosystem default
(golangci-lint v2, format,
`go mod tidy`; govulncheck optional) and a Go format hook plugin.
Formatter selection
(gofmt / goimports / gofumpt / `golangci-lint fmt`) is an
implementation-time field survey per
the pick-for-the-problem discipline; criteria: official/authoritative,
maintained,
feature-fit. golangci-lint is batch-only by design (package-scope
analysis, per its FAQ).
3. **lychee-offline** added to `cross-cutting.yaml` (on-disk link/anchor
integrity; gating in CI,
   no network).
4. **pyright** added to `python.yaml` check-cmd (CI gates it; local
batch was ruff-only).
5. **.NET batch guard** — `dotnet` ecosystem entry detects
analyzer/`.editorconfig` configuration
presence at runtime each run; skips with a visible notice when absent.
No assumptions about
   consumer state; .NET stays batch-lane only.
6. **Hook-observability fleet convention** — every fleet hook emits
`statusMessage` (during run),
`systemMessage` (failure/notable action), and the hook-telemetry OTel
envelope. Grounded in
current official hooks docs at authoring time (no native user-visible
hook UI exists as of
2026-07-21; OTel events + author-emitted messages are the sanctioned
surfaces). Optional
sub-item: upstream feature request for a native verbose-hooks UI toggle.
7. **Bespoke CI guards** (comment-hygiene, exec-bit,
machine-specific-paths,
reference-integrity) — sub-issue routed to `ci-workflows`/`standards`:
local lane must invoke
the same owned source (pointer-not-copy), which needs a small
distribution decision those
   repos own.

### Constraints

- Plugin philosophy governs: repo/user/machine/org-agnostic, two-lane
convention posture,
native-first, cross-platform (Windows/macOS/Linux), setup contract,
graceful degradation.
- Lane rule (locked): fast (<~2s), per-file, auto-fixing,
consumer-config-discovering tool =
hook plugin; slow / repo-wide / package-scope tool = toolchain batch
entry; both when both fit.
- Hooks auto-fix silently, never block, surface only residual unfixables
(markdown-format
  pattern); hook-precision convention bounds false-positive noise.
- New plugins conform to the setup-lifecycle convention once that epic
lands.

### Acceptance criteria

- Each epic sub-item lands as its own planned change with the normal
pipeline
  (explore/research → plan → implement → review).
- typos + Go hook plugins pass the plugin contract gate and fleet
conformance audit.
- Batch additions (go, lychee-offline, pyright, dotnet guard) are rung-4
defaults only —
  consumer `.claude/ecosystems/*.yaml` override ladder unchanged.
- Hook-observability convention documented as an owner doc (convention
registry row) and adopted
  by every fleet hook; conformance audited.
- CI/local parity: gaps identified 2026-07-21 (Go toolchain,
lychee-offline, pyright) have local
  coverage.

### Captured assumptions

- No work-machine tool-install restriction (winget/brew acceptable).
User to correct if wrong.
- Single Go repo today (`ci-runner`); Go hook plugin justified by
completeness preference
  (user choice) despite one consumer.

### Out of scope

- Standards distribution-model redesign — model is settled (ADR-0001,
accepted 2026-07-10);
dissatisfaction, if it persists after reading the ADR rationale, is an
ADR-supersede
  discussion in `standards`.
- Consumer-config adoption gaps (ruff/pyright targets, dotnet-analysis
to itinerary-planner /
medley, TS/JS component admission, medley lychee) — standards epic
below.
- Setup-lifecycle convention design — own epic below.

### Deferred questions

- YAML lint/format plugin — arbiter: USER-RESERVED. Trigger: a CI YAML
gate lands in the fleet,
or Biome ships YAML support (unshipped as of the 2026 roadmap). Facts:
yamllint validate-only;
  yamlfmt autofixes but imposes defaults without consumer config.
- gitleaks per-edit hook — arbiter: USER-RESERVED. Trigger: a local
leaked-secret incident.
Facts: `dir` mode (detect/protect deprecated v8.19), entropy
false-positive noise, no autofix.
- `dotnet format whitespace --folder` fast path — arbiter:
USER-RESERVED. Whitespace-only today
(bypasses MSBuild/restore; the only sub-2s path — full/style/analyzer
modes pay project-load,
~1.3s minimum single file). Links:
<https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-format>,
<dotnet/format#757>. Trigger: an MSBuild-free
style/analyzer path
  appears upstream.
- Upstream feature request for native verbose-hooks UI — arbiter:
/planning:plan (optional
  sub-item of the observability convention).

### Related epics (owned elsewhere)

- **Setup-lifecycle convention** (this repo, own design session) — DONE
(#837, PR #990).
- **Standards adoption sweep + ecosystem-declaration enhancement**
(`melodic-software/standards`) — still open, separate repo
(`standards#230`).

## Plan

(Empty — `/planning:plan` fills this per epic sub-item.)

</details>

## Verification

- [x] `git rm -r` only — no other changes; no build/test impact.
- [x] Content fully preserved in git history (commit `4a289ab389`) and
in this PR body.

## Related

No linked issue — epic #830 is already closed (manually, since all 6
sub-issues plus the related setup-lifecycle epic #837 were done); this
is a follow-up hygiene fix, not new epic work. Related PRs: #829 (added
the brief), #966 (same fix applied to #836's leaked plan doc), #990
(#837, the last related item to land before this cleanup).

---------

Co-authored-by: Claude Sonnet 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