✔ the same commit, repo path and mapping return the same index, and only mapped files are in it (38.910506ms)
✔ a different repo path, mapping or commit gets its own index (58.789692ms)
✔ the cache holds at most eight indexes and evicts the least recently used (78.224098ms)
✔ a failed read is not kept in the cache (15.140975ms)
✔ a missing or unchecked mapping is refused before any read (12.020832ms)
✔ a 3,000-file rebuild completes and its time is reported (2900.628078ms)
ℹ 3,000-file index rebuild: 2680 ms
✔ resolver step 1: a path from the repo root, with or without .md (1.1254ms)
✔ resolver step 2: the same path with vaultPrefix/ stripped (0.211505ms)
✔ resolver step 3: a path relative to the linking file, never above the repo root (0.200699ms)
✔ resolver step 4: a base name that matches exactly one indexed file (0.260396ms)
✔ a link into another of her repos resolves to nothing (0.191988ms)
✔ wikilink forms, embeds, and links skipped inside code (1.098741ms)
✔ only a body embed whose target has an extension other than .md, in any case, is an attachment (0.349473ms)
✔ the fixture mapping checks and comes back frozen (2.412937ms)
✔ C2-01c: a prefix inside or holding another entry's book refuses library-playground-other-universe (1.155505ms)
✔ C2-01c: a prefix equal to a book folder, or holding its own, refuses library-mapping-invalid (0.650366ms)
✔ C2-01c: universe-level prefixes lie outside every book, in a plain universe and in a hybrid with no books (0.710421ms)
✔ C2-01c: a draft takes kind, name and playground only, and comes back frozen with books [] (1.484212ms)
✔ C2-01d: supporting prefixes at book level, universe level, in a hybrid and in a draft, [] when absent (0.537029ms)
✔ C2-01d: each supporting prefix rule refuses with its code (1.971647ms)
✔ C2-01d: between the lists, a supporting prefix may equal its own playground, and a playground may hold its own supporting (0.392589ms)
✔ C2-01d: editor is optional, kept when given, and refuses anything but a plain name and email (5.280718ms)
✔ C2-01d: an accepted editor round-trips through a real git commit unchanged (15.73724ms)
✔ no playground prefix holds another, and no book folder holds another (0.934567ms)
✔ shape refusals: kind, remote, branch, unknown keys, types, manuscript, folder names (1.116891ms)
✔ C2-03a sage-2021: user is optional, kept when given, and must be a plain account name (0.777602ms)
✔ a hybrid universe is a shape the query code can take (1.4), with sources that must exist (1.069424ms)
✔ a caller-supplied fail receives the code, as business file loading will pass it (C2-04) (0.375805ms)
✔ scope comes from the path alone (design 1.2) (0.696744ms)
✔ C2-04 mirror: exact default path, bare without checkout or remote, and idempotent initialization (59.246676ms)
✔ C2-04 mirror: simultaneous creators publish one intact mirror and leave no staging paths (42.751841ms)
✔ C2-04 mirror: skipped publication accepts both coreutils statuses without removing the winner (137.796639ms)
✔ C2-04 mirror: preserve occupied directories and reject symlink ancestors and code overlaps (16.53077ms)
✔ C2-04 mirror: existing metadata accepts only bare Git plus state and the precreated lock (29.399708ms)
✔ C2-04 state: missing state is empty only while the served ref is absent (51.916373ms)
✔ C2-04 state: valid problems and sync metadata return no content and change no state bytes (46.274776ms)
✔ C2-04 state: strict keys, types, times, branch, commit and fixed R messages fail closed (131.367058ms)
✔ C2-04 state: symlink, hardlink, non-private state and missing lock refuse without replacement (37.826957ms)
✔ C2-04 file: served commit, not HEAD or a caller commit, owns the exact returned text (84.427946ms)
✔ C2-04 file: R1, R2 and R7 exclusions and never-synced mirrors cannot return file bodies (100.550125ms)
✔ C2-04 lock: a first-sync and fast-forward reader wait for a consistent pair across processes (258.847103ms)
✔ C2-04 lock: same-process waits, timeout code, callback expiry and throw release (5032.288443ms)
✔ C2-04 lock: owner death releases the kernel lock without replacing its file (54.703792ms)
✔ C2-04 lock: a missing flock binary becomes a handled refusal (50.127819ms)
✔ C2-04 lock: an unawaited scoped read drains before the lock is released (19.957011ms)
✔ the query reply cap equals the harness reply cap (1.19734ms)
✔ find is bound to its universe and refuses a call without one (53.893139ms)
✔ every result carries its scope, and playground appears only when asked for (32.313169ms)
✔ unmapped files never appear in any reply (27.837074ms)
✔ a hybrid sees its sources canon, minus exclusions, and no playground (30.347014ms)
✔ a hybrid gets a source file it can see, and not an excluded or foreign one (41.713814ms)
✔ get lists visible links both ways and drops a target another universe cannot see (41.538976ms)
✔ a long list pages by position, never cuts an item, and returns 50 per page (162.791386ms)
✔ a page stays under the reply cap when items are large (78.463045ms)
✔ a search line too long to fit alone comes back marked, with no excerpt, and the other hits still return (29.164591ms)
✔ a find item that cannot fit alone is refused, not cut (28.322729ms)
✔ get pages its lines, and the next line picks up where the page stopped (30.368574ms)
✔ get refuses a file whose front matter alone is over the cap, and a line alone is over the cap (28.128026ms)
✔ get pages the links of a hub note, every page carries the front matter, and the pages add up (869.902906ms)
✔ get rejects a bad links_from (35.196585ms)
✔ search returns scoped line hits, case-insensitively, and refuses empty text (28.459891ms)
✔ a manuscript call returns one chapter, at most 400 lines, and names its next line (46.946258ms)
✔ a manuscript call without a chapter returns the first chapter in path order and names the next (26.573024ms)
✔ a chapter name that matches two visible files is refused (24.016997ms)
✔ a hybrid reads a source chapter through its declared sources only (35.070966ms)
✔ universe info reports a hybrid sources, constraints and notes, and refuses an unknown universe (13.168062ms)
✔ an exclusion hides what it names from a hybrid and from nothing else (36.359286ms)
✔ PRD 1.14: a lookup that names a book leaves book-null files out (30.463487ms)
✔ PRD 1.14: library_manuscript never reads a book-null file (29.534997ms)
✔ PRD 1.14: a draft universe has no canon, so its lookups return files only with scope playground (29.89583ms)
✔ PRD 1.14: library_universe on a draft returns its kind, name and prefixes (14.363564ms)
✔ a hybrid gets a source playground file as null, while the source gets it with scope playground (37.6646ms)
✔ the fixture reads clean: every resolver step, appears_in and relationships wikilinks indexed (48.455238ms)
✔ R1: executables, symlinks, gitlinks, blobs over 1 MiB and non-UTF-8 text are not indexed (76.694953ms)
✔ R2: unmapped paths are reported and not indexed (26.809308ms)
✔ R3: front matter not fully parsed stays raw, with the line where parsing stopped (31.113448ms)
✔ front matter forms the reader accepts and refuses (0.475374ms)
✔ R4: a link to no file, to more than one, or into another repo is reported and not followed (29.384746ms)
✔ a block list link carries its item line, a scalar or flow link its key line, and problems follow (28.900438ms)
✔ an unresolved attachment embed gives no problem; a link or front matter value to one is R4; a note embed resolves (29.126382ms)
✔ an indexed Dr.Quinn.md resolves as a body link, a block list link and an embed (29.274318ms)
✔ R5: a canon file that refers into the playground is reported, and the link still goes by path (29.580541ms)
✔ R6: a canon file that refers into another universe is reported; a hybrid may refer into its sources (24.571442ms)
✔ R7: two paths that differ only in case are both left out (31.165932ms)
✔ the reader reads the commit, never the working tree, and refuses a bad commit id (28.951224ms)
✔ a bare mirror reads the same as the clone (46.972003ms)
✔ renderItems snapshot: fact (1.417516ms)
✔ renderItems snapshot: finding (0.276536ms)
✔ renderItems snapshot: correction (0.22018ms)
✔ renderItems snapshot: question (0.181125ms)
✔ renderItems snapshot: idea (0.204383ms)
✔ renderItems numbers several items and takes a parsed body as well as a string (1.006969ms)
✔ without options a path cite has no badge and is never marked changed (0.236544ms)
✔ renderItems snapshot: notice no-cited-answer (0.194799ms)
✔ renderItems snapshot: notice no-answer (0.230859ms)
✔ renderItems snapshot: notice turn-failed (0.2386ms)
✔ a body without the reply shape shows a fixed line and none of its text (0.636756ms)
✔ C2-01c: each level gives its universe, and its book or null (3.423205ms)
✔ C2-01c: prefixes come first: in a book that holds a prefix, a file outside it is canon and one under it playground (0.57979ms)
✔ C2-01c: a canon file linking into a draft gives R6, and into its own universe-level prefix gives R5 (50.419041ms)
✔ C2-01d: each supporting level gives its universe, and its book or null (0.8375ms)
✔ C2-01d: supporting comes before playground; a folder in both lists is supporting, one in the playground only stays playground (0.479654ms)
✔ C2-01d: only .md files are supporting; a .canvas or .base under a supporting prefix is unmapped (0.290969ms)
✔ C2-01d: a path passes at book level, universe level, in a draft and in a folder in both lists (2.074148ms)
✔ C2-01d: a path of exactly 1024 bytes passes, and 1025 bytes made of multi-byte characters refuses (0.982879ms)
✔ C2-01d: a path outside the universe's supporting folders refuses (0.71389ms)
✔ C2-01d: malformed paths refuse by class, in order (0.646566ms)
✔ C2-01d: a symlink or gitlink on the way, or at the path itself, refuses (0.31072ms)
✔ C2-01d: a name that differs from a tree name only in case or Unicode form refuses, at the file or any folder (1.011818ms)
✔ the survey prints folder names, counts, key sets and link-form counts, and never text (49.619419ms)
✔ folder names print DEL, C1 and bidi controls, U+061C among them, as escapes (26.757812ms)
✔ an embed of an attachment counts as an embed and as an attachment; a plain link to one does not (19.118043ms)
✔ with --mapping the survey adds scope, resolver step and problem counts (41.583182ms)
✔ C2-01d: with --mapping the survey counts supporting files (37.584205ms)
✔ survey exit codes: usage 4, bad mapping 3, unreadable repo 2 (15.886586ms)
✔ scripts/mosaic library survey reaches the survey (98.91682ms)
✔ C2-03a argv: the fixed sequence, one https allow, no other protocol key (2.475406ms)
✔ C2-03a argv: only an https URL with a plain host, no userinfo, and a plain user (0.920886ms)
✔ C2-03a helper: answers only the exact prompts for the configured host and user (dewey-0765) (40.63027ms)
✔ C2-03a first sync: served is the fetched tip, HEAD is served, the survey reads it, and the token stays in the slot (164.393615ms)
✔ C2-03a fast-forward: served moves, problems are rebuilt, and a repeat changes only lastFetch (242.672377ms)
✔ C2-03a Filbert N2: a read that took served before a sync still finds its objects after served moves (201.409814ms)
✔ C2-03a overlap: a reader during a sync sees the old pair or the new one, never a mix (182.181215ms)
✔ C2-03a diverged: a non-fast-forward keeps serving and holds until a human accepts the tip (414.515618ms)
✔ C2-03a accept starts the record over, so a changed branch gets a fresh state (174.335397ms)
✔ C2-03a fetch failure: a wrong token keeps serving and records the error, lastFetch unchanged (200.468866ms)
✔ C2-03a a failed first fetch records the error with nothing served (60.013342ms)
✔ C2-03a a 302 to another host fails the fetch and the other host sees nothing (63.037701ms)
✔ C2-03a the slot: missing or unsafe refuses before git, and sync never opens it (59.780442ms)
✔ C2-03a sage-2021: an entry with no user refuses library-remote-invalid and runs no git (31.991782ms)
✔ C2-03a one sync per mirror: an overlapping call refuses library-sync-busy (127.65035ms)
✔ C2-03b argv: a push sends one full commit to the branch, fast-forward only, with the fetch prefix (0.498418ms)
✔ C2-03b T1 push: a fast-forward lands with the seat's own user and file, and moves no local ref (123.563433ms)
✔ C2-03b T2 and T3: a moved tip reports the race after one fetch, and a second race refuses stale-base (201.045487ms)
✔ C2-03b race fetch: while a sync of the mirror runs, the race refuses library-sync-busy (217.586092ms)
✔ C2-03b T4: a dead remote, a hook refusal and a wrong token each refuse library-push-failed (150.972736ms)
✔ C2-03b push: a refused, missing or unsafe credential runs no git (91.830589ms)
✔ C2-03b T10 humanCredential: her login and a 0600 slot library-human, or library-human-missing (0.868836ms)
✔ C2-03b fetch credential: the state names the kind and user, a refusal runs no git, and a pre-286 state still reads (134.468925ms)
✔ C2-03b T5 helper: the named seat's user and file, never a link, 0644, another uid, or a swapped file (27.628362ms)
ℹ tests 140
ℹ suites 0
ℹ pass 140
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 6220.993116
