Skip to content

id(serve): dynamic publish/unpublish — bind and unbind programs and pages to ports, interfaces, and paths at runtime #2147

Open

Description

@dezren39

From Drew (2026-10-29): publishing in id should not be a launch-time-only decision.

Building on the bindings model and the program-as-website design (companion issues), add DYNAMIC binding: while a node is running, an operator must be able to bind and unbind — publish and unpublish — programs and pages:

  • to different ports and interfaces (new listeners opened/closed at runtime), and
  • to different paths on an existing listener,

without restarting the node. The published set must persist (config / data dir) so a restart restores it, and the current published set must be inspectable (CLI and/or web UI).

Path-override rule: a path binding on the same port as the World Explorer OVERRIDES the Explorer's own route where the paths overlap — that is allowed and intended — but the server must warn loudly at bind time (and at boot, for persisted bindings) naming the shadowed route, unless an explicit acknowledgement flag/config ("I know I'm doing this") is set for that binding.

Acceptance: with the Explorer running on port A, publish a program to port B at runtime and reach it; mount a second program at a path that shadows an Explorer route and see the warning; unpublish both and see the listeners/routes revert — all without restarting the node.

Activity

  1. added
    kind/featureNew feature or capability request
    task/triageQueue packet kind: verify, reproduce, and route this item
    source/humanFiled directly by a human
    priority/normalOrdinary priority (the default)
    queue/queuedHas a queued task in the Supabase agent queue
    app/idPackage/app: id (pkgs/ or apps/ in this repo)
    effort/mMedium: expected under 1 day of work
    on Oct 29, 2026
  2. developing-today commented on Oct 29, 2026

    @developing-today
    Contributor
  3. 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 1, 2026
  4. 101 remaining items

  5. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · parked

    • Agent: repo-worker-code (OpenChamber scheduled lane)
    • Lane / task: 02cafe76-eafd-4d0b-aaa6-2b7a737d68dc / 8820
    • Correction: The immediately preceding note was mangled by shell interpolation of inline-code marks. Use this resume brief instead. id(serve): dynamic publish/unpublish — bind and unbind programs and pages to ports, interfaces, and paths at runtime #2147 is OPEN; baseline PR id(serve): persisted publications registry, boot restore + shadow warnings (#2147 slice 1) #5114 is MERGED; no open implementation PR owns slices 2–3. The prior branch/worktree were absent, so the branch and worktree were recreated and pushed. Current commit: a86f681. Design record: doc/2026-11-04T21-50-26Z_feature_dynamic_publications_runtime/2026-11-04T21-50-26Z_feature_dynamic_publications_runtime.md. No source code or tests changed.
    • Reason: The remaining feature spans live listener/router lifecycle, privileged protocol control, CLI commands, and integration acceptance; it is not safe to claim completion without implementation and tests.
    • Resume condition: Continue on the existing branch/worktree; implement the serve-owned manager, operator-only control (not widened by open-writes), publish/unpublish/list, persistence/apply rollback, and the no-restart acceptance walk. Do not treat the documentation commit as task completion.
  6. added
    queue/claimedQueue worker lifecycle state
    and removed
    status/parkedDeliberately paused with a recorded resume condition
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    on Nov 4, 2026
  7. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · picked up

    • Agent: queue worker (repo-worker-code), OpenChamber scheduled lane
    • Session / ID: task 8820; lane 8ac61616-3815-4e7b-b33d-840a3829154a
    • Found via: queue claim
    • Task: Revalidate the dynamic-publications task and its existing opencode lane ownership before any implementation.
    • Expectation: m — verify current issue/PR state and route the continuation back to its bound opencode lane if that binding remains.
    • Links: branch queue/8820-2147-runtime-publications-apply-cli; design commit a86f681; packet task 8820
  8. 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 4, 2026
  9. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · parked

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

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

    • Agent: fleet monitor
    • Session / ID: task 8820 (repo-fleet-monitor run 2026-11-05T15:45:47Z)
    • Found via: monitor reconciliation (Duty 1 claim/label divergence repair)
    • Task: Claim evaporated: task 8820 is queued and unclaimed in repo-health-code-pilot, but this issue still carried claimed labels. Labels reset to the truth (queue/queued + status/needs-triage). Checkpoint stage at evaporation: handed_off.
    • Expectation: The next lane claim picks task 8820 up from the queued state and posts a fresh pickup note.
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 requestpriority/normalOrdinary priority (the default)queue/parkedQueue task is parked (waiting on CI, time, or an event)queue/queuedHas a queued task in the Supabase agent queuesource/humanFiled directly by a humanstatus/needs-triageNot yet triaged; needs a first lookstatus/parkedDeliberately paused with a recorded resume conditiontask/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