Skip to content

feat(planning): interview pairs every code with its plain name at every use #7480

Description

@kyle-sexton

Problem

/planning:interview rounds use short codes (work classes C1-C5, decision ids, constraint ids like C1 on a Checked against: line, candidate ids like K37) without their meaning. The user context-switches across sessions and reads only the latest message, so a code defined once, earlier, is undefined by the time it is read. Observed 2026-10-14: a merge-evidence round used work-class codes and constraint codes that share the same letters; the owner could not read it ("I don't know what those are... someone who has no idea what this stuff is can come in and understand").

The skill's "Define session shorthand once, then park it" rule (SKILL.md) defines a term at first use only; #6136's terminology matrix also defines once. Neither covers a reader arriving mid-session.

Requested behavior

  • In every user-facing line (rounds, restatements, recaps, the page, labels, reports), show the human-readable name, never a bare code. When the name is short enough to stand alone, show only the name (scoped-change, not C3); codes live in an agent-facing legend an agent can reverse-map. Pair code and name (C3: scoped change) only where the code itself must be quoted, such as a ledger id the user answers by.
  • Define a term inline where the question uses it (head SHA (the commit the PR points at)), so a reader with none of the session's built-in knowledge can answer from that message alone.
  • Self-contained is not simplified. Keep the precise technical terms and register; expand a code to its real name, never a metaphor or lay substitute (pr-merge lane, not merge robot). Plain-language simplification happens only when the user asks for it (/education:explain). Observed the same day: a rewrite that swapped real terms for metaphors drew "You don't have to dumb it down".
  • Checked against: names constraints in words, not ledger ids (the page wording lint already flags a bare C<N>; the terminal shape should match).
  • The ledger may keep bare ids; anything shown to the person may not.

Layout (owner-approved shape, same day)

Stay close to the existing question shape; do not split a question's information across the round:

❓ Q77: <bold one-line question title>
<context: source and what we have today, terms defined inline>
➡️ <recommendation>
Basis: <verified, source | judgment>
Alternatives:
- <option>. <gain>, but <cost>.
- <option>. <gain>, but <cost>.
  • Alternatives are a bulleted list, one option per bullet with its tradeoff, never a run-on sentence. How many and how much detail scales with the question's size, scope and complexity.
  • No --- rule between questions: the emoji markers and the bold question title already separate them.
  • Rejected in the same session: a separate index table and terms table at the top of the round, and per-question alternatives tables. They separate information from the question that needs it.

One presentation per round when async work is pending

Observed the same day: a round (Q86-Q89) was shown while research agents were still running; their results then arrived as a second set (Q78, Q90-Q97) in a later message, so the open questions were split across messages and the owner had to scroll back to find them.

  • When dispatched agents, background tasks or lookups could change or add to the questions, hold the round until they finish and present every open item once, at the end. A status note while waiting is fine; a partial question set is not.
  • If something must be shown before everything is in, the final message restates every open item in full, so the latest message is always the complete set.
  • A restatement of an open question uses the identical question layout (context, recommendation, Basis, alternatives), never a condensed form. Condense only when the user asks, or in a summary of items already answered. Observed the same day: a restatement dropped context and Basis lines and drew "Now you change the format on the restate". feat(planning): every interview question opens with the context that drives the decision, with links to verify it #7475 item 7 states the same rule for content.
  • This conflicts with the interview's "Out-of-band drift ... never hold the round" rule and the frontier-rounds "do not wait for the lookup" rule; resolve it in favor of one complete presentation when a pending result could reshape the round.
  • Scope: every skill that dispatches async agents and then presents results or decisions (/planning:interview, /discovery:research, /discovery:explore, review fan-outs). Consider a shared convention rather than per-skill text.

Acceptance

  • SKILL.md states the rules beside the shorthand rule; the shorthand rule no longer reads as define-once-then-bare.
  • A deterministic check flags a bare code (a token matching a ledger id or shorthand-glossary entry with no name beside it) in a round before it is shown.
  • An eval case: a round relying on coded terms, graded answerable by a reader with no prior session context, with technical terms preserved.

Related

🤖 Generated with Claude Code

https://claude.ai/code/session_01J5d23i6K8cwkJC4ZFxVyJh

Activity

  1. added
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Oct 14, 2026
  2. github-actions commented on Oct 14, 2026

    @github-actions
    Contributor

    Proposed work class: work-class: scoped
    Basis: automated intake triage; the lanes App applied this class.

    Size: Medium
    Complexity: Medium
    Uncertainty: Known
    Flags: none
    Blocked by: #7475

    Decision comment (#7480 (comment)):

    Decision recorded.

    Question: This issue overlaps #6136 and #7475 on the interview question shape, and also carries a rule that spans several skills (one presentation per round when async work is pending). How should it land?

    Owner's answer (2026-10-19): "Go with recommendations." This issue's question-shape rules (code with plain name at every use, inline definitions, no dumbing down, Checked against: in words, the owner-approved layout, full-layout restatements) and their acceptance are folded into #7475. The cross-skill async-round rule moves to #8466. Close this issue as folded once #7475's PR merges. Do not admit it on its own.

    The decision settles the open questions. This issue's question-shape rules are tracked in #7475, and the cross-skill async-round rule in #8466. This issue stays open until #7475's PR merges and is not admitted on its own.

    Automated triage, applied by the lanes App.

  3. added
    priority: mediumReal value, no hard deadline; normal backlog flow.
    and removed
    needs-triageNot yet classified. Floor until a type and one priority tier are set.
    on Oct 14, 2026
  4. kyle-sexton commented on Oct 19, 2026

    @kyle-sexton
    MemberAuthor

    Decision recorded.

    Question: This issue overlaps #6136 and #7475 on the interview question shape, and also carries a rule that spans several skills (one presentation per round when async work is pending). How should it land?

    Owner's answer (2026-10-19): "Go with recommendations." This issue's question-shape rules (code with plain name at every use, inline definitions, no dumbing down, Checked against: in words, the owner-approved layout, full-layout restatements) and their acceptance are folded into #7475. The cross-skill async-round rule moves to #8466. Close this issue as folded once #7475's PR merges. Do not admit it on its own.

  5. github-actions commented on Oct 25, 2026

    @github-actions
    Contributor

    The triage sweep dispatched intake triage for this issue (attempt 1 of 2).

  6. added
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.
    on Oct 25, 2026
  7. added
    status: needs-decisionAwaiting a human or maintainer judgment call.
    and removed
    status: readyTriaged, unblocked, and fully specified; eligible to pick up.
    on Oct 25, 2026
  8. melodic-automation-lanes commented on Oct 25, 2026

    @melodic-automation-lanes
    Contributor

    Not admitted to the issue lane: a Feature needs an open parent issue a listed human filed that awaits no decision; no trusted-human acceptance criteria: a listed human must put the confirmed - [ ] criteria in the body or post them as their own comment, or, on an issue a listed human filed, intake's newest refinement comment must hold them unedited. Admission takes the issue once each of those is met, when intake triages it again (.github/actions/resolve-config/admission-rules.json).

  9. melodic-automation-lanes commented on Oct 25, 2026

    @melodic-automation-lanes
    Contributor

    The latest triage verdict holds nothing: admission moved the issue to status: needs-decision; its comment says why.

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

    priority: mediumReal value, no hard deadline; normal backlog flow.status: needs-decisionAwaiting a human or maintainer judgment call.work-class: scopedA briefed fix or small feature; blast radius bounded by the brief, tests exist.

    Fields

    No fields configured for Feature.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions