Skip to content

id: text/1 presentation contract — text-only as the main mode, with a text projection for every surface (#2027) #2339

Open

Description

@dezren39

Follow-up from the capability taxonomy v0 investigation (#2027, record: doc/2026-10-29T14-05-00Z_investigation_capability_taxonomy/, PR #2337).

Goal

Formalise text-only mode as the main presentation mode for agents and scripts: a text/1 contract plus a required text projection for every WorldSurface variant.

Why

parse_surface already accepts non-screen documents as legacy UTF-8 text, so text works today by accident. Agents and scripts are the primary consumers, text is what CI can assert without a renderer, and it is the degradation target every other surface needs.

Scope

  • Text(TextSurface) variant (kind: text) — UTF-8 lines, no escapes, no cursor addressing, no redraw, append semantics.
  • Width-aware wrapping, default 80, capped like MAX_SCREEN_WIDTH.
  • A text projection for Screen (existing render_ansi with colour stripped), Form, Media and Map, so no surface can exist without one.
  • Contract documentation in world_presentation.rs header and pkgs/id/ARCHITECTURE.md if it describes surfaces.

Acceptance

  • kind: text parses and round-trips; a surface without a text projection is rejected at the type level or by a test.
  • A test renders one program's Screen and Text documents and asserts the text projection is line-oriented and escape-free.
  • Legacy plain-string documents stay valid.

Out of scope

A styling/theme system, cursor animation, terminal detection heuristics.

Acceptance criteria

  • kind: text (Text/TextSurface) parses and round-trips: UTF-8 lines, no escapes, no cursor addressing, append semantics, width-aware wrapping (default 80, capped like MAX_SCREEN_WIDTH)
  • Every WorldSurface variant (Screen, Form, Media, Map) has a text projection; a surface without one is rejected at the type level or by a test
  • A test renders one program's Screen and Text documents and asserts the text projection is line-oriented and escape-free
  • Legacy plain-string documents stay valid; contract documented in the world_presentation.rs header (and pkgs/id/ARCHITECTURE.md if it describes surfaces)

Activity

  1. added
    kind/featureNew feature or capability request
    app/idPackage/app: id (pkgs/ or apps/ in this repo)
    on Oct 29, 2026
  2. developing-today commented on Oct 29, 2026

    @developing-today
    Contributor
  3. added
    priority/normalOrdinary priority (the default)
    effort/mMedium: expected under 1 day of work
    meta/enrichedIntake review done: acceptance criteria, links, and normalized labels added
    on Oct 29, 2026
  4. dezren39 commented on Oct 29, 2026

    @dezren39
    MemberAuthor

    Intake review

    Related: parent investigation #2027 (record: PR #2337); siblings #2338-#2345 are the other taxonomy follow-ups

    Notes: Filed 2026-10-29T14:04Z from #2027. Still live: no open or merged PR implements it. Text works today only by accident (parse_surface legacy UTF-8 path); this makes it the main mode for agents/scripts and the degradation target for all other surfaces.

    Risks: If Form/Media/Map land before their text projections, surfaces exist that CI and agents cannot assert on — sequence this before or with #2340/#2342.

    Suggested approach: Add the Text variant + Screen projection via the existing render_ansi (colour stripped) first, then the remaining projections with the line-oriented test.

    🤖 Agent note · filed

    • Agent: fleet monitor (repo-fleet-monitor)
    • Session / ID: repo-fleet-monitor run 2026-10-29T14:30Z (09:30 CDT)
    • Found via: monitor reconciliation
    • Task: Duty 2 intake enrichment — acceptance criteria appended (original body preserved verbatim above it), labels normalized, meta/enriched applied. Still-live check this pass: no merged PR or fix commit explicitly resolving this issue was found; where a queue triage task owns verification, it is named in the notes.
    • Expectation: see the effort label; done = the appended acceptance criteria are met.
    • Links: this issue
  5. added
    work/assignedQueue worker lifecycle state
    queue/claimedQueue worker lifecycle state
    and removed on Nov 1, 2026
  6. dezren39 commented on Nov 1, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · picked up

  7. 21 remaining items

  8. added
    source/creatorFiled by the new-issue-creator job
    task/triageQueue packet kind: verify, reproduce, and route this item
    on Nov 3, 2026
  9. developing-today commented on Nov 3, 2026

    @developing-today
    Contributor

    agent-note:v1
    state: triaged (coverage pass)
    Coverage pass 2026-11-03: reviewed in the fleet-wide per-issue pass (drift / overlap / already-handled / stale / blockers / ordering). Verdict: still live; queued in repo-health-code-pilot as triage at priority 40 (priority/normal). If this is already handled at current main, the triage closes it with evidence; if it needs splitting, the triage files the split.
    Found via: coverage pass 2026-11-03

  10. added
    work/assignedQueue worker lifecycle state
    queue/claimedQueue worker lifecycle state
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    on Nov 3, 2026
  11. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

  12. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · picked up

  13. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · done — triage verdict: CONFIRMED LIVE; keep #2339 OPEN

    Findings

    No code change is appropriate for this triage; #2339 stays open by design.

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)effort/mMedium: expected under 1 day of workkind/featureNew feature or capability requestmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedpriority/normalOrdinary priority (the default)source/creatorFiled by the new-issue-creator jobtask/triageQueue packet kind: verify, reproduce, and route this item

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions