Files
2026-10-09 12:11:19 +08:00

1.9 KiB

<Title: one line, the change, not the complaint>

Status: draft · Decision: pending | submitted | interim in Aurora | dropped · Target: openwrt/luci <branch> | uhttpd | rpcd | eamonxg feed · Date:

Problem

Two or three sentences: what happens today, on which request, with the measured cost (from dispatch-cost.md or a named bench run). One sentence on who pays (every navigation / every session / every install).

Evidence

# fact where
1 … openwrt/luci@<branch> modules/luci-base/ucode/http.uc:499
2 … uhttpd file.c:344

Unknowns (not yet verified) listed here, each with the command that settles it.

Today

sequenceDiagram
  participant B as Browser
  participant U as uhttpd
  participant D as CGI dispatcher (ucode)
  B->>U: GET …
  U->>D: fork + exec (2 ms) + import (37 ms)
  D-->>B: 200, Cache-Control: no-cache

Label edges with cost (ms, bytes, RTT). One diagram per mechanism.

Proposal

flowchart LR
  A[before] -->|change| B[after]

Change sketch: exact file and function, approximate size in lines, the new headers/config/API. Behaviour on 23.05 / 24.10 / 25.12 / master. What stays byte-identical for users who do not opt in.

Alternatives considered

Each in one line with why it loses (measured or structural).

Measurement plan

Before/after commands (bench-dispatch.sh, bench.mjs, bench-fullload.mjs), the numbers expected to move, the device class. "not measured yet" is a valid entry; an invented number is not.

Interim in Aurora

What this theme (or the eamonxg feed) can do without upstream, and what it cannot; link the /luci-change plan if one exists.

Submission

Repository and branch, commit granularity (one logical change), cover-letter contents: problem, measurement before/after with device, compatibility statement, test performed.