Seshat BI -- v2.1
This note summarizes the changes merged after v2.0.0. The complete per-entry
record, including specification and pull-request references, lives in
CHANGELOG.md.
Why this is 2.1 and not 3.0
This is a MINOR release under
docs/operations/versioning-policy.md. It registers two additive rule IDs
(DL10 and DL11) and adds the optional seshat check --explain surface.
Existing commands, flags, default text, exit meanings, and rule IDs remain in
place.
The new design rules can report errors on design artifacts that were previously
ungoverned. That is the policy's explicit MINOR case: a new contract is introduced
in a new version rather than changing the meaning of an existing rule ID.
No migration is required for repositories that do not use the newly governed
design or two-table comparison surfaces. Consumers parsing seshat check output
continue to receive the v2.0 default shape unless they opt into --explain.
Governed actual-to-target ratios
Spec 156 (#711, #712) closes the mismatch between the sanctioned
variance-vs-target contract and the measure generator.
binds_toremains the scalar primary authority.- A sibling
compares_toblock names the governed target Gold table and columns. - One stdlib-only validator is shared by approved inventory and DAX generation.
- Numerator and denominator tables must align with their respective bindings, and
every source/filter column must be declared by the correct side. - Comparison PII is effective PII for finalization and statistical policy.
- Statistical columns remain attached to their own source table.
Malformed table/column identifiers, a bare gold. prefix, or non-string filter
operators are refused before generation. DAX output remains text only: Seshat does
not write a PBIP, connect to Power BI, or grant an approval through this feature.
Evidence dates without invented freshness
Spec 157 (#712) gives readers the dates needed to judge whether an answer is
current without manufacturing a freshness verdict.
Source profiles disclose the reporting date, coverage end, and committed-evidence
observation date when those facts are parseable from committed evidence; an
unprovable value is an explicit GAP. The optional answerability summary carries
exactly three cited dates and Publish Ready guidance explains how to present them.
No new readiness field, freshness threshold, badge, score, or approval is created.
Findings explain themselves at the failure point
seshat check --explain (#706) renders the existing, governed means and fix
text from docs/rules/rule-fixes.yaml beneath each ordinary text finding.
The default finding line is byte-identical with and without the feature, and the
flag changes neither severity nor exit code. JSON, review, and SARIF formats refuse
the unsupported combination rather than pretending guidance was included.
Design references and vocabulary become checkable
Two new rules ship in #707 and #708:
DL10reconciles the page-section vocabulary across the authoritative desktop
grid, mobile grid, dashboard-page template, and filled report blueprints.DL11resolves the design file and token pointers whose grammars are actually
machine-checkable, while deliberately excluding prose and store identifiers.
The follow-up also makes a fresh seshat scaffold-design pass the rules it emits:
referenced spec targets are packaged and scaffolded, and corpus membership is
derived from the real scaffold set.
Business questions reach the named owner
Across the twelve retail KPI domain packs, the governed layer now carries forty-one
owner-question cards (#709). Each card states the question, the silent failure if
unanswered, the layer default as context only, and the existing critical Decision
Store type that records the answer. The cards grant nothing: unanswered meaning
remains pending and no default is converted into a ruling.
Reliability and operator guidance
- A zero Power BI MCP session deadline now stalls before any transport read (#702),
fixing a Windows clock-boundary defect that could consume a frame despite a
caller's zero wait budget. - Idea-engine candidates use assigned schema-validated IDs rather than fuzzy title
reconstruction, and its model effort tier no longer requests an unsupported
configuration (#703). ONBOARDING.mdnow routes a new arrival into the existing Seshat BI entry points
instead of presenting one maintainer's usage telemetry (#704).- README, Studio, F016, and adopted-idea status claims are reconciled with the
shipped tree (#710-#712).
Publication surfaces
The coordinated release projects one owner-approved 2.1.0 version into the
Python package, the scoped and unscoped npm packages, Claude repository marketplace
metadata, and the generated Claude/Codex bundles. GitHub Release, PyPI, npm, and
repository-plugin availability are verified independently after publication.
Public Claude and OpenAI discovery-catalog submissions remain separate
identity-verified human actions; repository marketplace availability does not imply
either public catalog has accepted a listing.