Files
stack/tests
kert 5be2749d8f
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
feat: pydoc pincite — structured Zotero citations in docstrings
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.
2026-03-26 23:47:25 -04:00
..