You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Four things the review caught.
The MCP conf resource handed out the live config with no redaction. It
is the one surface whose full text leaves the machine by design — the
client, and from there a model provider — and a witness node's config
carries its signing key. Redact at the resource, not in the shared
helper: the drift tool reads the same helper and needs the raw text,
since a redacted side would report every witness node as drifted.
RedactWitnessLines decided array membership from line shapes, and two
shapes defeated it. A `]` inside the comment on the opening line ended
the array before it began and let the key through; an element that
closed the array left the scanner inside it, so every following line
came out as <REDACTED> and the diff said nothing. Find the values by
parsing instead — the config parser is already a dependency for
dbfork — and replace those literal strings wherever they appear, which
no formatting can dodge. The scan stays as the fallback for text that
does not parse, hardened to strip comments before the bracket checks.
Every nodeContext command was holding the exclusive state lock until
Close, including ones that never write: logs, wait, exec, files,
health, diagnose, verify-config. A `trond logs -f` left running would
block every other trond process on the host, and Acquire had no
deadline, so the wait was indefinite and unexplained. Split the resolve
path — readers take nothing, writers keep the lock across
load-modify-save — and bound the wait at 30s with an error that says
which process to look for.
Enabling provisioning mode made a discarded error live: ensureServiceUser
ignored useradd's result, which was invisible while the whitelist
refused the call. Check it, tolerating only "already exists" so
bootstrap stays re-runnable.
0 commit comments