All checks were successful
CI / lint (push) Successful in 35s
CI / notebooks-smoke (push) Successful in 1m25s
Deploy / notebooks (push) Has been skipped
Deploy / zotero (push) Has been skipped
Deploy / docs (push) Has been skipped
Deploy / api (push) Has been skipped
Deploy / llm (push) Has been skipped
Deploy / mc (push) Has been skipped
Infra CI / notebooks (push) Successful in 58s
Infra CI / zotero (push) Successful in 18s
Infra CI / docs (push) Successful in 17s
Infra CI / api (push) Successful in 1m9s
Infra CI / llm (push) Successful in 45s
Infra CI / mc (push) Successful in 13s
Deploy / report (push) Successful in 13s
CI / test (push) Successful in 14m14s
The exporter read tags in a second query after the minutes-long item hydration; a tag edit landing in between (P37 controller tag ops during #618's suite run) produced a library.json whose item tags were missing from the tag list, failing test_tags_in_items_match_tag_list on every run until regeneration. The tag list is now derived from the serialized items themselves (self-consistent by construction) and the output file is swapped in atomically. Tests no longer assert on live data/bib.sqlite: TestExportLibrary exports a fixture store via new STACK_BIB_DB/STACK_LIBRARY_JSON overrides — the live-store contract is the docs build's own concern. Co-designed with a peer session that landed the derived-tags exporter.