Delete the decisions and design logs; scripts, rigs and xtask off the root
Iris: "remove both decisions and iris.md. I've decided to instead make decisions when planning with agents rather than after they do things, and they're both too long for me to wanna read, + don't cover all the decisions I'll wanna make about the code anyways. I'll just naturally run into things for now. Todo is important though." So docs/DECISIONS.md (850 lines) and docs/IRIS.md (1,986) are gone, and AGENTS.md now says not to start another: raise a choice while planning it with her, otherwise decide it and put the reasoning at the code it governs. The TODO lists stay. docs/SUBAGENTS_DECISIONS.md went with them -- same artefact, same reasoning, and she did not name it, so its six decisions were folded into docs/SUBAGENTS.md rather than deleted. Deleting the logs left ~30 citations dangling in code comments and docs. Each states its reason inline and cited the file only for provenance, so they now read "decided 2026-09-07" or name the module doc that carries the reasoning. The root had six things that were not a program or a document. Moved, per "I only meant top level sh files": run-tests.sh, test-wg-tunnel.sh, wg-setup-host.sh -> scripts/ rigs/ -> scripts/rigs/ xtask/ -> scripts/xtask/ A project's own scripts stayed with the project: app/*.sh, app-rust/*.sh, iris/*.sh and server/enroll-link.sh did not move. `target/` at the root is deleted and cannot come back: there was never a workspace there, and the 29 MB was only xtask's scratch space, now in scripts/xtask/target/. `cargo xtask apk` still runs from the repo root and now publishes to scripts/build/outputs/apk/<mode>/ -- one directory deep, because that is what Dev Updater's `*/build/outputs/apk/*/*.apk` discovery pattern needs, and scripts/xtask/build would have been two. Verified: ./scripts/run-tests.sh and `cd iris && cargo test` green, clippy and fmt clean everywhere, `cargo xtask apk debug --abi x86_64` builds and signs an APK carrying lib/x86_64/libai_app.so at the new publish path, and the repo root is now eleven entries with no build output among them. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
09778346a0
commit
4ccfda6b8e
44 files changed
+198
-2994
No files matched your search
@@ -72,6 +72,24 @@ Module-by-module intent is in `docs/PLAN.md`'s "Backend layout".
|
||||
(sessions, import, models, setups); `Api.kt`/`EventStream.kt` the REST + SSE
|
||||
clients; `Events.kt` the event model mirror; `ServerConfig.kt` settings and
|
||||
the Keystore-sealed token.
|
||||
- `scripts/` — everything at the root that was neither a program nor a
|
||||
document: the three repo-wide shell scripts (`run-tests.sh`,
|
||||
`test-wg-tunnel.sh`, `wg-setup-host.sh`), `rigs/` (the `gpu-probe` and
|
||||
`virtgpu-probe` device probes), and `xtask/`. **A project's own scripts
|
||||
stay with the project** — `app/*.sh`, `app-rust/*.sh`, `iris/*.sh` and
|
||||
`server/enroll-link.sh` did not move (Iris, 2026-09-09: "I only meant
|
||||
top level sh files").
|
||||
`scripts/xtask/` is the [cargo-xtask](https://github.com/matklad/cargo-xtask)
|
||||
convention: an ordinary Rust binary that does build work a shell script
|
||||
would otherwise do, run as `cargo xtask apk` **from the repo root**
|
||||
(`.cargo/config.toml`'s alias, whose `--manifest-path` is relative to
|
||||
the working directory). It packages `app/shellApp` without Gradle
|
||||
driving it — `cargo ndk` → `javac`/`d8` → `aapt2` → `zipalign` →
|
||||
`apksigner` — and publishes to `scripts/build/outputs/apk/<mode>/`,
|
||||
which is where Dev Updater looks. There is deliberately **no `target/`
|
||||
at the repo root** any more: there is no workspace there, and what used
|
||||
to be one was only xtask's own scratch space, now in
|
||||
`scripts/xtask/target/`.
|
||||
- `wg-app-link/` — a **git submodule** shared with dev-updater: the pinned CA
|
||||
and leaf (`certs`), QR enrollment and the bearer token (`enroll`), wg0
|
||||
binding and the certificate's SANs (`netif`), owner-only files (`private`),
|
||||
@@ -89,19 +107,16 @@ Module-by-module intent is in `docs/PLAN.md`'s "Backend layout".
|
||||
Read it before touching `TranscriptCache.kt`, `TranscriptSource.kt`, or
|
||||
the opening and stream effects in `SessionScreen.kt`.
|
||||
- `docs/TODO.md` — the working list.
|
||||
- `docs/SUBAGENTS.md` and `docs/SUBAGENTS_DECISIONS.md` — a session's
|
||||
subagents (the wire shape, the phone's view) and the choices behind
|
||||
them still awaiting review.
|
||||
- `docs/SUBAGENTS.md` — a session's subagents: the wire shape, the
|
||||
phone's view, and the choices behind the shape.
|
||||
- `docs/RUST.md` — the plan for moving the app to Rust (on the `rustify`
|
||||
branch of the `ai-app-2` clone): what has to be reproduced, the
|
||||
framework decision, and the ordered experiments with their pass
|
||||
conditions. Read it before touching anything under that branch.
|
||||
- `docs/IRIS.md`, `docs/IRIS_TODO.md`, `docs/DECISIONS.md`,
|
||||
`docs/LAYOUT.md`, `docs/TEXTURES.md`, `docs/CLIENT_CORE.md` — iris's
|
||||
own build log (**any major addition or design decision, not only
|
||||
public API** -- Iris, 2026-09-08), working list, decisions log,
|
||||
layout/render design, texture-atlas design, and the design of
|
||||
`app-rust`'s `client` module, respectively.
|
||||
- `docs/IRIS_TODO.md`, `docs/LAYOUT.md`, `docs/TEXTURES.md`,
|
||||
`docs/CLIENT_CORE.md` — iris's open working list, its layout/render
|
||||
design, its texture-atlas design, and the design of `app-rust`'s
|
||||
`client` module, respectively.
|
||||
|
||||
**These documents are pruned as the work lands, not appended to
|
||||
forever** (Iris, 2026-09-08: *"remove everything that's already done and
|
||||
@@ -112,6 +127,18 @@ Module-by-module intent is in `docs/PLAN.md`'s "Backend layout".
|
||||
survives is what cannot be cheaply re-derived — measurements, dead ends
|
||||
and failed hypotheses, invariants and their reasons, and the design of
|
||||
what exists now rather than the route to it.
|
||||
|
||||
**There is no decisions log and no design log, and one should not be
|
||||
started.** `docs/DECISIONS.md` and `docs/IRIS.md` were deleted on
|
||||
2026-09-09 at Iris's instruction: *"I've decided to instead make
|
||||
decisions when planning with agents rather than after they do things,
|
||||
and they're both too long for me to wanna read, + don't cover all the
|
||||
decisions I'll wanna make about the code anyways. I'll just naturally
|
||||
run into things for now."* So raise a choice **while planning it with
|
||||
her**, when the direction is still cheap to change; otherwise decide it,
|
||||
put the reasoning at the code it governs, and carry on. TODO lists are
|
||||
still wanted — a list of open work is useful, a list of finished work
|
||||
is not.
|
||||
- `docs/SCROLL.md` — how anything in iris scrolls: one
|
||||
`ScrollController` holds the position, the gesture, the fling and the
|
||||
pin, and the two widgets that scroll (`ScrollArea`, `LazySpan`) own
|
||||
@@ -151,13 +178,13 @@ test, `every_icon_is_in_the_bundled_font`), same Mono face, same Material
|
||||
Design family so an icon means the same thing in both apps. Its subset is
|
||||
separate rather than shared because subsetting only what one app draws is
|
||||
the point. This is the **only** font iris bundles — body and monospace
|
||||
text come from the platform (docs/DECISIONS.md, 2026-09-07), and an icon
|
||||
text come from the platform (decided 2026-09-07), and an icon
|
||||
is the opposite case: a small closed set of codepoints no system font is
|
||||
guaranteed to have.
|
||||
|
||||
## Checking your work
|
||||
|
||||
- **Rust**: `./run-tests.sh` from the repo root runs `event-model`,
|
||||
- **Rust**: `./scripts/run-tests.sh` from the repo root runs `event-model`,
|
||||
`server/` and `app-rust/`; `cd iris && cargo test` runs the framework's
|
||||
own suite, which is slower and not about this product. Each workspace
|
||||
also gets `cargo clippy --all-targets` and `cargo fmt`. The build stays
|
||||
@@ -226,7 +253,7 @@ guaranteed to have.
|
||||
whether it was continued or reset (`stream backlog:`). That is the only
|
||||
place "how far had this phone fallen behind" is answerable — the app sees a
|
||||
window arrive and cannot tell.
|
||||
- **`./test-wg-tunnel.sh up|test|down`** builds a real tunnel between two
|
||||
- **`./scripts/test-wg-tunnel.sh up|test|down`** builds a real tunnel between two
|
||||
network namespaces inside one machine and drives the server through it — a
|
||||
genuine handshake against 10.66.0.1 with pinned TLS, no router or phone
|
||||
involved. That is how to verify the wg0-only posture.
|
||||
@@ -236,7 +263,7 @@ guaranteed to have.
|
||||
Each exists because something was invisible without it.
|
||||
|
||||
- **The `bench` build type and `app/bench-fixture/`** exist for P0 (RUST.md
|
||||
and DECISIONS.md's 2026-09-05 entries), the phone benchmark gate Iris
|
||||
and the 2026-09-05 decisions), the phone benchmark gate Iris
|
||||
asked for before porting continues: a deterministic, checked-in synthetic
|
||||
transcript (`app/bench-fixture/generate.py`, never a real one) that both
|
||||
this app and iris open with no server, so a frame-time comparison
|
||||
@@ -363,7 +390,7 @@ Each exists because something was invisible without it.
|
||||
lifecycle and one verification run before a build goes to the phone --
|
||||
not for iterating on layout.
|
||||
- **The emulator is a GLES rig, deliberately** (Iris, 2026-09-08;
|
||||
docs/DECISIONS.md). Its guest has no hardware Vulkan -- only SwiftShader
|
||||
docs/RUST.md). Its guest has no hardware Vulkan -- only SwiftShader
|
||||
in software -- while its GLES *is* the host's real GPU through virgl at
|
||||
ES 3.1, so an ordinary build's runtime fallback lands there by itself
|
||||
and nothing should pass `force-gles` to arrange it. The Vulkan path is
|
||||
@@ -444,7 +471,7 @@ means here:
|
||||
|
||||
- **`ai-server` belongs on the host in production.** That is where the LAN
|
||||
address the phone can reach is, and where WireGuard terminates.
|
||||
`wg-setup-host.sh` sets that up (keys, `wg0.conf`, the phone's QR); run it
|
||||
`scripts/wg-setup-host.sh` sets that up (keys, `wg0.conf`, the phone's QR); run it
|
||||
there with `sudo WG_ENDPOINT=<ddns name>`.
|
||||
- **The tunnel and the real phone can never terminate in the VM**, because
|
||||
nothing outside can open a connection into it. Phone bring-up is host work.
|
||||
|
||||
Reference in new issue
Block a user