Skip to content

docs(failure-domains): name domains with labels instead of integer ids - #184

Merged
noctarius merged 4 commits into
mainfrom
fd-labels
Aug 21, 2026
Merged

docs(failure-domains): name domains with labels instead of integer ids#184
noctarius merged 4 commits into
mainfrom
fd-labels

Conversation

@schmidt-scaled

Copy link
Copy Markdown
Contributor

Documents the failure-domain / physical labels feature built on simplyblock/sbcli branch feature/fd-labels (commit d9732101).

What changes for the operator

sn add-node --failure-domain takes a labelRACK1, AZ2, HOST1 — instead of a non-negative integer. The integer is still the internal identity (placement, the distrib cluster map and the expansion planner all key off it, and the v2 API keeps its integer failure_domain field, now alongside failure_domain_label), but operators no longer invent or track it.

Pages touched

  • architecture/concepts/failure-domains.md — domains are named rather than numbered; the label→id mapping is described as an internal detail.
  • non-kubernetes/operations/failure-domains.md — examples switched to RACK1/RACK2; two new sections:
    • Label Syntax — a letter followed by up to 31 of [A-Z0-9_-], case-insensitive, stored upper-cased.
    • Labels on Existing Clusters — initialization through cluster update, which names each id in service FD<id> / HOST<id>. Idempotent, so a later rename survives; refuses to take a derived name already owned by a different id.

Compatibility, documented explicitly

An all-digits --failure-domain value is still read as the internal id, so existing scripts, CI bootstraps and the Kubernetes operator keep working unchanged. The node list's Failure Domain column shows the label and falls back to the id for a cluster that has not been initialized.

Notes for review

  • Base is main: this repo has no dev branch (default is main, with releases cut to release/* / R25.*). Happy to retarget.
  • reference/operator/reference.md is generated CRD documentation and is untouched — the Kubernetes failureDomain field lives in the operator repo and would need its own change to accept labels.
  • Ships with the sbcli branch; merge order should follow whenever that lands.

🤖 Generated with Claude Code

@github-actions

Copy link
Copy Markdown
Contributor

🤖: Deployment available as https://docstest.simplyblock.io/fd-labels

"Data center" and "datacenter" are both correct English, which is why
the documentation carried six of the first and none of the second. Only
one of them can be the house spelling, and the one-word form is picked.

check-prose.py gains a one-word-compound rule for the class of compounds
that have two accepted spellings. It matches the spaced and the
hyphenated form together with a trailing plural "s", keeps a leading
capital through the rewrite so a heading and the start of a sentence
survive it, and reports the finding as the house decision it is rather
than as a misspelling.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
`sn add-node --failure-domain` takes a label (`RACK1`, `AZ2`, `HOST1`)
rather than a non-negative integer. The integer stays the internal
identity that placement, the distrib cluster map and the expansion
planner key off, and the v2 API keeps its integer `failure_domain`
field, but it no longer has to be invented or tracked by hand.

Two sections are new on the operations page. "Label Syntax" gives the
grammar: a letter followed by up to 31 of `[A-Z0-9_-]`, case-insensitive
and stored upper-cased. "Labels on Existing Clusters" covers
initialization through `cluster update`, which names every id in service
`FD<id>` or `HOST<id>`. It is idempotent, so a later rename survives, and
it refuses to take a derived name already owned by a different id.

An all-digits value is still read as the internal id, so existing
scripts, CI bootstraps and the Kubernetes operator keep working
unchanged. The node list's Failure Domain column shows the label and
falls back to the id for a cluster that has not been initialized.

`reference/operator/reference.md` is generated CRD documentation and is
untouched: the Kubernetes `failureDomain` field lives in the operator
repository and needs its own change to accept labels.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

🤖: Deployment available as https://docstest.simplyblock.io/fd-labels

noctarius and others added 2 commits August 21, 2026 21:18
"However the volume stays online" reads as a sentence about however many
volumes until the verb arrives and the reader has to start over. The
comma is what marks the word as a comment on the sentence rather than as
part of it, and the documentation already wrote it that way in 37 of 37
"However" and 17 of 17 "Therefore". The eight places that did not are
corrected here.

check-prose.py gains an introductory-comma rule over two lists. A
connective ("However", "Therefore", "Otherwise", "By default") can only
join clauses and is reported whatever follows it. A sentence adverb
("Internally", "Typically", "Today", "Now") can also modify the word
behind it, so it is reported only where no participle or adjective
follows and "Initially developed by Google" stays as it is.

Guarded against three shapes that must not take the comma: the phrase
continued into a preposition or a conjunction ("Instead of", "Now that",
"Together with", "In addition to", "However many"), the adverb modifying
the word behind it, and the bold subject of a list item. "Then" and
"First" are left out entirely, since they number the steps of a
procedure and take no comma there.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The skill is what a writer reads before a page, so a rule the gate
enforces has to be findable there and not only in the checker. Adds the
introductory comma with the three shapes that are exempt from it, and
the one-word compound with "datacenter" as its first entry. The
punctuation section no longer counts itself as three habits.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

🤖: Deployment available as https://docstest.simplyblock.io/fd-labels

@noctarius
noctarius merged commit 109a3af into main Aug 21, 2026
4 checks passed
@noctarius
noctarius deleted the fd-labels branch August 21, 2026 19:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants