Skip to content

id: design: ID core build v1 — app model + capability system, enough to start app examples #2028

Closed

Description

@dezren39

LIST 6 synthesis. Merge the app-packaging and capability investigations into the design for the basic ID build Drew prioritised: 'enough of a basic build that we can start making some more app examples.' Scope the v1 ruthlessly: the smallest app model + capability set that unblocks the sticky-notes app, chat, and boards work. Specialist/Summit-grade synthesis.

Program: Drew's 2026-10-28 directive (full text: hatch-personal memory/topics/id-program-2026-10-28.md).
Working pattern: parallel investigations, then the named synthesis issue merges them into a full design. Route guidance: Workhorse by default; Specialist/Summit for synthesis and ramification-heavy work. A result that says "done" is not the endpoint — the orchestrator reviews it and may commission another round. Deliverables: a markdown design/investigation doc (mermaid/SVG diagrams welcome) linked from this issue, plus follow-up issues for anything buildable. Build a proof of concept where the design calls for one, but do NOT build the permanent feature on top of an unreviewed PoC.

Activity

  1. added
    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. dezren39 commented on Oct 29, 2026

    @dezren39
    MemberAuthor

    Parent epic: #2056 — ID platform expansion (2026-10-28 directive).

  4. dezren39 commented on Nov 1, 2026

    @dezren39
    MemberAuthor

    agent-note:v1 — task 5725/5726 design triage record (lane A shift, 2026-11-01). This is the LIST 6 synthesis: it merges investigation #2026 (app packaging, CLOSED, design merged via PR #2326) and investigation #2027 (capability taxonomy v0, CLOSED, record merged via PR #2337) into the v1 build decision.

    The decision to be made

    What is the smallest ID core — app model + capability set — that unblocks making more app examples (sticky-notes #2031, chat #2051, boards #2054)?

    What the investigations established (grounded)

    Options

    • A. Build the full taxonomy now (all eight id: investigate: capability-based specialization — forms, location, media across web, ESP32/MQTT, and text/audio modes #2027 follow-ups + packaging + pack step). Rejected: examples wait on ESP32/MQTT, speech, and location questions that none of sticky-notes/chat/boards need for v1; this is the scope failure the issue warns against (ruthlessly smallest).
    • B. Packaging only (app.toml + apps/ + discovery + adapter). Rejected: sticky-notes and chat need structured input on day one; with Screen as the only surface they would fake forms as terminal grids and bake in the workaround.
    • C. RECOMMENDED — phased minimum: packaging/discovery first, then exactly one interface capability (form.*) plus the text/1 contract, then the web adapter binding. Everything else stays filed for v1.1.

    Recommendation (option C) — phases, all enqueued today

    1. task 5769 — fix id: PoC: package tic-tac-toe as the first apps/ folder — app.toml + host discovery #2324: PoC, package tic-tac-toe as the first apps/ folder (app.toml + host discovery, malformed-manifest rejection). Dedupe repo-health:v1:fix:developing-today/code:issue:2324. This is the proof step #2026s own design named.
    2. task 5770 — fix id: form.* capability + Form surface — structured input without program-supplied HTML (#2027) #2340: form.* capability + Form WorldSurface variant (validated bounded DTOs; guests never supply HTML/CSS — the Screen invariant carries over). Dedupe ...:issue:2340.
    3. task 5771 — fix id: text/1 presentation contract — text-only as the main mode, with a text projection for every surface (#2027) #2339: text/1 projection for every surface (text is a main mode, not a fallback). Dedupe ...:issue:2339.
    4. task 5772 — fix id: implement the [interfaces.web] adapter binding — parameterise /world + /ws/world from app.toml #2325: [interfaces.web] adapter binding — /world + /ws/world parameterised from app.toml, two-app routing test. Dedupe ...:issue:2325.
      After phase 4, id: design+PoC: sticky-notes / did-it tracker — the first ID app #2031 (sticky-notes design+PoC, OPEN) is the first real app on the v1 core — it should be triaged/enqueued next; it was NOT enqueued here because its own design step comes first. The pack step (id: investigate: app packaging — apps as folders (code + resources), TUI/web interface parity, web-native specialization #2026 doc section 5) stays deliberately deferred until the PoCs discovery shape survives, per the design itself.

    Invariants the implementation must hold

    Extend world_caps/WorldSurface — no second capability system; requests in app.toml, grants operator-side only; folder name == app id; bounded validated DTOs on every new surface; sensor caps (loc/media/speech, when they come) never wildcard-grantable.

    Questions for Drew

    None that block v1. One deferred product question, named explicitly so it does not stall silently: the ESP32/MQTT path in #2343 (Home Assistant bridge vs ID speaking MQTT directly vs direct web). Options and trade-offs are in the taxonomy record; recommendation: decide when the first hardware app is actually scheduled (v1.1), not now — v1 is web/TUI/text only and loses nothing by waiting. If Drew wants it decided earlier, #2343 is the place.

  5. dezren39 commented on Nov 1, 2026

    @dezren39
    MemberAuthor

    agent-note:v1 — correction to the record above: the triage task for this #2028 record is task 5726 (task 5725 was the #541 triage earlier this shift). The four phase packets are tasks 5769-5772 as listed.

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

    @dezren39
    MemberAuthor

    Decision record: ID core v1 design.

  8. added a commit that references this issue on Nov 2, 2026
  9. dezren39 commented on Nov 2, 2026

    @dezren39
    MemberAuthor

    Agent note — picked up (OpenChamber scheduled lane)

    • Agent: queue worker (repo-worker-code), lane 9aca43b4-5439-4939-9f71-323f5d32521b
    • Session / ID: queue task 5910 (attempt 1), claimed 2026-11-02T22:27Z
    • Found via: atomic queue claim; fleet monitor had reported a queued-label item without a live task.
    • Next: verify current issue state and existing artifacts, then route actionable slices or document why none should be queued.
  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 2, 2026
  11. dezren39 commented on Nov 2, 2026

    @dezren39
    MemberAuthor

    Agent note — triaged (OpenChamber scheduled lane)

  12. dezren39 commented on Nov 2, 2026

    @dezren39
    MemberAuthor

    Agent note — done (OpenChamber scheduled lane)

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)

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions