Repository navigation
Correct stale status claims across landing/, docs/ and content/ (2026-09-26 sweep) - #1037
Merged
Merged
Conversation
…-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).
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
landing/llms-full.txt— the NOT-IMPLEMENTED block still denied object storage (rc.77 wired it, feat(storage): wire the index segment path to the object-storage backend (#965) #1008 closing Wire the index segment path to the object-storage backend (bundle a segment into one object first) #965) and carried a 2026-09-18 re-check stamp; the remaining three rows were re-verified against the code and the block re-stamped. The fix(#950): id-position maps from the __id projection; stream the stored reassembly #1017/fix(api): POST /{index}/_cache/clear releases the index's rebuildable caches (#950) #1009 "landed 2026-09-21" blanket date corrected to each commit's own timestamp; the ellipsis results-URL expanded to a real link.docs/ZERO_TOKEN_DIRECTION.md— rerank run pointers now name the actual benchmark dirs (RERANK.md carries only the pilot); the autoindex-resilience status row rolled to fixed in rc.75 (fix(autoindex): a refused dataset, a throttling node and an over-size catalog no longer end the run #934), matching ROADMAP and the CHANGELOG.docs/XERJ_VS_LUCENE.md—_update_by_query"hard-caps its fetch at 10,000 hits" replaced with the post-fix(#1022): _update_by_query pages the match set; exact sig-text/enrich counts #1023_id-keysetsearch_afterpaging.docs/RERANK.md— the "min_score is a threshold that means the same thing on every query" claim and its 0.5 example replaced with the measured calibration (ECE 0.10–0.31 across three BEIR corpora: rank by the probability, never threshold the raw value); the egress inventory now records thatstorage.backend = "s3"writes index bundles since rc.77.docs/recipes/mail-takeout-mbox.md, takeout answer — pre-fix(engine): #948 — prune published memtable entries, charge what they retain, bound merge batches, drain on breaker #1002 memory numbers reframed as dated before-state, with the fix(engine): #948 — prune published memtable entries, charge what they retain, bound merge batches, drain on breaker #1002 fix numbers and the engine: stored_value_cache / dv_cache / id_pos_cache remain unbounded until merge-retire — the residual heap-per-doc retention after #1002 #1032 residual named.content/answers/does-xerj-support-s3-alerting-plugins.md— the pagellms.txt:50cites as proof of the rc.77 S3 status still said the exact opposite ("local-directory simulation", "refuses to start", "Do not design for S3 as the INDEX store"). Rolled to the rc.77 reality with the correction stated in the open; alerting/plugins/corpus-packs sections kept (still accurate).docs/SCRIPTING.md— every code anchor re-pinned after fix(#1022): _update_by_query pages the match set; exact sig-text/enrich counts #1023 and theindex.rsrefactors (script query 26502→43775, script_score 33162→51918, script_fields 11051→14069, fault capture 977→997).scripts/seo/build_articles.py --write(88 files — the rerank title change propagates into every cross-listing).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-guardall checks passed,build_articles.py --checkok (189 outputs),gen_sitemap.py --checkok (178 URLs), stale-phrase greps ("no email handler", present-tense "local-directory simulation", "memory is the limit today", …) return zero hits. The diff touches onlydocs/,content/andlanding/— 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.