Skip to content

fix(adapters): discriminate mbox separators deterministically - #153

Closed
titanwings wants to merge 2 commits into
pr/03-capacity-honestyfrom
pr/04-mbox-separator
Closed

titanwings wants to merge 2 commits into
pr/03-capacity-honestyfrom
pr/04-mbox-separator

Conversation

@titanwings

@titanwings titanwings commented Sep 11, 2026

Copy link
Copy Markdown
Owner

What

fix(adapters): discriminate mbox separators deterministically

Commits

  • fix(adapters): gate mbox separators on the sender token
  • fix(adapters): discriminate mbox separators by a complete date, not the sender token

Stack

Stacked on pr/03-capacity-honesty; the whole series ends at distilly-work (0bd924e).

Verification

Every feature carries an author report and an independent audit in the delivery evidence folder (host-verification/), including screenshots and the audit verdict that drove the fixes. Gates on the top of the stack: format, lint, docs, release check, and 1163 tests.

Real hosts

Codex, Claude Code 2.1.268, OpenClaw 2026.9.2, Hermes v0.19.0, and DSH 0.1.5-rc.1 were each exercised end to end (install, host-visible confirmation, exactly five MCP tools, person Skill install/remove, uninstall). Capacity fixtures are recorded for Codex 0.146.0, OpenClaw 2026.3.24, and Hermes v0.9.0; newer host versions run on the labelled conservative floor.

Evidence

Author reports and screenshots (delivery evidence folder host-verification/):

  • (covered by the email parser reports above)

Independent audit reports:

  • email-parser-VERIFY5.md, email-parser-VERIFY6.md, email-parser-VERIFY7.md

A sixth verification round showed that widening the date shapes had admitted
prose: 'From 09:30 until 17:00 we are closed.' and 'From the 11/09/2026 invoice
is attached.' split a message and dropped its tail, while a hyphenated month
name still failed to split a real mailbox.

The sender token now discriminates, because a from_ line names an address or a
system sender while prose starts with an ordinary word or a time-like number;
only then must the remainder be empty or start with a date shape. That rejects
every prose counter-example while covering the documented shapes, including the
hyphenated, slashed, lowercase, and full-weekday forms. A body line that looks
like a separator but is not recognized is now counted and reported as a warning
instead of being decided silently.

The round also exposed a flaw in the author's own test: it placed the tested
separator on the first line, where splitMailbox always starts a message, so any
nonsense rule passed. The tests now place every separator between two messages
and assert that nonsense and prose do not split.
…he sender token

A seventh verification round measured that gating on the sender token merged 17
real separator shapes that split before it: a bare local username, a hostname, or
a domain-only sender are all legitimate from_ lines, so the token cannot tell a
separator from prose.

The date itself discriminates when it must be complete: a month-name date always
carries a day and a time, and a numeric date either carries a time or ends the
line. Every real writer's format splits again, and prose that merely starts with
a number, a month, or a time stays in the body.
@titanwings

Copy link
Copy Markdown
Owner Author

Superseded: this stacked series is consolidated into the dot-skill-test line (same tree, kept on distilly-work). Closing without merging to avoid conflicts with the v2 rewrite.

@titanwings titanwings closed this Sep 12, 2026
@titanwings
titanwings deleted the pr/04-mbox-separator branch September 12, 2026 18:04
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