LuCI knowledge (Aurora)
Facts only, each with a file:line in a local checkout. Nothing here is a
recommendation; the workflows decide what to do with the facts.
| Touching |
Read |
.ut templates, <head> order, anything before luci.js exists |
references/luci-runtime.md §1–2, references/aurora-contract.md |
menu-aurora.js, router-aurora.js, page JS patches, polling |
references/luci-runtime.md §3–4, references/spa-pitfalls.md |
| TTFB, per-navigation cost, "is this worth a dispatch" |
references/dispatch-cost.md |
| caching, compression, CGI vs mod-ucode, HTTP-only constraints |
references/uhttpd.md, references/luci-runtime.md §5 |
?v=, {# PKG_VERSION #}, Makefile, feed, apk/opkg |
references/packaging.md |
| any claim that sounds familiar |
references/traps.md — refute before repeating |
Source checkouts ($LUCI_SRC, $UHTTPD_SRC)
The references cite files inside two upstream checkouts. Their location is
machine-specific and lives only in the git-ignored .dev/.env:
LUCI_SRC=/path/to/openwrt-luci # git clone https://github.com/openwrt/luci
UHTTPD_SRC=/path/to/uhttpd # git clone https://git.openwrt.org/project/uhttpd.git
Resolve them before reading any source: grep -E '^(LUCI|UHTTPD)_SRC=' .dev/.env.
If a variable is unset or the directory is missing, shallow-clone into
${TMPDIR:-/tmp}/luci-src/<name> (git clone --depth 1) and say so in the
output. For a branch comparison the checkout may lack the release branches
(a fork's remote): fetch them without touching its config —
git -C "$LUCI_SRC" fetch --depth 1 https://github.com/openwrt/luci openwrt-23.05:refs/remotes/upstream/openwrt-23.05 (same for 24.10, 25.12)
— then read with git show upstream/<branch>:<path>. Never write a
machine-specific path into a repository file, a report or a proposal — cite
as openwrt/luci@<branch> modules/luci-base/ucode/http.uc:499 or
uhttpd file.c:344.
Rules for every agent using this skill:
- Never assert luci-base/uhttpd behaviour from memory. Open the file, quote
it, cite
path:line, and name the branch (git -C "$LUCI_SRC" branch --show-current, or git show <branch>:<path>).
- Mark each claim
verified (read the source) or inferred (reasoned).
- Numbers come from
references/dispatch-cost.md or a fresh bench run;
never invent a round figure.
- The theme floor is OpenWrt 23.05 + Chrome 111 / Safari 16.4 / Firefox 128;
the Navigation API is optional. Say which floor a finding depends on.
1---2name: luci-knowledge3description: Verified facts about luci-base, uhttpd and this theme's own contract — boot order, template scope, L.require semantics, dispatch costs, caching headers, packaging rewrites, router invariants, budgets. Load before reviewing, changing or benchmarking anything in ucode/, .dev/src/, htdocs/ or before proposing a change to luci-base/uhttpd.4---56# LuCI knowledge (Aurora)78Facts only, each with a `file:line` in a local checkout. Nothing here is a9recommendation; the workflows decide what to do with the facts.1011| Touching | Read |12|---|---|13| `.ut` templates, `<head>` order, anything before `luci.js` exists | references/luci-runtime.md §1–2, references/aurora-contract.md |14| `menu-aurora.js`, `router-aurora.js`, page JS patches, polling | references/luci-runtime.md §3–4, references/spa-pitfalls.md |15| TTFB, per-navigation cost, "is this worth a dispatch" | references/dispatch-cost.md |16| caching, compression, CGI vs mod-ucode, HTTP-only constraints | references/uhttpd.md, references/luci-runtime.md §5 |17| `?v=`, `{# PKG_VERSION #}`, Makefile, feed, apk/opkg | references/packaging.md |18| any claim that sounds familiar | references/traps.md — refute before repeating |1920## Source checkouts (`$LUCI_SRC`, `$UHTTPD_SRC`)2122The references cite files inside two upstream checkouts. Their location is23machine-specific and lives only in the git-ignored `.dev/.env`:2425```26LUCI_SRC=/path/to/openwrt-luci # git clone https://github.com/openwrt/luci27UHTTPD_SRC=/path/to/uhttpd # git clone https://git.openwrt.org/project/uhttpd.git28```2930Resolve them before reading any source: `grep -E '^(LUCI|UHTTPD)_SRC=' .dev/.env`.31If a variable is unset or the directory is missing, shallow-clone into32`${TMPDIR:-/tmp}/luci-src/<name>` (`git clone --depth 1`) and say so in the33output. For a branch comparison the checkout may lack the release branches34(a fork's remote): fetch them without touching its config —35`git -C "$LUCI_SRC" fetch --depth 1 https://github.com/openwrt/luci36openwrt-23.05:refs/remotes/upstream/openwrt-23.05` (same for 24.10, 25.12)37— then read with `git show upstream/<branch>:<path>`. Never write a38machine-specific path into a repository file, a report or a proposal — cite39as `openwrt/luci@<branch> modules/luci-base/ucode/http.uc:499` or40`uhttpd file.c:344`.4142Rules for every agent using this skill:43441. Never assert luci-base/uhttpd behaviour from memory. Open the file, quote45 it, cite `path:line`, and name the branch (`git -C "$LUCI_SRC"46 branch --show-current`, or `git show <branch>:<path>`).472. Mark each claim `verified` (read the source) or `inferred` (reasoned).483. Numbers come from `references/dispatch-cost.md` or a fresh bench run;49 never invent a round figure.504. The theme floor is OpenWrt 23.05 + Chrome 111 / Safari 16.4 / Firefox 128;51 the Navigation API is optional. Say which floor a finding depends on.