Skip to content

feat: allow editing an existing change's title (change 0461) - #347

Merged
danielhanold merged 10 commits into
mainfrom
feat/allow-editing-an-existing-change-s-title
Sep 28, 2026
Merged

danielhanold merged 10 commits into
mainfrom
feat/allow-editing-an-existing-change-s-title

Conversation

@danielhanold

@danielhanold danielhanold commented Sep 28, 2026 •

Copy link
Copy Markdown
Owner

↩ Change 0461 — Allow editing an existing change's title

↩ Change 0461 — Allow editing an existing change's title (https://github.com/danielhanold/docket/blob/docket/docs/changes/active/0461-allow-editing-an-existing-change-s-title.md)

Summary

  • change.groom accepts an optional title on the spec, trivial, revise, and rearm outcomes. abstain refuses it with invalid-title, and a request carrying only a title is a valid revise.
  • A retitle is one metadata commit: it rewrites title: and updated: through the writer (ADR-0071), re-renders the ## Artifacts block and the board, and re-stamps only the linked spec's docket:backlink block.
  • The slug, file name, spec path, and branch: never change.
  • change.create and change.groom share one validateTitle: a line break or control character is invalid-title, and whitespace-only stays empty-title.
  • A proposed change that still carries branch:, plan:, or results: (deferred, then revived) is refused as not-retitleable.
  • Board title cells escape | and flatten line breaks.
  • The docket-groom-next skill now points groomers at title. A prose-contract sentinel covers that, and the embedded mirror is regenerated.
  • The groom-next SKILL.md size budget went up to 78 lines / 2081 words (internal/repoguard/budgets_test.go).

Review (docket-review-deep; the rung went up one step because the diff exceeds 1500 lines)

Finding Severity Disposition
A revived proposed change with plan/results backlinks could be retitled, which broke later identity checks important fixed in b057169
The spec-backlink-missing message named the wrong remedy minor fixed in a9408a6
Invisible U+2028/U+2029 characters in test literals minor fixed in a9408a6

Suite note: the final run printed SERIAL CONFIRMED OVER BUDGET for tests/test_go_integration_app_rebaserecovery.sh (63s solo against a 60s threshold). This change doesn't touch that test, and it was already on a parallel-overrun streak before this branch. I'm reporting it as follow-up work.

Results: docs/results/2026-09-28-allow-editing-an-existing-change-s-title-results.md

command: go run ./cmd/docket development test
result: green
head_sha: b0ee6bf
ran_at: 2026-09-28T21:26:05Z

Docket-Plan-Path: docs/superpowers/plans/2026-09-28-0461-allow-editing-an-existing-change-s-title.md
…facts (change 0461, review fix-1)

Finding (important): changeGroomOp.Plan accepted a title on a proposed
change that still carries branch:/plan:/results: (a record deferred from
in-progress and later revived keeps them). Those artifacts' backlinks
embed the title and are identity-checked downstream (backlinkTargets ->
backlink-mismatch on attach; verifyImplementedResults ->
results-identity-broken on mark-implemented), so the retitle silently
broke the later build.

Plan now refuses such a request with the new typed finding code
not-retitleable (FCNotRetitleable, registered in AllFindingCodes in
sorted order) and writes nothing. A title equal to the current one is no
retitle and still passes. Mutation-tested: dropping the guard, dropping
its title-equality clause, and dropping the registry entry each redden a
test.
…escape U+2028/U+2029 test literals (change 0461, review fix)

- Minor 1: spec-backlink-missing message named `artifact backlink`, which stamps a feature-worktree file; the remedy is a spec-body revise with spec_markdown + spec_version + title.
- Minor 2: TestValidateTitle separator cases used raw invisible characters; use escaped Go literals.
@danielhanold
danielhanold merged commit ba8ebb6 into main Sep 28, 2026
1 check passed
@danielhanold
danielhanold deleted the feat/allow-editing-an-existing-change-s-title branch September 28, 2026 21:26
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.

1 participant