Skip to content

feat: make changesets self-describing - #40

Merged
shaug merged 1 commit into
mainfrom
scott/31-self-describing-changesets
Jul 21, 2026
Merged

feat: make changesets self-describing#40
shaug merged 1 commit into
mainfrom
scott/31-self-describing-changesets

Conversation

@shaug

@shaug shaug commented Jul 21, 2026

Copy link
Copy Markdown
Owner

TL;DR

Makes materialized and published changesets reconstructable from commit trailers, PR metadata, and live git/GitHub evidence without local plan or state files.

Summary

  • Add deterministic Changeset-Slug, Changeset-Index, and Changeset-Source trailer stamping through git interpret-trailers.
  • Add a versioned, human-invisible PR metadata block with tolerant parsing around human-edited prose and strict ambiguity diagnostics.
  • Rehydrate ordered chain topology, branch heads, PR numbers, bases, and merge state from live refs plus GitHub PR records.
  • Render status entirely from rehydrated state.
  • Cover fresh-clone reconstruction after deleting .carve-changesets/, trailer survival through rebase propagation, and missing/conflicting evidence failures.

Scope boundary

Validation

  • just format — pass.
  • just lint-py — pass.
  • just lint-md — pass.
  • just test-carve-changesets — pass (12 tests).
  • just test — pass (191 tests).
  • git diff --check — pass.
  • skills-ref validate — pass for every complete skill other than carve-changesets.
  • Repository-owned review-code-change — clean at e88bf87e9cb1a4e04bdf8b051ce8ca0f0dcb96e6 versus ac5408716958ba5417aaa537305d6a93573f2edb; one non-gating defer preserves Derive carve-changesets chain state from live git instead of a state.json cache #32's live-invariant work.

The epic grants a pre-packaging exception for the exact repository-wide just lint failure Missing required file: SKILL.md under skills/carve-changesets. Issue #35 owns that future file. Python lint, Markdown lint, all complete-skill validations, focused tests, and the full repository suite pass; no other local or remote gate is waived.

Tickets

Fixes #31

## Summary
- Stamp changeset commit messages and PR bodies with durable metadata
- Rehydrate chain topology from live git refs and supplied GitHub records
- Render chain status without plan or state files
- Cover fresh-clone reconstruction, rebase preservation, and ambiguity failures

## Why
- Make materialized and published changesets independently reconstructable
- Establish a disjoint module seam for the consolidated CLI to consume
@shaug
shaug merged commit 9428d09 into main Jul 21, 2026
1 check failed
@shaug
shaug deleted the scott/31-self-describing-changesets branch July 21, 2026 21:12
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.

Make changesets self-describing with commit trailers and PR metadata

1 participant