O-004, Transformed Expression
error[O-004]: the human lane is verbatim.
What fired
Any membrane or attention rule whose selector matches an express. It does not matter whether the rule meant to coarsen, summarize, delay, deny, or merely classify: if its selector can touch expressive content, it is O-004.
Why this is an error
Axiom V: the human lane is verbatim. The spec §4.6 defines express as the only construct admitting free prose: verbatim across the mesh, provenance-stamped, and immune to every transform and every attention rule. It may be queued by quiet hours; it may never be summarized or silenced. The Osmosis Protocol spec (§9) states the same rule from the protocol side: human-expressive content is routed to a reserved lane that the placement classifier is prohibited from silencing, and the lane is deliberately inefficient (no summarization, no batching, full fidelity).
The ethics: compression is for logistics. An ETA can be coarsened to the half hour and lose nothing that mattered. But affection, condolence, humor, and conflict have their value in their exact form. A summarized apology is not an apology, and a condolence rendered "at category granularity" is an insult with a type signature. The whole architecture exists to shrink every other lane so that this one can stay wastefully, humanly exact. A membrane rule that matches an expression is the system beginning to optimize the one thing it swore to leave alone.
How to fix it
Delete the rule. If your selector is a wildcard that by accident also catches expressions, narrow it to the fact families you actually mean to govern.
If what you want is to limit when expressive content can reach you, that is legal; use quiet:
attention {
quiet 22:00-07:00
}
Quiet hours queue the lane; they never transform it. The fox note arrives at 07:00 exactly as it was written. What no grammar will ever give you is a selector on express, not to shorten it and not to mute a person's own words.
In v0.1
The reference interpreter enforces this axiom by architecture rather than by check: settle() delivers the human lane first, before any flow fires, and the delivery path never consults membrane_cast, so expressions structurally cannot meet a membrane. The explicit semantic-analysis check (rejecting a rule whose selector matches an expression, for AST-level construction by tools) is future checker work, specified for osmol-core's Stage 3. See What Cannot Be Written for the enforcement map.