The hostile input tests compared elapsed time against fixed limits, so
they measured the machine as well as the code. They fail on slower or
loaded builders, such as the nixpkgs x86_64-linux check phase, even
though rendering stays linear.
Compare the CPU time of an input against one four times as long
instead. Linear rendering gives about 4 and a quadratic regression
about 16. CPU time is needed because a wall-clock ratio inflates under
bursty load, when a short run fits between bursts and a long one does
not.
Rendering past the reference limit gets its own test, since the link
count cannot catch a limit that stops linking but keeps rescanning.
The bare reference test now puts a valid reference before the long
run, so giving up is visible in the result without any timing.
AI-assisted: Claude Code (claude-opus-5-5)
- Decide in ADR 0004 to always open releases on Delegates
- Drop the fallback to Others in lists and releases
- Show the Others filter whenever it has content
- Name the scope in the empty artifacts message
- Open Others in the e2e test of an artifact by a non-delegate,
which no longer opens there by itself
Extracts the avatar components and the style tokens into shared/ui, which
both apps consume as a workspace package, to try out ADR 2. Nix and the
Docker setups are not updated yet.
When a revision's head is already part of its base, the Changes view
showed an empty commits column and "0 files modified". In practice this
is a patch branch pushed after its work already landed, which also marks
the patch merged at that commit even when the work landed after it. Show
an empty state that says so and links to the last revision with changes.
This also fixes switching revisions leaving the previous revision's
single commit selected.
Co-authored-by: Rūdolfs Ošiņš <rudolfs@osins.org>
The sanitizer allowlist strips KaTeX's markup, and index.html never
loaded katex.min.css, so math has only ever shown up as flat text. We
now typeset math after sanitizing and load the stylesheet.