Skip to content
Open
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
90 changes: 90 additions & 0 deletions .llm/2026-08-11-devtools-contribution-rfc-seed.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
# 2026-08-11 — DevTools contribution architecture: seed run, RFC 0005, board migration

**Run:** `plan-devtools-contribution--seed` · **Shape:** seed run (stages A–I), **planning-only**
**Supervisor:** Claude Opus 5 · high · `session_01DChBXWYP9LStvjQztUJV5b`
**Branch:** `plan/devtools-contribution` · **PR:** #1450 (**merged**) · **Baseline:** `2256a67bf`

## What shipped

- **`rfcs/0005-devtools-contribution.md`** — merged on `main` at `03680f6e8`. ~4,500 lines,
15 sections. First numbered RFC ever merged under the documented `rfcs/` process.
- **Board migration**, executed once: 14 new issues (#1468–#1481), epic #400 amended, 6 existing
issues amended across 4 rows, `0.0.14`'s milestone description corrected.
- **Full planning corpus** under `.llm/runs/plan-devtools-contribution--seed/` — 26 research
findings, S-1…S-22 synthesis, 8 design packs, supersession map, filing manifest, decision brief,
**D-1…D-20** drift log, FILING-LOG.

## The three owner decisions that shaped it

1. **Do not waive the adversarial design pass** — when the GLM 5.2 lane turned out to be
unlaunchable (D-10), substitute **Qwen 3.8 Max** rather than skip. Then **split the lane**: Qwen
takes architecture, **Kimi K3** takes pure UI/UX (D-15/D-16).
2. **No deferred acceptance** — every one of the 22 findings closes as fixed or declined-with-reason.
3. **Waive PLAN-EVAL** after two `FAIL_PLAN` cycles, once every supervisor-fixable finding was
closed (D-18).

The lane split paid for itself. Qwen and Kimi could not see each other's output and **independently
reported the same three defects** — string-only table cells, the §5 `traces/` route contradiction,
and the under-specified ranked feed. Convergence between an architecture reviewer and a UX reviewer
is the strongest evidence either pass produced, and it would have been invisible under one merged
reviewer.

## What the run got wrong, and how it was caught

Eight of the twenty drift entries correct **this run's own earlier claims**. The ones worth carrying
forward:

| # | The error | How it surfaced |
| - | --------- | --------------- |
| **D-4** | Planned a Markdown `deno fmt` gate that does not exist — `fmt.include` is `packages/**`/`plugins/**` TS only. It would also have rewritten verbatim upstream evidence | Reading the config instead of assuming it |
| **D-7** | My corpus understated a security finding: bare `--allow-read`/`--allow-write` is **whole-filesystem**, not project-scoped. A subagent was right and I was wrong | Subagent contradicted the supervisor and won |
| **D-8** | Board claims were wrong in a way that **reversed** a recommendation I was about to make — `CR-DDX-HOSTAGNOSTIC` does exist on #400, and a 2026-07-19 owner-ratified train had already re-milestoned the children | Checking the live board rather than the corpus |
| **D-17** | I piped both design passes through `tail -40`, **truncating my own evidence** and losing most findings. Kept the truncated tails as evidence, re-ran with full redirection — then had to correct D-17 itself for overstating its remedy | Counting findings against the reported severity totals |
| — | A **stale `worklog.md`** claimed the GLM pass had run. That is precisely the false-green this RFC's §11.7 exists to prevent. Three more stale rows found on the follow-up sweep | Re-reading my own artifacts as an adversary would |

**The one that repeated:** `git commit -m "…"` ate backticked identifiers **twice**, requiring an
amend + `--force-with-lease` both times. The memory rule is now unconditional — *never* `-m` in this
repo, no judgement call — because the first, conditional version left room for exactly the judgement
that failed the second time.

## Verified claims worth reusing

- **`PluginInstallerManifestSchema` ends in `.strict()`** — `packages/plugin/src/protocol/manifest.ts:283`.
RFC #890's contract C8 states older CLIs *"ignore the block"*; `.strict()` **hard-rejects** unknown
keys, so an older CLI fails manifest parsing outright rather than degrading. Cross-posted to #929;
handled for the DevTools family by #1474 (fork F-3, `.passthrough()` **before** any
manifest-visible pointer). *(Initially miscited `:282` — corrected in D-9.)*
- **`plugins/streams` has no oRPC contract surface at all** —
`arch-debt.md#streams-connector-sound-deferred` (`:450`). The RFC requires the contract-provenance
panel to render a **labelled degraded state citing that debt**, not an empty list. Anchor and line
range verified at close.
- **Six canonical trigger kinds**, not eight — `packages/plugin-triggers-core/src/domain/constants.ts:5-29`.

## Close-out state

| Item | State |
| --- | --- |
| `agentic:leak-check` | **clean** — `survivors: []`, aspire `ok`, docker `ok` |
| Run worktrees | 4 run-owned remain (`ns-devtools-d2-{qwen,kimi}`, `ns-devtools-planeval{,-c2}`), consistent with repo practice. **Not removed** — no cleanup was authorized |
| `arch-debt.md` | **No entry written.** See obligation below |
| `lessons/` | **No promotion.** The promotion rule needs a repeated lesson across runs; D-17 and the backtick failure are one run each. The backtick rule went to session memory instead |
| Board | migrated; #922 and its 24 children **untouched** |

### Recorded obligation — one arch-debt entry is warranted and was not written

**#1481** (`/design` ships ungated in `fresh-ui`) is a live doctrine violation sitting in
`Backlog / Triage`, i.e. **without a time-bounded plan**. Doctrine
(`docs/architecture/doctrine/10-codebase-verdict-and-handoff.md:184-195`) permits a violation to
remain only when recorded in `arch-debt.md` **with** such a plan.

`.llm/harness/debt/arch-debt.md` is **outside this run's mutation boundary** (`rfcs/**` and the run
dir only), and PR #1450 is already merged — writing the entry needs its own PR. Recording it here
rather than writing it silently or dropping it.

## Pointers

- RFC: [`rfcs/0005-devtools-contribution.md`](https://github.com/rickylabs/netscript/blob/main/rfcs/0005-devtools-contribution.md)
- Filing record: `.llm/runs/plan-devtools-contribution--seed/filing/FILING-LOG.md`
- Findings closure: `.llm/runs/plan-devtools-contribution--seed/design/ux-evidence/FINDINGS-SWEEP.md`
- Drift: `.llm/runs/plan-devtools-contribution--seed/drift.md` (D-1…D-20)
- Ledger comment: https://github.com/rickylabs/netscript/pull/1450#issuecomment-5258590797
29 changes: 22 additions & 7 deletions .llm/runs/plan-devtools-contribution--seed/context-pack.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,28 @@ an evaluator PASS), and **board filing**.
| **Sweep** | 22 findings: **21 fixed, 1 declined with re-entry, 0 deferred** |
| **Cross-ref** | **0 contradictions, 0 duplications** vs #890 / RFC-0001 / RFC-A; 21 internal defects fixed |

## Next Steps

1. **File once** from `filing/filing-manifest.md` — 14 new issues, 1 not filed, 6 existing amended
via 4 rows. **Preserve the 2026-07-19 train. Do not touch #922's children. Do not create labels.**
2. Write `FILING-LOG.md` mapping every draft ID → live issue number; commit it.
3. Post the filing ledger as a PR comment; update the PR body; advance `status:`.
4. Close the run: `arch-debt.md` entries if any, session record.
## Next Steps — **all executed 2026-08-11; the run is closed**

1. ~~File once from `filing/filing-manifest.md`~~ — **done.** #1468–#1481 filed, #400 amended, 6
existing amended via 4 rows. Train preserved (no issue re-milestoned), #922's 24 children
untouched, no labels created. Record: `filing/FILING-LOG.md`.
2. ~~Write `FILING-LOG.md`~~ — **done**, with both deviations recorded (DT-8 six-state; `rfcs/0005`
links).
3. ~~Post the ledger; update the PR~~ — **done**:
https://github.com/rickylabs/netscript/pull/1450#issuecomment-5258590797
4. ~~Close the run~~ — **done.** `agentic:leak-check` clean (`survivors: []`); session record at
`.llm/2026-08-11-devtools-contribution-rfc-seed.md`; **no `arch-debt.md` entry written** — one is
warranted for #1481 but that file is outside this run's mutation boundary, so the obligation is
recorded in the session record instead of being taken silently.

### Left for the owner

- **#1468** was closed as `DUPLICATE` by the owner 9 min after filing → the RFC's `tracking-issue`
frontmatter on `main` still reads `pending`; repointing it at **#400** needs a follow-up PR.
- **#734** folds but stays open pending owner confirmation (fork **F-4**).
- **#507** / **PR #780** are close-later; #780 needs its two-file salvage into the #509 lane first.
- **D-0b** undecided → **DT-18 unfiled**, deliberately.
- One `arch-debt.md` entry for **#1481**, per the obligation above.

## Gates

Expand Down
101 changes: 101 additions & 0 deletions .llm/runs/plan-devtools-contribution--seed/filing/FILING-LOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
# FILING-LOG — DevTools contribution RFC

**Filed:** 2026-08-11 · **By:** supervisor session `session_01DChBXWYP9LStvjQztUJV5b` (Claude Opus 5 · high)
**Ratification:** owner in-turn, drift **D-19** · **Board migration approved:** owner in-turn, 2026-08-11
**RFC of record:** [`rfcs/0005-devtools-contribution.md`](https://github.com/rickylabs/netscript/blob/main/rfcs/0005-devtools-contribution.md) — **merged on `main`** at `03680f6e8`, via PR #1450

> **PLAN-EVAL:** cleared by **written owner waiver**, drift **D-18**. The formal Codex GPT-5.6 Sol
> evaluator returned **`FAIL_PLAN` twice**; every supervisor-fixable finding was closed before the
> waiver. **No evaluator `PASS` exists — do not cite one.**

## Preconditions at filing time

| # | Precondition | Evidence |
| - | ------------ | -------- |
| P0 | RFC merged on `main` and path verified **before** any issue linked to it | `git ls-tree origin/main -- rfcs/` → `rfcs/0005-devtools-contribution.md`; `origin/main` = `03680f6e8`; PR #1450 `MERGED` 2026-08-11T20:27:09Z |
| P1 | Plan-Gate cleared | **owner waiver**, drift D-18 |
| P2 | Blocking forks ratified + filing authorized | drift D-19 |
| P3 | Adversarial design pass satisfied | owner-approved substitute route — Qwen 3.8 Max + Kimi K3, drift D-15/D-16; 22 findings closed |
| P4 | F-1 / F-3 resolved | drift D-19 — F-1 self-contained `packages/devtools-core` first; F-3 `.passthrough()` before any manifest-visible pointer |

## Draft ID → live issue

| Draft | Slice | Live | Milestone | Action |
| --- | --- | --- | --- | --- |
| DT-RFC | — | **#1468** | `0.0.6` | NEW — RFC 0005 tracking issue. **Closed by the owner as `DUPLICATE`** at 2026-08-11T20:36:06Z, ~9 min after filing. Left closed — an owner disposition, not a filing error. The RFC's tracking role therefore sits on **#400** |
| DT-1 | W0-a | **#1469** | `0.0.15` | NEW — disposable probe |
| DT-2 | W0-b | **#1470** | `0.0.15` | NEW — disposable probe |
| DT-3 | W1-a | **#1471** | `0.0.15` | NEW — **successor to #412** |
| DT-4 | W1-b | **#1472** | `0.0.15` | NEW — **successor to #424** |
| DT-5 | W1-c | **#1473** | `0.0.15` | NEW |
| DT-6 | W1-d | **#1474** | `0.0.15` | NEW — F-3 precondition |
| DT-7 | W2-a | **#1475** | `0.0.15` | NEW — boundary vs #930 stated |
| DT-8 | W2-b | **#1476** | `0.0.15` | NEW — boundary vs #937/#938 stated |
| DT-9 | W3-a | **#1477** | `0.0.15` | NEW — **co-successor to #424** |
| DT-10 | W3-b | **#1478** | `0.0.15` | NEW |
| DT-11 | W4-a | *(none)* | — | **AMEND #427** — folded, stays open as the slice |
| DT-12 | W4-b | **#1479** | `0.0.15` | NEW |
| DT-13 | W5-a | *(none)* | — | **AMEND #423** — boundary vs #934 stated |
| DT-14 | W5-b | **#1480** | `0.0.15` | NEW — public-surface change, consumer gate |
| DT-15 | W6-a | *(none)* | — | **AMEND #428** — boundary vs #933 stated |
| DT-16 | W6-b | *(none)* | — | **AMEND #429 / #430 / #431** — boundary vs #944; streams degraded state required |
| DT-17 | F-20 | **#1481** | `Backlog / Triage` | NEW — outside the epic |
| DT-18 | D-0b | **NOT FILED** | — | D-0b never decided; gap stays recorded in drift D-10/D-15 |

**14 new issues** (#1468–#1481) · **1 not filed** · **6 existing issues amended via 4 rows**.

## Epic

**#400 amended** — not replaced (standing decision D-11; a second umbrella would fragment the very
board this RFC de-fragments). Preserved **verbatim**: the ownership thesis, the three acceptance
lines, and the killed-surfaces list. Rewritten: the invent-your-own-discovery premise, the dead
`beta.6` prose, and the S1–S13 screen list → RFC 0005 pointers. Milestone unchanged
(`Backlog / Triage`).

`CR-DDX-HOSTAGNOSTIC` — raised on #400 on 2026-07-06 from epic #510 and **never resolved** — is
recorded as **accepted** (owner fork F-11). This un-dangles #544. #544 itself was **not** edited;
that body belongs to #510's lane.

## Successor-before-supersede ordering — as executed

| Superseded | Successor(s) | Order actually used | State now |
| --- | --- | --- | --- |
| **#412** | **#1471** | successor filed **first**, then the supersede comment | **open** — closes when #1471 is delivered |
| **#424** | **#1472**, **#1477** | successors filed **first**, then the supersede comment | **open** — closes when both are delivered |

**Zero filing-time closes.** Every `FOLD` / `SUPERSEDE` / `CLOSE-LATER` was recorded as a comment
and left open, because each has a precondition that filing does not satisfy. No seam is left
unowned in the interval.

## Comments posted

- **Supersede:** #412, #424 · **Fold:** #427, #734 · **Close-later:** #507
- **Re-baseline (AMEND):** #414, #415, #420, #423, #426, #428, #429, #430, #431, #551
- **Epic:** #400 body rewrite + the `CR-DDX-HOSTAGNOSTIC` resolution
- **PR #780:** close-later + salvage precondition — `DESIGN-LANGUAGE.md` and `DS-UPLIFT-BACKLOG.md`
named by exact branch path for the **#509** lane; `HOME-SPEC.md` / `ROLLOUT-DOCTRINE.md`
explicitly *not* salvaged (they encode the per-screen-bespoke doctrine §11.3.3 contradicts).
**#509 itself was not edited** — it is on the KEEP list, and moving files into its lane is that
lane's call.
- **Cross-post:** **#929** — the *single* authorized #922-adjacent touch, reporting the `.strict()`
defect that #890 contract C8's "older CLIs ignore the block" claim rests on. Informational; it
changes no label, milestone, or scope.

## Preservation guarantees — verified

| Guarantee | Result |
| --- | --- |
| **#922 and its 24 children untouched** | ✅ zero body/label/milestone/state changes. #933 and #944 received **nothing**. The only #922-adjacent action anywhere was the informational #929 cross-post |
| **2026-07-19 milestone train preserved** | ✅ no issue re-milestoned. New sub-issues default to `0.0.15`, matching the ratified train |
| **No undocumented labels created** | ✅ every label used exists in both `.github/labels.yml` and live. `epic:devtools`, `area:devtools`, `area:frontend` do **not** exist and were **not** created — `epic:dev-dashboard` used instead |
| **No milestones created; no issue moved** | ✅ only edit was stripping the stale "Dev dashboard (thin, contribution-based)" clause from `0.0.14`'s **description** (owner fork F-9). Its 11 open issues are unchanged |
| **No closing keyword in any issue body** | ✅ `Part of #400` only |
| **Exactly one `status:` per issue** | ✅ `status:triage` at filing |

## Deviations from the manifest — recorded, not silent

1. **DT-8 title says "six-state", the manifest said "five-state."** The manifest predates Amendment A,
which added a sixth quarantine state (`zone-contract-mismatch`) to close a Qwen finding. Filing the
manifest's literal title would have contradicted the merged RFC. **Substance unchanged.**
2. **All issue bodies cite `rfcs/0005-…`, not the manifest's `rfcs/0000-…`.** Per the owner's
instruction to use the canonical `main` link; the number was assigned at acceptance.
7 changes: 7 additions & 0 deletions .llm/runs/plan-devtools-contribution--seed/leak-report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Run resource leak report

Generated: 2026-08-11T20:39:50.433Z
Worktree: `/home/codex/repos/ns-rfc-devtools-contribution`
Aspire probe: ok
Docker probe: ok
No surviving Aspire resources found.
Loading