✔ C2-06 reply schema: free bodies, exact objects and safe refusal reasons (28.003888ms)
✔ C2-06 citation setting and all four exact fixed texts (21.045692ms)
✔ C2-06 default citation cap passes 20 and refuses 21, even with optional citations (126.04528ms)
✔ C2-06 real Git citation scope, reachability, lines and normalized quotes (66.392856ms)
✔ C2-06 playground cites pass but cannot state canon (44.49242ms)
✔ C2-06 independent universes refuse; a hybrid and only its sources pass (67.755071ms)
✔ C2-06 web cites require allowed definition, this session fetch and kept quote (15.464462ms)
✔ C2-06 file origin is the path commit and trailer, while last follows served changes (44.735065ms)
✔ C2-06 origin uses literal paths even when a filename contains a glob (30.278601ms)
✔ C2-06 cited-commit guard reads exactly the C2-05a indexed file set with supporting scope (73.985591ms)
✔ C2-06 reply limits fall back independently without coercion or inherited keys (0.901096ms)
✔ the same commit, repo path and mapping return the same index, and only mapped files are in it (43.031945ms)
✔ a different repo path, mapping or commit gets its own index (62.379004ms)
✔ the cache holds at most eight indexes and evicts the least recently used (81.015448ms)
✔ a failed read is not kept in the cache (16.558322ms)
✔ a missing or unchecked mapping is refused before any read (16.776582ms)
✔ a 3,000-file rebuild completes and its time is reported (2913.682398ms)
ℹ 3,000-file index rebuild: 2686 ms
✔ resolver step 1: a path from the repo root, with or without .md (1.682426ms)
✔ resolver step 2: the same path with vaultPrefix/ stripped (0.245907ms)
✔ resolver step 3: a path relative to the linking file, never above the repo root (0.31513ms)
✔ resolver step 4: a base name that matches exactly one indexed file (0.266981ms)
✔ a link into another of her repos resolves to nothing (0.228833ms)
✔ wikilink forms, embeds, and links skipped inside code (1.090948ms)
✔ only a body embed whose target has an extension other than .md, in any case, is an attachment (0.429648ms)
✔ the fixture mapping checks and comes back frozen (2.634878ms)
✔ C2-01c: a prefix inside or holding another entry's book refuses library-playground-other-universe (1.288858ms)
✔ C2-01c: a prefix equal to a book folder, or holding its own, refuses library-mapping-invalid (0.680966ms)
✔ C2-01c: universe-level prefixes lie outside every book, in a plain universe and in a hybrid with no books (1.118575ms)
✔ C2-01c: a draft takes kind, name and playground only, and comes back frozen with books [] (1.847471ms)
✔ C2-01d: supporting prefixes at book level, universe level, in a hybrid and in a draft, [] when absent (0.593593ms)
✔ C2-01d: each supporting prefix rule refuses with its code (2.717292ms)
✔ C2-01d: between the lists, a supporting prefix may equal its own playground, and a playground may hold its own supporting (0.970028ms)
✔ C2-01d: editor is optional, kept when given, and refuses anything but a plain name and email (4.920413ms)
✔ C2-01d: an accepted editor round-trips through a real git commit unchanged (15.398133ms)
✔ no playground prefix holds another, and no book folder holds another (0.973169ms)
✔ shape refusals: kind, remote, branch, unknown keys, types, manuscript, folder names (1.339169ms)
✔ C2-03a sage-2021: user is optional, kept when given, and must be a plain account name (0.865552ms)
✔ a hybrid universe is a shape the query code can take (1.4), with sources that must exist (0.816839ms)
✔ a caller-supplied fail receives the code, as business file loading will pass it (C2-04) (0.758062ms)
✔ scope comes from the path alone (design 1.2) (0.675692ms)
✔ C2-04 mirror: exact default path, bare without checkout or remote, and idempotent initialization (62.823301ms)
✔ C2-04 mirror: simultaneous creators publish one intact mirror and leave no staging paths (46.233585ms)
✔ C2-04 mirror: skipped publication accepts both coreutils statuses without removing the winner (162.60028ms)
✔ C2-04 mirror: preserve occupied directories and reject symlink ancestors and code overlaps (21.270544ms)
✔ C2-04 mirror: existing metadata accepts only bare Git plus state and the precreated lock (36.661984ms)
✔ C2-04 state: missing state is empty only while the served ref is absent (47.894831ms)
✔ C2-04 state: valid problems and sync metadata return no content and change no state bytes (49.340483ms)
✔ C2-04 state: strict keys, types, times, branch, commit and fixed R messages fail closed (163.671158ms)
✔ C2-04 state: symlink, hardlink, non-private state and missing lock refuse without replacement (36.231483ms)
✔ C2-04 file: served commit, not HEAD or a caller commit, owns the exact returned text (90.635536ms)
✔ C2-04 file: R1, R2 and R7 exclusions and never-synced mirrors cannot return file bodies (101.742902ms)
✔ C2-04 lock: a first-sync and fast-forward reader wait for a consistent pair across processes (261.188968ms)
✔ C2-04 lock: same-process waits, timeout code, callback expiry and throw release (5038.235418ms)
✔ C2-04 lock: owner death releases the kernel lock without replacing its file (56.37892ms)
✔ C2-04 lock: a missing flock binary becomes a handled refusal (51.681108ms)
✔ C2-04 lock: an unawaited scoped read drains before the lock is released (20.080063ms)
✔ the query reply cap equals the harness reply cap (1.510727ms)
✔ find is bound to its universe and refuses a call without one (53.675302ms)
✔ every result carries its scope, and playground appears only when asked for (36.086213ms)
✔ unmapped files never appear in any reply (29.809614ms)
✔ a hybrid sees its sources canon, minus exclusions, and no playground (33.646028ms)
✔ a hybrid gets a source file it can see, and not an excluded or foreign one (47.029701ms)
✔ get lists visible links both ways and drops a target another universe cannot see (51.103924ms)
✔ a long list pages by position, never cuts an item, and returns 50 per page (185.729747ms)
✔ a page stays under the reply cap when items are large (95.490461ms)
✔ a search line too long to fit alone comes back marked, with no excerpt, and the other hits still return (37.801786ms)
✔ a find item that cannot fit alone is refused, not cut (28.868136ms)
✔ get pages its lines, and the next line picks up where the page stopped (27.990934ms)
✔ get refuses a file whose front matter alone is over the cap, and a line alone is over the cap (28.093756ms)
✔ get pages the links of a hub note, every page carries the front matter, and the pages add up (884.411537ms)
✔ get rejects a bad links_from (27.936344ms)
✔ search returns scoped line hits, case-insensitively, and refuses empty text (23.951454ms)
✔ a manuscript call returns one chapter, at most 400 lines, and names its next line (42.904126ms)
✔ a manuscript call without a chapter returns the first chapter in path order and names the next (24.015228ms)
✔ a chapter name that matches two visible files is refused (25.891779ms)
✔ a hybrid reads a source chapter through its declared sources only (34.534149ms)
✔ universe info reports a hybrid sources, constraints and notes, and refuses an unknown universe (14.090719ms)
✔ an exclusion hides what it names from a hybrid and from nothing else (36.663788ms)
✔ PRD 1.14: a lookup that names a book leaves book-null files out (30.513917ms)
✔ PRD 1.14: library_manuscript never reads a book-null file (27.56989ms)
✔ PRD 1.14: a draft universe has no canon, so its lookups return files only with scope playground (28.262596ms)
✔ PRD 1.14: library_universe on a draft returns its kind, name and prefixes (15.832553ms)
✔ a hybrid gets a source playground file as null, while the source gets it with scope playground (35.848562ms)
✔ the fixture reads clean: every resolver step, appears_in and relationships wikilinks indexed (49.221641ms)
✔ R1: executables, symlinks, gitlinks, blobs over 1 MiB and non-UTF-8 text are not indexed (84.760167ms)
✔ R2: unmapped paths are reported and not indexed (30.905823ms)
✔ R3: front matter not fully parsed stays raw, with the line where parsing stopped (33.875953ms)
✔ front matter forms the reader accepts and refuses (0.554707ms)
✔ R4: a link to no file, to more than one, or into another repo is reported and not followed (37.910843ms)
✔ a block list link carries its item line, a scalar or flow link its key line, and problems follow (32.926599ms)
✔ an unresolved attachment embed gives no problem; a link or front matter value to one is R4; a note embed resolves (37.278062ms)
✔ an indexed Dr.Quinn.md resolves as a body link, a block list link and an embed (29.200585ms)
✔ R5: a canon file that refers into the playground is reported, and the link still goes by path (26.361841ms)
✔ R6: a canon file that refers into another universe is reported; a hybrid may refer into its sources (27.736593ms)
✔ R7: two paths that differ only in case are both left out (35.361268ms)
✔ the reader reads the commit, never the working tree, and refuses a bad commit id (37.268328ms)
✔ a bare mirror reads the same as the clone (55.462301ms)
✔ renderItems snapshot: fact (1.885942ms)
✔ renderItems snapshot: finding (0.298312ms)
✔ renderItems snapshot: correction (0.236105ms)
✔ renderItems snapshot: question (0.171529ms)
✔ renderItems snapshot: idea (0.239146ms)
✔ renderItems numbers several items and takes a parsed body as well as a string (1.567758ms)
✔ without options a path cite has no badge and is never marked changed (0.253967ms)
✔ renderItems snapshot: notice no-cited-answer (0.192699ms)
✔ renderItems snapshot: notice no-answer (0.203451ms)
✔ renderItems snapshot: notice turn-failed (0.747251ms)
✔ a body without the reply shape shows a fixed line and none of its text (0.592662ms)
✔ C2-01c: each level gives its universe, and its book or null (4.102997ms)
✔ C2-01c: prefixes come first: in a book that holds a prefix, a file outside it is canon and one under it playground (0.675921ms)
✔ C2-01c: a canon file linking into a draft gives R6, and into its own universe-level prefix gives R5 (50.830955ms)
✔ C2-01d: each supporting level gives its universe, and its book or null (0.738259ms)
✔ C2-01d: supporting comes before playground; a folder in both lists is supporting, one in the playground only stays playground (0.578763ms)
✔ C2-01d: only .md files are supporting; a .canvas or .base under a supporting prefix is unmapped (0.397031ms)
✔ C2-01d: a path passes at book level, universe level, in a draft and in a folder in both lists (1.859653ms)
✔ C2-01d: a path of exactly 1024 bytes passes, and 1025 bytes made of multi-byte characters refuses (0.840113ms)
✔ C2-01d: a path outside the universe's supporting folders refuses (0.513816ms)
✔ C2-01d: malformed paths refuse by class, in order (0.588374ms)
✔ C2-01d: a symlink or gitlink on the way, or at the path itself, refuses (0.323679ms)
✔ C2-01d: a name that differs from a tree name only in case or Unicode form refuses, at the file or any folder (1.020788ms)
✔ the survey prints folder names, counts, key sets and link-form counts, and never text (49.846298ms)
✔ folder names print DEL, C1 and bidi controls, U+061C among them, as escapes (30.524229ms)
✔ an embed of an attachment counts as an embed and as an attachment; a plain link to one does not (20.588834ms)
✔ with --mapping the survey adds scope, resolver step and problem counts (44.011611ms)
✔ C2-01d: with --mapping the survey counts supporting files (41.152592ms)
✔ survey exit codes: usage 4, bad mapping 3, unreadable repo 2 (17.992443ms)
✔ scripts/mosaic library survey reaches the survey (108.161485ms)
✔ C2-03a argv: the fixed sequence, one https allow, no other protocol key (2.526717ms)
✔ C2-03a argv: only an https URL with a plain host, no userinfo, and a plain user (1.030994ms)
✔ C2-03a helper: answers only the exact prompts for the configured host and user (dewey-0765) (46.027509ms)
✔ C2-03a first sync: served is the fetched tip, HEAD is served, the survey reads it, and the token stays in the slot (185.950419ms)
✔ C2-03a fast-forward: served moves, problems are rebuilt, and a repeat changes only lastFetch (276.021651ms)
✔ C2-03a Filbert N2: a read that took served before a sync still finds its objects after served moves (210.065762ms)
✔ C2-03a overlap: a reader during a sync sees the old pair or the new one, never a mix (188.532271ms)
✔ C2-03a diverged: a non-fast-forward keeps serving and holds until a human accepts the tip (414.085865ms)
✔ C2-03a accept starts the record over, so a changed branch gets a fresh state (167.820835ms)
✔ C2-03a fetch failure: a wrong token keeps serving and records the error, lastFetch unchanged (190.798597ms)
✔ C2-03a a failed first fetch records the error with nothing served (57.314417ms)
✔ C2-03a a 302 to another host fails the fetch and the other host sees nothing (60.064724ms)
✔ C2-03a the slot: missing or unsafe refuses before git, and sync never opens it (58.440867ms)
✔ C2-03a sage-2021: an entry with no user refuses library-remote-invalid and runs no git (28.972968ms)
✔ C2-03a one sync per mirror: an overlapping call refuses library-sync-busy (111.989426ms)
✔ C2-03b argv: a push sends one full commit to the branch, fast-forward only, with the fetch prefix (0.460384ms)
✔ C2-03b T1 push: a fast-forward lands with the seat's own user and file, and moves no local ref (107.416719ms)
✔ C2-03b T2 and T3: a moved tip reports the race after one fetch, and a second race refuses stale-base (186.993111ms)
✔ C2-03b race fetch: while a sync of the mirror runs, the race refuses library-sync-busy (210.609304ms)
✔ C2-03b T4: a dead remote, a hook refusal and a wrong token each refuse library-push-failed (170.455799ms)
✔ C2-03b push: a refused, missing or unsafe credential runs no git (91.174666ms)
✔ C2-03b T10 humanCredential: her login and a 0600 slot library-human, or library-human-missing (0.89536ms)
✔ C2-03b fetch credential: the state names the kind and user, a refusal runs no git, and a pre-286 state still reads (136.587793ms)
✔ C2-03b T5 helper: the named seat's user and file, never a link, 0644, another uid, or a swapped file (28.008316ms)
ℹ tests 151
ℹ suites 0
ℹ pass 151
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 6319.032827
