Skip to content

feat(roadmap-control-plane): governed EpicDefinition apply and RoadmapProposal integration #68

Closed

Description

@mashkovd

Parent: #66
Blocked by: #67

Goal

After read-only drift detection is proven, add the governed write path and connect it to the existing roadmap proposal workflow.

Scope

  • deterministic apply of parent/sub-issue/dependency/project changes;
  • exact EpicDefinition git revision/content hash carried into audit/evidence;
  • fail closed on ambiguous or externally changed bindings;
  • no LLM in the apply activity;
  • add roadmap-decompose output that produces an EpicDefinition draft;
  • bind approval to the exact manifest hash;
  • publish via PR to mctlhq/.github/roadmap/epics/, not a sequence of generic GitHub mutations;
  • keep mctl-api as RoadmapProposal persistence/auth boundary and mctl-agents as deterministic GitHub mutation boundary.

Preconditions

Acceptance criteria

  • Apply path mutates only the graph relations/metadata permitted by the reviewed manifest.
  • Retry/replay is idempotent.
  • Audit identifies actor/proposal/manifest hash and resulting GitHub targets without copying issue bodies.
  • LLM output cannot directly choose arbitrary GitHub mutation targets at apply time.
  • A RoadmapProposal can end in a reviewable EpicDefinition PR.
  • A merged manifest can reconcile Human Input without hand-maintained duplicate graph declarations.

Non-goals

  • Automatic merge of the manifest PR.
  • Replacing GitHub Issues/Projects UI.
  • Migrating every existing epic in the first write-enabled release.

Activity

  1. mctl-agents commented on Sep 18, 2026

    @mctl-agents
    Contributor

    mctl-agents issue-investigator has analyzed this issue and created a proposal:

    https://github.com/mctlhq/mctl-gitops/tree/main/platform-gitops/agents-state/.github/proposals/issue-68-feat-roadmap-control-plane-governed-epic/

    Status: proposed — pending human approval. Review requirements.md, design.md and tasks.md, then approve: signal this issue's DevLoopWorkflow (mctl-api POST /api/v1/agents/dev-loop/dev-loop-mctlhq-.github-68/approve, or python -m orchestrator.temporal.cli approve dev-loop-mctlhq-.github-68 --approver <your-identity>) — the workflow flips .status.yaml to accepted via the mctl-agents-approve operation and runs the Tier 2 implementer. If no DevLoopWorkflow is running for this issue (pre-Temporal proposal), run the mctl-agents-approve operation directly with service=.github slug=issue-68-feat-roadmap-control-plane-governed-epic.

    The approver is recorded in .status.yaml and in the gitops commit, and the implementer refuses a proposal whose control.requires_human_approval carries no named approver — so prefer the mctl-api endpoint, which takes the approver from the authenticated caller rather than from what the caller types.

  2. added a commit that references this issue on Sep 18, 2026
  3. added a commit that references this issue on Sep 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions