Task
A Rust string literal continued with a trailing \ renders correctly, but when that backslash is lost the literal keeps the source's leading indentation, so the emitted text carries a 14-22 space run in the middle of a sentence. It compiles, no caller inspects it, and the mangled and correct forms are indistinguishable in a normal diff — so only a test over the rendered VALUE can see it. Seven such literals are still shipped in crates/dig-node-service/src.
Context
Found by the correctness gate on #501 via a control-tested literal scan (the pattern was validated against a known-bad synthetic AND a known-good string before its zeroes were trusted). All seven pre-date that PR's merge base (e.g. 95c95825), so they were out of scope there and are filed rather than fixed.
The same class was repaired at six other sites in PR #501 (mirror/advertise.rs, mirror/pass.rs, mirror/runner.rs) and is now pinned there by two guards that walk the whole message set: mirror/advertise.rs::every_operator_facing_line_reads_as_a_sentence and mirror/lifecycle.rs::the_refusal_messages_read_as_sentences. Copy that pattern — assert over the rendered string, reject any run of two spaces and any control character, and include a control assertion so a fixture too empty to exhibit the property cannot pass.
The Sites by Severity
pairing.rs:146 — the only user-visible one: a JSON-RPC error body returned to a client, carrying two 18-space runs. This is what lifts the issue above housekeeping.
logging.rs:261 — the assertion message of the_announcement_text_has_no_lost_string_continuation, the very test that guards this class.
cli.rs:255, control.rs:6071, meta.rs:1743, meta.rs:1751, service.rs:2630.
Scope
Exactly those seven sites plus one guard that walks the set. Do not sweep other crates in this ticket, and do not reword any message — the text is what was always meant; only the space run is removed.
Acceptance
- Each of the seven named sites emits its text with no run of two or more spaces.
- A test walks the SET of messages rather than a chosen example, asserts the count so a shrinking walk fails loudly, and carries a non-vacuity control.
pairing.rs:146's corrected body is asserted through the JSON-RPC error path a client actually receives, not only at the literal.
References
Note: This ticket currently has no super-repo parent epic assigned. It is visibly unparented rather than orphaned; the orchestrator may link a parent later if a cross-repo family forms around it.
Task
A Rust string literal continued with a trailing
\renders correctly, but when that backslash is lost the literal keeps the source's leading indentation, so the emitted text carries a 14-22 space run in the middle of a sentence. It compiles, no caller inspects it, and the mangled and correct forms are indistinguishable in a normal diff — so only a test over the rendered VALUE can see it. Seven such literals are still shipped incrates/dig-node-service/src.Context
Found by the correctness gate on #501 via a control-tested literal scan (the pattern was validated against a known-bad synthetic AND a known-good string before its zeroes were trusted). All seven pre-date that PR's merge base (e.g.
95c95825), so they were out of scope there and are filed rather than fixed.The same class was repaired at six other sites in PR #501 (
mirror/advertise.rs,mirror/pass.rs,mirror/runner.rs) and is now pinned there by two guards that walk the whole message set:mirror/advertise.rs::every_operator_facing_line_reads_as_a_sentenceandmirror/lifecycle.rs::the_refusal_messages_read_as_sentences. Copy that pattern — assert over the rendered string, reject any run of two spaces and any control character, and include a control assertion so a fixture too empty to exhibit the property cannot pass.The Sites by Severity
pairing.rs:146— the only user-visible one: a JSON-RPC error body returned to a client, carrying two 18-space runs. This is what lifts the issue above housekeeping.logging.rs:261— the assertion message ofthe_announcement_text_has_no_lost_string_continuation, the very test that guards this class.cli.rs:255,control.rs:6071,meta.rs:1743,meta.rs:1751,service.rs:2630.Scope
Exactly those seven sites plus one guard that walks the set. Do not sweep other crates in this ticket, and do not reword any message — the text is what was always meant; only the space run is removed.
Acceptance
pairing.rs:146's corrected body is asserted through the JSON-RPC error path a client actually receives, not only at the literal.References
Note: This ticket currently has no super-repo parent epic assigned. It is visibly unparented rather than orphaned; the orchestrator may link a parent later if a cross-repo family forms around it.