Repository navigation
Closed
Task
Copy link
Labels
priority: mediumReal value, no hard deadline; normal backlog flow.Real value, no hard deadline; normal backlog flow.work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.A briefed fix or small feature; blast radius bounded by the brief, tests exist.
Description
Parent
Source: PLAN Phase 9, topic planning-chain-consolidation. Epic: #12646.
Depends on
Outcome
work-items:morning-brief resolves its medium through the shared resolver CLI (lane work-items:morning-brief) and prints the report line, naming no medium values itself; its evals match. The skill moved from harness-ops to work-items in 36646d2 (#12561); #12711 covers work-items:triage.
Demo: Run work-items:morning-brief on a sample: it prints the report line; the skill text lists no medium values.
The Brief (Problem, Goal, Constraints) is in the epic body.
Decisions
- Q14: medium moves onto ADR 0075 scopes; ~/.claude/rendered-views.md is no longer read.
- Q17: One fallback chain; every view lane names the medium used and the fact that decided it.
- 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.
Done when
- AC4 / AC7 / AC15: a git grep for an enumerated medium list in plugins/work-items/skills/morning-brief and its evals finds none; the work-items evals validate with no FAIL; no model evals are run.
Out of scope
- Other plugins
- Vocabulary fixes (vocabulary slice)
Metadata
Metadata
Assignees
Labels
priority: mediumReal value, no hard deadline; normal backlog flow.Real value, no hard deadline; normal backlog flow.work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.A briefed fix or small feature; blast radius bounded by the brief, tests exist.
Type
Fields
Work status
agent-ready
Activity
melodic-automation-lanes commentedon Nov 3, 2026
This records a re-fire of an earlier refusal, not a new refusal. The lanes kill switch stopped run 41577700818, the work-resolve-issue run that
agent-readystarted, before it did any work; that run ended at 2026-11-03T04:44:24Z. work-unblock has now removed and addedagent-readyback 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 addedagent-readyor a run last reported, work-unblock waits longer before each one, up to 24 hours.github-actions commentedon Nov 3, 2026
melodic-automation-lanes commentedon Nov 3, 2026
This records a re-fire of an earlier refusal, not a new refusal. The lanes kill switch stopped run 41581279781, the work-resolve-issue run that
agent-readystarted, before it did any work; that run ended at 2026-11-03T05:45:09Z. work-unblock has now removed and addedagent-readyback 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 addedagent-readyor a run last reported, work-unblock waits longer before each one, up to 24 hours.github-actions commentedon Nov 3, 2026
github-actions commentedon Nov 3, 2026
10 remaining items
github-actions commentedon Nov 3, 2026
The triage sweep dispatched intake triage for this issue (dispatch 1; 2 runs that reach intake, or 6 dispatches, hand it to a maintainer).
github-actions commentedon Nov 3, 2026
Proposed work class: work-class: scoped
Basis: automated intake triage; the lanes App applied this class.
Size: Small
Complexity: Low
Uncertainty: Known
Flags: none
Blocked by: #12667
Understood: change work-items:morning-brief to resolve its view medium through the shared resolver CLI and print the report line. The skill text and its evals should name no medium values. Done when a git grep finds no enumerated medium list there and the work-items evals validate with no FAIL.
The outcome and done-when are exact, so nothing is missing. This depends on #12667, which is still open. The related work-items:triage change is tracked in #12711, which is a sibling and not a duplicate.
Automated triage, applied by the lanes App.
melodic-automation-lanes commentedon Nov 3, 2026
Not admitted to the issue lane yet: blocker #12667 is not closed by a listed human or a merge.
github-actions commentedon Nov 3, 2026
github-actions commentedon Nov 3, 2026