Skip to content

porch: status.yaml retains original plan-init phase IDs; no sync/regenerate command to reconcile after plan amendment #954

@amrmelsayed

Description

@amrmelsayed

Discovered in Shannon project 1190 (chat-display pipeline audit).

Symptom: codev/projects/<id>-<name>/status.yaml retains the phase IDs from the original porch init plan, even after a plan-amendment commit (porch-approved) renames or restructures phases. porch next reports a plan_phase that no longer matches the plan's machine-readable JSON "id" field.

Concrete example (project 1190, on builder/spir-1190 HEAD e8839948b):

  • codev/projects/1190-audit-and-unify-the-chat-displ/status.yaml lines 6-27 list phase_0_rebase_onto_ci, phase_1_user_frame_id, phase_2_synthesised_id_strict, phase_5_client_dedup_simplify, phase_6_staging_verification (the original porch init ids).
  • codev/plans/1190-audit-and-unify-the-chat-displ.md lines 47-53 list phase_0_rebase_and_reconcile, phase_1_user_frame_request_id, phase_2_synthesised_ids_strict, phase_5_client_dedup_and_archdoc, phase_6_verification (post-amendment ids).
  • 5 of 7 phase IDs differ.
  • porch next 1190 returns plan_phase: phase_0_rebase_onto_ci — the stale one.

Available porch commands (porch --help): next / status / check / done / gate / pending / approve / verify / rollback / init. No sync or regenerate-status command exists.

Workarounds attempted: porch sync 1190 and porch regenerate-status 1190 both fall through to the top-level help (commands don't exist).

Strict-mode rule: Builders are forbidden from editing status.yaml directly ("NEVER edit status.yaml directly — only porch commands may modify project state"), so this can't be reconciled at the builder level today.

Suggested fix (one of):

  1. Add a porch sync-plan <id> command that reads the plan's machine-readable JSON and updates status.yaml phase IDs/titles accordingly.
  2. Add this reconciliation as a side-effect of porch done whenever the plan file's phases block has changed.
  3. Document the constraint: porch init phase IDs are immutable after init — and have planning tooling refuse plan amendments that rename them.

Flagged by the impl-phase 3-way consult on project 1190 (Codex + Claude HIGH-confidence findings; not a blocker for the current project, tracked in codev/projects/1190-audit-and-unify-the-chat-displ/ci-drift-reconciliation.md § 'Tracked separately').

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions