Skip to content

Security, smell and test-speed cards; split large indexes - #30

Merged
n0nuser merged 8 commits into
mainfrom
cards-2026-11-06
Nov 6, 2026
Merged

n0nuser merged 8 commits into
mainfrom
cards-2026-11-06

Conversation

@n0nuser

@n0nuser n0nuser commented Nov 6, 2026 •

Copy link
Copy Markdown
Owner

This batch adds 42 new or edited cards (35 stable, 7 draft) plus the source research behind them.

  • Security: 16 new cards from the Cloudflare security-audit classes (HTTP framing, cache keys, Host trust, OAuth, SAML, MFA, account linking, password reset, API keys, soft delete, export scope, tenant telemetry, decompression, webhook replay, workload identity), and new clauses on five existing cards.
  • Code smells: every remaining Fowler and Pocock smell is now a card or merged into one.
  • Test speed: fixture scope, worker isolation, suite budget, test selection on pull requests.
  • Build: a level index past its budget now becomes a hub page that links one part per context, so llms.txt keeps one index link per level. The function and service indexes split this way now.

Every stable card needs three organisations behind each Rule clause. Two models (Opus and Sonnet) judged each card on its own, and the fixes follow docs/research/judge-triage-2026-11-06.md. Spot checks of the research quotes are in docs/research/spot-checks-2026-11-06.md.

This is one PR for many cards, against the one-card-per-PR rule, by the maintainer's choice.

  • HTML: a level page past 120,000 characters of text (PAGE_MAX, now in tools/config.py) becomes a compact hub that keeps a row and id for every card, plus one full page per context with its own Markdown twin. service.html goes from 134,780 to 15,090 characters, so old service.html#<id> links still land.

pytest shows the same 5 failures as main (test_sbom and the ruff-dependent lint tests).

🤖 Generated with Claude Code

https://claude.ai/code/session_013wy5PHVgonRFe4D63zkzxr

n0nuser and others added 8 commits November 6, 2026 11:13
A level index past its budget now gets a short hub page that links its context parts, so llms.txt keeps one index link per level. The budget counts the frontmatter the site adds. orgs.py gains the organisations and URL prefixes the new cards cite. AUDIT_STEPS gains four lines (hardening is not a FAIL, say when partial, adversarial and empirical modes). The header nav is a CSS-only dropdown.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013wy5PHVgonRFe4D63zkzxr
New cards from the Cloudflare security-audit classes: request framing, cache keys, Host trust, header CRLF, OAuth flow binding, SAML, MFA step-up, account linking, password reset, API key scope, soft delete, export scope, tenant id in telemetry, decompression cap, webhook replay window and workload identity. Clauses added to session-lifecycle, api-cache-control, dlq, rate-limit-quota and workflow-supply-chain. Two models judged each card; fixes applied from docs/research/judge-triage-2026-11-06.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013wy5PHVgonRFe4D63zkzxr
Fixtures built once, suite time budget, test selection on pull requests, pytest fixture scope, xdist worker isolation, collection and import time, and test hygiene. Adds a draft for committed per-user IDE and OS files.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013wy5PHVgonRFe4D63zkzxr
Every remaining Fowler and Pocock smell is now a card or merged into one: length and parameter limits, class size, caller mutation, import cycles, fan-out, Law of Demeter, shotgun surgery, repeated switches, temporary field, and merges into existing cards. Several drafts promoted where three organisations back each Rule clause.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013wy5PHVgonRFe4D63zkzxr
Output of tools/build.py and lint/scripts/snapshot.py.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013wy5PHVgonRFe4D63zkzxr
Source searches, spot checks, evidence files, judge reports and the triage behind this batch of cards.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013wy5PHVgonRFe4D63zkzxr
A level page whose text passes PAGE_MAX (now in tools/config.py) becomes a compact hub that keeps a row and id for every card, plus one full page per context with its own Markdown twin. One helper decides which page holds a card, and the context grouping is shared with the index split. service.html goes from 134,780 to 15,090 characters.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013wy5PHVgonRFe4D63zkzxr
Drop a duplicate "ecto" org key, use real annotations with postponed evaluation, wrap a long line, and give mypy the Level type it expects. The golden hashes for /concerns.md are recaptured because this batch changes the stable card set.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013wy5PHVgonRFe4D63zkzxr
@n0nuser
n0nuser merged commit 6c31fbd into main Nov 6, 2026
3 checks passed
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