Skip to content

id: design: output safety beyond plain text — HTML/JS output modes, safe-plain as a user choice, ingest without execution (follow-on to #3455) #5785

Open

Description

@dezren39

Summary

Design the output-safety contract beyond plain terminal text: HTML/JS-bearing output modes, safe-plain rendering as a user choice, and servers ingesting arbitrary data without executing it. This is the follow-on #3455's own record flags as not covered.

Motivation

#3455 (closed, sub-issues 4/4) settled the plain-output contract: a value cannot act on the terminal — one Cf/Cc set, escape-at-render, printer-not-ingest. But the answers review (PR #5707, §10) records three extensions Drew raised that the filed contract explicitly does not cover, plus one open question the design doc itself left filed-nowhere:

"Explicitly NOT covered by #3455: ANSI/OSC terminal sequences — 'no filed instance,' listed in the design doc's open questions." And Drew's extensions: "HTML/JS-bearing output modes that some applications require; safe-plain rendering offered as a user choice; servers ingesting arbitrary data without executing it" — "flagged as a candidate follow-on design, not as part of #3455."

This issue is that follow-on. The risk shape is the same one #3455 named — a value acts on its consumer — with the consumer changed: a browser DOM, a rendering mode the user picked, or a server process that stores and forwards data it must never execute.

Sketch

Open questions

  • Does the markup contract live beside the Cf set as a sibling shared definition, or is one "output safety" module the home for both?
  • Is safe-plain a rendering mode or a data classification (sensitivity-style, per id: design: Querying local and remote ID servers v1 #5675's model)?
  • Which existing surfaces already emit markup with data values in them today — the audit list is a deliverable.

Relations

Parent: epic #2056. Relations: #3455 (the plain contract this extends; its open questions and Drew's extensions are the source), #2146 + #5679 (markup-emitting surfaces), #5675 (classification model), #3231 (receipt-side sibling: values validated as strictly as built — this is the emission-side counterpart). Filed in the 2026-11-04 gap pass (WS-F).

Activity

  1. added
    app/idPackage/app: id (pkgs/ or apps/ in this repo)
    on Nov 5, 2026
  2. developing-today commented on Nov 5, 2026

    @developing-today
    Contributor
  3. added
    queue/queuedHas a queued task in the Supabase agent queue
    task/triageQueue packet kind: verify, reproduce, and route this item
    on Nov 5, 2026
  4. added
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    status/parkedDeliberately paused with a recorded resume condition
    work/assignedQueue worker lifecycle state
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    on Nov 5, 2026
  5. developing-today commented on Nov 5, 2026

    @developing-today
    Contributor

    🤖 Agent note · handed off

  6. dezren39 commented on Nov 5, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · state: handed off

  7. dezren39 commented on Nov 5, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

  8. added
    queue/claimedQueue worker lifecycle state
    and removed
    status/parkedDeliberately paused with a recorded resume condition
    on Nov 5, 2026
  9. 23 remaining items

  10. added
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    status/parkedDeliberately paused with a recorded resume condition
    and removed
    queue/claimedQueue worker lifecycle state
    on Nov 5, 2026
  11. dezren39 commented on Nov 5, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

  12. added
    queue/claimedQueue worker lifecycle state
    and removed
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    status/parkedDeliberately paused with a recorded resume condition
    on Nov 5, 2026
  13. developing-today commented on Nov 5, 2026

    @developing-today
    Contributor

    🤖 Agent note · handed off

  14. added
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    status/parkedDeliberately paused with a recorded resume condition
    and removed
    queue/claimedQueue worker lifecycle state
    on Nov 5, 2026
  15. developing-today commented on Nov 5, 2026

    @developing-today
    Contributor

    🤖 Agent note · handed off

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

Metadata

Metadata

Assignees

Labels

app/idPackage/app: id (pkgs/ or apps/ in this repo)queue/parkedQueue task is parked (waiting on CI, time, or an event)status/parkedDeliberately paused with a recorded resume conditiontask/triageQueue packet kind: verify, reproduce, and route this itemwork/assignedQueue worker lifecycle state

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions