Skip to content

work-items: no untrusted-content instruction on any intake surface that reads item bodies #1713

Description

@kyle-sexton

This was generated by AI while filing the follow-ups handed over by the #1657 design audit.

Context

Every intake surface that reads a tracker item's body reads it uncaveated: no surface in triage,
decomposition, execution, or the attended queue tells the model to treat externally-authored item prose
as data rather than as instructions. The controls that exist in this stack are write-authority controls
(who may merge, what may dispatch), not read-trust controls.

The pattern is already established in this repo on the merge side —
plugins/source-control/skills/babysit-prs/reference/orchestration.md interpolates PR-derived fields
only inside a quoted untrusted-data section carrying an explicit never-follow-instructions rule — so
this is an omission on the intake side, not an unknown idiom. Verified absence, surface list, and the
in-repo precedent are in the #1657 design audit — see
the determination comment
(gap G1, ranked with G6 as the two carrying live risk today). Not restated here.

Proposed work

  • Port the existing quoted-untrusted-data pattern from babysit-prs/reference/orchestration.md to every
    intake surface that reads an item body, keeping one wording rather than six paraphrases.
  • Prefer a single sourced statement the surfaces point at, per the repo's pointer-over-copy convention,
    over six independent restatements that can drift.

Acceptance criteria

Each of the six surfaces the audit names carries the instruction (one box per surface, so partial
coverage stays visible):

  • plugins/work-items/skills/triage/SKILL.md — the step that reads the item body, comments, linked
    PRs, and diff
  • plugins/work-items/skills/decompose/SKILL.md — the step that fetches an item's full body and comments
  • plugins/work-items/skills/work-loop/SKILL.md — the cycle step that reads admitted item content
  • plugins/work-items/skills/work/SKILL.md
  • plugins/work-items/skills/attend-queue/SKILL.md
  • prompts/loops/loop-lane-prompts.md — the lane launch prompts

Plus:

  • The instruction is single-sourced (one authoritative statement, referenced), not independently
    reworded per surface.
  • The wording is traceable to the existing babysit-prs/reference/orchestration.md pattern rather
    than newly invented, so the repo states one rule for untrusted content.

References

  • #1657 determination comment — the audit that produced this item (gap G1, follow-up 1)
  • Verify untrusted item-body handling in admission and triage #1657 — the parent verification item; its comment thread lists every follow-up filed from this audit
  • plugins/source-control/skills/babysit-prs/reference/orchestration.md — the in-repo pattern to port
  • docs/MIGRATION-PLAYBOOK.md — the github plugin's existing standing "untrusted data, never
    instructions" declaration for the same content class

Metadata

Field Value
Category work-items / loop-lane prompts
Area security
Ecosystem markdown

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

agent-readyFully specified and briefed; eligible for autonomous pickup from the frontier.priority: highSignificant impact, or blocks an imminent release; staff this cycle.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.

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions