Skip to content

feat(plugin): campaign invariants — verify the machinery, not only artifacts#83

Merged
avrabe merged 1 commit into
mainfrom
feat/plugin-campaign-invariants
Jun 10, 2026
Merged

feat(plugin): campaign invariants — verify the machinery, not only artifacts#83
avrabe merged 1 commit into
mainfrom
feat/plugin-campaign-invariants

Conversation

@avrabe

@avrabe avrabe commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

Closes the gap a real v1.35→v1.55 relay field report found in 0.6.0: the self-verify interval was the right shape but artifact-scoped — it re-checked the work, never the release machinery. Three machinery failures shipped a whole bad round and none was named:

  1. required_status_checks.contexts: [] → every --auto merge landed without CI.
  2. merged ≠ released — "LANDED" reports with no tag pushed.
  3. cancel-in-progress merge trains left the tagged commit's CI cancelled.

Adds a "Verify the machinery (campaign invariants)" block to the operating contract (single source): assert the required-checks gate is non-empty before a round; merged ≠ released (tag + success run); only a green HEAD before the tag makes the round whole. Broadens the self-verify clauses (contract + feature-loop) to check machinery and artifacts with fresh-context subagents, and release-execution step 5 asserts these before tagging (a reference, not a restatement). → 0.8.0.

🤖 Generated with Claude Code

…tifacts

Closes the gap a real v1.35->v1.55 relay field report identified in 0.6.0: the
self-verify interval was the right shape but artifact-scoped — it re-checked the
work, never the release machinery. All three machinery failures shipped a whole
bad round and none was named:
  1. required_status_checks.contexts was [] — every --auto merge landed without
     CI ("PRs merge in seconds").
  2. merged != released — ten "LANDED" reports with no tag pushed.
  3. cancel-in-progress merge trains left the tagged commit's CI cancelled, so a
     "verified" release sat on an unverified commit.

Adds a "Verify the machinery, not only the artifacts (campaign invariants)" block
to the operating contract (single source): assert the gate is non-empty before a
round; merged != released (tag + success run, not cancelled/queued); only a green
HEAD before the tag makes the round's evidence whole. Broadens the self-verify
clauses (operating contract + feature-loop) to check machinery AND artifacts with
fresh-context subagents. release-execution step 5 now asserts these before tagging
(reference, not restatement). Bump to 0.8.0.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@avrabe avrabe merged commit bf7d9eb into main Jun 10, 2026
1 check passed
@avrabe avrabe deleted the feat/plugin-campaign-invariants branch June 10, 2026 18:58
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