[product-owner]
As a self-hosting operator reading the configuration reference, I want the numeric-variable caution box to state the actual guarantee once strict parsing lands, so that I am not warned about a truncation hazard that no longer exists.
Priority: Could Have
Blocked by: #1991
Problem
docs/src/getting-started/configuration.md currently tells operators that an invalid numeric value causes startup failure, qualified — per PR #2027 — with the caveat that a value beginning with digits is truncated rather than rejected (AUTH_RATE_LIMIT_MAX=2e3 silently becomes 2).
That qualification is accurate today and was written deliberately as true-of-today, not as though #1991 had already landed. Once #1991 merges, loadConfig() rejects 2e3, 20abc, 20.9, and ' 20' outright, and the caveat becomes conservative but still true — it warns about a hazard that no longer exists.
Note the ordering is safe in one direction only: the docs never lie, they just understate. There is no window in which an operator is misinformed, which is why this is a follow-up rather than a co-requisite of #1991.
Acceptance Criteria
Notes
[product-owner]
As a self-hosting operator reading the configuration reference, I want the numeric-variable caution box to state the actual guarantee once strict parsing lands, so that I am not warned about a truncation hazard that no longer exists.
Priority: Could Have
Blocked by: #1991
Problem
docs/src/getting-started/configuration.mdcurrently tells operators that an invalid numeric value causes startup failure, qualified — per PR #2027 — with the caveat that a value beginning with digits is truncated rather than rejected (AUTH_RATE_LIMIT_MAX=2e3silently becomes2).That qualification is accurate today and was written deliberately as true-of-today, not as though #1991 had already landed. Once #1991 merges,
loadConfig()rejects2e3,20abc,20.9, and' 20'outright, and the caveat becomes conservative but still true — it warns about a hazard that no longer exists.Note the ordering is safe in one direction only: the docs never lie, they just understate. There is no window in which an operator is misinformed, which is why this is a follow-up rather than a co-requisite of #1991.
Acceptance Criteria
PORT) fail with a range error, which is a different message from a parse error. Do not collapse the two into one claim.npm run docs:buildpasses (the release-timeonBrokenAnchors: 'throw'build), verified locally rather than inferred from a green PR — docs-only PRs make the CI gates green by vacuity.Notes
docs-writer. Docs-only change; no production code.