Skip to content

Correct stale status claims across landing/, docs/ and content/ (2026-09-26 sweep) - #1037

Merged
xerj-org merged 4 commits into
mainfrom
docs/status-sweep-2026-09-26
Sep 26, 2026
Merged

xerj-org merged 4 commits into
mainfrom
docs/status-sweep-2026-09-26

Conversation

@xerj-org

Copy link
Copy Markdown
Owner

Follow-up to #1033 (llms.txt) and the sibling docs PRs #1035 (CHANGELOG backfill) and #1036 (ROADMAP roll): the 2026-09-26 post-merge audit confirmed 58 stale-status findings across every other public surface. This PR fixes them all in one sweep.

What was stale and what it says now

How it was verified: 12 writer groups over disjoint file sets, each adversarially verified against git log, merged PR bodies, the CHANGELOG and the code each claim names; then a final gate — landing-constants-guard all checks passed, build_articles.py --check ok (189 outputs), gen_sitemap.py --check ok (178 URLs), stale-phrase greps ("no email handler", present-tense "local-directory simulation", "memory is the limit today", …) return zero hits. The diff touches only docs/, content/ and landing/ — no CHANGELOG, ROADMAP or engine changes (the CHANGELOG entry for this PR is added in-PR).

Audit provenance: 70-agent post-merge audit of 2026-09-26 (58 confirmed findings); the fact sheet each writer worked from is /tmp/docfindings/FACTS.md, not re-asserted here — every claim in the diff names its own source.

…-09-26)

rc.75-rc.77 shipped rerank, share links, mail ingest, S3-as-index-home and
the #1002/#975/#1023 measurements, and the 2026-09-26 post-merge audit
(58 confirmed findings) found nearly every public surface still denying or
misstating them. llms.txt had been fixed by #1033; this sweep is the rest.

- llms-full.txt: NOT-IMPLEMENTED block rolled to the rc.77 reality (object
  storage removed from it; remaining rows re-stamped 2026-09-26 after
  re-reading the code); the #1017/#1009 dates corrected to each commit's
  own git timestamp; the ellipsis results-URL expanded to a real link.
- ZERO_TOKEN_DIRECTION.md: rerank run pointers now name the actual
  benchmark dirs (RERANK.md carries only the pilot); the autoindex
  resilience row rolled to "fixed in rc.75 (#934)"; object-storage row
  already said rc.77 - kept.
- XERJ_VS_LUCENE.md: _update_by_query "hard-capped at 10,000 hits"
  replaced with the post-#1023 _id-keyset search_after paging.
- docs/RERANK.md: the "min_score means the same thing on every query"
  claim and the min_score example replaced with the measured calibration
  (ECE 0.10-0.31; rank by the probability, never threshold it); the
  egress inventory now records that storage.backend = "s3" writes index
  bundles since rc.77.
- docs/recipes/mail-takeout-mbox.md and the takeout answer: pre-#1002
  memory numbers reframed as dated before-state with the #1002 fix and
  the #1032 residual named.
- answers/compare pages: "no email handler / no mbox handler" blanket
  claims replaced everywhere (mbox/.eml shipped rc.75; PST/Maildir still
  unreadable); capabilities tables and FAQs updated to match.
- does-xerj-support-s3-alerting-plugins: the page llms.txt:50 cites as
  proof of the S3 status still said the opposite - rolled to the rc.77
  reality (both directions work, one remaining startup refusal: an
  unnamed s3_bucket), with the correction stated in the open.
- docs/SCRIPTING.md: every code anchor re-pinned after #1023 and the
  index.rs refactors (script query 26502->43775, script_score 33162->
  51918, script_fields es_compat 11051->14069, fault capture 977->997).
- Landing twins, both compare/answers hubs and the sitemap regenerated
  via scripts/seo/build_articles.py --write; landing/llms.txt article
  index regenerated (title change propagation, 88 files).

Verification: per-group adversarial review (12 groups), then a final
gate - landing-constants-guard all checks passed; build_articles.py
--check ok (189 outputs, 92 articles); gen_sitemap.py --check ok (178
URLs); stale-phrase greps ("no email handler", "local-directory
simulation" as present tense, "memory is the limit today", ...) return
zero hits; the diff touches only docs/, content/ and landing/ - no
CHANGELOG, ROADMAP or engine changes. CHANGELOG entry follows after
rebase on #1035 (single-writer rule on that file).
@cla-bot cla-bot Bot added the cla-signed label Sep 26, 2026
Two CI failures on the sweep commit, both legitimate catches:

1. xerj-rerank egress_inventory::the_status_statement_names_every_node_
   path_and_the_docs_quote_it requires docs/RERANK.md to quote
   xerj_rerank::DATA_EGRESS verbatim, and the sweep had reworded the doc
   without touching the const. The const was the stale side anyway: it
   still said "the `S3Backend` client, which nothing on the segment path
   constructs today" - false since rc.77 (#1008 closing #965 wired the
   segment path to the backend, and index bundles carry stored document
   text). Fixed at the source of truth: DATA_EGRESS now carves the
   exception explicitly ("One exception, since v1.0.0-rc.77: ... as the
   index's home rather than a third-party egress"), the doc quotes the
   new value verbatim, the published egress table's object-storage row
   and the air-gapped recipe row are rolled to the rc.77 reality (the
   recipe keeps its air-gapped guidance: keep `local`, or point the
   backend at an on-prem endpoint), and "nothing on the segment path
   constructs" joins FALSE_CLAIMS so it cannot come back on any
   published surface. The KNOWN-table comment that still said the
   backend "refuses to start" is corrected too.

2. gen_sitemap.py derives lastmod from each page file's last commit
   date, so the sweep commit bumped 94 URLs' lastmod after the gate had
   checked the pre-commit state; landing/sitemap.xml is regenerated
   (178 URLs, 20141 bytes).

Verified locally: the doc contains the new 1,201-char const value
byte-for-byte; the FALSE_CLAIMS grep over every surface in the test's
list returns zero hits; gen_sitemap --check and build_articles --check
pass post-commit.
The Technical SEO gate failed on 880318b with 4 ERRORs, all on
content/answers/does-xerj-support-s3-alerting-plugins.md — the page the
sweep rewrote to say the index CAN live in a bucket since v1.0.0-rc.77
(#1008 closing #965). The rules still encoded the pre-rc.77 fact, so the
TRUE statements tripped the false-claim gate:

  FC-S3-INDEX-IN-BUCKET x2 — \"an index can live in an S3-compatible
  bucket (storage.backend = \"s3\")\" and \"Storing the index in a bucket
  works, since v1.0.0-rc.77\"; the rule reason still said
  storage.backend = \"s3\" is \"rejected at startup\".
  FC-ALERTING — \"Alerting and user-supplied plugins are still not
  implemented\": _neg_near required is/are + \"not implemented\" to be
  adjacent, and \"are still not\" fell between them.
  FC-S3-BACKUP — \"snapshot.json catalogue\": the word \"snapshot\" put a
  real rc.77 artifact name into backup context.

Same repair pattern as the DATA_EGRESS fix in d3fa17d: change the
enforcement and the fact together, never weaken the enforcement to let a
stale doc through.

- FC-S3-INDEX-IN-BUCKET: premise comment, reason, evidence and rewrite
  now state the split truth (autoindex never puts an index in a bucket;
  storage.backend = \"s3\" is the opt-in bucket home since rc.77; the WAL
  stays local in every configuration; default is local). New
  paragraph-scoped exemptions for the qualified phrasings:
  storage.backend / storage.s3_bucket, since v1.0.0-rc.77 / rc.77,
  [#1008], ZBM1 / snapshot.json. An article that names the knob in one
  paragraph still cannot claim an unqualified index-in-bucket in another.
- _neg_near: \"is/are (still|yet) not\" and \"is/are (still|yet) not
  implemented/...\" — the honest \"are still not implemented\" phrasing
  must never trip, in any rule using the helper.
- FC-S3-BACKUP: snapshot.json named verbatim is the rc.77 publication
  catalogue, not the _snapshot repository feature the rule guards.
- S3 THING-matrix gate: \"never imply the index lives in the bucket\" now
  carries the rc.77 opt-in exception with the knob named.

Verified locally, exactly as CI runs them:
  factcheck.py --self-test       -> 56 rules OK
  factcheck.py --fixture-check   -> 58 TP / 0 FN / 0 FP (26 fixtures;
                                    bad_s3_index_in_bucket still trips,
                                    good_s3_source_honest still clean)
  factcheck.py --fail-on error   -> 92 files, 0 ERROR (was 4), 93 WARN
@xerj-org
xerj-org merged commit cb76fe5 into main Sep 26, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant