Files
magnus919_agent-skills/bundles/neckbeard/references/lifecycle.md
T
Magnus HedemarkGitHubusername <username>factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
4a4958b676 feat(neckbeard): issue-to-PR delivery workflow (#181-#185) (#208)
* feat(neckbeard): add delivery packet reference

Author references/delivery-packet.md: the durable cross-phase handoff for
change-request runs. Defines the nine field groups (a-i), the artifact
ownership map (writer/reviewer/gate/path per artifact), field-group write
ownership per phase, lifecycle states with allowed transitions and terminal
semantics, blocked-state semantics, resumability rules with a changed-head
procedure (material and non-material branches plus SHA-update recording) and a
concrete resume-after-context-boundary example, exact-head binding for every
verdict, baseline-vs-post-change evidence with boundary labels, skip
transparency, and a portability statement. Link the packet from the SKILL.md
file map for progressive-disclosure discovery.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>

* feat(neckbeard): add delivery packet template and extend contract templates

Create templates/delivery-packet.md mirroring the nine field groups from
references/delivery-packet.md with fillable sections (placeholder + fill
instruction or example per section; resumability, gates, and lifecycle
sections demonstrate SHA, verdict, and state entry). Update
templates/change-contract.md and templates/evidence-ledger.md to add
change-request provenance, skip-reason, gate-verdict, PR/CI status, and
release-status fields with identical names and semantics across all three
templates.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>

* feat(neckbeard): expand routing table into conditional applicability matrix

Transform routing-table.md from a simple stage-routing lookup into a
conditional applicability matrix. Retain all 15 pre-existing rows and
the two narrower specialists (product-methodology, c4-diagramming).
Add new rows: backend-engineering, frontend-engineering, cli-builder,
data-engineering, data-architect, agent-evals-and-observability,
platform-engineering, security-audit-methodology, and a conditional
opensource-contributions row (public/OSS repos only).

Every row carries a concrete applicability signal (file-system/artifact
observable) and a concrete skip rule (non-tautological complement).
Add explicit change-surface coverage table mapping all ten mandated
surfaces to >=1 row. Add multi-row composition rule (one lead per
stage, per-stage leads recorded in packet) and no-specialist-needed
fallback. Public catalog names only; link to specialists, do not
duplicate their methodology.

Fulfills: VAL-ROUTING-001, VAL-ROUTING-002, VAL-ROUTING-003,
VAL-ROUTING-004, VAL-ROUTING-005, VAL-ROUTING-015, VAL-ROUTING-016,
VAL-ROUTING-017.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>

* feat(neckbeard): add five gates and four delivery paths to stages.md

Define five explicit change-request gates with verdict semantics
(pass/conditional/blocked), phase boundaries, and verdict owners:
- Gate 1: architecture/design delta approval before planning
- Gate 3: spec + task-plan completeness before planning exit
- Gate 2: QA-owned verification plan before implementation
- Gate 4: independent review with per-dimension reviewer mapping
- Gate 5: boundary verification with material/non-material definitions

Add four delivery paths (lightweight, full, refactor, high-risk) with
mandatory vs conditional phase matrices and skip criteria. Stages.md
declared single source of truth for path matrices (VAL-ROUTING-023).

Fulfills: VAL-ROUTING-006 through VAL-ROUTING-014, VAL-ROUTING-018
through VAL-ROUTING-022.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>

* feat(neckbeard): add canonical change-request journey reference

Author references/journey.md with the 9-phase platform-neutral journey:
intake/provenance, discovery/reproduction, architecture/design delta,
specification/decomposition, pre-implementation test planning, domain
implementation, independent review/boundary verification, readiness/CI
loops with exact-final-head re-verification, and authorized post-merge
release/closeout. Each phase specifies owner, input, output, gate, and
escalation condition with a GitHub/enterprise platform mapping column.

Includes four delivery paths (lightweight, full, refactor, high-risk)
referencing stages.md as single source of truth, conditional specialist
routing with recorded skip reasons, no-change-needed termination, the
materiality rule referencing stages.md canonical definition, PR readiness
vs release authority separation, and contiguous phase input/output chain
through named delivery-packet field groups.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>

* feat(neckbeard): add change lifecycle reference with GitHub and enterprise modes

Author references/lifecycle.md with two documented modes sharing the same
nine-phase sequence, five gates, and delivery-packet field group (i):
- GitHub reference mode: issue snapshot before planning; four-class authority
  (contributor/maintainer/merge/release); duplicate/PR/branch/maintainer-direction
  checks; fork-vs-branch determination; issue linkage + closing-keyword discovery;
  readiness/submission/merge separation; CI triage and review monitoring; material
  post-submission re-verification through gates 4 and 5; exact-final-head binding
  updated per review round; terminal states (merged/closed/blocked/released) with
  evidence; release readiness vs release activity separation; post-release
  verification evidence; external cancellation path; conditional delegation to
  opensource-contributions for public/OSS repos only; no repo-specific hardcoding.
- Enterprise mode: source-of-truth snapshot (ticket/email/verbal); ticket-tracker
  dedup/existing-CR check; explicit named-approver approval gate feeding merge;
  enterprise CI; change-governance boundaries (CAB, change freeze); release
  authority separation; packet portability mapping.
Also update routing-table.md with platform-neutrality framing note for
bundle-wide consistency (VAL-FORMAT-009).

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>

* feat(neckbeard): add merge gate and release gate to risk-authority-gates

Define the merge gate (exact-final-head SHA + CI passing + approved
review status as mandatory preconditions) and the release gate (explicit
authorization beyond merge authority: human grant or documented
pre-delegated permission). Separate pre-merge release readiness
assessment from release activity execution. All existing content
(authority classes, mutation gate, hard stops, stop-and-escalate rules,
recording requirement) is retained unchanged.

Satisfies VAL-LIFECYCLE-018, VAL-LIFECYCLE-019, VAL-CROSS-020,
VAL-CROSS-021.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>

* feat(neckbeard): wire journey, lifecycle, and delivery packet into umbrella SKILL.md and README

Extend the SKILL.md description trigger to cover change-request / issue-to-PR /
issue-to-release work while retaining all existing fix/build/refactor/review/
verify/release triggers. Add a negative boundary: the journey is not loaded for
plain fixes, refactors, or reviews without an issue/ticket trajectory.

Add a "Change-request work (conditional)" body section pointing to journey.md
with explicit exclusion rules. Update the file map with rows for journey.md,
lifecycle.md, delivery-packet.md, and templates/delivery-packet.md, each with
both a positive scope (change-request work) and a negative scope (not for simple
fix/refactor/review without an issue trajectory).

Update README.md What You Get table with rows for the new references, template,
and evals. Update the Triggers section with change-request and issue-to-PR
delivery triggers additively.

Regenerate llms.txt and .claude-plugin/marketplace.json to reflect the updated
description.

Fulfills: VAL-JOURNEY-010, VAL-JOURNEY-013, VAL-FORMAT-001..005, VAL-FORMAT-010,
VAL-FORMAT-017, VAL-FORMAT-018, VAL-FORMAT-021, VAL-FORMAT-022, VAL-CROSS-010,
VAL-CROSS-018.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>

* feat(neckbeard): add schema-v1 evals manifest with nine trajectory cases

Create bundles/neckbeard/evals/evals.json (schema v1, skill_name: neckbeard)
with nine output-quality cases covering all required trajectory scenarios:

1. Straightforward bug fix with reproduction and regression test
2. Ambiguous feature requiring product discovery and scope gate
3. Multi-surface change (backend/frontend/API/data routing)
4. Schema/migration change with rollback and release-readiness evidence
5. Refactor with characterization tests and architecture review
6. Docs-only reduced path with comprehensive skip recording
7. Existing PR/duplicate work detection and deferral
8. Review round changing final head requiring re-verification
9. Release-authority-blocked terminal state

Cases cover both successful trajectories (merged) and bounded
escalation/blockage (blocked, closed). Assertions verify routing
decisions, artifact production, gate behavior, skip reasons,
exact-head binding, and terminal lifecycle state — not response
length. Each assertion is judge-decidable from run-produced
artifacts (delivery packet fields, gate verdicts, bound SHAs).

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>

* feat(neckbeard): add trajectory evaluation fixtures and extend harness

Add integrated multi-phase trajectory fixtures under eval/fixtures/trajectories/
and extend run_eval.py to validate them without breaking the 10 existing
single-task fixtures.

- full-change-request: nine-phase intake→release fixture traversing all 9
  journey phases to a released terminal state with all 5 gates recorded and
  final verdict bound to a head SHA.
- reduced-docs-only: lightweight path fixture ending closed with recorded
  skips for phases 2-5, gates 1-3, and 8 routing-table specialists.
- run_eval.py: classify fixtures by kind discriminator, validate trajectory
  sub-schema (phase/gate labels against journey.md canonical names, path
  membership, terminal state, head SHA binding for full path), report counts
  for both fixture kinds.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>

* docs(neckbeard): update evaluation docs for trajectory fixtures

- evaluation.md: add worked example (validate-only command + expected
  stdout), trajectory fixtures section, trajectory scoring guidance
  (outcome dims not phase-count/shape), strengthened claims scoping
- baseline-protocol.md: add trajectory comparison section (context-
  equivalence, shape-neutrality, skip transparency, terminal state
  equivalence) and claims scoping section
- task-schema.md: add trajectory fixture schema table (kind, path,
  phases, gates, terminal_state, skipped_phases, skipped_gates,
  final_head_sha, routing fields) with full-path constraints and
  trajectory layout

Fulfills VAL-EVALS-009, VAL-EVALS-012, VAL-EVALS-015, VAL-EVALS-016.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>

* fix(neckbeard): use rsplit for phase-label parsing and document routing fields as metadata-only

Make _validate_phase_labels consistent with _validate_gate_labels by
splitting on the last ": " (rsplit) instead of the first occurrence
(find), so colons inside phase names do not break skip-reason parsing.

Document routing_selected/routing_skipped as metadata-only in
task-schema.md: the runner does not cross-validate these fields against
the routing table, because coupling the harness to the routing table
markdown format would add fragile parsing without improving fixture
correctness. Reviewers verify routing entries during trajectory scoring.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>

---------

Co-authored-by: username <username>
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-02 12:33:19 -04:00

20 KiB
Raw Blame History

Change Lifecycle Integration

The platform mechanics for carrying a change request from intake to an authorized post-merge release. This reference is loaded by ../SKILL.md only for change-request / issue-to-PR / ticket-to-release work — a request that will produce a pull request or an equivalent reviewable deliverable. A single-line edit, an ad-hoc fix, or a review without an issue/ticket trajectory does not load this reference; that work uses the core loop in ../SKILL.md.

The lifecycle does not invent phases or gates. It maps onto the nine-phase change-request journey (journey.md) and the five gates (stages.md). It records its outcomes in the delivery packet (delivery-packet.md), field group (i) — PR/review-submission number, CI status, review status, final verified head SHA, and release status — plus the terminal-state evidence those states require. Stop and escalation rules live in risk-authority-gates.md.

Two modes, one structure

The workflow is platform-neutral. Two documented modes share the same phase sequence, the same five gates, and the same packet fields; only the platform mechanics differ.

GitHub reference mode Enterprise mode
Use when The target repository is public/open-source (public remote, open-source license, contribution governance). The target repository is private or enterprise-internal: ticket trackers, private hosting, enterprise review and CI tooling, change governance.
Source of truth An issue in the repository tracker. A ticket, email thread, or verbal request.
Review submission A pull request. An enterprise change request / review submission.
Authority to merge Maintainer action on a protected branch. Enterprise approval workflow / change manager.
Authority to release A separate grant beyond merge. A separate authorization (CAB, change-manager sign-off, change-freeze window).

Mode selection is recorded in packet group (b). GitHub is a documented reference mode, never the assumed default. Enterprise mode makes no open-source assumption — no public visibility, no fork-based contribution, no community norms.


GitHub reference mode

GitHub mechanics are described here; contribution norms are delegated to the catalog skill opensource-contributions and are discovered per repository, never hardcoded.

Contribution-norm delegation (public/OSS only)

Load opensource-contributions only when the repository is public/OSS (public remote and an open-source license). It owns contribution-norm detail: CONTRIBUTING.md interpretation, agent disclosure, fork etiquette, commit conventions, PR templates, and post-submission etiquette. This reference delegates to it and does not re-derive its content.

If the repository is private or enterprise-internal, do not load opensource-contributions; use enterprise mode below, and record the skip in packet group (e) with the reason "non-public repository."

1. Snapshot the issue and repository context before planning — phase 1

Before any planning or implementation begins, capture all of the following as mandatory intake artifacts. The phase 1 intake gate (journey.md) cannot be satisfied without them.

  • Issue body — the full request text.
  • All issue comments — not just the opening post.
  • Linked and referenced work — related issues, PRs, and commits that touch the same problem.
  • Repository conventionsCONTRIBUTING.md, AGENTS.md, .github/ templates, or equivalent, discovered per repository.
  • Base ref — the current base branch ref the change will target.

Record these in packet group (a). Planning may not start until the snapshot is complete.

2. Classify authority — phase 1

Classify the granted authority into four separate classes and record each before implementation. These complement the authority classes in risk-authority-gates.md (Explore / Modify / Publish / Deploy / Merge); they are never collapsed into a single "has access" judgment.

Class Scope
Contributor Can fork, branch, and open a PR.
Maintainer Can approve, review, and close.
Merge Can land a change into a protected branch.
Release Can tag, publish, or deploy.

Record the granted class per row in packet group (b). A contributor grant does not imply merge or release authority. Merge authority does not imply release authority (see Authority boundary).

3. Pre-work integrity checks — phases 12

These checks run before a branch is created and before work proceeds. Each has its own recorded outcome in the packet; they are distinct, not one merged check.

Check What it does Recorded outcome
Duplicate-issue search Search the repository issue tracker for an existing issue describing the same or overlapping problem. "duplicate found and handled" or "no duplicate."
Existing-PR search Search for open and recently closed PRs addressing the same issue or problem, including PRs from other contributors not linked to the issue. "PR found — see handling" or "no existing PR."
Conflicting-branch check Check whether another contributor has already pushed a branch targeting the same issue or change surface. Coordinate, wait, or proceed-with-awareness decision.
Maintainer-direction review Review issue comments, assignments, labels, and governance docs for explicit direction ("I'll handle this," "don't work on this yet," "assigned to X," a deferral label). Proceed, or stop/escalate if direction conflicts.

Maintainer direction is a hard gate. If maintainer direction conflicts with proceeding, the agent must not proceed regardless of the other checks. This is consistent with the stop rules in risk-authority-gates.md.

Handling an existing open PR (no duplicate work). When the existing-PR search finds an open PR addressing the same problem, decide and record:

  • Continue/assist if it is the agent's own prior work — resume from packet state (delivery-packet.md, resumability).
  • Coordinate or defer if another contributor owns it.
  • Never open a duplicate PR. The decision is recorded in the packet.

4. Determine fork-vs-branch before PR creation — phase 6

Before creating a branch or PR, determine the repository's contribution workflow from CONTRIBUTING.md, .github/ conventions, or maintainer direction — per repository, never assumed:

  • Fork-and-PR vs branch-in-repo.
  • Record the choice in the packet, and apply fork etiquette via opensource-contributions when a fork is required.

The lifecycle never assumes a branch-in-repo workflow or leaves the mode implicit.

5. PR readiness, submission, and merge are separate states — phases 68

These three states are explicitly distinct; reaching one does not grant the next.

State Meaning Who controls it
Ready Code complete, self-reviewed, tests pass locally, verification evidence recorded. The agent can reach this independently.
Submitted The pull request is opened. The agent performs the act of opening.
Merged The change lands in the protected target. Requires maintainer action plus passing CI and approved review — not the agent's own readiness assessment.

Merge is gated on external authority beyond the agent's readiness declaration.

Issue linkage and closing keywords. The PR body must (a) reference the source issue by number and (b) use the repository's own closing-keyword convention, discovered from CONTRIBUTING.md or project norms (e.g., Closes #N, Fixes #N, Resolves #N). If the repository specifies no convention, use a defensible default: Closes #N.

PR body content. Beyond the issue link and closing keyword, the PR body describes the change — what it does, why, and how it was verified — and follows the repository's PR template if one exists (discovered per repository).

6. Post-submission monitoring — phase 8

After the PR is submitted, both monitors are mandatory and run until they terminate; checking once is not enough.

CI monitoring. Monitor CI status until CI completes. CI failure is a blocking condition: the PR is never merge-ready while CI is red. When CI is red, triage it:

  1. Diagnose the failure from the logs.
  2. Fix it if the failure is attributable to the change.
  3. Escalate when the failure is undiagnosable after two attempts (per risk-authority-gates.md).

Never consider the PR merge-ready, and never merge it, while CI is failing.

Review monitoring. Monitor for review feedback (comments, change requests, approvals) and respond to material feedback with code changes rather than argument. Review monitoring is distinct from CI monitoring.

7. Material change and exact-head binding — phases 78

Every material change pushed after initial submission — any change that alters behavior, fixes a bug, or responds to review feedback beyond a trivial typo fix — invalidates prior verification verdicts and must return through both independent review (gate 4) and boundary verification (gate 5) before the PR is merge-ready again. A stale verdict on a superseded head SHA is never carried forward; the new head is independently verified.

Materiality uses the canonical definition owned by stages.md (§ Gate 5 — Material change definition):

  • Material (invalidates verdicts, re-verify): alters logic, adds/removes functionality, modifies the verification surface, changes test assertions, or alters data flow across a trust boundary.
  • Non-material (verdicts stand, SHA binding updated): typo fixes, formatting-only, comment-only edits, pure renames without behavior change, docs-only changes, and rebases with no semantic diff.

The merge-readiness verdict is bound to the exact full head SHA. No verdict is valid without a bound SHA, and a verdict referencing a different SHA (e.g., from before a rebase or force-push) is explicitly stale and insufficient.

Update the final-verified-head-SHA field after every review round. Each review round ends with packet group (i) final verified head SHA refreshed to the current head and fresh verification evidence recorded for that head:

  • A round that pushes a change updates the field and re-runs verification.
  • A round that changes nothing keeps the existing SHA.

The final verdict is always bound to the exact final head of the delivered change. This is the same rule expressed in journey.md phase 8 and in the packet's exact-head-binding section.


Enterprise mode

Enterprise mode uses the same nine phases and five gates as GitHub mode. It makes no open-source assumption and does not reference opensource-contributions.

1. Source-of-truth snapshot — phase 1

Capture the authoritative request from wherever it actually lives — it is not assumed to be a GitHub issue:

  • A ticket-tracker entry (ticket ID, description, comments), or
  • an email thread, or
  • a verbal request (transcribed with attribution).

Record the snapshot, the repository, and the base ref in packet group (a). The phase 1 intake gate cannot be satisfied without it.

2. Duplicate / existing-change-request check — phases 12

Equivalent to the GitHub duplicate-issue and existing-PR checks:

  • Search the ticket tracker for an open change request covering the same problem.
  • Search for any existing change branch / CR in flight.
  • Record the result. If one exists, coordinate or defer.

Enterprise intake does not end at snapshotting the ticket; the dedup outcome is recorded in the packet.

3. Authority classification and approval gate — phases 1, 7

Classify authority using the same four classes as GitHub mode (contributor, maintainer-equivalent, merge, release) and record them in packet group (b).

Explicit approval gate. Enterprise review requires a named approver sign-off that the merge gate depends on:

  • a named reviewer/approver;
  • a recorded verdict in the packet;
  • the verdict feeds the merge gate (phase 8 readiness → merge).

This is the enterprise equivalent of GitHub review approval (gate 4). Review is not merely "integrating with review tooling" — it produces a recorded approval verdict.

4. Enterprise CI and change governance — phase 8

  • Enterprise CI. Integrate with the enterprise CI system (not assumed to be any particular provider); monitor it after submission exactly as GitHub mode monitors CI, and triage red CI (diagnose, fix, or escalate). The PR/change is never merge-ready while CI is red.
  • Change-governance boundaries. Respect CAB approval, segregation-of- duties constraints, and change-freeze windows. A change-freeze that blocks deployment is an escalation condition (journey.md phase 9).

5. Release authority separation — phase 9

Release activity (deploy, publish, promote) requires explicit authorization distinct from merge approval — for example CAB approval, change-manager sign-off, or change-freeze-window clearance. The merge/approval gate alone does not authorize release. Record the authorization in the packet's release status field. This mirrors the GitHub-mode authority boundary and the release gate in risk-authority-gates.md.

Packet portability across modes

The packet is mode-agnostic: the same nine field groups, with the same field names and semantics, are populated in both modes. GitHub-only fields have documented enterprise equivalents:

Packet field (group i) GitHub mode Enterprise equivalent
PR (review-submission) number Pull-request number Enterprise change-request / review ID
CI status Hosted CI result Enterprise CI result
Review status PR review approval Named-approver sign-off verdict
Final verified head SHA Head commit SHA Head commit SHA (identical)
Release status Tag/publish disposition Deploy/promote disposition (CAB/clearance)

No packet field is fillable only in GitHub mode.


Authority boundary: readiness vs release

Pre-merge release readiness and post-merge release activity are separate gates with separate authority, in both modes.

  • Release readiness (pre-merge, assessable): the change is releasable — version bumped, changelog updated, migration documented, rollback plan exists. This can be confirmed before merge and feeds the readiness gate (phase 8).
  • Release activity (post-merge, gated): tagging, publishing artifacts, deploying, announcing. This is a separate gate requiring explicit authorization beyond merge authority. Merge does not imply release.

The merge gate verifies readiness; release execution is gated on a separate explicit authorization. See risk-authority-gates.md for the merge gate and release gate definitions.

Release execution records post-release verification

The release gate does not end at the authorization grant. Before the released terminal state is declared, record post-release verification evidence — a post-release smoke check, deploy/tag confirmation, or artifact checksum — in the packet's release status field.


Terminal states

Exactly four terminal states end a lifecycle, each requiring specific evidence recorded in packet group (i). There is no ambiguous "done" without evidence.

Terminal state Meaning Required evidence
merged Landed into the protected target. The merge commit SHA.
closed Not merged; ended without code. The close reason (e.g., duplicate, already fixed, withdrawn).
blocked Cannot proceed. Blocker evidence — the blocking condition and any escalation outcome.
released Authorized post-merge release completed. Release evidence (tag, artifact, deploy confirmation, post-release smoke check). Terminal — no transitions out.

These are the same terminal states defined by the packet (delivery-packet.md, lifecycle states) and by journey phase 9 closeout (journey.md). A terminal packet is never re-opened; new work starts a new packet.

Reduced paths still terminate with evidence

A reduced (lightweight) run terminates in a defined terminal state, not an unspecified early stop:

  • A no-change-needed run records the determination and transitions to closed with the close reason and its evidence (no PR created).
  • A docs-only change that ships reaches merged with the merge SHA (doc- update evidence).

The packet's terminal lifecycle state field is populated on every reduced path.

External cancellation mid-flight

If the change request is closed or cancelled by an external actor at any phase after intake — a maintainer closes the issue, a ticket is withdrawn, a PR is closed by a maintainer — the packet transitions to the appropriate terminal state (closed or blocked) with the external closure as evidence, and the remaining phases are not executed. This is distinct from the no-change-needed termination (journey.md) and from the gate-failure blocked state (delivery-packet.md).


Delivery-packet fields this reference reads and writes

The lifecycle records its outcomes in the packet. It reads provenance and authority from groups (a)(b) and writes to the groups below; every named field exists in delivery-packet.md.

Lifecycle step Packet field(s) Group
Snapshot the issue / source of truth Issue snapshot (request text, comments, linked work) (a)
Classify authority Authority class (contributor / maintainer / merge / release) (b)
Record mode and pre-work check outcomes Workflow mode; dedup/PR/branch/maintainer-direction decisions (b), (e)
Open the PR / review submission PR (review-submission) number (i)
Monitor CI CI status (i)
Monitor review Review status (i)
Bind verdicts per review round Final verified head SHA (i)
Assess release readiness and execute release Release status (with post-release verification evidence) (i)
Close out Terminal lifecycle state + terminal-state evidence (merge SHA / close reason / blocker evidence / release evidence) (i)

Field group (i) — PR number, CI status, review status, final verified head SHA, release status, and terminal-state evidence — is the exact set this reference populates; the match is bidirectional (no field here that the packet lacks, and no group-(i) field the lifecycle never writes).

Lifecycle-to-journey mapping

Every lifecycle step and every packet lifecycle state maps onto a journey phase that journey.md defines. No phase here is invented or renamed.

Lifecycle step Journey phase
Snapshot, authority classification, pre-work checks, fork-vs-branch decision Phase 1 (intake and provenance) and phase 6 (implementation) for branch creation
Duplicate / dedup and discovery Phase 2 (current-state discovery and reproduction)
Implementation commits Phase 6 (domain-specific implementation)
Independent review, boundary verification, CI/review monitoring, exact-head re-verification, readiness Phase 7 (independent review and boundary verification) and phase 8 (readiness, CI/review loops)
Merge / approval gate Phase 8 → phase 9 boundary
Authorized release, closeout, terminal-state evidence Phase 9 (authorized post-merge release and closeout)
Packet lifecycle state Journey phase
intake Phase 1
planning Phases 25
implementation Phase 6
in-review Phases 78
ready End of phase 8 (readiness gate passed)
merged / closed / blocked / released Phase 9 (terminal closeout)