Skip to content

spec: 018 phase 1 — pagelint rule 8, ATTRIBUTE KIND - #198

Merged
iancooper merged 1 commit into
masterfrom
spec/018-phase1
Oct 5, 2026
Merged

iancooper merged 1 commit into
masterfrom
spec/018-phase1

Conversation

@iancooper

Copy link
Copy Markdown
Member

Spec 018 phase 1, tasks 1.1–1.8. Design § Rule 8 — ATTRIBUTE KIND.

What it does

  • tools/pagelint.py rule 8. It catches a handler attribute of the wrong kind for its method, such as [RejectMessageOnError] on HandleAsync. That compiles, and then Brighter throws ConfigurationException when it builds the pipeline. The check is 017's probe scan(), moved unchanged. PAIRED (13 names) sits beside APPLIES_TO, re-derived at Brighter 10.7.0 and master, which agree. It is an error repo-wide and under --changed.
  • The opt-out is per block. <!-- pagelint: attr-mismatch-intended <reason> --> binds to the next C# block. Three marker faults are reported as errors: no reason, no block after the marker, and a second marker on the same block.
  • pagelint --plant runs five in-memory plants. It is added to CI as a bare step, because the one corpus hit is marked and the whole-repo run can no longer show the rule firing.
  • CLAUDE.md gets a ledger row and § Handler attributes match their handler. tools/README.md gets the pagelint bullet, --plant in the modes list, and rows 1 and 2.

Gates

Gate Result
linkcheck 166 files, 0 broken
pagelint 0 errors, 512 warnings, 162 pages; 1 block marked
pagelint --plant 5 of 5, exit 0. The red-proof (one expectation inverted) exits 1
symbolcheck 0 found, 22 entries, 3 silenced
blockcheck --report 990 / 299 BUILT / 674 / 17, unmoved

Two figures moved before this phase started. #195 changed pagelint warnings from 524 to 512 (it repaired 12 debt blocks) and linkcheck files from 165 to 166 (its bugfix.md). Both are re-measured, with refs, in tools/README.md and in tasks.md § Phase 1 as executed. This phase moved no warning.

Asking

  1. Sign-off to merge. This changes the published site on one page: an HTML comment above PipelineValidation.md's Before (error) block. It renders as nothing, and no block's text changed.
  2. Permission to delete the head ref spec/018-phase1 after the merge.

🤖 Generated with Claude Code

https://claude.ai/code/session_01LjnH2pJ98aMabu1MyTpRxy

A sync handler attribute on HandleAsync, or an ...Async one on Handle,
compiles and fails when Brighter builds the pipeline. Rule 8 reads every
C# block for it: 017's attr_mismatch scan(), moved unchanged, with PAIRED
(13 names, re-derived at Brighter 10.7.0 and master) beside APPLIES_TO.

- per-block opt-out <!-- pagelint: attr-mismatch-intended <reason> -->,
  with three reported faults: no reason, no block after it, a second marker
- --plant: five in-memory plants, run in CI; red-proof recorded
- PipelineValidation.md block 7 marked: its Before (error) example
- CLAUDE.md ledger row and section; tools/README.md rows 1-2 re-measured
  at 94ad0ed (#195 moved them: 524 -> 512 warnings, 165 -> 166 files)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LjnH2pJ98aMabu1MyTpRxy
@iancooper
iancooper merged commit f6a9a7c into master Oct 5, 2026
10 checks passed
@iancooper
iancooper deleted the spec/018-phase1 branch October 5, 2026 14:28
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