Skip to content

v0.30.0

Choose a tag to compare

@anthonyrisinger anthonyrisinger released this 28 Jul 17:51
· 254 commits to main since this release

Highlights

  • Repository-delivered commands now stop at an operator trust boundary.
    Executable tracked configuration requires digest-pinned approval before it
    runs, operator-owned configuration and receipts live in worktree Git state,
    disabled builtins are visible, and malformed command mounts no longer take
    down the CLI.
  • Configuration is now one strict, uniformly layered contract. Root
    spice.toml is the sole tracked source; every packaged default reaches its
    consumer through layering; false disables inherited registry entries; and
    unknown keys, invalid choices, or scalar-for-table substitutions refuse with
    actionable provenance.
  • Authored-input mutations now use one inspectable command-plan protocol.
    Bare authored-input verbs preview ordered plans, --apply executes a matching
    plan, stale digests refuse, receipt-writing verbs reverse through --unapply,
    and append-only receipts make interruption and mounted-command effects
    recoverable without accepting caller-supplied authority documents.
  • Task allocation follows declared priority and dependency impact. A
    prerequisite inherits the highest priority it transitively unblocks, wider
    downstream graph position outranks locality and incidental tags, and the
    allocator hot loop remains immediate for board-and-command-line intent.
  • Standing correctness and rendering defects are closed. Editable-install
    finder hooks no longer become phantom namespace portions, message code spans
    are stashed out of band, lock status observation no longer interferes with a
    concurrent run, contention names its holder, and data: links are refused
    without breaking inline data images.
  • The new contracts are held by executable gates and current documentation.
    Taskwarrior 3 is declared and diagnosed up front, packaged-default gates
    compare real values in both directions, withdrawn command spellings and paths
    are retired, and the full-suite baseline is clean.
Task-level changes

Changes by project

Studies Hardening

  • Rank ready work by priority and graph position. (a573ce2)
  • Stop coercing non-path sys.path entries into namespace portions. (b0ae6a1)
  • Contain a mount that collides with a builtin command. (7d1d9ec)
  • Stash code spans out of band in message rendering. (4d749cc)
  • Gate the default on whether the input was authored. (ad35ffd)
  • Reject unknown configuration keys at load. (67ed747)
  • Restored a clean full-suite baseline. (0483fc8)
  • Stop the lock status probe from failing concurrent runs. (8eb5184)
  • Honor false as the disable spelling everywhere. (d80eddb)
  • Declare the Taskwarrior 3 requirement. (23f05e0)
  • Reconcile authored-input defaults with hook and publication reads. (246cd9c)
  • Supersede the initialization preview and reversal record. (d8b5c7e)
  • Read repository configuration only from spice.toml. (a24773a)
  • Align the command-plan decision with the reconciled authored-input criterion. (938c71a)
  • Made invalid choice values refuse instead of defaulting. (f6b26c3)
  • Keep the allocator hot loop applying by default. (e58bb58)
  • Made preview the default for every authored-input verb. (3e53797)
  • Move operator-owned configuration into the worktree git directory. (d401ba2)
  • Made the spice.toml cutover semantic and purge retired instructions. (2cd5647)
  • Grow the configuration CLI to the surface the loader reads. (c242241)
  • Refuse tracked ancestor redirections during operator-state migration. (79369a0)
  • Reverse a plan through unapply and retire the opposite verb. (c322db0)
  • Made the packaged-defaults gate compare values. (bf9ec66)
  • Approve repository configuration before it can execute commands. (14bbf57)
  • Refuse the dry-run flag with the release that replaced it. (83de52f)
  • Guard the system configuration scope. (fae0bca)
  • Made the reverse packaged-default inventory complete. (3a6cad5)
  • Made the plan a command protocol. (22b5282)
  • Approve wrapper groups without narrowing what they may shadow. (8f97793)
  • Refuse silent gate disablement from tracked configuration. (f81ed60)
  • Close the authored-input default inventory gaps. (7bda6f6)
  • Close layered disabled-builtin approval bypass. (64c598c)
  • Mediate mounted plan previews and require destructive plan digests. (56cdedb)
  • Reconcile the agent guidance with the approval and apply refusals. (2e950ec)
  • Record receipts as an append-only operation log. (4e51182)
  • Canonicalize equivalent builtin spellings before layered merge. (133072a)
  • Establish a repository trust boundary. (9072b14)
  • Gate the classes that no existing gate measures. (58e0167)
  • Drop the data scheme from the link proxy allowlist. (d8e625b)
  • Refuse a scalar that overwrites an inherited table. (58ac111)
  • Added apply authority to the prepared-release handoff. (327c511)
  • Made every packaged default layer uniformly. (5874244)
  • Distinguish Spice source checkouts from client spice directories. (6e20936)
  • Reconcile the task-document contract with preview and apply. (5c8caf1)
  • Persist and reverse mounted command plans without child support. (464bfa1)
  • Use one source-root contract for generated taskrc. (82b0f7a)
  • Reconcile the inventory table with the inventory module. (0a23bf1)
  • Documented the disable and layering rules once. (2ae1b51)
  • Removed deleted inventory from the packaged-default manifest. (8139797)
  • Restored gate integrity. (b5671ee)
  • Close the mounted receipt effect-to-append crash gap. (e74e1c9)

Package Notes

  • PyPI release: spice-harness==0.30.0
  • Release commit: 94e997de
  • Commit range: v0.29.0..94e997de
  • Commit source: first-parent history grouped by Task-Project metadata
  • Release tag: v0.30.0