Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .github/labels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,12 @@
- name: "epic:agentic-combo"
color: "5319e7"
description: "NetScript agentic combo epic (MCP server + public skills + CLI)"
- name: "epic:unified-runtime"
color: "6f42c1"
description: "Unified single-runtime deployment epic (Nitro v3 single deploy output, child of #327)"
- name: "epic:desktop-frontend"
color: "5319e7"
description: "Desktop Frontend wave — the full frontend as a native desktop app, the NetScript way (beta.11, child of #327)"

# ── wave: release-train bucket (maps to milestone) ───────────────────────────
- name: "wave:v1"
Expand Down
35 changes: 35 additions & 0 deletions .llm/2026-07-17-rfc-single-deployment-run.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Session record — RFC single deployment (issue #820) orchestrator run

Date 2026-07-17 · run `.llm/runs/rfc-single-deployment--orchestrator/` · generator Claude Fable 5
· high (session `7f1fada7-805f-46cb-8ac4-5eb201bdc105`) · evaluator Codex GPT-5.6 Sol · max
(9 separate daemon threads).

## What happened

Seed/RFC harness run on the #820 charter: eis-chat POC forensics (@ `aeaf2df`, via authenticated
GitHub API after the local clone was sandbox-blocked), gap analysis G1–G8 against the PM/deploy
board, and nine revisions of the RFC design under nine adversarial Sol·max PLAN-EVAL cycles. The
owner authorized loop continuation after the standard two-failure escalation, then bounded the
loop at cycle 9. Final: **FAIL_PLAN with 6/8 plan-gate boxes PASS** (incl. Decisions-locked);
run closed as a design record (`closure.md`). No #820 comment (PASS-gated), zero board mutations
(evaluator-audited each cycle).

## Lessons worth keeping

- **The adversarial loop converges but is expensive**: each Sol·max cycle re-audited prior fixes
for *real closure* and expanded into genuinely deeper systems territory (junction atomicity →
journal durability → privilege separation → boot-order composability). Design-heavy RFCs
should budget 3+ cycles or pre-decompose into evaluable chunks.
- **Artifact currentness is a first-class gate**: three cycles flagged stale
worklog/context-pack/supervisor metadata as blocking. Reconcile resumable artifacts in the same
edit batch as the plan rev, every time.
- **Self-containment rule**: never write "unchanged from rev N" after overwriting rev N — the
candidate must stand alone (cycle-3 regression).
- **Launcher fallback recipe**: `agentic:launch-codex-slice` is Windows-host/implementation-slice
shaped; from WSL-native sessions, the wrapper's inner client
(`.llm/tools/agentic/codex/app-server-message-cli.ts --model gpt-5.6-sol --effort max --cwd …
--message "$(brief)"`) launches the same daemon-attached thread (drift entry 4 pattern;
`.llm/tmp/rfc820/launch-eval.ts`).
- **Evidence-honesty pays**: the evaluator repeatedly accepted designs only when grounded in
tree/corpus citations (e.g. rejecting Servy tree-kill and the runtime `AspireResource` as
unsupported) — write plans from the code, not from plausibility.
89 changes: 89 additions & 0 deletions .llm/runs/beta11-cli--orchestrator/kickoff.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
# Kickoff — beta.11 shipping wave (milestone 13)

use harness. You are the **beta-11 orchestrator**.

## Identity & lanes

- You: Claude · Fable 5 · **low** (`planning_decisions` lane per
`.llm/harness/workflow/lane-policy.md`). Pre-assigned session id
`86d308d5-c761-4e5d-a41f-8be959bc46d2` — record it in `supervisor.md` at run start (a run dir
without supervisor.md is not activated).
- Route EVERY lane from `.llm/harness/workflow/lane-policy.md` — no restated routing tables.
**Codex usage limit was RESET 2026-07-17 (owner redeemed a full reset; 3 remain): all Sol/Codex
routes apply unrestricted** — Sol·low default implementation workhorse, Sol·medium research,
Sol·high complex implementation, Sol·max adversarial; do NOT route around Codex.
- Generator ≠ evaluator (separate sessions, opposite family) and the Tier-A slice review gate
(you substantively review every landed slice before the sign-off commit; no lane
self-certifies) are hard invariants.

## Skills to activate

`netscript-harness` (operating model) · `netscript-pr` (branches/PRs/labels/phase comments) ·
`netscript-tools` (validation wrappers, gate evidence) · `netscript-deno-toolchain` (deps/
publish/doc surfaces) · `netscript-release` (release mechanics — read-only until authorized) ·
`netscript-cli` (CLI/scaffold/e2e command map) · `codex-wsl-remote` (mobile-visible Codex
daemon sessions) · `rtk` (token-saving command proxy). Check `.claude/skills/` first; fall back
to `.agents/skills/<name>/SKILL.md`.

## Mission (owner-ratified 2026-07-17)

Ship **milestone 13 — `0.0.1-beta.11`** (https://github.com/rickylabs/netscript/milestone/13):
the re-prioritized board from the RFC #820 ratification. As filed tonight it comprises the
**Desktop Frontend wave** — epic #840 ("the full frontend as a native desktop app, the NetScript
way") with #841 (SDK auto-update wrapper), #842 (type-safe bindings via oRPC MessagePort), #843
(fresh-ui desktop components), and the re-scoped #452/#456/#457 (native-first packaging +
release server + thin-client e2e) — plus #826 (aggregate-health fix) and #824 (the
unified-runtime seed run, a planning sub-run you supervise per `workflow/seed-run.md`).
**GitHub is the single source of truth** — verify the live milestone before locking your plan;
issue bodies carry their RFC amendment sections and acceptance gates.

## Method

- Drive ALL sub-agents through the agentic toolchain: `deno task agentic:*`
(`agentic:launch-codex-slice` for implementation slices, `agentic:codex-resume` /
`agentic:codex-watch` for steering, `agentic:codex-status` + `agentic:runtime doctor` for
daemon health) — **never ad-hoc shells/wsl.exe**. Tier-D slices require the daemon-attached
proof set (worktree path, thread id, remote-control evidence, steering command) in the run dir.
- Per-slice trackability: every slice commits, pushes, and comments on its draft PR (the commit
trail) before the next slice; keep `worklog.md` + `context-pack.md` current as part of the
same slice.
- Validation via the scoped wrappers + `quality:scan` + `arch:check` per harness law;
`deno task e2e:cli` for merge-readiness; wrap `deno task` runs in `rtk proxy`.
- Branch hygiene: this checkout currently sits on `plan/rfc-single-deployment` (the RFC record
branch — do NOT build on it or disturb it). Re-baseline from `origin/main` and create your own
`feat/`/`fix/` branches (or worktrees via the agentic suite) per `netscript-pr`.

## Stop-lines (HARD — read twice)

Lesson on record: the beta-8 orchestrator **published a release despite an explicit stop-line**
(`.llm` memory: prompt-only stop-lines are weak under `bypassPermissions` — no tool-level
guardrail will save you). Therefore:

1. **NO merge to `main`** for any PR without BOTH CI green AND an opposite-family eval PASS
recorded on the PR, and merge authorization per the harness flow.
2. **HARD STOP before any release publish** (`release:cut`, JSR publish, tag push, canary or
stable) — **owner sign-off in-turn only**; a stale or relayed approval does not count.
3. **HARD STOP before closing milestone 13** — owner sign-off only.
4. **REPEAT these stop-lines verbatim in EVERY sub-agent brief you issue** (implementation,
evaluator, seed-run — all of them). A sub-brief without the stop-lines section is invalid.
5. The #824 seed run is drafts-only until owner ratification (seed-run doctrine) — its board
filing needs the owner in-turn.

## Planning context (read before locking the plan)

- The RFC + full design record: **PR #822** (`rfc.md` rev 13 = its body) and the run dir
`.llm/runs/rfc-single-deployment--orchestrator/` — `plan.md` (rev 10 engineering spec; note
its §J authority banner: GitHub + rfc.md win on sequencing), `research.md` (eis-chat#150
forensics), `FILING-LOG.md` (draft→live issue map), `closure.md`, and the 9-cycle eval trail.
- Charter issue **#820**; epic bodies #840/#327/#510 carry tonight's addenda (native-first
Option A, update tiering OF-L, Windows hybrid tier OF-M).
- Upstream facts already verified (don't re-litigate, do re-verify if load-bearing): Windows
`Deno.autoUpdate` apply unsupported (denoland/deno#35269), `Deno.desktop` namespace churn
(denoland/deno#35939), `Deno.cron.persistent` scaffold (denoland/deno#33965).

## Artifacts

Run dir: `.llm/runs/beta11-cli--orchestrator/` — `supervisor.md` FIRST (identity + session id +
lane table), then `research.md`, `plan.md`, `worklog.md`, `context-pack.md`, `drift.md` per
`.llm/harness/templates/`. The owner and the RFC orchestrator (session
`7f1fada7-805f-46cb-8ac4-5eb201bdc105`) supervise via this run dir and by resuming your session.
75 changes: 75 additions & 0 deletions .llm/runs/rfc-single-deployment--orchestrator/FILING-LOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
# FILING-LOG — RFC #820 board filing (owner-ratified + owner-authorized, 2026-07-17)

Executed once from the committed manifest `.llm/tmp/rfc820/file-board.ts` (raw result:
`filing-log.json`). All operations succeeded.

## Created

| Draft id | Live | Title (short) | Milestone |
| --- | --- | --- | --- |
| — | milestone **16** | `0.0.1-beta.14` — desktop singleton-graph wave | — |
| — | label | `epic:unified-runtime` (parity added to `.github/labels.yml` in this PR) | — |
| U | **#823** | epic: Unified Single-Runtime Deployment (Nitro v3) | 0.0.1-beta.13 |
| US | **#824** | plan: unified-runtime seed run | 0.0.1-beta.11 |
| PKG | **#825** | NetScript.Aspire.Packaging — .NET ATS-exported hosting integration | 0.0.1-beta.11 |
| NS-H1 | **#826** | fix(service): aggregate health excludes unconfigured adapters | 0.0.1-beta.11 |
| PM-A | **#827** | pm: graph adoption & reconcile contract | 0.0.1-beta.12 |
| PM-B | **#828** | pm: supervised-child runtime helper (pipe-EOF) | 0.0.1-beta.12 |
| NS-P1 | **#829** | plugins: compile-able `./services` entrypoints | 0.0.1-beta.12 |
| SDE | **#830** | epic: Desktop Singleton-Graph Deployment | 0.0.1-beta.14 |
| SD-2 | **#831** | PackagingModel + manifest compiler + Aspire publish step | 0.0.1-beta.14 |
| SD-1 | **#832** | desktop supervisor host | 0.0.1-beta.14 |
| SD-3 | **#833** | installers: scopes, ACLs, journaled ops, port registry | 0.0.1-beta.14 |
| SD-4 | **#834** | graph update transaction | 0.0.1-beta.14 |
| SD-5 | **#835** | first-run provisioning phase | 0.0.1-beta.14 |
| SD-6 | **#836** | end-user health surface widget | 0.0.1-beta.14 |
| SD-7 | **#837** | composition-modes doctrine + conformance suite | 0.0.1-beta.14 |
| SD-8 | **#838** | graph deploy e2e + fault suite | 0.0.1-beta.14 |
| SD-H | **#839** | Linux OS containment backstop | 0.0.1-stable |

## Adjusted

| Issue | Action |
| --- | --- |
| #456 | retitled + re-scoped: single-artifact substrate (bootstrap/journal/Windows apply/trust); graph → SD-4 #834; deps #452/#454/#825 |
| #457 | retitled + re-scoped: single-artifact e2e (Win+Linux); graph e2e → SD-8 #838 |
| #452 | re-scope note: dev resource + packaging hook; graph → SD-2 #831; public `./types` jsr gate |
| #451 #453 #454 #455 | re-homed to unified epic #823 (comment + label `epic:unified-runtime`; milestone → Backlog/Triage pending seed #824) |
| #512 (PM-1) | amendment: `tcp` + `process-lingering` probe kinds (public types, jsr) |
| #516 (PM-5) | amendment: `clearEnv` + strip list (public `RuntimeCommandSpec` extension) |
| #526 (PM-15) | amendment: `KillMode`/`Requires`/`Type=oneshot`/`RemainAfterExit` knobs (internal; re-decided at PM-20) |
| #543 (PM-32) | amendment: Windows-caveat acceptance line superseded by #456's apply path |
| #458 | milestone → 0.0.1-stable |
| #349 | **closed** — superseded by unified epic #823 (comment) |
| #510 (PM epic) | body: PM-A #827 + PM-B #828 added; PM-first shipping note |
| #327 (deploy epic) | body: restructure note — children #823/#825/#830; ratified shipping order |

## Supersession map

`KEEP` (re-homed): #451 #453 #454 #455 → epic #823 pending seed #824. `CLOSE` (superseded, with
pointer): #349 → #823. Everything else: adjusted in place, nothing deleted.

**After this filing, GitHub is the single source of truth**; run docs carrying stale milestone/
sequencing claims (plan.md rev 10 §A.1/§E.2 beta.11 single-runtime-lane framing) are historical —
authority banner: GitHub wins on conflict.

## Option-A pass (same day, owner-ratified — native-first thin-client)

| Item | Live | Notes |
| --- | --- | --- |
| Desktop Frontend epic | **#840** | beta.11 — "the full frontend as a desktop app, the NetScript way"; children #452/#456/#457 + D1/D2/D3 |
| D1 SDK auto-update wrapper | **#841** | typed `Deno.autoUpdate` mechanism; isolates `Deno.desktop` churn (denoland/deno#35939); Windows staged-detection + manual UX (upstream apply tracked: denoland/deno#35269) |
| D2 type-safe bindings | **#842** | port shim over the bind channel + oRPC MessagePort adapter — contract-first window RPC (replaces manual `bindings.d.ts`) |
| D3 fresh-ui desktop components | **#843** | tray/menus/dialogs/notifications/window chrome, desktop-gated |
| label | `epic:desktop-frontend` | + labels.yml parity |
| #456 / #457 / #452 | re-scoped | native-first: native formats + release server (native `latest.json` lineage) + wrapper wiring; e2e = macOS/Linux apply+rollback proof + Windows manual path; labeled into #840 |
| #825 | milestone → **beta.14** | .NET/ATS packaging integration becomes load-bearing at the full-stack single-output tier (#833/#834); converges for free if upstream Windows apply lands |
| #327 | body addendum | Option-A tiering + new child #840 |

## Hybrid-tier pass (same day, owner-directed)

| Item | Live | Notes |
| --- | --- | --- |
| PM-C Task Scheduler adapter | **#844** | beta.13, Part of #510 — cron-policy processes compile to Scheduled Tasks; wraps `schtasks` now; adopts `Deno.cron.persistent` (denoland/deno#33965 — verified: API scaffold open, backends pending) when upstream lands |
| Windows hybrid tier | **#845** | beta.13, Part of #327 — window app + sidecars as Servy services & Scheduled Tasks; prosumer CLI install v1 (no .NET dep); consumer MSI variant folds into #833/#825 @ beta.14 |
| #510 / #327 | body addenda | PM-C + hybrid-tier entries |
87 changes: 87 additions & 0 deletions .llm/runs/rfc-single-deployment--orchestrator/closure.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
# Closure — RFC single deployment (issue #820) — design-record close per owner wrap-up directive

> **Post-closure amendment (2026-07-17, same day):** the owner re-opened the run for exactly the
> residual revision ("proceed with the revision I'll take care of the final eval myself").
> **plan.md rev 10** folds the surface classifications (residual 1 below) into §I.2/§E.2/§H; the
> cycle-10 eval is **owner-launched** (recipe in `context-pack.md` § "How the owner runs cycle
> 10"). The generator launches no further cycles; the #820 post + `drafts/` remain PASS-gated.
> This document otherwise stands as the cycle-1..9 record.

Run `rfc-single-deployment--orchestrator` · closed 2026-07-17 · generator Fable 5 · high, session
`7f1fada7-805f-46cb-8ac4-5eb201bdc105`. Owner directives: loop continuation authorized after the
cycle-2 escalation; loop bounded at cycle 9 ("one more pass then done").

## Outcome

**9 adversarial PLAN-EVAL cycles (Sol·max, all separate sessions), monotonically converging; the
final verdict is FAIL_PLAN with 6 of 8 plan-gate boxes PASS** — including, for the first time,
**"Decisions locked"**, plus board adjustments, risk register, gate set, deferred scope, and the
research content itself. Per the kickoff's hard gate, the RFC was **NOT posted to #820** and the
`drafts/` were **not written** (both were PASS-gated). **Zero board mutations occurred at any
point** — evaluator-audited in every cycle.

## What stands (evaluator-confirmed sound across the final cycles)

- **PM-first sequencing** (§A): the Tier-4 split keeping the PM-independent single-runtime lane
(#451/#453/#454/#455 + #452/#456a/#457a) complete in beta.11 while singleton-graph work
consumes the beta.12 PM engine in beta.13 — repeatedly endorsed as "sound, avoids
over-blocking".
- **Aspire-stack citizenship** (§B.4): generator-emitted `PackagingModel` → pure manifest
compiler → the canonical `deploy build` verb + a named TS-AppHost publish pipeline step, all in
SD-2; PM-20 stays pure extraction.
- **The installer** (§B): `DeployTargetPort` adapters + `MaintenancePort` (no rival axis), the
§B.1a operation state machines (incl. deterministic four-state purge + §B.1b canonical
machine-state root), the §B.3 identity/privilege matrix with updater least-privilege grants,
and the §B.2a install-graph digest rule.
- **The update lifecycle** (§C): one journaled release-snapshot mechanism from beta.11 (real
Windows apply; `Deno.autoUpdate` never the authority), crash-recoverable journal with migration
barriers, `maintenance(rollback-failed)` terminal, replay high-water, pinned trust, and the
§C.3b three-phase ownership that resolves boot-recovery composition.
- **Composition** (§D): both modes kept; typed manifests + the SD-7 cross-mode conformance suite
as the anti-fork enforcement; transport seam scoped to transport only.
- **The draft board** (§E): 22 bounded, dependency-ordered drafts; G1–G8 exactly-one ownership;
owner forks OF-A..OF-K.

## Residuals (the cycle-9 items — small)

1. **Public-vs-internal classification for three surfaces** (the only real design residual):
PM-5's `RuntimeCommandSpec` additions (`clearEnv` + strip list), PM-15's renderer knobs, and
SD-1's host-side supervisor/broker/proxy/Job-Object types. *Generator recommendation (non-
normative, unevaluated):* PM-5 additions = public contract extension (rubric at PM-5); PM-15
knobs = internal render config, classification re-decided at the PM-20 move; SD-1 host types =
internal (only #451/SD-6 client surfaces are public).
2. **Resume-artifact metadata lag** — reconciled as part of this closure (context-pack,
supervisor, worklog, drift now agree on the final state).

## Path to done (for a future session, if the owner wants the RFC posted)

One small rev folding residual 1 into §I.2/§E.2 + one PLAN-EVAL cycle would plausibly PASS; then
execute kickoff deliverable 5 (the #820 comment + `drafts/` files) and stage-H ratification of
OF-A..OF-K. Resume via `context-pack.md`; the eval launch recipe is `.llm/tmp/rfc820/
launch-eval.ts` + `plan-eval-brief.md` (route: Sol·max through the agentic app-server client).

## Handoff — beta-11 orchestrator spawned (final act of this run, 2026-07-17 ~23:35 UTC)

Owner directive: beta-11 is a go. Spawned the **beta-11 orchestrator** on the beta-10 pattern:

- **Kickoff:** `.llm/runs/beta11-cli--orchestrator/kickoff.md` — charter = milestone 13
(`0.0.1-beta.11`, the re-prioritized board: Desktop Frontend epic #840 + #841/#842/#843 +
re-scoped #452/#456/#457 + #826 + unified seed #824); skills, lane-policy routing, agentic-
toolchain-only sub-agents, generator≠evaluator + Tier-A review; **hard stop-lines stated in
the kickoff AND required verbatim in every sub-brief** (beta-8 breach lesson): no main-merge
without CI-green + eval-PASS + authorization; HARD STOP before any release publish and before
closing milestone 13 (owner in-turn sign-off only); #824 seed drafts-only. Codex-reset
addendum included (routes unrestricted; 3 resets remain).
- **Launch:** tmux session `beta11-orch`, cwd `/home/codex/repos/netscript-beta10-cli`,
`claude --model claude-fable-5 --effort low --permission-mode bypassPermissions
--session-id 86d308d5-c761-4e5d-a41f-8be959bc46d2` with the verbatim-kickoff prompt; /rc
enabled via tmux send-keys retry loop (link recorded in the worklog handoff row).
- **Context handed:** this run dir, PR #822 (rfc.md rev 13), #820, epic addenda, verified
upstream facts.

## Record map

`plan.md` rev 9 (the RFC) · `research.md` (forensics + gaps + re-baseline + debt) ·
`plan-eval-cycle{1..9}.md` (verdict trail) · `escalation.md` (cycle-2 loop-limit stop) ·
`supervisor.md` / `worklog.md` / `context-pack.md` / `drift.md` (6 entries) · `corpus/`
(evidence) · session record `.llm/2026-07-17-rfc-single-deployment-run.md`.
Loading
Loading