Purpose: The review cycle that stops develop/ui/ and develop/client/ from drifting away from the code they describe — and the prompt to run it with.
These pages make specific, checkable claims about a codebase that keeps moving. Any document like that is wrong eventually. The question is whether it is wrong knowably.
structs-webapp is the source of truth. Every page in develop/ui/ and
develop/client/ is written from it at the revision recorded in
.structs-webapp-version, and each page’s footer names the
commit it was verified against. When a page and the code disagree, the page is wrong.
Two artifacts hold the line:
| Artifact | Role |
|---|---|
generated/sui-inventory.md |
Machine-extracted tokens, icons, classes, modifiers and breakpoints. Both the writing source and the drift baseline |
scripts/check-webapp-drift.sh |
Diffs a fresh extract against that baseline, and lists commits per watched directory |
A weekly GitHub Actions job (.github/workflows/drift.yml) runs the check and posts the
report to the run summary. It is advisory — continue-on-error: true — because
upstream moving is normal and should never fail a build. It exists to make drift visible,
not to gate on it.
Ten minutes when nothing has changed; longer when the report has something to say.
# 1. Refresh the checkout and see what moved.
git -C .references/structs-webapp fetch
scripts/check-webapp-drift.sh --fetch
The report has two halves. Inventory changes are mechanical: a token renamed, an icon
added, a class removed. Commit surface is judgement: it names watched directories with
new commits and the pages that depend on them, because a behaviour change in
SigningQueueManager.js will never show up in a CSS diff.
# 2. If clean, you're done.
# If not, read what actually changed in the pages' subject areas.
git -C .references/structs-webapp log --oneline <pinned-sha>..HEAD -- src/js/sui
# 3. Re-verify the affected claims against source, then refresh the baseline.
scripts/gen-sui-inventory.sh
# 4. Bump .structs-webapp-version and the "Verified against" footers together.
Step 4 is the one that gets skipped. A footer claiming a revision the page was not re-verified against is worse than a stale footer, because it converts “possibly old” into “certified current” without anyone having done the certifying. If you refresh the inventory but do not re-read the affected prose, say so in the commit message and leave the footers alone.
Paste this into an agent session with the repository open:
Review
develop/ui/anddevelop/client/against the currentstructs-webapp.
- Run
scripts/check-webapp-drift.sh --fetchand read the report.- For every watched directory with commits since the pin, read the actual diff — not just the commit subjects — and decide whether it changes a claim any of these pages makes. Most commits won’t.
- For each claim that did change: fix the page, and verify the fix against source rather than against the commit message.
- Pay particular attention to the things these pages assert precisely, because they are the things most likely to have quietly moved: the fee constant and gas limit, the charge formula, the proof-of-work input string format and difficulty constants, the GRASS port and subject patterns, the PFP layer counts, the pagination slot logic, and the upstream-defects table in
develop/ui/gotchas.md— a defect that has been fixed upstream must be removed, not left as a warning about a problem that no longer exists.- Run
scripts/gen-sui-inventory.sh, then update.structs-webapp-versionand every “Verified against” footer only for pages you actually re-verified.- Run
bash scripts/ci/check-links.shand report what you changed and what you chose not to.
structs-webappis authoritative. If it contradicts these pages, the pages are wrong.
develop/ui/gotchas.md carries a table of real
bugs in SUI, with workarounds. That table is a liability if it is only ever appended to.
Report it upstream, then document the workaround. A defect documented here and never reported becomes permanent: every future reader works around it, and nobody fixes it. Opening an issue on the relevant repository costs a few minutes and is the only path by which the table ever gets shorter.
Each row should be removable. When a fix lands upstream, delete the row and the
corresponding block in examples/sui-patch.css — a patch
that overrides a bug which no longer exists is a new bug.
Distinguish a defect from a choice before you file anything. body { text-align:
center } looks like a bug from a dashboard author’s chair and is a deliberate decision
for the game’s short HUD strings. That belongs in gotchas as a surprise to work with, not
as something to report. SUIOffcanvas.setPlacement removing the class it is about to add
is unambiguously a bug.
The standard these pages are held to, in order of what counts:
gen-sui-inventory.sh is for, and why counts like “67 glyph icons” are trustworthy.sui-mod-solid) is neither, and should read as advice rather than
fact.That last one applies to reports from other agents too. Several claims that reached these pages arrived via field reports and subagent research; every mechanical one was re-checked against source before it was written down, and a few did not survive. Treat any report as a hypothesis worth testing, not as a finding.