|
| 1 | +--- |
| 2 | +"@objectstack/spec": patch |
| 3 | +--- |
| 4 | + |
| 5 | +Strip internal tracker ids from the refusal messages an author actually reads (#12124) |
| 6 | + |
| 7 | +Fifteen zod refusal messages across nine `packages/spec/src` files ended a sentence with |
| 8 | +an internal issue id. Those strings are printed **at** the author, verbatim, the moment |
| 9 | +their metadata is refused — by `os validate`, by a publish gate, by a parse — and the |
| 10 | +reader has no tracker to open. A `#NNNN` there is a citation-shaped token that resolves to |
| 11 | +nothing, in the one place the sentence most needs to be actionable. |
| 12 | + |
| 13 | +```text |
| 14 | +before: A field condition's keys are field names, never $-prefixed operators (#7711). |
| 15 | +after: A field condition's keys are field names, never $-prefixed operators. |
| 16 | +
|
| 17 | +before: ... refused at authoring time because the query path refuses it too |
| 18 | + (400 INVALID_FILTER, #5869). |
| 19 | +after: ... refused at authoring time because the query path refuses it too |
| 20 | + (400 INVALID_FILTER). |
| 21 | +``` |
| 22 | + |
| 23 | +Where a customer-resolvable anchor already carried the meaning it was kept and the id |
| 24 | +dropped beside it: the second example above keeps `400 INVALID_FILTER`, which is the token |
| 25 | +an author can actually match their query-path error against. Where the reference is |
| 26 | +load-bearing for an *internal* reader only, it moved to an adjacent `//` comment (four |
| 27 | +sites: the endpoint publish gate's two `#5040` section pointers, the summary-field rule's |
| 28 | +founding incident, and the interim renderer precedence behind the doubled-redirect |
| 29 | +refusal). Elsewhere it is simply gone — git history keeps the anchor. |
| 30 | + |
| 31 | +Text only. **No accept/reject behaviour changes**: the same inputs are refused on the same |
| 32 | +schemas with the same issue `code`, `path` and error shape; only the sentence changes. |
| 33 | +Test twins that pinned the old wording now pin the new text plus a negative assertion that |
| 34 | +the message carries no issue id at all. |
| 35 | + |
| 36 | +The convention is held mechanically from here — `check:doc-authoring` gained a third rule |
| 37 | +that parses `packages/spec/src` and reds on an id in any refusal-message string. It parses |
| 38 | +rather than scanning lines because refusal prose here is written as multi-line string |
| 39 | +concatenation: a single-line `message:.*#[0-9]{3,5}` grep sees 1 of the 16 literals. |
0 commit comments