-
Notifications
You must be signed in to change notification settings - Fork 1
docs: retire the warning sign from the five shipped operator docs (BACKLOG #1265) - #952
docs: retire the warning sign from the five shipped operator docs (BACKLOG #1265) #952wshallwshall merged 2 commits into
Conversation
...ocs (BACKLOG #1265) Replace 17 U+26A0 sites across SECURITY.md, PHI.md, INSTALL-GUIDE.md, DEPLOYMENT.md and CONNECTIONS.md with the word each sentence means: 5 WARNING, 5 CAUTION, 5 NOTE. Two of the 17 were cross-references pointing at the glyph itself, one of them 60 lines from its target. Those now name what they point at, which is the scope defect CLAUDE.md section 11 describes rather than a find-and-replace. tests/test_operator_docs_no_warning_sign.py pins the slice at zero and also refuses an orphan U+FE0F, since every glyph here trailed one and a stray selector reviews as clean. Its positive control is a planted string, not the ledger counts: the last slice of #1265 sweeps docs/BACKLOG.md, and a control there would then red this guard for the wrong reason. The guard is registered where it can actually run: tooling_manifest.txt (without it test_tooling_partition.py reds three required legs) and ci.yml DOC_GUARDS (its whole subject is Markdown, so the code-gated pytest legs skip the only change class that can break it). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Mk1rsUuxp823qZs4tecMd6
CLAUDE.md section 11 carried the filed 496 across 80 files at ae76b9f. Re-censused over git-tracked files at 172b132: 496 across 75 before this PR's sweep, 479 across 70 after it. Two rows of the filed table were instrument errors (SDS-3.8), and both are corrected in section 11 rather than in the ledger table, which is left standing so a later reader cannot re-derive it: - the web console was read as zero by counting packaging/. The console's source is messagefoundry_webconsole/, which carries 2. - there was no harness/ row at all, so 26 occurrences across 4 files sat outside every bucket. The filed buckets sum to 464 against a printed 496; the corrected ones sum to their own total. The distribution is written once, in section 11. The BACKLOG amendment records what landed and cites it rather than restating ten numbers (SDS-3.5). The item stays open. The two ledger files and the ADR decision are untouched and still sequenced last. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Mk1rsUuxp823qZs4tecMd6
wshallwshall
commented
Sep 7, 2026
Lander: re-ran the failed jobs on run 34062541550, and recording that here because the
test's own failure message requires it.
What failed: repo harness tests (windows-2025), one test against a green suite.
FAILED tests/test_worktree_gate_control_plane.py::test_a_RELATIVE_repository_token_composes_the_cd_prefix
- AssertionError: PWSH LAUNCH TIMED OUT after 45s (BACKLOG #1304).
1 failed, 3329 passed, 18 skipped, 8 xfailed, 12 warnings in 1196.24s (0:19:56)
Why this is not a defect in this PR: the failure is a pwsh child process launch that never
returns. No gate logic runs, so no assertion is evaluated. It is the known launch flake filed
as BACKLOG #1304, it lands on a different test name on every PR that hits it, and this PR's
diff does not touch the gate, the hook, or conftest.
The CI gate failure is the aggregator reporting the leg above, not an independent failure.
Honesty note, which is the reason this comment exists: BACKLOG #1304 is unfixed and its cause
is unmeasured. A green on this re-run is a green earned on a re-run of a known flake, not
evidence that anything was repaired. If the same marker reds again, this PR should be reported
as blocked by #1304 rather than re-run in a loop.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com
wshallwshall
commented
Sep 8, 2026
Lander note: rerunning the failed repo harness tests (windows-2025) job only, not the suite.
The failure is the BACKLOG #1304 pwsh launch timeout, which is a process launch that never
returned rather than an assertion about this branch. No gate logic ran, so it is not evidence
of a regression here.
Recording the rerun rather than doing it silently, because that test's own failure message
asks for exactly that: a manufactured green and an earned one are otherwise indistinguishable.
New evidence from PR 986, which instruments this timeout: on its own run both child streams
were empty and pwsh 7.6.5 resolved correctly, so it is not a missing interpreter, a bad PATH
or a crashed process -- it is a launch that never got scheduled. Consistent with the runner
contention this repository is under tonight.
This pull request is green and nobody has marked it read.
Every check that has reported is passing and the reviewed label is absent, so
a reviewer has read this is the only thing between it and a merge. Nothing else reports that, which is
why this comment exists (BACKLOG #1413).
To clear it, IN THIS ORDER:
- If the branch is behind
main, update it FIRST:gh pr update-branch --repo MEFORORG/MessageFoundry 952.
That push firessynchronize, andsynchronizeREMOVES thereviewedlabel. Labelling
before updating throws the label away and costs a round trip. - Read the diff.
gh pr edit 952 --repo MEFORORG/MessageFoundry --add-label reviewed
DO NOT TRIAGE THIS FROM mergeStateStatus. It returns one value with precedence, so BEHIND,
DIRTY and UNSTABLE each mask the missing check -- the requirement is invisible until you act on
something else. This check never reads that field; see scripts/ci/check_unread_prs.py.
A seat can find every pull request in this state in one call: gh pr list --label unread.
Adding reviewed withdraws unread: the label event re-evaluates this pull request,
and so does the next completion of a watched workflow. Those are the two edges that clear it, so a
change neither of them reports -- converting to a draft, say -- can leave the label standing until one
of them next happens.
The reviewed label is a PROCESS gate. It records that a step happened. It does not
establish that an independent party looked, and nothing here should be read as saying it does.
Uh oh!
There was an error while loading. Please reload this page.
Retires the warning sign (U+26A0) from the five shipped operator docs, which BACKLOG #1265 names
as its defensible first slice. The item stays open: the two ledger files and the ADR decision are
untouched and still sequenced last.
What changed
17 sites in
SECURITY.md,PHI.md,INSTALL-GUIDE.md,DEPLOYMENT.mdandCONNECTIONS.mdnowsay the word the sentence means. Not a mechanical substitution, so the words differ by meaning:
The 2 cross-references are the ones worth reading.
CONNECTIONS.mdsaid "see the [glyph]above" and "the whole point of the [glyph] above", the second one 60 lines from its target.
Neither told a reader which mark was meant. They now name the
[inbound]-versus-inbound(...)distinction they point at. That is the exact scope defect CLAUDE.md section 11 describes, so these
two are the argument for the sweep rather than a side effect of it.
CLAUDE.mdsection 11 now carries a fresh census. The BACKLOG item gets a dated amendment.The three required proofs
1. Census, ledger counts as the positive control. Counted over git-tracked files decoded as
UTF-8, at
172b1327c.The slice reaches zero while the control still reports non-zero on the same pass, so the zeros
are the files and not a dead pattern.
2. The grep escape was avoided rather than survived. No shell pattern was used. The census and
the test both build the codepoint in Python (
chr(0x26A0),"\N{WARNING SIGN}"), so no non-ASCIIbyte and no
\uescape ever crossed a shell. The instrument was still checked against the figureeveryone agrees on before any zero was trusted: it reproduces
docs/BACKLOG.mdat 127 andBACKLOG-CLOSED.mdat 93.3.
backlog_status_check.pystill passes at its full item count. Identical before and afterthe amendment:
OK - 679 backlog items, each declaring exactly one status, scanningdocs/BACKLOG.md(442) andBACKLOG-CLOSED.md(237), exit 0. The one advisory warning ispre-existing (#1426, unrelated).
parse_itemsreports #1265 stillopen,closed=[]- exactlyone status banner.
Two rows of the filed census table are wrong, and both are left standing
Corrected in CLAUDE.md section 11, not edited in the ledger table, because the wrong version is
what a later reader would otherwise re-derive. Both are SDS-3.8, an answer to an adjacent question:
packaging/. Theconsole's source is
messagefoundry_webconsole/(36 tracked files), which carries 2 -_external.pyandroutes/oidc.py. The item's prose claim "the web console has NONE" isfalse at this ref.
harness/row at all, so 26 occurrences across 4 files sat outside everybucket. The filed buckets sum to 464 against a printed 496; the corrected ones sum to 479.
My file count (75) differs from both the filed 80 and the re-scored 81. I did not chase the
difference: my denominator is stated (git-tracked, UTF-8 decodable) and the buckets sum to the
total, which the filed ones do not.
Decisions the brief left open
tests/test_operator_docs_no_warning_sign.py, and registered itin two places the brief did not mention. Both were necessary rather than optional:
tests/tooling_manifest.txt(without the entrytest_tooling_partition.pyfails, reddeningthree required legs - measured) and
ci.ymlDOC_GUARDS(the guard's whole subject isMarkdown, so the
code == 'true'gated pytest legs skip the only change class that can breakit - the docs-only blind spot the step's own comment records twice).
docs/BACKLOG.md. Borrowingthe ledger's 127 would make this guard red for the wrong reason the day the last slice of #1265
lands.
stray variation selector is invisible in review.
_SWEPTholds repo-relative paths, not bare names, so a later slice extends it by adding aline. What remains is not all under
docs/.markdown line-length lint, and at least four other live sessions have these files open, so a
minimal diff is worth more than a tidy wrap.
Checks
ruff check/ruff format --checkmypystrict, CI scope (messagefoundry messagefoundry_webconsole)mypystrict on the new testtests/)pre-commit(both commits)--no-verifypytest -qRed-first counted by case, not by "something went red". Reverting the five docs to their
pre-sweep content and running the new module gave 10 failed, 1 passed: the 5 glyph cases and
the 5 orphan-selector cases, each naming its file, with the positive control the single pass. The
control passing is what makes the 10 reds mean the files rather than a broken scanner.
The full suite did not finish, and I am not claiming it passed. Two runs against the committed
tree were killed by the host for memory pressure, not by a test - this box is running a dozen or
more concurrent sessions. The first reached 57% with 3156 passed, 45 skipped, 0 F, 0 E
(counted off the progress characters, not inferred from the absence of a summary line); the second
was killed at 4% with the same shape. That is partial evidence, not a pass. I stopped after two
attempts rather than grind.
What makes this a low-risk gap rather than an unknown: the change touches no engine code. It is
five Markdown files, two ledger/record documents, one new test, one manifest line and one workflow
line. Every test that can read those files was run to completion and named above.
Legs a Builder cannot see, which must be read on the runner:
windows-service-smoke(NSSM),and the docs-only lane itself - this PR changes
DOC_GUARDS, so the doc-guards step's membershipand the
toolingjob's manifest gate should both be confirmed green there.Concurrency
Ten or more live sessions have these files open.
tooling_manifest.txthad uncommitted changesin another worktree when I edited it; I compared the entry sets first - that session adds
test_verdict_divergence_advisory.py24 lines away from my insertion, so the two additions mergecleanly.
SECURITY.md,PHI.md,CONNECTIONS.md,BACKLOG.mdandci.ymlall carry committedchanges on other branches. My edits are single-line and glyph-scoped, but a rebase is likely.
Merge safety
mainmoved one commit under this branch (ebdfa44a6), touchingdocs/BACKLOG.mdanddocs/CONNECTIONS.md.git merge-tree --write-tree origin/main HEADexits 0: both auto-merge,no conflict. A clean merge is not the question that matters though, so the merged tree was
censused directly - all five swept files are still 0, and the control still reads 127. The PR
shows
BEHIND, notCONFLICTING.Two things found in passing, outside this slice
Named rather than numbered, since I have allocated neither.
ref:
docs/CONNECTIONS.mdcarries 124 U+2705, 18 U+274C and 3 U+23F3 in its connector-paritytable, and
docs/PHI.mdcarries 2 U+2705. CLAUDE.md section 11 says nothing outsideBACKLOG.mdandBACKLOG-CLOSED.mdmay adopt that vocabulary. That is a differentpopulation from #1265 and wants its own item. The new test's docstring says so explicitly, so
nobody reads a green run here as covering it.
up, 496 to 499 in six days with nobody sweeping. A prose number in two documents, verified by
nothing, is the instrument that already failed here twice. The repo's idiom for this is a
checked-in baseline the guard re-derives and ratchets downward
(
scripts/quality/username_access_key_baseline.txt,scripts/docs/asvs_tally_baseline.txt).Deliberately not built here - it is machinery for the whole population, and this brief scoped me
to one slice.
Generated with Claude Code
https://claude.ai/code/session_01Mk1rsUuxp823qZs4tecMd6