Corpus intake lows 2: S6 folds, CLI errors stop echoing identifiers, --admitted-on is a date, marks-only text refused #19

Merged
weksa merged 4 commits from weksa-lowering/corpus-intake-lows-2 into main 2026-11-09 11:04:10 +00:00
Member

Follow-up weksa-lowering/corpus-intake-lows-2. Tests written first (7 failed on the unfixed code).

  1. S6 key folds Turkish ı/İ, katakana to hiragana (small letters and iteration marks included; the prolonged sound mark ー stays) and Arabic-Indic/Extended Arabic-Indic digits. Devanagari digits and Cyrillic і stay apart.
  2. CLI/library errors no longer echo identifiers: FormError and StoreRefusal Display print the reason, not keys; no packet/no item messages carry no key; clap value errors rewritten to invalid value for --flag: reason.
  3. --admitted-on is a real calendar date (clap parser and CorpusStore::add; 2026-02-30 refused, 2024-02-29 passes). Widening: pronunciation dates share the check.
  4. A text made only of marks is refused with its own reason on Malformed (not a new enum variant; fork below). The Lm table (crates/weksa/tests/modifier_letters.txt) is generated from Unicode 17.

Head 3cf499d (main 860c714 merged in): cargo test --locked --workspace 187 passed, 0 failed.

Not run: Soul pass, cargo-mutants, cargo fmt (not installed; rustfmt on touched files), Windows build. Clippy: one pre-existing large_enum_variant. Not covered: clap's own unexpected argument echoes; validate refusal text prints ids from stored packets.

Forks for a ruling: (a) marks-only as a distinct StoreRefusal variant rather than a reason string; (b) the Lm table is Unicode-17-pinned, nothing alerts when Unicode adds modifier letters.

Not merged, per the brief.

🤖 Generated with Claude Code

Follow-up weksa-lowering/corpus-intake-lows-2. Tests written first (7 failed on the unfixed code). 1. S6 key folds Turkish ı/İ, katakana to hiragana (small letters and iteration marks included; the prolonged sound mark ー stays) and Arabic-Indic/Extended Arabic-Indic digits. Devanagari digits and Cyrillic і stay apart. 2. CLI/library errors no longer echo identifiers: FormError and StoreRefusal Display print the reason, not keys; `no packet`/`no item` messages carry no key; clap value errors rewritten to `invalid value for --flag: reason`. 3. `--admitted-on` is a real calendar date (clap parser and CorpusStore::add; 2026-02-30 refused, 2024-02-29 passes). Widening: pronunciation dates share the check. 4. A text made only of marks is refused with its own reason on Malformed (not a new enum variant; fork below). The Lm table (crates/weksa/tests/modifier_letters.txt) is generated from Unicode 17. Head 3cf499d (main 860c714 merged in): `cargo test --locked --workspace` 187 passed, 0 failed. Not run: Soul pass, cargo-mutants, cargo fmt (not installed; rustfmt on touched files), Windows build. Clippy: one pre-existing large_enum_variant. Not covered: clap's own `unexpected argument` echoes; validate refusal text prints ids from stored packets. Forks for a ruling: (a) marks-only as a distinct StoreRefusal variant rather than a reason string; (b) the Lm table is Unicode-17-pinned, nothing alerts when Unicode adds modifier letters. Not merged, per the brief. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
FormError and StoreRefusal display no caller identifiers; clap value errors name the flag and reason only. One is_calendar_date serves admitted_on and the pronunciation date. A text with no base letter or digit (Lm or M only) is refused beside the no-alphanumeric refusal; modifier_letters.txt is the Lm table its test walks.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Author
Member

Soul pass (independent) on 2ce6325: no blocking finding; every refusal path works, gaps are Low. Head 3a56d31 adds tests for its test-only survivors (1900 not leap, day 0, ASCII-only date digits, ヶ fold, Unicode pin of the Lm table). Main 860c714 is the base (no newer commits). cargo test --locked --workspace: 189 passed, 0 failed.

Rulings (steward):

  1. Marks-only: a reason string on Malformed, not a StoreRefusal variant. No consumer matches on it; emoji-only is the same pattern; a variant adds a public surface for nobody.
  2. Lm table watch: the_modifier_letter_table_matches_the_toolchains_unicode_version fails when char::UNICODE_VERSION leaves 17.0.0, which names the file to regenerate. The table is only a test oracle; the shipped check does not read it.
  3. Pronunciation dates sharing the calendar check: accepted. 0000 is accepted as ISO year 0.

Corrections to the PR body: the lone combining mark / ZWJ / ZWNJ / variation selector cases still carry the older reason no alphanumeric character, not the new one; and LowerError/Refusal Display still print Debug (ids). Both go to follow-up corpus-intake-lows-2-residue, with ヷ-ヺ not folding, İx vs i̇x no longer colliding, the pronunciation-language echo survivor, and clap's own unexpected argument echo. Not run: Windows, clippy/fmt gate. Merging.

Soul pass (independent) on 2ce6325: no blocking finding; every refusal path works, gaps are Low. Head 3a56d31 adds tests for its test-only survivors (1900 not leap, day 0, ASCII-only date digits, ヶ fold, Unicode pin of the Lm table). Main 860c714 is the base (no newer commits). `cargo test --locked --workspace`: 189 passed, 0 failed. Rulings (steward): 1. Marks-only: a reason string on Malformed, not a StoreRefusal variant. No consumer matches on it; emoji-only is the same pattern; a variant adds a public surface for nobody. 2. Lm table watch: `the_modifier_letter_table_matches_the_toolchains_unicode_version` fails when `char::UNICODE_VERSION` leaves 17.0.0, which names the file to regenerate. The table is only a test oracle; the shipped check does not read it. 3. Pronunciation dates sharing the calendar check: accepted. 0000 is accepted as ISO year 0. Corrections to the PR body: the lone combining mark / ZWJ / ZWNJ / variation selector cases still carry the older reason `no alphanumeric character`, not the new one; and LowerError/Refusal Display still print Debug (ids). Both go to follow-up `corpus-intake-lows-2-residue`, with ヷ-ヺ not folding, İx vs i̇x no longer colliding, the pronunciation-language echo survivor, and clap's own `unexpected argument` echo. Not run: Windows, clippy/fmt gate. Merging.
weksa merged commit 8fd1f5b3be into main 2026-11-09 11:04:10 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
GameCult/Weksa!19
No description provided.