Skip to content

feat(planning): planning views on the view registries with the shipped Artifact default #12650

Description

@kyle-sexton

Parent

Source: PLAN Phase 2, topic planning-chain-consolidation. Epic: #12646.

Depends on

Outcome

Plan, brainstorm and design views render through one view-kind registry and the resolver; planning ships Artifact as its default medium; the contract records planning views as the third named Artifact exception behind the publish gate. A new medium needs no edit to the planning skills.

Demo: Render a design view from a plan record: the builder writes one page from its Design section and the skill prints the report line.

The Brief (Problem, Goal, Constraints) is in the epic body.

Decisions

  • Q16: Brainstorm, design and plan views are a third named Artifact exception behind the publish gate.
  • Q24: Mediums, surfaces and shared-session variants are added by registration.
  • Q32: The shipped Artifact default covers brainstorm, design and plan views only in this epic.
  • Q52: AC15 covers every view lane, planning chain first.

Key interfaces

Contracts

resolveMedium(request) -> Resolution
request:    lane, argument?, userConfig?, projectRoot?, teamRef?
Resolution: preferred?, medium, decidedBy, notices[]
Rules: the argument decides alone. Each scope's own value is read separately (cascade file reader
and schema check, not resolve()'s merged output; team file optionally from teamRef). terminal/file
from any scope keeps the view local. Else the first publishing value from a trusted scope wins:
personal override (untracked and gitignored only), then userConfig. With no scope deciding, the
plugin default applies (trusted: the installed plugin); "any scope" never includes the plugin default. A team file never publishes; an invalid value is ignored without dropping another
scope's value; auto equals unset. Retired files (~/.claude/rendered-views.md,
.claude/rendered-views*.md) produce notices, never values.
CLI: view-settings resolve --lane <id> --option <user_config.medium> [--argument <m>] [--team-ref <ref>]

MediumEntry   { id, publishes, reachable(context) -> {ok, reason}, deliver(view, context) -> {location}, reportName }
SurfaceEntry  { id (terminal | page | shared-session; a shared-session variant is a new entry),
                available(context) -> {ok, reason}, start(session) -> handle, reportName }
ViewKindEntry { id, parse(record) -> data, template, tier }
Lane registration: { laneId, kinds[], hostedCapable }
Fallback chain (medium registry): artifact, file, terminal; hosted read as artifact unless hostedCapable.
Skills call resolveMedium, render(laneId, kind, record), resolveSurface; they never name a medium,
surface or kind value in their own prose.

Report line: view: <medium> (<decidedBy>), plus one line per notice.

PageInput { kind: lock | unlock | comment, recordId, choiceId?, optionId?, text?, at }
- untrusted data; the session reads only these fields; a lock is written to the record, never approval
- delivery: file via the session bridge; terminal via the conversation; Artifact via a
  "Copy choices as prompt" control (existing runtime copy binding) the owner pastes; the page says
  live lock needs the local page
- unhandled input is collected at the start of the owner's next message

Redraw binding: a choice names the example blocks it selects; client-only, no network, no storage.

Variation verdicts

Point Verdict Seam or module Reason
Medium, surface, view-kind sets abstract now the three registries required by the Brief (Q24, AC15; Variation intent "second variant = known")
claude.ai Artifact service contain artifact medium entry external; default
Hosted page publisher contain hosted medium entry external; default
Cloudflare tunnel contain shared-session surface entry external; default, as today
Plugin offer lookups (marketplace catalog, GitHub commits) contain offer-source module, cached in plugin data external; GitHub API budget

Done when

  • AC6: the rendered-views contract records brainstorm, design and plan views as a named Artifact exception.
  • AC7: planning lanes print the report line.
  • AC15: a test registers a fake medium and renders a plan view through it with no edit to the planning skills.
  • The planning evals validate with no FAIL; the shared-copies script passes --check-bump.

Out of scope

  • The chrome and redraw binding (next slice)
  • CI evidence of the Artifact default (out of scope by owner decision)

Activity

  1. added
    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.
    on Nov 3, 2026
  2. github-actions commented on Nov 3, 2026

    @github-actions
    Contributor
    No description provided.
  3. github-actions commented on Nov 3, 2026

    @github-actions
    Contributor
    No description provided.
  4. melodic-automation-lanes commented on Nov 3, 2026

    @melodic-automation-lanes
    Contributor

    The work-resolve-issue lane stopped on this issue (stopped): the run stopped for a reason it gave no code for, which names no intent, design, security or cost finding, so the lane runs it again only if the issue has had no retry, for any stop, since a listed human last added agent-ready, and otherwise stops.
    It keeps agent-ready, and work-unblock starts it again (retry 1 of 1).

    In the run's words:

    Prerequisite #12649 (the resolveMedium resolver) is still open, and neither its code nor the medium/surface/view-kind registries this issue builds on exist on the default branch. No pull request implements it yet, so there is no blocked-by-pr number to cite. Run this issue again once #12649 lands.

    What the run says it did not do:

    • AC6, AC7, AC15 and the eval/shared-copies checks were not started, because they wait on #12649's resolver and registries
    • Skipped tidy, review and prep, because the working tree has no change

    Run: https://github.com/melodic-software/claude-code-plugins/actions/runs/41575263987

  5. added
    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.
    and removed
    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.
    on Nov 3, 2026
  6. self-assigned this
    on Nov 3, 2026
  7. melodic-automation-lanes commented on Nov 3, 2026

    @melodic-automation-lanes
    Contributor

    This records a re-fire of an earlier refusal, not a new refusal. The lanes kill switch stopped run 41577900261, the work-resolve-issue run that agent-ready started, before it did any work; that run ended at 2026-11-03T04:45:14Z. work-unblock has now removed and added agent-ready back to start a fresh run. A kill-switch refusal is no fault in this issue or the lanes, so it never counts against later re-fires; after limits.limit-stops-per-issue of them since a person last added agent-ready or a run last reported, work-unblock waits longer before each one, up to 24 hours.

  8. added
    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.
    and removed
    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.
    on Nov 3, 2026
  9. github-actions commented on Nov 3, 2026

    @github-actions
    Contributor
    No description provided.
  10. melodic-automation-lanes commented on Nov 3, 2026

    @melodic-automation-lanes
    Contributor

    This records a re-fire of an earlier refusal, not a new refusal. The lanes kill switch stopped run 41582052472, the work-resolve-issue run that agent-ready started, before it did any work; that run ended at 2026-11-03T05:45:31Z. work-unblock has now removed and added agent-ready back to start a fresh run. A kill-switch refusal is no fault in this issue or the lanes, so it never counts against later re-fires; after limits.limit-stops-per-issue of them since a person last added agent-ready or a run last reported, work-unblock waits longer before each one, up to 24 hours.

  11. removed
    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.
    on Nov 3, 2026
  12. 1 remaining item

  13. github-actions commented on Nov 3, 2026

    @github-actions
    Contributor
    No description provided.
  14. github-actions commented on Nov 3, 2026

    @github-actions
    Contributor
    No description provided.
  15. melodic-automation-lanes commented on Nov 3, 2026

    @melodic-automation-lanes
    Contributor

    The work-resolve-issue lane stopped on this issue (blocked-by-pr): the work waits on an open pull request the run names, so the lane runs it again once that pull request merges or closes.
    It keeps agent-ready, and work-unblock starts it again once #12714 merges or closes (wait 1 of 2).

    In the run's words:

    blocked-by-pr: #12714 (Closes #12649, the dependency this issue names under Depends on) is still open, so the medium resolver (lib/view-settings.mjs, resolveMedium) and the medium registry (lib/view-registry.mjs) that the planning view-kind registrations, the report line (AC7) and the fake-medium test (AC15) build on are not on the default branch. Run this issue again once #12714 merges.

    What the run says it did not do:

    • AC6, AC7, AC15 and the planning evals and shared-copies --check-bump items were not started: they wait on #12714 merging
    • tidy, review, verify and checks pipeline steps skipped: no change was made

    Run: https://github.com/melodic-software/claude-code-plugins/actions/runs/41586979782

  16. added
    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.
    and removed
    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.
    on Nov 3, 2026
  17. melodic-automation-lanes commented on Nov 3, 2026

    @melodic-automation-lanes
    Contributor

    The work-resolve-issue run that agent-ready started failed or was cancelled before it reported, or it stopped or the token broker refused it because its workflow files differ from main's. work-unblock removed and added agent-ready back to start a fresh run on main's workflow files. If this run ends the same way, it re-fires the issue again, waiting longer each time.

  18. added
    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.
    and removed
    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.
    on Nov 3, 2026
  19. github-actions commented on Nov 3, 2026

    @github-actions
    Contributor
    No description provided.
  20. removed
    agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.
    on Nov 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Fields

No fields configured for Feature.

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions