Repository navigation
Move the wiki site generator to onnx-genai-wiki - #1488
Merged
Merged
Conversation
The site is now published from justinchuby/onnx-genai-wiki, which mirrors this directory and derives an English edition from it, so readers get a bilingual site with a language switcher. This repository keeps what it was already the authority for — the notes themselves — and stops carrying a static site generator, its plugin lockfiles and its Node dependency tree, none of which have anything to do with the runtime. wiki/ stays the source of truth. Notes are still edited only here; the sync is one-directional, and the mirror is replaced wholesale on each run so that a page deleted here disappears there too. The corresponding warning is recorded in both wiki/README.md and the wiki maintenance note: an edit made directly to the mirror will be silently overwritten, which is the failure mode most likely to waste someone's afternoon. ci.yml no longer counts site/ as documentation-only. Leaving it would keep a path filter alive for a directory that cannot exist, and a stale filter that matches nothing reads as intent to someone changing it later. Wikilink validation still passes here — 145 links across 25 notes — using the validator that moved with the generator; the publishing repository runs it again on the mirror, and additionally requires the Chinese and English editions to emit exactly the same set of pages. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: c80f8522-983c-47f7-8241-2155a823aabe
🔴 Benchmark Regression DetectedComparison of criterion micro-benchmarks: PR head vs merge-base, measured on the same runner in the same job (base first → PR second).
Visual flags: Host infoWhat this cannot catch
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #1488 +/- ##
===========================================
- Coverage 82.10% 80.12% -1.99%
===========================================
Files 12 376 +364
Lines 5471 164127 +158656
Branches 5471 164127 +158656
===========================================
+ Hits 4492 131507 +127015
- Misses 780 27793 +27013
- Partials 199 4827 +4628
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
justinchuby
added a commit
that referenced
this pull request
Aug 25, 2026
…2052) Follow-up to #2036, merged earlier today. **The guard it shipped cannot see a stray *directory* at the root — and two of the seven historical instances are directories, one of them cited in #2036's own header.** ## The gap #2036 compares tracked files whose path contains no separator: ```bash git ls-files | grep -v '/' ``` A stray directory has no such path. `.commitmsg/m.txt` contains a separator, so it is discarded as "not at the root" — and the thing that *is* at the root, `.commitmsg`, never appears in `ls-files` output at all. The guard doesn't fail to complain; it affirmatively reports a clean root. Not hypothetical: `.commitmsg/` reached `main` as `faedea4d1`, removed three minutes later by `490b846c3` *"Remove accidentally tracked PR artifacts"*. #2036's header lists it, with the trailing slash. **I enumerated the instance and then validated against six arms that all used a file.** Naming an instance is not testing its shape. ## The fix Compare **first path segments** — a root file contributes itself, a nested file contributes its top-level directory: ```bash git -c core.quotePath=false ls-files | sed 's#/.*##' | LC_ALL=C sort -u ``` The allowlist gains the 20 tracked root directories (36 entries), and unlisted entries are labelled `(directory)` or `(symlink)` where they are one, because the remedy differs. ## The inventory, corrected by review I claimed six instances "found by walking every root path ever added, not by collecting what people reported". **The walk had the same blind spot as the guard** — it filtered to paths without a separator, so it could not see a stray directory either. Redone on first segments: | entry | added → removed | on `main` | |---|---|---| | `.msg.txt` | `39675330b` → `bbc193117` | 1.6h | | **`.commitmsg/`** | `faedea4d1` → `490b846c3` | 3m | | **`.goldens/`** | `faedea4d1` → `490b846c3` | 3m | | `.wa64.log` | `83a51bfa6` → `c07acaa78` | 17.2h | | `.commitmsg` | `e42fa9470` (#1881) → `398cff8e5` (#1999) | 19.8h | | `.pris_v4.log` | `589d48ffd` (#1951) → `7a6482c83` (#1975) | 1.3h | | `.body.md` | `79196f89d` (#2026) → `54625db9d` (#2036) | 2.7h | **Seven entries, six incidents** — `.commitmsg/` and `.goldens/` arrived and left together. `.goldens/` is the most on-point instance available (a directory removed as a "PR artifact") and my method could not see it. Excluded, with reasons recorded in the file rather than silently: `site` (moved to onnx-genai-wiki, #1488), `third_party` (oneDNN removal), and `abresults` — 131h on `main`, the longest of any, but added by a `docs(benchmarks): record the … result` commit that says it is recording a result. Intentional-when-added is the line; `.wa64.log` rode in on a `test(cpu):` commit that never mentions it. `.wa64.log` still matters beyond the count: it predates `.pris_v4.log` by two days, so `/*.log` in #1975 was reactive to the *second* log incident. No authorship attributed — squash-merge rewrites `%an` to the merging account, so it reads identically for all seven and says nothing about who staged the file. ## Validation — 15/15 Driving the script **extracted from the workflow YAML**, never a copy. | arm | rc | |---|---| | clean root | 0 — `Root is exactly the 36 allowlisted entr(ies).` | | **stray root directory → new guard** | **1**, labelled `(directory)` | | **same stray → #2036 guard + #2036 allowlist** | **0** — `Root is exactly the 16 allowlisted file(s).` | | `.goldens/`, the second directory instance | 1 | | duplicate allowlist entry → not reported stale | 0, warning names it | | root symlink | 1, labelled `(symlink)` | | stray root file / stale entry / comments-only / missing list | 1 / 1 / 1 / 1 | | nested file under an allowlisted dir | 0 | | non-ASCII root file, allowlisted | 0 | | new root directory allowlisted in-PR / not | 0 / 1 | | CRLF allowlist | 0 | Row 3 is the control and must pair **both** of #2036's halves. My first attempt paired the old guard with the *new* allowlist: it returned 1 and looked like coverage, but the 1 came from 20 directory entries reading as stale. ## Two instrument bugs in my own battery 1. **Wrong control**, above — a control that changes two things measures neither. 2. **The staging check had the defect the guard was fixed for.** Each arm asserts its input reached the index before believing the output, but that check used bare `git diff --cached --name-only`, which renders non-ASCII as `"caf\303\251.txt"` while the guard uses `core.quotePath=false`. It reported the non-ASCII arm VACUOUS against a setup that had worked. Opus caught exactly this in #2036's guard; it reappeared in the thing measuring the guard. ## Also fixed, from review - An entry listed twice left one copy unpaired in `comm` and was reported as "not present at the root" for a name that is. Deduped both sides; duplicates now raise a `::warning::` naming them. - `[ -d ]` follows symlinks, so a root symlink to a directory was labelled a directory and advised `git rm -r --cached`. `-L` tested first. - Recorded the cost of first-segment comparison: the guard sees **root children only**. Scratch under an already-blessed directory is invisible to it. ## Scope CI-config only — `.github/workflows/diff-guard.yml` and `.github/root-file-allowlist.txt`. No Rust, no runtime behaviour, no test changes. Adding a root entry, file or directory, means adding it to the allowlist in the same PR; the error message says so. --------- Co-authored-by: holden <holden@users.noreply.github.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
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.
The wiki site is now published from justinchuby/onnx-genai-wiki, so the static site generator comes out of this repository.
What moves
site/(Quartz, its plugin lockfiles, the build and validation scripts) and.github/workflows/wiki-pages.yml. All of it is now in the publishing repository, unchanged except for what the move required.What stays
wiki/— the notes themselves. This repository remains the source of truth for them, and they are still edited only here.How publishing works now
A scheduled workflow in the publishing repository mirrors
wiki/intocontent/zh/and writes a manifest of this repository's tracked paths so links intocrates/anddocs/can still be resolved and checked without a checkout. An English edition is derived from the Chinese pages, and both are published at/zh/and/en/with a language switcher.The mirror is replaced wholesale on each sync, so a page deleted here disappears there. The consequence is worth stating plainly, and it is recorded in both
wiki/README.mdand the wiki maintenance note: an edit made directly to the mirror is silently overwritten.The site is at https://www.justinchuby.com/onnx-genai-wiki/.
Why a sync rather than a submodule
Measured, not assumed: this repository's
.gitis about 229 MB andwiki/is about 212 KB. A submodule would clone all of it on every build to reach a thousandth of it, and could only reference the whole repository rather than one directory. Copying also givescontent/zha real commit history in the publishing repository, which is what the translation staleness check reads.Other changes here
.gitignoreloses thesite/quartzbuild-state entries.ci.ymlno longer countssite/*as documentation-only. A path filter for a directory that cannot exist reads as intent to whoever changes it next.Checked
Wikilink validation passes on
wiki/— 145 links across 25 notes — using the validator that moved with the generator. The publishing repository builds both languages from these exact pages: 4159 links across 146 pages per locale, identical page sets in the two editions, and every note carrying thelangfrom its frontmatter.One defect turned up in that build and is worth knowing about, because no check of the Markdown could have found it. Obsidian reads
#wordas an inline tag when it follows whitespace. The Chinese text writes、#864/#874(WDDM 回退), where the ideographic comma stops it being a tag; the natural English rendering is, #864/#874 (WDDM fallback), which produced a tag page called864/874in the English site and nowhere else. The publishing build now requires both locales to emit the same set of pages, since every page derives from something identical across the two trees.