Found by the repo:objectos execution seat (objectstack#9831) during the dispatch-time premise check for #150, which lands four lines below this one in the same file. Filed rather than folded into that card: #150 deletes a section documenting a command that does not exist, this corrects a falsified number — different defect, different fix, so folding them would be widening #150's surface on my own authority. #150's dispatch names this card in its exclusion list.
The contradiction, both halves on origin/main @ 09a0dd9
content/docs/reference/cli.mdx:70:
os dev # port 3002 by default
content/docs/quickstart.mdx:200-203 — text that PR #143 landed from measurement, replacing an earlier sentence that asserted 3002:
> Note the dev server asks for port 3000, the same port os start uses. If
> that port is taken it binds the next free one and says so:
> ↪ server bound to port 3001 (requested 3000).
So the corpus states both, four files apart, and the one that is wrong is the one filed under reference.
This is not a guess — the 3002 claim was already falsified once
The quickstart sentence was not edited for style. #141's re-arm record states the replaced sentence asserted port 3002 "which no boot produced", and the current text is a transcription of a real boot: it names the requested port, the collision behaviour, and the literal line the CLI prints on rebinding. That measurement was taken against @objectstack/cli 17.1.0 and reviewed at the ACCEPT of PR #143.
What was not done at the time is sweep for the same claim elsewhere — #143's file surface was quickstart.mdx alone, correctly. This is the residue of that scoping, exactly the shape #148 is to #102.
Why it is worth a card rather than a silent fix
reference/cli.mdx is where a reader goes to check a flag. A reader who wants os dev and os start running side by side reads line 70, concludes the two ports differ by default, and does not pass -p. What actually happens is that the second one collides on 3000 and silently moves to 3001 — so the reader's mental model of which server is on which port is wrong, and nothing errors to tell them.
Scope
Line 70's comment, plus whatever the honest replacement needs. Two things to decide, neither of them large:
- Whether the one-line comment should carry the collision behaviour at all or just say
# port 3000 and leave the fallback to the quickstart. A code-block comment is a poor place for two sentences; a short line under the block is the alternative.
- Whether
os dev -p 4002 on line 71 stays as the flag example. It is not wrong — -p takes any port — but 4002 was presumably chosen to read as "3002 plus a bit", so it may want to become 4000 once the default is corrected. Cosmetic, and explicitly not a reason to widen.
⛔ Do not sweep the locale siblings. quickstart.de/es/fr/ja/ko/zh-Hans/zh-Hant.mdx all still carry the 3002 banner and prose. Translations are never a dev agent's output in this repo and locale siblings go stale by design — they are the translation pass's input, not this card's.
Re-check
git grep -n '3002' origin/main -- content/docs/reference/cli.mdx
git show origin/main:content/docs/quickstart.mdx | sed -n '200,203p'
Related: #143 (the measurement), #141 (the card that watches this page's version-pinned claims), #150 (same file, deletes the os studio section four lines below).
Found by the
repo:objectosexecution seat (objectstack#9831) during the dispatch-time premise check for #150, which lands four lines below this one in the same file. Filed rather than folded into that card: #150 deletes a section documenting a command that does not exist, this corrects a falsified number — different defect, different fix, so folding them would be widening #150's surface on my own authority. #150's dispatch names this card in its exclusion list.The contradiction, both halves on
origin/main@09a0dd9content/docs/reference/cli.mdx:70:os dev # port 3002 by defaultcontent/docs/quickstart.mdx:200-203— text that PR #143 landed from measurement, replacing an earlier sentence that asserted 3002:> Note the dev server asks for port 3000, the same port
os startuses. If> that port is taken it binds the next free one and says so:
>
↪ server bound to port 3001 (requested 3000).So the corpus states both, four files apart, and the one that is wrong is the one filed under reference.
This is not a guess — the 3002 claim was already falsified once
The quickstart sentence was not edited for style. #141's re-arm record states the replaced sentence asserted port 3002 "which no boot produced", and the current text is a transcription of a real boot: it names the requested port, the collision behaviour, and the literal line the CLI prints on rebinding. That measurement was taken against
@objectstack/cli17.1.0 and reviewed at the ACCEPT of PR #143.What was not done at the time is sweep for the same claim elsewhere — #143's file surface was
quickstart.mdxalone, correctly. This is the residue of that scoping, exactly the shape #148 is to #102.Why it is worth a card rather than a silent fix
reference/cli.mdxis where a reader goes to check a flag. A reader who wantsos devandos startrunning side by side reads line 70, concludes the two ports differ by default, and does not pass-p. What actually happens is that the second one collides on 3000 and silently moves to 3001 — so the reader's mental model of which server is on which port is wrong, and nothing errors to tell them.Scope
Line 70's comment, plus whatever the honest replacement needs. Two things to decide, neither of them large:
# port 3000and leave the fallback to the quickstart. A code-block comment is a poor place for two sentences; a short line under the block is the alternative.os dev -p 4002on line 71 stays as the flag example. It is not wrong —-ptakes any port — but 4002 was presumably chosen to read as "3002 plus a bit", so it may want to become 4000 once the default is corrected. Cosmetic, and explicitly not a reason to widen.⛔ Do not sweep the locale siblings.
quickstart.de/es/fr/ja/ko/zh-Hans/zh-Hant.mdxall still carry the 3002 banner and prose. Translations are never a dev agent's output in this repo and locale siblings go stale by design — they are the translation pass's input, not this card's.Re-check
Related: #143 (the measurement), #141 (the card that watches this page's version-pinned claims), #150 (same file, deletes the
os studiosection four lines below).