Skip to content

pm project edit renames a project; pm check names title drift (pm-quality sprint 47) - #122

Merged
Yeeef merged 4 commits into
mainfrom
project-edit-title
Oct 25, 2026
Merged

Yeeef merged 4 commits into
mainfrom
project-edit-title

Conversation

@Yeeef

@Yeeef Yeeef commented Oct 25, 2026

Copy link
Copy Markdown
Owner

What

  • pm project edit <name> --title "…", with the reason as its body (two lines or more). It works like pm sprint edit:
    • It writes the work-store title first, then makes one records commit that sets the record's title: header and adds a project decision. The source is agent, or owner with --confirmed.
    • If the records step fails, the old store title is put back.
    • It refuses only when both the store and the header already hold the title. It accepts a header that a hand edit already changed, so it fixes existing drift.
    • Closed projects are allowed.
    • The name, path and links stay the same.
  • pm check lists each project whose record title: differs from its work-store title, with the pm project edit that fixes it. This is a report, not a failure, so pm commit never refuses on it.
  • Refactor: the day's activity code moves to internal/cli/dayactivity. This keeps internal/cli under its size cap.

Why

The poker repo renamed three projects by editing their record headers. The work-store titles stayed stale in pm show, in sprint parent: lines and in the day summary, and nothing reported it.

Evidence

  • make test: 159 passed.
  • tests/test_pm.py: 59 passed. This includes 3 new tests: the rename and its refusals and rollback, drift reported then fixed, and a store-only no-write case.
  • The internal/cli and internal/records Go tests pass.
  • make lint: 0 issues.

🤖 Generated with Claude Code

Yeeef and others added 4 commits October 25, 2026 16:05
internal/cli sits at its size ratchet (7301 lines), and pm project edit
and the pm check title-drift report need room. The day's activity text
(what pm day summarize gives the model and hashes into its digest) reads
only the records and the items, never the command's repo, so it moves
whole to internal/cli/dayactivity with its test.

pm-d2k5.47.1.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A project's title had no rename path: a hand edit of the record's title:
header left the work store's title stale, and nothing showed the drift.
pm project edit --title renames a project, open or closed, as pm sprint
edit does a sprint: the work-store title first, then one records commit
that sets the header and records the rename, with its reason, as a project
decision (source=owner with --confirmed); a failed records step puts the
old title back. Only a title both layers hold already is refused, so the
hand-edited drift is fixed by the same command.

pm check now names each project whose header the work store does not
hold, with that fix. It is a report like the uncovered-files list, not a
failure: pm commit runs site.Check alone, so the drift blocks no commit.

The internal/cli size ratchet drops to the package's new size.

pm-d2k5.47.1.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The hint printed `fix: pm project edit … --title "…"`, which is not
runnable (the command needs a reason body) and loses $ and backticks
in double quotes. It now says the command takes the reason as its body
and single-quotes the title for the shell. The drift list also sat in
front of the design report with no separator, so the report's "; a
design page covers every tracked source file" ran onto the last fix
line; it now comes last, on a line of its own.

Adds a test for a rename where the work store holds the new title
already: only the header is written, and the decision names the
header's old title.

pm-d2k5.47.1.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
….16.0

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Yeeef
Yeeef force-pushed the project-edit-title branch from df744d3 to 96897bf Compare October 25, 2026 15:06
@Yeeef
Yeeef merged commit 9520997 into main Oct 25, 2026
14 checks passed
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