mirror of
https://github.com/Donchitos/Claude-Code-Game-Studios.git
synced 2026-10-16 10:17:06 +00:00
Fix release for 1.1.1: the minimal path end to end, engine commands that run on Godot, Unity and Unreal, hook warnings you can see, and verdicts that say when they could not check. Details in CHANGELOG.md; upgrade steps in UPGRADING.md (v1.1.1 → v1.1.2). Fixes #67 Fixes #131 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WuJn2FdynEybfL5KC697nJ
84 lines
7.9 KiB
Markdown
84 lines
7.9 KiB
Markdown
# Agent Test Spec: release-manager
|
|
|
|
## Agent Summary
|
|
- **Domain**: Release pipeline (Build → Test → Cert → Submit → Verify → Launch), platform certification checklists scoped by `platform.cert_tier`, store submission and store page management, age ratings, semantic version numbering and release tags, release-day coordination, post-release monitoring
|
|
- **Does NOT own**: Game design, feature and scope decisions (producer), QA test strategy and test case design (qa-lead), build pipelines and CI/CD (devops-engineer), marketing copy (community-manager)
|
|
- **Gate IDs**: None; spawned by `/team-release` for the release candidate and the Go/No-Go sign-off. Its blocking output is a `NOT READY` Go/No-Go verdict from the preloaded `/release-checklist`, reported to producer
|
|
|
|
---
|
|
|
|
## Static Assertions (Structural)
|
|
|
|
- [ ] `description:` field is present and domain-specific (references release pipeline, certification, store submission)
|
|
- [ ] `tools:` reads `Read, Glob, Grep, Write, Edit, Bash` — Bash for release tagging ("Version tags must be applied to the git repository at every release point")
|
|
- [ ] `skills:` preloads `release-checklist`, `changelog` and `patch-notes`
|
|
- [ ] Model tier is `inherit` — frontmatter `model:` reads exactly `inherit` (tiers: `.claude/docs/model-tiers.md`)
|
|
- [ ] Agent definition does not claim authority over QA strategy, game design, or build infrastructure
|
|
- [ ] Its next-step offer runs `/patch-notes [version]` itself and hands the result to community-manager for the announcement — never a brief for community-manager to write the patch notes
|
|
- [ ] The pipeline's Test step takes the release gate's tier: QA sign-off at `workflow: full` (recommended at `standard`), no open S1 at any tier, no open S2 or S3 either at `full`
|
|
|
|
---
|
|
|
|
## Test Cases
|
|
|
|
### Case 1: In-domain request — certification checklist for a console submission
|
|
**Input context**: `project.yaml` sets `platform.cert_tier: console`; the game ships on Nintendo Switch.
|
|
**Input**: "Generate the certification checklist for our Nintendo Switch submission."
|
|
**Expected behavior**:
|
|
- Emits the console certification block its preloaded `/release-checklist` defines for `cert_tier: console` — TRC/TCR/Lotcheck requirements checklist, first-party submission, achievement/trophy integration, parental controls, save-data rules (corruption, full storage, user switching), age ratings — plus the console device requirements (controller prompts, suspend/resume, user switching, connectivity loss, storage full)
|
|
- Tracks every requirement individually with pass / fail / not-applicable status (Platform Certification Requirements)
|
|
- Emits no itch.io or Steamworks certification rows — the certification block follows `cert_tier`, not the platform named in the request
|
|
- Ends with the Go / No-Go line in `/release-checklist`'s three words (READY / NOT ASSESSED / NOT READY, first match wins) — here NOT ASSESSED or NOT READY, never READY, because the fixture supplies no build or test evidence — and asks "May I write this to `production/releases/release-checklist-[version].md`?" before writing
|
|
|
|
### Case 2: Out-of-domain request — design test cases
|
|
**Input**: "Write test cases for our save system to make sure it passes certification."
|
|
**Expected behavior**:
|
|
- Does not produce test case specifications
|
|
- Routes test design to `qa-lead`, which its Delegation Map names for quality gates, test results, and release readiness sign-off
|
|
- Offers what it does own: the save-data certification requirements the tests must cover (the console block's "Save-data rules compliant (corruption, full storage, user switching)"), as input for qa-lead
|
|
|
|
### Case 3: Domain boundary — age-rating rejection blocks the release
|
|
**Input**: "Our build was rejected by the ESRB. The rejection cites content not reflected in our rating submission: a hidden profanity string in debug output that appeared in a screenshot."
|
|
**Expected behavior**:
|
|
- Treats the rejection as blocking: the pipeline halts at the failed step until the issue is resolved ("No step may be skipped. If a step fails, the pipeline halts and the issue is resolved before proceeding")
|
|
- Returns the Go / No-Go verdict as NOT READY, listing the rating issue as a blocking item with an estimated time to resolve (`/release-checklist` Go / No-Go rationale)
|
|
- Identifies the action required: remove all debug output containing the content, then resubmit the rating questionnaire and track receipt of the new certificate (Store Page Management: age ratings)
|
|
- Does NOT minimize the issue or propose launching around it — a rating rejection is a blocking event, not an advisory
|
|
- Reports the delay's impact on the release date to producer, which it reports to for scheduling
|
|
|
|
### Case 4: Version numbering conflict — hotfix vs. release branch
|
|
**Input**: "Our release branch is at v1.2.0. A hotfix was applied directly on main and tagged v1.2.1. Now the release branch also has changes that need to ship as v1.2.1 but they're different changes."
|
|
**Expected behavior**:
|
|
- Identifies the conflict: two different changesets have been assigned the same version
|
|
- Resolves it with semantic versioning: `v1.2.1` stays with the build it already tags, and the release branch's changes, being fixes, ship as the next PATCH (`v1.2.2`) — its Version Numbering rule for two changesets claiming one version
|
|
- Does NOT accept a state where one version number names two different builds — "an applied tag is never moved or reused", and internal builds stay distinguishable by `MAJOR.MINOR.PATCH.BUILD`
|
|
- Coordinates the hotfix-branch side with `lead-programmer`, which its Delegation Map names for hotfix branch management
|
|
|
|
### Case 5: Context pass — release date constraint and certification lead time
|
|
**Input context**: Target release date is 2026-06-01. Current date is 2026-04-06. Nintendo Lotcheck typically takes 4-6 weeks.
|
|
**Input**: "What should we prioritize on the certification checklist given our timeline?"
|
|
**Expected behavior**:
|
|
- Works from the supplied dates and lead time, not placeholders: 8 weeks to release, so the first Lotcheck submission is due between 2026-04-20 (if it takes 6 weeks) and 2026-05-04 (if it takes 4) — before any resubmission
|
|
- Keeps the pipeline order and every step — Build → Test → Cert → Submit → Verify → Launch, "No step may be skipped" — and schedules backward from the release date rather than compressing or dropping a step to fit
|
|
- Plans for at least one certification iteration (Cert is "Submit to platform certification, track feedback, iterate") and flags that a single rejection would consume the remaining buffer
|
|
- Recommends an order but hands the schedule call to `producer` — it reports to producer for scheduling and prioritization, and cutting scope is producer's ("Decide what features to include or exclude (escalate to producer)")
|
|
|
|
---
|
|
|
|
## Protocol Compliance
|
|
|
|
- [ ] Stays within declared domain (release pipeline, certification checklists, version numbering, store submission)
|
|
- [ ] Routes test case design requests to qa-lead without producing test specs
|
|
- [ ] Returns NOT READY for a certification or rating failure and halts the pipeline — does not downgrade to advisory
|
|
- [ ] Applies semantic versioning and never lets one version number name two builds
|
|
- [ ] Scopes certification to `platform.cert_tier` and schedules from provided dates without skipping pipeline steps
|
|
|
|
---
|
|
|
|
## Coverage Notes
|
|
- Case 3 (NOT READY on a rating rejection) is the most critical test — this agent's primary safety output is blocking bad launches
|
|
- Case 1 assumes `platform.cert_tier: console`; with the key unset, the expected output is a question about which platforms are in scope or `NOT ASSESSED — cert tier unknown`, never every certification track
|
|
- Case 5 requires current date and release date context; verify the agent uses actual dates, not placeholder estimates
|
|
- Certification requirements change over time — flag if the agent produces specific requirement IDs that may be outdated
|
|
- No automated runner; review manually or via `/skill-test`
|