Skip to content

Releases: MacFall7/spine-lite-python

Phase 3 exit — v0.3.0a0

09 May 00:53
9f405d8

Choose a tag to compare

Pre-release

Feature-complete against the original three-phase plan.

Added

  • Disposition (closed StrEnum: ALLOW / DENY / ESCALATE)
  • transition(Posture, ...) -> Posture — pure state transition, raises PostureError on illegal moves
  • evaluate(Posture, ToolDefinition, Decision) -> Disposition — pure policy evaluation
  • Receipt — frozen dataclass with deterministic SHA-256 content addressing
  • PreToolUse hook adapter (spine_lite.hook) — stdin JSON in, decision JSON out, exit code signals allow/deny
  • Full CLI surface (spine-lite version | validate-manifest | classify | hook) via Typer

Verification

  • 209 / 209 tests passing
  • 100% coverage on every runtime module (248 stmts, 30 branches, 0 misses)
  • mypy --strict clean across 19 source files
  • 9 hypothesis properties × 1,000 examples
  • 7 subprocess E2E cases covering posture × tool × byte-stability
  • 14/14 CI checks green on the merge commit

Design

Spine Lite is deterministic by design: no clocks, no randomness, no network, no LLM calls inside the runtime. Six-class effects taxonomy (READ / WRITE / NETWORK / EXECUTE / SPAWN / DESTRUCTIVE) on state × boundary × reversibility axes with ordinal precedence. Sibling project to M87-Spine-lite — see Porting Notes for the relationship.

Docs

Full Diátaxis-structured documentation at https://macfall7.github.io/spine-lite-python/

Phase 1 exit — v0.1.0a0

09 May 01:06
bcfa478

Choose a tag to compare

Pre-release

Initial release. Scaffold, taxonomy, public API, CI matrix, and documentation site.

Added

  • Six-class effects taxonomy (closed StrEnum: READ / WRITE / NETWORK / EXECUTE / SPAWN / DESTRUCTIVE)
  • PRECEDENCE ordinal precedence: DESTRUCTIVE > SPAWN > EXECUTE > NETWORK > WRITE > READ
  • most_restrictive(effects) — returns highest-precedence effect from a set
  • Exception hierarchy rooted at SpineLiteError
  • CLI surface (spine-lite version) via Typer
  • Full Diátaxis-structured documentation site

Verification

  • 35 / 35 tests passing
  • 100% coverage on every runtime module (45 stmts, 4 branches, 0 misses)
  • mypy --strict clean across 13 source files
  • mkdocs build --strict clean
  • CI matrix: Python 3.11 / 3.12 / 3.13 × Linux / macOS / Windows

Design

Spine Lite is a deterministic policy and effects runtime for LLM tool calls. No clocks, no randomness, no network, no LLM calls inside the runtime itself. Sibling project to M87-Spine-lite; see docs/explanation/porting-notes.md for the relationship.

Docs

Live at https://macfall7.github.io/spine-lite-python/

Phase 2 exit — v0.2.0a0

09 May 00:56
e5e37bf

Choose a tag to compare

Pre-release

Manifest schema and classifier shipped from spec.

Added

  • Posture (closed StrEnum, 4 members) — enum lands; transitions arrive in v0.3.0a0
  • Manifest, ToolDefinition (pydantic v2, frozen)
  • parse_manifest() accepting dict / JSON string / JSON bytes
  • ToolCall, Decision (frozen + slotted + kw-only dataclasses)
  • classify(tool_call, manifest) -> Decision — pure, deterministic

Verification

  • 99 / 99 tests passing
  • 100% coverage on every runtime module
  • mypy --strict clean
  • 6 hypothesis properties × 1,000 examples

Design note

This phase explicitly resolved the parity question with the M87-Spine-lite sibling project. The taxonomy here (READ / WRITE / NETWORK / EXECUTE / SPAWN / DESTRUCTIVE, ordinal precedence) is categorically different from the sibling's risk-score model; this is a sibling project, not a parity port. See docs/explanation/porting-notes.md for the full divergence record.