# `mix surfex.mark`
[🔗](https://github.com/dcoai/surfex/blob/v0.6.2/lib/mix/tasks/surfex.mark.ex#L1)

Records that a spec unit itself needs to change (`Surfex.Record.mark/5`, §12.1): the
tests reflect it and the code passes them, but the result is wrong or clearly
sub-optimal. The mark is recorded at the unit's current version, and the note says what
is wrong:

    mix surfex.mark spec.md#totals --needs-update \
      --note "totals ignore discounts: a customer sees the undiscounted price"

The mark stays open while the unit is at that version, and is resolved when the spec
changes, which starts the process over from the spec (§18). `mix surfex.status` reports
open marks; `--no-marks` fails on them. The new mark is printed as a change draft (§19),
for the project's change process: `mix surfex.draft --file` hands it off.

With `--withdraw` it withdraws the unit's open mark instead
(`Surfex.Record.withdraw/5`), with a note saying why it proved unfounded, and `--pick
ID_PREFIX` when the unit has several:

    mix surfex.mark spec.md#totals --withdraw --note "the customer's cart had no discount"

---

*Consult [api-reference.md](api-reference.md) for complete listing*
