Skip to content
quarry Update of ”Audit after change”
Login

Update of ”Audit after change”

Overview

Artifact ID: bbad8c47a4f51dce832e827239f052ca1196e9b8333347ae7516c0a332b62dbe
Page Name:Audit after change
Date: 2026-08-21 19:53:05
Original User: dmestas
Mimetype:text/x-markdown
Content

Audit after change

Features that are rarely reached in ordinary use, so a regression goes unnoticed until someone lands on the one page that exercises them. After any change touching the areas named, walk the relevant checklist by hand — the automated coverage is listed where it exists, and its gaps are the point of this page.

Add an entry when you build something that (a) only shows up on unusual data, (b) has a no-script or progressive-enhancement path, or (c) depends on a browser behaviour a unit test cannot see.


1. Large-diff windowing (check-in page, /diff, /diff.frag)

Why rare: only a check-in with more than ~3,000 diff lines triggers it. Most check-ins render in one window and the whole mechanism is invisible.

Canonical case: fossil 62b38332f7e0d122dd5d6b19b6a89033ea7612a3d38876972015db876cb34b44 — a 600-file, 216K-line merge.

Touch points: internal/diff.Window / LastWindow, checkin.diff op (offset, maxLines, file, nextOffset, lastOffset, totalLines), diffWindow() and the diff-body / diff-more / diff-pager templates in internal/web/web.go, the #diff-more sentinel, diffBudget.

Checklist

Automated: internal/diff/window_test.go (contiguous chain, snapping, LastWindow agreement). Not automated: the intersect fetch, the <noscript> swap, the attribute name data-on-intersect (the data-on:intersect spelling silently does nothing in Datastar RC.7).


2. Changed-file list on very large check-ins

Why rare: same data as §1; lists under ~30 files look fine as a flat list, so a broken grouping only shows at scale.

Planned shape: directory tree with <details> groups collapsed past a threshold, A/M/D summary strip with status filters, multi-column rows inside open groups. When built, add its checklist here: groups collapsed/open by threshold, single-child directory compression, anchors still reach the diff sections (including not-yet-loaded windows), <details> works with scripting off.


3. Fleet fragment parity (/fleet.frag, /fleet.rev)

Why rare: the live fragment replaces the server-rendered listing moments after load; a field the fragment omits flashes and vanishes, which is easy to miss and looks like flicker.

Checklist

Automated: TestFleetFragmentCarriesEverythingThePageDoes.


4. Explore vs. personal dashboard routing

Why rare: / is the explore listing for anonymous readers and the personal dashboard for signed-in ones, so links that say / behave differently depending on who clicks them.

Checklist


5. Repository posture: mirrors, detached stores, refused writes

Why rare: the mirror/native distinction only shows on a forge that mirrors other projects, and the failure and detach states need an upstream to go away or an operator to act. Most pages are native repos where none of this renders.

Canonical case: any mirrored repo (/r/fossil, /r/wapp); a failing one is made by pointing a test mirror at https://dead.invalid/home and pulling once. Branch mirror-posture.

Touch points: oltp.SetMirror/DetachMirror/SetMirrorWrites, api.posture/mirrorState/Writable/refuseUnlessWritable, ops.ErrForbidden, xfer.SetWriteGate, the posture type and repobar template in internal/web/web.go, /fleet mirror table and #mirror-form, /new kind radios.

Checklist

Automated: internal/oltp/mirror_test.go, internal/api/mirror_posture_test.go. Not automated: the header/notice rendering, the link swaps, the fleet actions.


Conventions