llm-security/STATE.md
Kjell Tore Guttormsen 0e2601ff55 chore(llm-security): STATE — v8 planning unparked; strategy docs moved to *.local.md
Operator decision 2026-07-18: v8 strategy docs are LOCAL-ONLY. All 4
(FAMILY-MAP, JOBS-TO-BE-DONE, commons-extraction-plan, roadmap) renamed
to docs/*.local.md (gitignored); roadmap.md had been hidden only by the
accidental case-insensitive ROADMAP.md ignore match.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TcQyMTQfyrsAapaCMPxTtQ
2026-07-18 11:17:27 +02:00

46 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# STATE — llm-security
**👉 NESTE — START HER: v8.0.0 planning is UNPARKED. Start with the plan in `docs/roadmap.local.md`.**
The visibility decision is MADE (operator, 2026-07-18): the v8 strategy docs are LOCAL-ONLY. All 4
(`FAMILY-MAP`, `JOBS-TO-BE-DONE`, `commons-extraction-plan`, `roadmap`) were renamed to
`docs/*.local.md` (gitignored via the `*.local.md` pattern; cross-refs updated). `roadmap.md` was a
4th family member previously hidden only by accident — the root-level `ROADMAP.md` ignore pattern
matched it case-insensitively. `git status` is clean; nothing untracked can leak to the public mirror.
Next body of work: **v8.0.0** (deprecation cleanup + behaviour-preserving commons extraction + the
deferred items below). Read `docs/roadmap.local.md` first — it is the product roadmap the plan hangs off.
v7.8.3 remains fully released: tag `v7.8.3` pushed, catalog ref bumped (catalog commit `9d42292`),
`check-versions.mjs` 0 ERROR, suite **2016/0**. Nothing pending on it.
## v7.8.3 — what shipped (the MEDIUM sweep + 1)
52 open completion-review findings triaged (5 Opus verifiers) → 48 confirmed, 3 feature-requests, 1 non-defect.
Corrected severity: **0 CRITICAL/HIGH, 21 MEDIUM, 27 LOW** (every review-claimed HIGH fell to MEDIUM).
Shipped **47 MEDIUM-tier fixes + 1 live-protocol fix** (`post-mcp-verify` now reads PostToolUse
`tool_response` — MCP-output injection scanning was silently inert in live sessions). Full triage:
`docs/medium-triage.local.md` (gitignored).
**Deferred to v8:** #11 persistence detector (only its doc fix shipped), #27 AST-taint f-string recall,
#34/#35/#37 missing AST09/AST10/MCP05 detectors (feature-requests), #49 non-defect.
## Ground truth (verified 2026-07-18, post-release)
- `npm test` = **2016/0**. plugin.json == package.json == README badge == **7.8.3**; test badge 2013;
posture 16 categories, red-team 72 scenarios, 14 orchestrated scanners; doc-consistency 30/30.
- #30 is SCOPED: `decodeEmbedded` is OPT-IN on `normalizeForScan` (default off — appending a decoded copy
double-counted content-extractor's per-match findings; caught by skill-scanner-narrative). Only
signature-scanner opts in. **Do NOT re-broaden it into the shared normalizer.**
- Scanner `VERSION` constants are frozen at 7.5.0 (unbumped since; left as-is — pre-existing, out of scope).
## Guardrails that bit this session (keep)
- **NEVER `git add -A`; stage explicit paths — AND check `git status` for surprise PRE-STAGED files before
every commit.** An external pre-staged change (post-mcp-verify) rode into a commit via a plain
`git commit`; caught it with `reset --soft` + `restore --staged`. (It was later shipped intentionally.)
- A commit MESSAGE containing the literal pipe-to-shell pattern is blocked by the voyage pre-bash hook — reword.
- Test-pollution trap: `jetbrains-parser.test.mjs` asserts no `llmsec-jb-*` mkdtemp survives — use another prefix.
- The completion review's own text is a premiss, not a fact — re-verify every finding against current code
(severities in particular did not survive: all review-claimed HIGHs downgraded).
## Continuity
origin = Forgejo `open/llm-security` (PUBLIC, never GitHub). STATE.md intentionally TRACKED
(`.gitignore:19-20` NOTE). Disclosure: fix committed, HELD until its release tag exists (satisfied for v7.8.3).
Push window: weekdays 20:0023:00; weekends/holidays anytime. The v8 strategy docs live in
`docs/*.local.md` (gitignored — they reference a private sibling; keep them LOCAL-ONLY). Release mechanics: push commits →
`release-plugin.mjs <plugin> --version X.Y.Z --create-tag``--write --commit --push` → check-versions 0 ERROR.
Position (v8): llm-security consolidates; growth at family level (security-commons + `llm-retrieval-guard`).