Fix release for 1.1.2: the 14 longest skills keep their later phases after a compaction, a question nobody answered is never taken as an answer, settings read the same from a subfolder, the commit check works for a project in a subfolder of a larger repository, every skill opens with a title, and the shipped allow rules no longer approve deleting a branch or writing files without asking. Details in CHANGELOG.md; upgrade steps in UPGRADING.md (v1.1.2 → v1.1.3). Refs #83 Refs #133 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0185en4t76fPn7315q4c3nko
7.2 KiB
/gate-check — Section 2b: Workflow Tier Adjustment
Part of
/gate-check.SKILL.mdnames when to read this file; the settings it resolved and the rules under its later headings still apply here.
2b. Workflow Tier Adjustment
In this file:
- How to apply a gate file's tier reductions
qa.leveland the test items; the smoke check is the floor- A gate with no required artifacts left is NOT ASSESSED, with one exception
performance.enforce- Per-system overrides (
workflow_overrides.system_overrides), and the additive overrides
Each gate file carries its own tier reductions (see Section 2). Two rules apply across all of them:
How to apply: run the loaded gate's checklist, then apply that file's tier reduction for the tier resolved in Section 1. drop = not checked at this tier; → recommended = absent surfaces as CONCERNS, never a Blocker; items not named keep their baseline status. Reductions only ever relax a requirement — the only thing that adds one is
workflow_overrides(below).
qa.level(Section 1) further relaxes the test items independently of the tier: atqa.level: minimalthe test-evidence / unit-test items become non-required at every workflow tier (so evenworkflow: fulldoes not require them); the Section 3testing.strictcheck is then a no-op.It relaxes tests, not the look. A UI story's retained screenshots, and a Visual/Feel story's screenshots plus lead sign-off, are required at every
qa.levelwherever the gate file asks for story evidence (.claude/docs/coding-standards.md: tests are waived atminimal, the look is not).The smoke check is excluded from that relaxation, and is the floor.
qa.levelrelaxes per-story test evidence; a smoke check is build health, not story evidence, and the two are already held apart on exactly this basis in.claude/docs/coding-standards.md("/smoke-checkis a build-health gate, not a per-story evidence gate ... This divergence is intentional"). So a gate file that requires a smoke report keeps requiring it at everyqa.level.Without that exclusion the Production → Polish gate had zero required artifacts at
rigor: minimaland could not fail on artifacts by construction:minimalreduced the gate to the smoke check alone,qa.levelthen dropped the smoke check too, and onemodes.rigorsetting fires both.
A gate with no required artifacts left must say so, and may not return PASS. After applying the tier reduction and the
qa.levelrelaxation, count what remains required. If the count is zero, report NOT ASSESSED naming both reducers and the gate — "Production → Polish atworkflow: minimal+qa.level: minimalleaves no required artifact; this gate verified nothing" — rather than a PASS earned by having nothing to check. Per.claude/rules/skill-authoring.mdobligation 1, a run that could not assess its scope has not established that the scope is good, and obligation 3 requires the emptiness to be visible in the output rather than inferable from a silent green.The one exception: a gate its tier reference file marks "not applicable" at this tier (Systems Design → Technical Setup at
workflow: minimal). That is not a gate with nothing left to check but a transition the tier does not have: it PASSes with that file's note, printed in the report. The director panel does not run for it — note "Director Panel skipped — gate not applicable atworkflow: [tier]" — and the Section 6 stage write still asks first.
performance.enforceis likewise independent of the tier, and a tier reduction never suppresses it. The performance check in Section 3 runs at every workflow tier, andblockmakes a breach a Blocker at every workflow tier. Do not read a gate file's "everything else drops" as dropping it:offis the only thing that makes budgets informational, and it is a deliberate choice the user makes on the same key.Without this,
performance.enforce: blockis inert on everyrigor: minimalproject — the Polish gate'sminimalreduction drops everything outside its floor, and "Performance is within budget" sits in the dropped remainder. A setting that works only when a rule is disregarded is not wired.
Per-system overrides (workflow_overrides.system_overrides)
Independent of the project-level tier above, and applied only on the gates that validate MVP GDDs (Systems Design → Technical Setup, and the GDD-completeness checks at Pre-Production → Production). For each system, resolve its effective tier:
- If the block's
system_overrideslists<system>→ that tier - Else the project-level
workflow
Before applying any of them, check the block the other way round: does every
KEY match a system? <system> is the GDD filename stem
(.claude/docs/workflow-modes.md), so for each key in system_overrides, look
for design/gdd/<key>.md. Any key with no matching stem is reported, naming the
key and listing the stems that do exist:
system_overrides key 'no-such-system' matches no GDD in design/gdd/. Available stems: combat, inventory, forge-heat-system. This override is doing nothing.
Surface it as a CONCERNS-level finding, not a Blocker — the project is still gateable, but an override the user believes is in force and is not is exactly how a documented escape hatch silently stops working.
This is the rule in .claude/docs/workflow-modes.md: a key that matches no
system is an error, not a no-op. The story skills resolve only in the system →
override direction, so an orphan key is invisible to them; /gate-check, which
resolves the whole block, is where it is caught.
Validate each GDD against its own effective tier's section count:
- A system pinned higher than the project (e.g.
system_overrides.combat: fullon astandardproject) blocks the gate until that system's GDD meets the higher bar (combat → all 8 sections). This is the one case where a per-system setting makes the gate stricter than the project tier. - A system pinned lower (e.g.
inventory: minimal) relaxes only that system — its GDD is checked at the lower tier; every other system stays at the project level. A system pinnedminimalimposes no GDD section requirement at all (minimal= "game brief replaces GDDs" —.claude/docs/workflow-modes.md): it never blocks the gate on a missing or incomplete GDD. Do not invent an "acceptance-criteria-only" floor for it — there is none.
Additive overrides (the only things that make the gate stricter).
workflow_overrides.art_bible_strict: trueforces the complete (9-section) art bible at the Technical Setup → Pre-Production and Pre-Production → Production gates regardless of tier or whether visual-asset stories exist.workflow_overrides.edge_cases: trueandworkflow_overrides.tuning_knobs: trueforce those GDD sections required when validating GDD completeness, additive on top of the resolved tier (e.g. atstandard,tuning_knobs: truemakes the otherwise-optional Tuning Knobs section blocking). These never relax — afalsevalue is the default/no-op, never a way to drop a section the tier already requires.