Skip to content

Bump xbrlkit to 0.7.2 - #1365

Merged
jfrench9 merged 1 commit into
mainfrom
chore/bump-xbrlkit-0-7-2
Sep 8, 2026
Merged

Bump xbrlkit to 0.7.2#1365
jfrench9 merged 1 commit into
mainfrom
chore/bump-xbrlkit-0-7-2

Conversation

@jfrench9

@jfrench9 jfrench9 commented Sep 8, 2026

Copy link
Copy Markdown
Member

0.7.0 added the importers — a Tavi compiled model or a holon read back into XbrlModel, with no Arelle — and made the holon lossless against that model. 0.7.1 and 0.7.2 followed with fixes found by running real reports through both directions (including a RoboLedger report whose Tavi and holon disagreed about the same entity).

What changes here

FilingMeta.is_inline_xbrl is now bool | None — no effect on this pipeline. xbrl_graph.py:649 always sets it from EDGAR's isInlineXBRL, so the Report row and its parquet column are unchanged. It's None only for a model that came from an importer, which genuinely cannot know.

to_holon(XbrlModel) writes a different document. Each report now binds the namespaces its own concepts declare, so:

  • a filer's extension concepts compact to ba:Foo instead of spelling out https://robosystems.ai/concept/ba:Foo
  • a us-gaap concept resolves to http://fasb.org/us-gaap/2024-01-31#Revenues rather than a year-less IRI FASB never minted
  • every label role is present, not just the preferred one
  • dataType, baseType, nillable, language, isNil, periodEndDate are new
  • the file comes out ~10% larger — the compaction saves bytes, the full label palette costs more than it saves (Boeing 9,995 → 11,009 KiB, NVIDIA 4,917 → 5,455 KiB, same filing on 0.6.0 vs 0.7.2)

Consumers key on rs:internalId — the holon viewer's describeReport.ts and xbrlkit.query both do — so nothing reads differently. But artifacts.py publishes {year}/{cik}/{accession}/holon.jsonld to the CDN, so those should be regenerated once rather than leaving two shapes in place. Not part of this PR.

The StatementBundle holon path is untouched — its URI minting kept the old prefix table as the default, so RoboLedger's live-report holons are byte-identical.

Verification

  • 2,513 tests pass across operations/serialization, adapters/sec, schemas and operations/roboledger — including test_xbrlkit_parity.py (the graph DDL agreement) and the cross-encoder equivalence tests
  • just test-code clean
  • the lock moves xbrlkit alone: 0.6.0 -> 0.7.2, no other churn

🤖 Generated with Claude Code

https://claude.ai/code/session_01EiGTpXmxwZjxzaRoVs4VxB

0.7.0 added the importers — a Tavi compiled model or a holon read back into
`XbrlModel`, with no Arelle — and made the holon lossless against that model;
0.7.1 and 0.7.2 followed with fixes found by running real reports through both
directions.

What it changes here:

- **`FilingMeta.is_inline_xbrl` is now `bool | None`.** No effect on this
  pipeline: `xbrl_graph.py` always sets it from EDGAR's `isInlineXBRL`, so the
  Report row and its parquet column are unchanged. It is `None` only for a
  model that came from an importer, which cannot know.
- **`to_holon(XbrlModel)` writes a different document** — each report binds the
  namespaces its own concepts declare (a filer's extension concepts compact to
  `ba:Foo` instead of spelling out a robosystems.ai URL), every label role is
  present, and `dataType` / `baseType` / `nillable` / `language` / `isNil` /
  `periodEndDate` are new. Files come out ~20% smaller. Consumers key on
  `rs:internalId` — the viewer and `xbrlkit.query` both do — so nothing reads
  differently, but the published SEC artifacts should be regenerated once so a
  single shape is on the CDN.
- **The `StatementBundle` holon path is untouched.** Its URI minting kept the
  old prefix table as its default, so RoboLedger's live-report holons are
  byte-identical.

2,513 tests across serialization, the SEC adapter, the schemas and roboledger
pass, including the xbrlkit DDL parity check; code quality clean. The lock moves
xbrlkit alone.
@github-actions github-actions Bot added the change:standard Standard change: test gate only, no secondary review required label Sep 8, 2026
@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Change classification: standard — only dependency manifests, lockfiles, documentation, release notes or generated output changed.

Under the change standard a standard change is gated by the required test check alone; no secondary review is required. Recorded by the change-classification job.

@jfrench9
jfrench9 merged commit 41a1dbc into main Sep 8, 2026
8 checks passed
@jfrench9
jfrench9 deleted the chore/bump-xbrlkit-0-7-2 branch September 8, 2026 06:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

change:standard Standard change: test gate only, no secondary review required

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant