Skip to content

chore(release): cut v0.10.0 — hash-linked event chain + anchored doctor gate - #83

Merged
SollanSystems merged 1 commit into
mainfrom
release/v0.10.0
Jul 25, 2026
Merged

SollanSystems merged 1 commit into
mainfrom
release/v0.10.0

Conversation

@SollanSystems

Copy link
Copy Markdown
Owner

One release commit collecting PR #82 (hash-linked event chain + anchored doctor gate) and PR #80 (first half of the sidecar fix).

Version surfaces

Surface 0.9.0 → 0.10.0
pyproject.toml version = "0.10.0"
.claude-plugin/plugin.json "version": "0.10.0"
README release badge release-0.10.0
README documented action pin SollanSystems/loop-engineer@v0.10.0
README Status version / release tag 0.10.0 / v0.10.0

scripts/test_docs_version.py retargets the version pin to 0.10.0, asserts the ## 0.10.0 CHANGELOG heading, and machine-pins all four README version surfaces against plugin["version"] — previously none of them were pinned, so each release cut could leave them stale silently. Teeth verified: with plugin.json bumped and the README untouched, test_readme_version_surfaces_match_plugin_version fails.

CHANGELOG 0.10.0 (excerpt)

The hash-linked event chain. Every loop-engineer/event@1 row now carries prev_event_hash and event_hash — a sha256 over a canonical JSON preimage of the event's hashed fields, prev_event_hash among them. […] The digest is computed inside the store on append, never supplied by a caller, and the deterministic reducer re-verifies each link as it folds.

Integrity boundary. The chain is tamper-evident relative to an anchored head — a detection property, not a prevention one, and scoped to the anchor. […] "An anchor certifies the log only up to the anchored head. Everything appended after the last externally-read anchor — including a rewrite of the suffix — is unverified until the next anchor is read and remembered outside the workspace. The chain narrows the tampering window; it does not close it."

The entry also documents loop migrate, the doctor chain block, --expect-chain-head, the four new issue codes (event_chain_broken, chain_anchor_mismatch, missing_event_store, chain_columns_missing), the stricter schema-invalid-event rejection in status/replay/doctor, the sidecar resolution (the 0.9.0 known-limitation line is updated in place with a forward pointer, not deleted), and the two-directional compatibility rule — pre-0.10.0 readers are fine; pre-0.10.0 writers must not append to a chained store.

Gates

  • Full suite (fresh worktree at this commit): 1021 passed / 16 skipped with yaml+schemas extras; 951 / 86 in structural-fallback mode (PyYAML only). Live checkout reads 1023/14 and 953/84 through the two checked-when-present tests.
  • scripts/self_eval.py: 13/13 structural invariants.
  • scripts/validate_frontmatter.py: 9 skills, 0 errors.
  • python3 -m loop --version0.10.0.
  • Mid-run-window paragraph verified byte-identical (whitespace-normalized) against reference/repo-os-contract.md §16.

Tag (v0.10.0 → PyPI publish) follows this PR's squash commit.

…or gate

Version surfaces bumped 0.9.0 -> 0.10.0: pyproject.toml,
.claude-plugin/plugin.json, and the four README surfaces (release badge,
documented action pin, Status version, Status release tag).

scripts/test_docs_version.py retargets the version pin to 0.10.0, adds the
"## 0.10.0" CHANGELOG heading assertion, and machine-pins all four README
version surfaces against plugin["version"] so a future cut cannot leave them
stale. Verified teeth: with plugin.json bumped and README untouched, the new
test fails.

CHANGELOG 0.10.0 documents the chain fields and store-side computation,
loop migrate, the doctor chain block, --expect-chain-head, the four new issue
codes, the stricter schema-invalid-event rejection, the sidecar fix (with the
0.9.0 known-limitation line updated in place to point forward, not deleted),
the integrity boundary quoting the mid-run-window paragraph verbatim from
reference/repo-os-contract.md 16, and the two-directional compatibility rule.
Copilot AI review requested due to automatic review settings July 25, 2026 06:17
@SollanSystems
SollanSystems enabled auto-merge (squash) July 25, 2026 06:17
@SollanSystems
SollanSystems merged commit 91bf36a into main Jul 25, 2026
11 checks passed
@SollanSystems
SollanSystems deleted the release/v0.10.0 branch July 25, 2026 06:18

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Cuts the v0.10.0 release by updating all user-facing version surfaces (package metadata, plugin metadata, README pins/badges, and CHANGELOG), and adds a regression test to prevent README version drift from future releases.

Changes:

  • Bump version to 0.10.0 in pyproject.toml and .claude-plugin/plugin.json.
  • Update README release badge, action pin, and Status section version/tag to 0.10.0.
  • Add doc/version tests that pin README version surfaces to the plugin version and assert the ## 0.10.0 CHANGELOG entry exists.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated no comments.

Show a summary per file
File Description
scripts/test_docs_version.py Updates version assertion to 0.10.0 and adds a test that pins README version surfaces to plugin.json.
README.md Updates release badge, action pin, and Status version/tag to 0.10.0.
pyproject.toml Bumps Python package version to 0.10.0.
CHANGELOG.md Adds 0.10.0 entry and annotates the prior sidecar known-limitation as resolved in 0.10.0.
.claude-plugin/plugin.json Bumps plugin version to 0.10.0.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants