LearnNewsExamplesServices
Frontmatter
id16350
titleRepo-blessed dev-server launch config for every agent seat
stateClosed
labels
enhancementdeveloper-experienceai
assigneesneo-opus-grace
createdAtAug 2, 2026, 2:51 PM
updatedAtAug 2, 2026, 6:59 PM
githubUrlhttps://github.com/neomjs/neo/issues/16350
authorneo-fable
commentsCount0
parentIssuenull
subIssues[]
subIssuesCompleted0
subIssuesTotal0
contentTrust
projected
quarantined0
signals[]
blockedBy[]
blocking[]
closedAtAug 2, 2026, 6:59 PM

Repo-blessed dev-server launch config for every agent seat

Closed Backlog/active-chunk-12 enhancementdeveloper-experienceai
neo-fable
neo-fable commented on Aug 2, 2026, 2:51 PM

Context

Operator direction (2026-08-02, relayed): @neo-opus-grace keeps an untracked .claude/launch.json in her clone that gives Claude-Code seats one-command dev-server + browser-pane startup — operator: "we for sure could add something like it for our peers (not just the claude ones)." Filed as the claimable seed that direction invited.

Live latest-open sweep: latest 20 open issues checked at 2026-08-02T12:50Z, no equivalent. A2A herd-window sweep: no overlapping claim.

The Problem

Every seat hand-rolls dev-server startup: raw npm run server-start (which --opens a browser on the OPERATOR's display), ad-hoc ports, and — measured today — cross-seat confusion about WHOSE tree a given port serves. Two live incidents this session: (a) a styling defect was first verified against a stale clone on :8080 purely because that port answered (the #16336 provenance correction), and (b) the resulting port-is-not-provenance rule had to be re-derived per seat until the day's R2 matrix adopted it. A repo-blessed launch shape removes the per-seat re-derivation: own tree, auto port, no operator-browser hijack.

The proven shape (Grace's artifact, untracked in her clone):

{
    "version": "0.0.1",
    "configurations": [
        {
            "name": "neo-dev-server",
            "runtimeExecutable": "npx",
            "runtimeArgs": ["webpack", "serve", "-c", "./buildScripts/webpack/webpack.server.config.mjs"],
            "port": 8080,
            "autoPort": true
        }
    ]
}

autoPort: true already makes it multi-seat-safe — a port collision bumps instead of colliding.

The Architectural Reality

  • .claude/launch.json is the Claude-Code browser-pane launch surface (the harness preview_start consumes it), and it is TRACKED space in this repo — landing it makes the shape canonical for Claude seats.
  • Other harnesses (OpenCode, Kimi CLI, Codex, Gemini) have no launch.json contract; their parity is a documented one-liner — the same command without the browser hijack, e.g. npm run server-start -- --port <seat-port> --no-open — in whichever seat-facing doc the claimant judges canonical.
  • Theme-pipeline fact that bit today and belongs wherever that doc lands: the dev server serves dist/development/css and does NOT rebuild on SCSS edits; the explicit rebuild is node ./buildScripts/build/themes.mjs -f -n -e dev -t all (the bare npm script dies on an interactive prompt in non-TTY).

The Fix

  1. Land the launch.json shape as tracked .claude/launch.json — credit @neo-opus-grace as origin, and coordinate before writing: it is her proven artifact and she may prefer to land it herself.
  2. Add the per-harness parity line(s) to the canonical seat-facing doc: the no-open + own-port discipline plus the port-is-not-provenance rule (bind measurements to checkout path + SHA, never to "a port that answered").
  3. Optional, claimant's judgment: a server-start-agent npm script wrapping the no-open form.

Acceptance Criteria

  • Tracked .claude/launch.json with autoPort, verified by one Claude seat via its preview surface.
  • Non-Claude seat parity documented (no-open own-port one-liner + provenance rule) in a doc seats actually load.
  • Grace credited/coordinated (authorship respect on her artifact).
  • npm run server-start human flow untouched.

Out of Scope

  • Harness-native launch integrations beyond documentation for non-Claude seats.
  • Any webpack.server.config.mjs change.

Avoided Traps

  • Hardcoding per-seat ports in the tracked file — autoPort already solves collision.
  • Duplicating the launch story across every harness doc — one canonical home, pointers elsewhere.
  • Landing Grace's artifact without coordination — it is her goodie; first-refusal is hers.

Related

  • #16336 — the stale-clone provenance incident this prevents recurring
  • D#16304 — the running-plane vs repo divergence family; the dev-server is the same law in another costume

Origin Session ID: cc037e9f-7577-4a11-968d-7a5fe3c8db8d

Retrieval Hint: "dev server launch config agent seats port provenance"

UNASSIGNED — claimable, any family. @neo-opus-grace holds first-refusal by authorship.

tobiu referenced in commit 3a977aa - "feat(dx): the dev server binds the port its launcher assigns (#16350) (#16371) on Aug 2, 2026, 6:59 PM
tobiu closed this issue on Aug 2, 2026, 6:59 PM