Issue Lifecycle
Security Notice
This extension includes AI agent skills that can modify AI assistant behavior. Review the skill files before installing.
Issue lifecycle model with 9 bundled Claude Code skills for DDD, TDD, moldable development, and parallel code review.
Drives issues from filing through triage, prior-art lookup, DDD + TDD
planning, parallel review fan-out (5 review skills), autonomous
code-review iteration (zero CRITICAL + zero HIGH gate), optional UAT/KB
harvest, and completion. State persists across sessions via the state
resource; the hydrate method writes a cheap summary resource for
long autonomous loops.
State Machine
filed ──[triage]──> triaged
triaged ──[plan]──> planned
planned ──[review_plan]──> reviewing
reviewing ──[approve_plan]──> approved
reviewing ──[reject_plan]──> planned (feedback loop)
approved ──[implement]──> implementing
implementing ──[verify]──> verifying
verifying ──[iterate_verification]──> implementing (autonomous loop)
verifying ──[review_code]──> code_reviewing (the ONLY path onward)
code_reviewing ──[resolve_findings]──> resolved
code_reviewing ──[iterate]──> implementing (autonomous loop)
resolved ──[iterate]──> implementing
resolved ──[attest]──> attested (optional)
resolved ──[harvest]──> harvested (optional)
resolved ──[complete]──> complete
attested ──[harvest]──> harvested
attested ──[complete]──> complete
harvested ──[complete]──> completeapprove_plan requires full matrix coverage AND zero open CRITICAL AND
zero open HIGH findings AND no reviewer FAIL verdict. implement
transitions approved → implementing directly; code and its unit tests
are written together, with no separate test-review gate.
close works from any state. start refuses to overwrite an in-flight
issue (any state other than complete/closed) unless force:true is
passed.
Pre-PR verification and attestation
verify runs the repository's declared mechanical controls (fmt, lint,
typecheck, tests) in one fan-out pass and records per-control status,
exit code, duration and runner. review_code is guarded on verifying,
so no path reaches code review without running the controls. A control
that could not be executed is recorded as error — never as a skip —
and blocks exactly as a failure does.
attest emits a manifest (commit sha, SHA-256 config checksums, control
results, per-reviewer finding counts) that CI validates in place of
re-executing the controls. It asserts every gate before writing and
refuses otherwise; it does not approve anything.
Methods
start— file a new issue (refuses to overwrite an in-flight issue unlessforce:true)triage— classify with optional confidence/regression/reproductionrecord_prior_art— record existing UAT scenarios and KB entriesrecord_reproduction— record/update the bug-reproduction outcome after triage (optional; callable from triaged or planned)plan— create/revise plan with DDD analysis, TDD strategy, review matrixreview_plan— enter plan review phaserecord_review— record one reviewer's findings (a second submission in the same round replaces, not appends)approve_plan— approve (gated on coverage + zero blocking findings + no FAIL verdict)reject_plan— reject with auto/human source trackingimplement— start implementation on a branch (entersimplementing); write the code together with its unit testsverify— run every declared mechanical control in one pass (entersverifying); controls come fromagent-constraints/verification-controls.md, never hardcodediterate_verification— loop back on a failing control (bumps verificationIteration)review_code— enter code review phase (requiresverifying)resolve_findings— record resolutions keyed per matching reviewer, snapshot rounditerate— return to implementation (bumps codeReviewIteration)attest— emit the attestation manifest CI validates (entersattested)harvest— record UAT/KB improvement proposalscomplete— mark doneclose— abandon from any statehydrate— write compact summary for autonomous loops
Bundled Skills
issue-lifecycle— orchestrates the full lifecycleddd— domain-driven design building block selectiontdd— red-green-refactor workflow enforcementmoldable-dev— contextual inspectors and live-data queriesreview-code— general code reviewreview-adversarial— adversarial review (7 dimensions)review-security— OWASP-adapted security auditreview-ux— CLI output and error message reviewreview-skill— skill quality review
2026.10.25.10
- Repo-wide republish; no functional change.
| Argument | Type | Description |
|---|---|---|
| title | string | |
| description | string | |
| labels? | array | |
| force? | boolean | Overwrite an in-flight issue (any state other than |
| Argument | Type | Description |
|---|---|---|
| priority | enum | |
| affectedAreas | array | |
| reasoning? | string | |
| isRegression? | boolean | |
| clarifyingQuestions? | array |
| Argument | Type | Description |
|---|---|---|
| uatScenarios? | array | |
| kbEntries? | array |
| Argument | Type | Description |
|---|---|---|
| status | enum | |
| notes? | string |
| Argument | Type | Description |
|---|---|---|
| summary | string | |
| steps | array | |
| dddAnalysis | string | Which aggregates, entities, value objects, and domain services are affected |
| testStrategy | string | What tests to write first, red-green-refactor sequence |
| potentialChallenges? | array |
| Argument | Type | Description |
|---|---|---|
| reviewer | string | Skill name: review-code, review-adversarial, review-security, review-ux, review-skill |
| verdict | enum | |
| findings? | array |
| Argument | Type | Description |
|---|---|---|
| reason | string | |
| source? | enum |
| Argument | Type | Description |
|---|---|---|
| branch | string | |
| description? | string |
| Argument | Type | Description |
|---|---|---|
| controls | array | Control specs from agent-constraints/verification-controls.md |
| repoDir | string | Absolute path to the repository root the controls run against |
| runner? | string | Identifier of the executing environment, e.g. 'local' or |
| Argument | Type | Description |
|---|---|---|
| reason | string | |
| source? | enum |
| Argument | Type | Description |
|---|---|---|
| resolutions | record | Map of finding description → resolution action |
| Argument | Type | Description |
|---|---|---|
| reason | string | |
| source? | enum |
| Argument | Type | Description |
|---|---|---|
| commitSha | string | The commit the verification ran against (git rev-parse HEAD) |
| repoDir | string | Absolute path to the repository root, for checksum computation |
| configPaths? | array | Repo-relative paths whose contents are checksummed into the |
| prUrl? | string | Pull request URL, when the PR already exists |
| producedBy? | string | Hostname or worker id that produced the manifest |
| Argument | Type | Description |
|---|---|---|
| uatProposals? | array | |
| kbProposals? | array |
| Argument | Type | Description |
|---|---|---|
| summary? | string |
| Argument | Type | Description |
|---|---|---|
| reason | string |
Resources
2026.10.21.1
Fixed
- The type failed to register on 2026.10.15.1–2026.10.15.9 ("Upgrades ... are
not in chronological order"): repo-wide version bumps had rewritten every
earlier identity upgrade entry to the new version, duplicating
toVersion. The chain is restored with distinct versions and a test now pins it strictly ascending. No schema change.
2026.10.15.9
Changed
- Repo-wide maintenance release: version bump to republish the current source. No schema change.
2026.10.15.8
Changed
- Repo-wide maintenance release: version bump to republish the current source. No schema change.
2026.10.15.6
Changed
- Repo-wide maintenance release: version bump to republish the current source. No schema change.
2026.10.15.5
Changed
- Repo-wide maintenance release: version bump to republish the current source. No schema change.
2026.10.15.4
Changed
- Repo-wide maintenance release: version bump to republish the current source. No schema change.
2026.10.15.3
Changed
- Repo-wide maintenance release: version bump to republish the current source. No schema change.
2026.10.15.2
Changed
- Repo-wide maintenance release: version bump to republish the current source. No schema change.
2026.10.15.1
Changed
- Repo-wide maintenance release: version bump to republish the current source. No schema change.
2026.10.14.2
Changed
- Repo-wide maintenance release: version bump to republish the current source. No schema change.
2026.09.20.2
Changed
- Version bump — CI publish of record for the test-review removal.
2026.09.20.1carried the same change but was pushed directly to the registry; this release lands the identical source through the normal merge/CI pipeline. No schema change.
Modified 1 skills
Modified 1 behaviors. Modified 1 skills
2026.09.19.2
Changed
- Repo-wide maintenance release: version bump to republish the current source. No schema change.
2026.09.17.1
Changed
- Repo-wide maintenance release: version bump to republish the current source. No schema change.
2026.08.31.1 — pre-PR verification + attestation
Model behavior change — model type version bumped to 2026.08.31.1. Adds
the mechanical half of the verification loop and the evidence artifact CI
validates in place of re-running it. Ships as an identity upgrades[]
migration: existing records gain verificationIteration: 1 from the schema
default, and verification / attestation stay unset until the new methods
run.
Added
verifyingstate betweenimplementingandcode_reviewing.review_codeis now guarded onverifying, so no path reaches code review without running the repository's declared controls. Everyiteratefrom the code-review loop lands inimplementingand must pass through it again.attestedstate betweenresolvedandharvested/complete.verify— runs every declared control (fmt, lint, typecheck, tests) in one fan-out pass, recording per-control status, exit code, duration, runner and a bounded stderr tail. Control specs are supplied by the caller fromagent-constraints/verification-controls.md; the model hardcodes no build command. A control that cannot be spawned iserror, and amanaged-tier control on alocalrunner isskipped— both block exactly asfaildoes, because "the tool could not evaluate this" is not evidence of a clean tree.iterate_verification— returns toimplementingon a failing control, snapshotting averificationround toreviewHistoryand bumpingverificationIteration. Mirrorsiterate/iterate_tests.attest— emits the attestation manifest: commit sha, SHA-256 checksums of every declared config input, control results, and per-reviewer open-finding counts by severity. Written both ontostateand to a dedicatedattestationresource keyed by commit sha. It re-asserts every gate before writing (verification round exists, every required control passed, no FAIL verdict, zero open CRITICAL/HIGH, every config path readable) and refuses otherwise — it asserts, it does not approve.attestationresource and theAttestationSchema/ControlSpecSchema/ControlResultSchema/VerificationSchemapublic types.hydratenow reportsverificationIterationandcontrols: {ran, total, blocking[]}so the autonomous loop can see control state without parsing the full blob.agent-constraints/verification-controls.md— the control declaration this repo runs, mirroring thedeno-checkCI job step for step.- Skill references
verification.md(Phase 4c) andattestation.md(Phase 5b);SKILL.md,state-machine.md,implementation.md,code-review.mdandautonomous-loop.mdupdated to match.
Changed
harvestacceptsresolvedandattested;completeacceptsresolved,attestedandharvested.implementation.mdStep 5 no longer tells you to track the PR externally —attestcarries a first-classprUrl, and the PR is opened after attesting, not before.- The model is no longer pure logic.
verifyspawns subprocesses andattestreads files. Both effects are injected (CommandRunner,FileReader) so tests never spawn anything, and the adversarial suite covers the new surface: controlcwdescaping the repo root, absolutecwd, spawn failure, deniedallow-run, stderr truncation, and everyattestrefusal.
Modified 1 behaviors. Modified 1 skills
Modified 1 skills
2026.08.02.1 — latent-bug fixes (IL-1/2/4/7) + five-suite quality
Model behavior change — model type version bumped to 2026.08.02.1 (first
release since the 2026.07.16.2 five-suite quality backfill). Real fixes for
four of the seven latent bugs triaged in the LOCAL issue-lifecycle model
issue-lifecycle-latent-bugs; three are explicitly re-affirmed as intentional
behavior, not fixed. No globalArguments or resource-schema change — the
version bump ships as an identity upgrades[] migration.
Fixed
- IL-1 —
startused to overwrite whatevercurrentheld with no read-before-write — approved plans, review history, everything — with no guard or confirmation. It now reads existing state first: a fresh instance (nocurrentyet) or one already in a terminal state (complete/closed) proceeds as before; anything else throws unless the newforce: booleanargument (defaultfalse) is passed. - IL-2 —
approve_plan/tests_approvedgated only onhasBlockingFindings(open CRITICAL/HIGH count), so a reviewer could postverdict: "FAIL"with zero findings (or all findings resolved/non-blocking) and approval would still succeed. Both methods now also call the newfailingReviewers()helper and block if any reviewer's verdict is FAIL, after the existing blocking-findings check (gate order preserved so "N CRITICAL and M HIGH" fires first when both conditions hold).tests_approved'soverride_reasonnow bypasses both gates together, as before.SUGGEST_CHANGESremains non-blocking by design — onlyFAILhard blocks, so the autonomous zero-CRITICAL/zero-HIGH loop can still converge without a human override. - IL-4 —
resolutionsis a flatRecord<string, string>keyed by finding description text; two different reviewers whose findings happened to share description text collapsed into one entry.resolve_findingsnow expands each supplied key against the current round's findings: every reviewer whose finding matches that description gets its own`${reviewer} :: ${description}`composite key. A key matching no finding is stored verbatim (legacy-safe; unaffected: empty-map callers). - IL-7 —
record_reviewappended every submission unconditionally, so recording the same reviewer twice in one round double-counted their open findings in the blocking gate. It now replaces (last-write-wins) the reviewer's earlier entry in place instead of appending a duplicate.
Kept as designed (re-affirmed, not fixed)
- IL-3 — no model-enforced iteration cap on
iterate/iterate_tests.MAX_CODE_ITERATIONS/MAX_TEST_ITERATIONSstay skill-layer policy; enforcing a cap in the pure model would couple it to skill policy and could break the humanoverride_reasonescape hatch. - IL-5 —
closehas noguardStatecall and works from any state, including terminal ones. This is intentional:closeis the abandon/escape hatch (manifest.yaml has always documented "works from any state") and an escape hatch must never itself be blockable. - IL-6 —
hydrate'ssummary.snapshotAtis stamped fresh vianow()on every call, so two calls produce two different values even thoughcurrentis never mutated.snapshotAtis a wall-clock capture stamp — it should differ per call; the property suite already proves non-mutation ofcurrentby freezing the clock (@std/testingFakeTime), which is the invariant that actually matters here.
Five-suite quality (carried from the 2026.07.16.2 backfill, updated)
extensions/models/issue_lifecycle_methods_test.ts— success + exact guardState-throw-message regression for each of the 20 model methods, a sweep pinning "No issue state found — run 'start' first" on every method butstart, and a sweep pinning the REAL (not assumed) unknown-key behavior of every method's zod arguments schema:swamp model type describe --jsonrendersadditionalProperties: false(its own JSON-Schema view), but none of the 20 methods call.strict(), so a bare.parse()silently strips an unrecognized key rather than throwing.extensions/models/issue_lifecycle_adversarial_test.ts— illegal out-of-order transitions from varied source states, malformed reviewer input (bad severity/verdict enums rejected by zod), hostile approve_plan gate combinations (missing-matrix-reviewer, combined CRITICAL+HIGH counts), corrupted-stored-state pins for the "no plan found" branches inapprove_plan/tests_approved, whitespaceoverride_reasonstill gated, and pins asserting the FIXED IL-1/IL-2/IL-4/IL-7 behavior above plus the re-affirmed IL-3/IL-5 by-design behavior.extensions/models/issue_lifecycle_coverage_test.ts— branch fill forallMatrixReviewersRecordedacross the security/ux/skill matrix dimensions,
Release 2026.07.16.2 — align model versions with manifests
Maintenance release across the @magistr extensions. For most packages this
carries no functional change: the only edit is the model's version: field,
brought back in line with its manifest version so the published model type
version and the package version no longer drift.
Functional changes in this release are limited to:
anime-cron: normalizeTitle now strips a ": subtitle" suffix and a trailing parenthesized year before comparison, fixing dedup false-misses where the torrent title carries a subtitle or year that the AniList romaji does not.
arckit: first publish. Standalone ArcKit port — a 12-phase architecture governance state machine with 65 bundled templates, driven by a bundled skill.
Also tracks three extensions (kaiten, observability-agent, music-library) that previously existed only as untracked working-tree directories, recovered from stashes.
Added 1, removed 1 behaviors. Added 9 skills
Merge pull request #14 from umag/feat/issue-lifecycle-scenario-9-resume-eval
feat(issue-lifecycle): eval scenario-9 — resume-dispatch from the TDD sub-cycle (2026.06.12.3)
Modified 1 skills
- Has README or module doc2/2earned
- README has a code example1/1earned
- README is substantive1/1earned
- Most symbols documented1/1earned
- No slow types (deprecated)1/1earned
- Dependencies pass trust audit2/2earned
- Docs keep secrets in a vault1/1earned
- Has description1/1earned
- Platform support declared (or universal)2/2earned
- License2/2earned
- Verified public repository2/2earned