promote: release trigger delegation hook — honour a declared release.command instead of the built-in tag write-back #60

Open
opened 2026-08-25 07:30:03 +00:00 by jbr870 · 0 comments
Owner

Problem

/dev:promote's documented release: schema has no delegation hook for projects that own
their release tooling. This repo is the live example: its release: block declares

command: "bash scripts/release.sh {version}"

— a field that is not in promote's schema, so it is read by the operator/model, not by the
skill. Nothing mechanical stops promote's built-in tag strategy from doing its own manifest
write-back + git tag, which on this repo would bypass scripts/release.sh's five refusals and
four gates (lint → audit-doc-structure → claude plugin validate --strict on both roots →
claude plugin tag --dry-run) and break its "sole writer of the two version fields" invariant.

Every promote run here depends on a prose comment in CLAUDE.md being read correctly. That has
held for two releases (0.1.6, 0.2.0) but is exactly the shape of guarantee this suite exists to
replace.

Proposal

Add an optional release.command (trigger-delegation) field to promote's documented release:
schema, honoured by the tag strategy:

  • When present, Step 4 reduces to: resolve the version (the existing ladder still applies, to
    compute {version}), then run the declared command with {version} substituted — skipping
    promote's own manifest write-back, git tag, and tag push.
  • The forge Release step still dispatches on tag_only as today.
  • Steps 5–7 (monitor → deploy_check → finalize) are unchanged — the delegated command replaces
    only the trigger, never the monitoring or the record.
  • Absent the field, behaviour is exactly today's built-in tag flow (no compatibility change).

Evidence

  • This repo's CLAUDE.md release: block (the NOTE: beside command:) and the 2026-08-24
    promote handoff record on #50 (HANDOFF #6): "The missing delegation hook is a real suite gap."
  • Releases dev--v0.1.6 and dev--v0.2.0 were both shipped via the delegated command with promote's
    Step 4 manually reduced — the workaround works but is convention, not contract.

Lane

Full pipeline (helper/skill behaviour + a documented schema change), not the meta lane.

## Problem `/dev:promote`'s documented `release:` schema has **no delegation hook** for projects that own their release tooling. This repo is the live example: its `release:` block declares ```yaml command: "bash scripts/release.sh {version}" ``` — a field that is **not in promote's schema**, so it is read by the operator/model, not by the skill. Nothing mechanical stops promote's built-in `tag` strategy from doing its own manifest write-back + `git tag`, which on this repo would bypass `scripts/release.sh`'s five refusals and four gates (lint → audit-doc-structure → `claude plugin validate --strict` on both roots → `claude plugin tag --dry-run`) and break its "sole writer of the two version fields" invariant. Every promote run here depends on a prose comment in CLAUDE.md being read correctly. That has held for two releases (0.1.6, 0.2.0) but is exactly the shape of guarantee this suite exists to replace. ## Proposal Add an optional `release.command` (trigger-delegation) field to promote's documented `release:` schema, honoured by the `tag` strategy: - When present, Step 4 reduces to: resolve the version (the existing ladder still applies, to compute `{version}`), then run the declared command with `{version}` substituted — **skipping** promote's own manifest write-back, `git tag`, and tag push. - The forge Release step still dispatches on `tag_only` as today. - Steps 5–7 (monitor → deploy_check → finalize) are unchanged — the delegated command replaces only the trigger, never the monitoring or the record. - Absent the field, behaviour is exactly today's built-in tag flow (no compatibility change). ## Evidence - This repo's CLAUDE.md `release:` block (the `NOTE:` beside `command:`) and the 2026-08-24 promote handoff record on #50 (HANDOFF #6): "The missing delegation hook is a real suite gap." - Releases dev--v0.1.6 and dev--v0.2.0 were both shipped via the delegated command with promote's Step 4 manually reduced — the workaround works but is convention, not contract. ## Lane Full pipeline (helper/skill behaviour + a documented schema change), not the meta lane.
Sign in to join this conversation.
No description provided.