Skip to content

Define the carve-changesets operating contract - #39

Merged
shaug merged 2 commits into
mainfrom
scott/29-carve-changesets-contract
Jul 21, 2026
Merged

Define the carve-changesets operating contract#39
shaug merged 2 commits into
mainfrom
scott/29-carve-changesets-contract

Conversation

@shaug

@shaug shaug commented Jul 21, 2026

Copy link
Copy Markdown
Owner

TL;DR

Defines the normative carve-changesets contract that the remaining #28 implementation children will follow.

Summary

  • Preserve the established changeset model, cognitive-load guardrails, additive-first ordering, rename separation, feature-flag policy, database migration rules, immutable source, and final equivalence guarantee.
  • Define truth promotion from proposed plan entries through materialized commits, published PRs, and merged mainline state.
  • Specify the plan_ready, chain_ready, prs_open, all_merged, and blocked terminal states with candidate-bound evidence.
  • Establish decompose-only, publish, and merge-and-propagate authority, including strict force-with-lease and base/source protection.
  • Bound the review-code-change and babysit-pr seams while keeping decomposition and propagation ownership here.
  • Require a plain git/GitHub stack whose only durable skill metadata lives in commit trailers and PR metadata blocks.

Non-goals

  • No script changes.
  • No SKILL.md authoring.
  • No changes to the frozen skills/prepare-changesets reference implementation.
  • No backwards compatibility for old state files, plans, or chains.

Validation

  • Clean base: just lint — pass.
  • Candidate: just format — pass.
  • Candidate: just lint-md — pass.
  • Candidate: just test — pass (179 unit tests plus 2 eval cases).
  • Candidate: git diff --check — pass.
  • Repository-owned review-code-change — clean at edeb2f5f5f7b4cfa4e73e8289d34157b192f92ab versus 4570e9093fdce85eeec90e62869f02b9104cf1d2 after one correctness fix/re-review cycle.

Issue #29 has an explicit, issue-only exception to the repository-wide candidate just lint gate: clean-base just lint plus candidate just lint-md, just test, just format, and git diff --check satisfy validation for this intentionally incomplete pre-packaging child. Full candidate just lint would require the future SKILL.md that #29 explicitly forbids and a later child owns. This exception authorizes no SKILL.md, script, justfile/lint-discovery, frozen prepare-changesets, sibling, ticket-body, dependency-graph, manual-transition, parent-close, deployment, production, or destructive changes.

Tickets

Fixes #29

shaug added 2 commits July 21, 2026 13:00
## Summary

- Define the changeset model and preserved decomposition rules
- Establish truth promotion, terminal states, and explicit authority levels
- Bound the review, PR-lifecycle, propagation, safety, and interoperability seams

## Why

- Give every remaining epic child one normative greenfield contract
- Keep proposal state ephemeral while making git and GitHub authoritative
## Summary

- Enumerate reusable chain validation evidence for `prs_open`
- Keep the local-only no-publication condition scoped to `chain_ready`
- Preserve the distinction between materialized and published terminal states

## Why

- Remove a contradictory terminal-state requirement found by repository review
- Let downstream implementations report publication deterministically
@shaug
shaug merged commit ac54087 into main Jul 21, 2026
1 check failed
@shaug
shaug deleted the scott/29-carve-changesets-contract branch July 21, 2026 20:47
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.

Define the carve-changesets operating contract and truth-promotion state model

1 participant