• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

KarlNaumann / MacroStat / 27136632269
91%

Build:
DEFAULT BRANCH: master
Ran 08 Jun 2026 12:16PM UTC
Jobs 6
Files 111
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

08 Jun 2026 12:09PM UTC coverage: 91.115% (+0.3%) from 90.805%
27136632269

push

github

web-flow
feat(pichler): production canonical (#82)

* feat(causality): add MethodSpec foundation library

Port EIRINpy v0.11.0's MethodSpec system into MacroStat as a single
import-pure stdlib module. Two decorators (writes / requires) attach a
frozen MethodSpec to each behavior method declaring per-buffer literal
key sets plus a DYNAMIC sentinel for computed-key accesses. Zero
per-call cost: decorators set func.__method_spec__ and return the
function unwrapped.

lint_class walks the call graph from a chosen root, runs an AST
visitor over each reachable method, and emits one DriftEntry per
method classifying declared vs observed accesses (OK,
MISSING_DECORATOR, DRIFT, INDIRECT_WRITE, DYNAMIC_UNRESOLVED). The
visitor recognises self.<buffer>[K] subscripts on state / prior /
history / params / scenarios / hyper plus the scenario and params
kwarg-name magic guarded by the enclosing FunctionDef signature.
AugAssign targets are counted as both read and write via a one-pass
pre-walk. Mutator-call indirection is resolved through a public
_STATE_MUTATORS registry populated by register_mutator (idempotent,
raises on conflict).

R6d (check_non_buffer_attrs) enforces that subclasses of Behavior
only read tracked buffers, underscore-private caches, or names
already bound in their own __init__; writes outside __init__ and
initialize to non-buffer non-private attrs are banned regardless of
init binding (variant b — closes the canary-binding evasion). The
allowlist is auto-derived from each class's __init__ AST per the plan,
with a per-class cache.

First of five dispatches splitting the superseded
MethodSpecDecorators plan. No model retrofit in this dispatch;
downstream dispatches consume the stable library API.

* test(causality): cover MethodSpec foundation

Lock the public surface of writes/requires, lint_class, the mutator
registry, and the non-buffer attribute check so later edits and
model rollouts cannot break it without a red test. Fixtures sit at
module level becau... (continued)

601 of 642 branches covered (93.61%)

Branch coverage included in aggregate %.

340 of 367 new or added lines in 2 files covered. (92.64%)

3778 of 4164 relevant lines covered (90.73%)

5.44 hits per line

Uncovered Changes

Lines Coverage ∆ File
27
94.07
src/macrostat/causality/method_spec.py
Jobs
ID Job ID Ran Files Coverage
1 windows-latest-py3.13 - 27136632269.1 08 Jun 2026 12:18PM UTC 111
91.12
GitHub Action Run
2 ubuntu-latest-py3.13 - 27136632269.2 08 Jun 2026 12:16PM UTC 111
91.12
GitHub Action Run
3 ubuntu-latest-py3.11 - 27136632269.3 08 Jun 2026 12:16PM UTC 111
91.12
GitHub Action Run
4 windows-latest-py3.12 - 27136632269.4 08 Jun 2026 12:18PM UTC 111
91.12
GitHub Action Run
5 windows-latest-py3.11 - 27136632269.5 08 Jun 2026 12:18PM UTC 111
91.12
GitHub Action Run
6 ubuntu-latest-py3.12 - 27136632269.6 08 Jun 2026 12:17PM UTC 111
91.12
GitHub Action Run
Source Files on build 27136632269
  • Tree
  • List 111
  • Changed 1
  • Source Changed 1
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #27136632269
  • b720d048 on github
  • Prev Build on master (#26968959826)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc