Some checks failed
CI / skinny-install (bib) (push) Successful in 34s
CI / skinny-install (cli) (push) Successful in 32s
CI / skinny-install (cms) (push) Successful in 27s
CI / skinny-install (conf) (push) Successful in 29s
CI / skinny-install (opps) (push) Successful in 31s
CI / skinny-install (perf) (push) Successful in 30s
CI / skinny-install (pfs) (push) Successful in 31s
Infra CI / notebooks (push) Successful in 7s
CI / skinny-install (aco) (pull_request) Successful in 52s
CI / lint-test (pull_request) Failing after 1m18s
CI / skinny-install (api) (pull_request) Successful in 26s
CI / skinny-install (bcda) (pull_request) Successful in 38s
CI / skinny-install (bib) (pull_request) Successful in 36s
CI / skinny-install (bls) (pull_request) Successful in 26s
CI / skinny-install (cli) (pull_request) Successful in 34s
CI / skinny-install (cms) (pull_request) Successful in 29s
CI / skinny-install (conf) (pull_request) Successful in 28s
CI / skinny-install (opps) (pull_request) Successful in 30s
CI / skinny-install (perf) (pull_request) Successful in 33s
CI / skinny-install (pfs) (pull_request) Successful in 33s
Infra CI / notebooks (pull_request) Successful in 7s
Infra CI / zotero (pull_request) Successful in 6s
Infra CI / docs (pull_request) Failing after 7s
Infra CI / api (pull_request) Successful in 8s
CI / skinny-install (aco) (push) Successful in 51s
CI / lint-test (push) Failing after 1m16s
CI / skinny-install (api) (push) Successful in 26s
CI / skinny-install (bcda) (push) Successful in 35s
CI / skinny-install (bls) (push) Successful in 23s
CI / skinny-install (ccw) (push) Successful in 32s
Infra CI / zotero (push) Successful in 10s
CI / skinny-install (rex) (push) Successful in 25s
Infra CI / docs (push) Failing after 9s
Infra CI / api (push) Successful in 9s
Infra CI / mc (push) Successful in 6s
CI / skinny-install (ccw) (pull_request) Successful in 32s
CI / skinny-install (rex) (pull_request) Successful in 25s
Infra CI / mc (pull_request) Successful in 7s
Centerpiece feature: machine-parseable :pincite: directives in function docstrings that link to specific pages, sections, or paragraphs of bibliography items, enabling a knowledge graph from regulatory source to function to table to column. Format: :pincite:`JX46GQ9L p.14` — NDC validation rules New module src/bib/pincite.py with 4 layers: - Parse: regex extraction of :pincite: directives, AST-based discovery of @nw.narwhalify functions, locator classification (page/section/cfr/ fr/chapter/paragraph) - Store: pincites table in bib.sqlite with upsert, query, tag sync (pin: and fn: namespaces), foreign key validation - Graph: CitationGraph with nodes (functions, items), edges (pincite rows), functions_citing/items_cited_by queries, mermaid and networkx export - Inject: format_pincite_block for References sections, inject_pincites_into_source for AST-located non-destructive docstring modification Schema: new pincites table with unique index on (fn_path, item_key, locator), FK cascade to items. Tag: new Tag.pin(key, locator) factory -> pin:KEY/locator Store: upsert_pincite, list_pincites, delete_pincites on Store class. 39 tests covering parse, classify, store, graph, inject, and check.