Skip to content

docs(proposals): P-026 naughty-strings robustness pack - #185

Closed
PhysShell wants to merge 3 commits into
mainfrom
claude/blns-testing-proposal-by60j6
Closed

PhysShell wants to merge 3 commits into
mainfrom
claude/blns-testing-proposal-by60j6

Conversation

@PhysShell

@PhysShell PhysShell commented Jul 5, 2026

Copy link
Copy Markdown
Owner

Что и зачем

Предложение (design doc) добавить BLNS (Big List of Naughty Strings) как пинованный fixture-корпус для crash-тестирования лексера/парсера/экстрактора, JSON/SARIF-сериализаторов и CLI на адверсариальном вводе. Мотивация: OwnAudit/Run-Audit.ps1 уже несёт шрам ровно этого класса бага (PYTHONUTF8=1 обходит cp1251-креш консоли на русской локали) — предлагается закрыть класс проблемы систематически, а не по одному инциденту за раз.

Тип изменения

  • feat — новая возможность
  • fix — исправление бага
  • docs — документация
  • refactor / chore / test / ci — без изменения поведения

Как проверено

Только markdown (новый docs/proposals/P-026-naughty-strings-testing.md + обновлён индекс в docs/proposals/README.md), код не тронут — тесты/линт неприменимы.

Связанные issue

Нет.

Чеклист

  • изменение покрыто тестом/селфтестом (или объяснено, почему нет) — только докс, N/A
  • README/docs обновлены при необходимости — индекс docs/proposals/README.md обновлён
  • коммиты в conventional-commit стиле (feat:, fix:, docs: …)

Generated by Claude Code

Summary by CodeRabbit

  • Documentation
    • Added a new draft proposal describing robustness testing for adversarial input.
    • Outlined layered test coverage for parsing, output validation, and command-line/path handling.
    • Documented non-goals and open questions for the proposed testing approach.
    • Updated the proposals index to include the new draft entry.

Propose using the Big List of Naughty Strings (BLNS) as a pinned
fixture corpus to crash-test the extractor/lexer/parser, the
JSON/SARIF emitters, and the CLI against adversarial input text —
motivated by the cp1251 console crash OwnAudit already hit once.
@coderabbitai

coderabbitai Bot commented Jul 5, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@PhysShell, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 54 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 1556920e-6b4f-46d0-b629-faea2a827c40

📥 Commits

Reviewing files that changed from the base of the PR and between d78c13d and b332489.

📒 Files selected for processing (2)
  • docs/proposals/P-026-naughty-strings-testing.md
  • docs/proposals/README.md
📝 Walkthrough

Walkthrough

Adds a new draft proposal document, P-026 Naughty-strings robustness pack, describing BLNS-driven crash testing across lexer/parser/extractor, serialization, and CLI/config layers, with non-goals and open questions. Registers the proposal in the proposals README index table.

Changes

Naughty-strings Robustness Proposal

Layer / File(s) Summary
Proposal document
docs/proposals/P-026-naughty-strings-testing.md
New draft proposal covering motivation, scope (vendoring BLNS corpus, parametrized lexer/parser/serialization/CLI testing, CI integration), non-goals, a test sketch loading tests/fixtures/blns.json, and open questions.
Proposals index entry
docs/proposals/README.md
Adds a new index row for P-026 marked as draft.

Estimated code review effort: 1 (Trivial) | ~3 minutes

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title is concise and accurately reflects the new BLNS robustness proposal and docs-only change.
Description check ✅ Passed The description follows the template and covers purpose, change type, validation, related issues, and checklist items.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/blns-testing-proposal-by60j6

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai 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.

Actionable comments posted: 1

🧹 Nitpick comments (1)
docs/proposals/README.md (1)

48-48: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Widen the index title to match the proposal scope.

The new row only mentions extractor/serializers/CLI, but the proposal also covers lexer/parser and config discovery. A fuller title will make the index easier to scan and avoid understating the document’s scope.

♻️ Suggested edit
-| [P-026](P-026-naughty-strings-testing.md) | Naughty-strings robustness pack (BLNS-driven crash testing of extractor/serializers/CLI) | draft |
+| [P-026](P-026-naughty-strings-testing.md) | Naughty-strings robustness pack (BLNS-driven crash testing of lexer/parser/extractor/serializers/CLI/config) | draft |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/proposals/README.md` at line 48, The proposal index entry title is too
narrow for the document’s actual scope. Update the P-026 row in the README index
so the title reflects the full proposal coverage, including lexer/parser and
config discovery in addition to extractor/serializers/CLI, using the existing
P-026 entry as the reference point.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/proposals/P-026-naughty-strings-testing.md`:
- Around line 62-81: Clarify the Layer 3 failure contract in the proposal by
specifying which outcomes in ownlang/__main__.py and future own.toml discovery
are acceptable rejections versus bugs. Update the Layer 3 description to
explicitly name the expected I/O, decoding, and path-validation failures for
BLNS-flavored file names, directory names, and glob patterns, and state that
anything outside those handled error paths is a test failure; keep the wording
aligned with the Layer 1 contract and the CLI/path handling symbols so the
harness has one consistent rule.

---

Nitpick comments:
In `@docs/proposals/README.md`:
- Line 48: The proposal index entry title is too narrow for the document’s
actual scope. Update the P-026 row in the README index so the title reflects the
full proposal coverage, including lexer/parser and config discovery in addition
to extractor/serializers/CLI, using the existing P-026 entry as the reference
point.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 752492fb-d4b8-4e65-95b3-041d588261b7

📥 Commits

Reviewing files that changed from the base of the PR and between 5ea68da and d78c13d.

📒 Files selected for processing (2)
  • docs/proposals/P-026-naughty-strings-testing.md
  • docs/proposals/README.md

Comment thread docs/proposals/P-026-naughty-strings-testing.md Outdated
PhysShell added 2 commits July 5, 2026 13:09
CodeRabbit: the row only named extractor/serializers/CLI but the
proposal also covers lexer/parser and config discovery.
CodeRabbit: Layer 1 named its acceptable failure shapes but Layer 3
(CLI/path/future config) didn't. Name the I/O exceptions that count as
an honest rejection, mirroring cmd_explain's existing OSError catch,
and flag that ownlang/__main__.py's _read() catches nothing today —
so a bad path is a live candidate for the very first red case, not a
hypothetical.

Copy link
Copy Markdown
Owner Author

Консолидировано в #190 (перенумеровано P-026 → P-030-naughty-strings-testing; pytest-скетч заменён на stdlib-раннер, OwnLang-пример приведён к валидной грамматике). Закрываю в пользу единого PR.


Generated by Claude Code

@PhysShell PhysShell closed this Jul 8, 2026
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