docs/plans/2026-06-15-registry-changelog-contract.md
Objective: Add a scalable registry changelog contract for future registry tasks; done when rules/templates/helpers agree and checks pass; plan docs/plans/2026-06-15-registry-changelog-contract.md.
Goal plan: docs/plans/2026-06-15-registry-changelog-contract.md
Template: docs/plans/templates/task.md
Primary template: docs/plans/templates/task.md
Applied packs:
Task source:
$task registry updatesplate-ui triggers registry changelog decisions for user-visible registry work.task can add a registry-changelog pack for registry surfaces.changeset / package-api delegate registry entry schema to the registry changelog contract.docs-creator references the contract without owning it..agents/rules/**.Completion threshold:
.agents/rules/registry-changelog.mdc defines the single schema/workflow contract.docs/plans/templates/packs/registry-changelog.md exists and can be composed into future task plans.task, plate-ui, changeset, docs-creator, and package-api template references agree on ownership.tooling/scripts/generate-ui-changelog-entries.mjs supports --new and --check.node .agents/skills/autogoal/scripts/check-complete.mjs docs/plans/2026-06-15-registry-changelog-contract.md passes.Verification surface:
rg over .agents/rules, .agents/skills, and docs/plans/templates.pnpm install to regenerate skills from rules.pnpm lint:fix.bun test tooling/scripts/generate-ui-changelog-entries.test.mjs.node tooling/scripts/generate-ui-changelog-entries.mjs --check.node .agents/skills/autogoal/scripts/check-complete.mjs docs/plans/2026-06-15-registry-changelog-contract.md.Constraints:
plate-ui, changeset, docs-creator, and task..agents/rules/** as source of truth, then run pnpm install; do not hand-edit generated skill copies.Boundaries:
.agents/rules/**, generated .agents/skills/**, docs/plans/templates/**, generator script/tests, registry changelog source README, this plan, PR #5023 body.Output budget strategy:
rg and sed over rule/template/generator files only.sed -n.Blocked condition:
pnpm install cannot generate a new skill from .agents/rules/registry-changelog.mdc, or if --check cannot be implemented without mutating checked-in generated JSON.Task state:
Current verdict:
Pre-solution issue challenge:
plate-ui / docs-creator; conclusion is shared trigger/delegation with registry-changelog owning the contract.docs-creator or plate-ui would rot; one contract with callers is the correct boundary.Completion rule:
update_goal(status: complete) until every completion threshold above is satisfied, final handoff evidence is recorded, and node .agents/skills/autogoal/scripts/check-complete.mjs docs/plans/2026-06-15-registry-changelog-contract.md passes.Start Gates:
| Gate | Applies | Evidence |
|---|---|---|
| Skill analysis before edits | yes | Read task, plate-ui, autogoal, agent-native-reviewer, and autoreview. |
| Active goal checked or created | yes | get_goal returned none; create_goal created this objective. |
| Source of truth read before edits | yes | User request and existing rule/template/generator surfaces read. |
| Tracker comments and attachments read | no | N/A: no tracker source. |
| Video transcript evidence required | no | N/A: no video. |
| Pre-solution issue challenge required | no | N/A: no public tracker bug claim. |
| Branch decision for code-changing task | yes | Updated existing PR #5023 branch codex/registry-changelog-entry-files; abandoned empty new branch. |
| Release artifact decision | yes | No package changeset; this is agent/tooling workflow plus generator tests. |
| Browser tool decision for browser surface | no | N/A: no browser surface. |
| PR expectation decision | yes | Update existing PR #5023 after check gate. |
| Tracker sync expectation decision | no | N/A: no tracker. |
| Output budget strategy recorded | yes | Recorded above. |
| Agent-native pack selected | yes | .agents/rules/** and generated skills change. |
| Agent-facing action surface identified | yes | Future task/plate-ui/changelog authoring flow. |
| Source rule versus generated mirror boundary identified | yes | Edit .agents/rules/**; sync generated .agents/skills/** with pnpm install. |
agent-native-reviewer loaded or waiver recorded | yes | Loaded; full app parity map N/A because this changes skill/rule text, not user UI. |
| Package/API pack selected | yes | Release-artifact workflow changes. |
| Public surface or package boundary identified | yes | Agent-facing workflow and generator CLI; no published package API. |
| Release artifact path selected | yes | N/A: no published package user-visible delta; registry-changelog contract only. |
changeset skill loaded when .changeset is required | no | N/A: no package changeset. |
| Barrel/export impact decision recorded | yes | N/A: no package exports. |
Work Checklist:
<video-transcripts> XML, or marked N/A with reason.registry-changelog contract plus callers./Users/zbeyens/git/plate.--check..agents/rules/** changed..changeset work is N/A.registry-changelog pack instead of package changeset.Completion Gates:
| Gate | Applies | Required action | Evidence |
|---|---|---|---|
| Named verification threshold | yes | Run named source audits and commands | pnpm install; pnpm lint:fix; source audits; focused generator tests; CLI checks; pnpm check |
| Targeted behavior verification | yes | Run focused generator tests and CLI checks | bun test tooling/scripts/generate-ui-changelog-entries.test.mjs; node tooling/scripts/generate-ui-changelog-entries.mjs --check; temp --new scaffold smoke; --check --limit rejected |
| TypeScript or typed config changed | no | Run relevant typecheck | N/A: no TS types or config changed |
| Package exports or file layout changed | no | Run pnpm brl | N/A: no package exports |
| Package manifests, lockfile, or install graph changed | no | Run install if needed | pnpm install required only for skill sync |
| Agent rules or skills changed | yes | Run pnpm install and verify generated skill sync | pnpm install; .agents/skills/registry-changelog/SKILL.md; .claude/skills/registry-changelog generated |
| Workspace authority proof | yes | Run commands in /Users/zbeyens/git/plate | All commands run in /Users/zbeyens/git/plate |
| Browser surface changed | no | Browser proof | N/A: no browser surface |
| CI-controlled template output changed | no | Restore or justify | N/A |
| Package behavior or public API changed | no | Add changeset or N/A | N/A: no published package delta |
| Registry changelog contract changed | yes | Source audit, --new, --write, --check, focused tests | --new temp scaffold succeeded; --check passed; focused tests passed; stale schema references removed from rules/skills |
| High-risk mini gate | yes | Command-contract failure mode + proof | Failure mode: agents generate malformed/stale changelog entries; proof: scaffold/check tests, source audit, and --check --limit guard |
| Agent-native review for agent/tooling changes | yes | Load reviewer and close findings | Source/generated skill audit passed; no browser app parity surface |
| Local install corruption suspected | no | Reinstall/rerun | N/A unless failure shape appears |
| Autoreview for non-trivial implementation changes | yes | Run .agents/skills/autoreview/scripts/autoreview --mode local | Clean after fixing accepted P3 --check --limit finding |
| PR create or update | yes | Run check before PR update | pnpm check passed; PR #5023 body updated |
| Task-style PR body verified | yes | Verify PR #5023 body with gh pr view --json body | Passed: gh pr view 5023 --json body --jq .body |
| Tracker sync-back | no | Post issue/Linear sync | N/A: no tracker |
| Final handoff contract | yes | Fill final evidence | Passed |
| Final lint | yes | Run pnpm lint:fix | Passed |
| Output budget discipline | yes | Record result | No unbounded output streamed so far |
| Goal plan complete | yes | Run node .agents/skills/autogoal/scripts/check-complete.mjs docs/plans/2026-06-15-registry-changelog-contract.md | Passed after marking closeout done |
| Agent source / generated sync | yes | Run pnpm install and verify generated mirrors | Passed |
| Agent action discoverability | yes | Source-audit skill/rule text | Passed: task, plate-ui, changeset, docs-creator, registry-changelog, and generated skills agree |
| Public API / package boundary proof | yes | Source-audit release artifact impact | Passed: no published package delta; no changeset |
| Release artifact classification | yes | Record no published package delta | No package changeset; registry-changelog workflow only |
| Published package changeset | no | Add changeset if package users see delta | N/A |
| No release artifact | yes | Record reason | Agent/tooling workflow and generator CLI only |
| Package typecheck/build/test | no | Run package checks | N/A |
| Barrel/export generation | no | Run pnpm brl | N/A |
Phase / pass table:
| Phase | Status | Evidence | Next |
|---|---|---|---|
| Intake and source read | done | Source rules, skills, templates, generator, memory note read | implementation |
| Implementation | done | Rule/pack/README/generator edits completed | verification |
| Verification | done | Focused tests, source audits, autoreview, pnpm check passed | PR update |
| PR / tracker sync | done | PR #5023 body updated and read back | closeout |
| Closeout | done | PR body readback complete; goal checker ready | final response |
Findings:
plate-ui did not trigger registry changelog entries.changeset / package-api wording knew the path but still owned too much of the contract.Decisions and tradeoffs:
registry-changelog skill/rule and task pack.main.Implementation notes:
.agents/rules/registry-changelog.mdc.docs/plans/templates/packs/registry-changelog.md.apps/www/src/registry/changelog/entries/README.md.task, plate-ui, changeset, docs-creator, and package-api template source.--new, --check, and focused tests.Review fixes:
--check --limit because partial checks falsely report complete generated JSON as stale.--check stays byte-accurate.Error attempts:
| Error / failed attempt | Count | Next different move | Resolution |
|---|---|---|---|
Initially created branch from main | 1 | Switch back to existing PR #5023 branch | Resolved before source edits; plan carried over |
Verification evidence:
pnpm installpnpm lint:fixbun test tooling/scripts/generate-ui-changelog-entries.test.mjsnode tooling/scripts/generate-ui-changelog-entries.mjs --checknode tooling/scripts/generate-ui-changelog-entries.mjs --source /tmp/registry-changelog-new-test --new 2026-06-15-fix-editor-wrapping --summary "Fix editor wrapping" --items editor,editor-static --kind fixnode tooling/scripts/generate-ui-changelog-entries.mjs --check --limit 1 failed intentionally with --check cannot be combined with --limit.agents/skills/autoreview/scripts/autoreview --mode localpnpm checkFinal handoff contract:
pnpm check passed, browser N/Aplate-ui would leave schema scattered.pnpm install; pnpm lint:fix; focused generator tests; registry changelog --check; temp --new scaffold; --check --limit guard; autoreview; pnpm check.gh pr view 5023 --json body --jq .body.Timeline:
--check --limit finding.Reboot status:
| Question | Answer |
|---|---|
| Where am I? | Closeout |
| Where am I going? | Goal check, commit, push, final response |
| What is the goal? | Make future registry tasks use a single registry changelog contract |
| What have I learned? | plate-ui needs to trigger; registry-changelog needs to own schema and commands |
| What have I done? | Added rule/pack/README, synced generated skills, added generator CLI support, and passed verification |
Open risks: