AC Native Story Refresh — Touchpoint Tracker #
Goal: The description of AC Native (and the broader AC system) currently appears in many places — grant proposals, papers, the platter, API docs, marketing copy. Several of these are stale. This file tracks every place the story lives, the current state vs reality, and who/when/how to refresh.
Priority right now: LACMA 2026 proposal (due 2026-04-22, 11:59 PM PST). Items marked 🔥 are LACMA-critical.
Started: 2026-04-21 Driver: @jeffrey (+ Claude Code)
1. AC Native — current feature audit (authoritative) #
Reality check from an exhaustive pass over fedac/native/, git log (last 30 days), PROGRESS.md, SCORE.md, BOOT-REGRESSION-REPORT.md, and the piece inventory. Use this table as the source of truth when writing AC Native descriptions elsewhere.
| Claim | Status | Reality (April 2026) |
|---|---|---|
| "Boots from USB in under 2 seconds" | ❌ stale | Currently ~7.3s cold boot. <2s is aspirational — see boot-anim matrix-rain work targeting 2s runtime but not yet hit. |
| "Custom C runtime as PID 1" | ✅ true | ac-native binary is PID 1 (not systemd). See src/ac-native.c:1535. |
| "No desktop, no window manager, no browser" | ⚠️ mostly true | True in default path. BUT: cage (Wayland compositor) + Firefox exist in some builds for OAuth flows. |
| "Renders directly to the framebuffer" | ⚠️ misleading | Uses DRM dumb buffers via Linux display subsystem. Not raw /dev/fb0. Renders at 1/3 resolution with nearest-neighbor upscale (the "chunky pixel" aesthetic). Optional SDL3 GPU backend compiled in, loaded via dlopen. |
| "Reads input from raw device events" | ✅ true | evdev (/dev/input/event*). See src/input.c:315-374. |
| "ALSA sample-level synthesis at 192 kHz" | ✅ true | Confirmed. AUDIO_SAMPLE_RATE=192000, AUDIO_PERIOD_SIZE=192 (~1 ms latency). |
| "Polyphonic synthesizer" | ✅ true, stronger than claimed | 32-voice polyphony (AUDIO_MAX_VOICES=32). |
| "Waveform selection" | ✅ true, richer | 8 waveforms in notepat: sine, triangle, sawtooth, square, composite, harp, whistle, sample. Plus gun (digital waveguide + biquad body modes), noise, flute (STK model). |
| "Room reverb" | ✅ true | 3-tap delay, 0.55 feedback, wet-mix slider. |
| "Time-of-day-responsive visuals" | ⚠️ not verified for AC Native | True for the web notepat piece tint; not confirmed as a native-side feature. Check pieces/notepat.mjs on AC Native. |
"code command launches Claude Code directly on the framebuffer" |
❌ misleading | code is an alias that jumps to terminal:claude. Claude Code runs as a PTY subprocess inside a VT100 terminal emulator (the terminal piece emulates the VT), not rendered natively to framebuffer. The terminal emulator IS native. |
"8,466-line musical composition tool notepat" |
⚠️ outdated | Current notepat.mjs is 6,006 lines on AC Native (pieces/notepat.mjs). The 8,466 figure is the web version (system/public/aesthetic.computer/disks/notepat.mjs). Be precise which one we cite. |
| "Any x86 laptop" | ⚠️ x86_64 UEFI only | No 32-bit. No BIOS-only. No ARM. Primary target: ThinkPad X1 Nano Gen 2. Known regression on Gemini Lake (Yoga 11e Gen 5 — i915 firmware/glk_dmc not loading). |
Features worth adding to the story (currently under-represented) #
- USB MIDI — notepat sends/receives via USB MIDI devices.
- UDP MIDI broadcast — notepat broadcasts MIDI over UDP; status badge in HUD.
- Camera + QR scanning — V4L2 + quirc. Used for OAuth flow (scans login URL from screen).
- Flite TTS — male + female voices, integrated into audio ring buffer.
- Sample recording & playback — 12 simultaneous sample voices, up to 10 s per sample.
- SSH via Dropbear — auto-starts on WiFi connect (for dev, can be disabled).
- OTA updates —
ac-os uploadrebuilds and uploads a signed EFI payload; devices verify byte-match before flashing/mnt/EFI/BOOT/BOOTX64.EFI. - Build naming — each build is tagged with an adjective-animal name (e.g. "funny-chatterjee"), embedded in the kernel via
AC_GIT_HASH+AC_BUILD_NAME. - 20+ shipped pieces on AC Native: notepat, terminal, prompt, os, claude, dj, tapes, chat, machine, lisp, samples, speed, split, power, printing, theme, login, clock, geo, painting, secrets, list, wifi, voice, cc, roz, laer-klokken.
- Dual audio outputs — laptop speakers + HDMI secondary.
- Master volume + drive FX — tanh soft saturation on the master bus (recent).
Known issues / not-yet-shipped (be honest in grant copy) #
- Boot time target of <2s not reached (currently ~7.3s).
- Multi-touch (MT protocol B) — planned, not shipped.
- Firmware blobs for common WiFi chipsets (RTW88/89, MT7921/25, Intel SOF) — SCORE.md:188 flags as open.
- Audio tearing at high echo + many voices (buffer underrun edge case).
- Camera preview is Y-channel grayscale only (YUYV), not full color.
- No regulatory.db for WiFi → defaults to US 5 GHz channels.
2. LACMA 2026 proposal — 🔥 due tomorrow #
🔥 LACMA-critical copy fixes #
| Location | Current | Should be |
|---|---|---|
| lacma-2026.tex:118 | "boots from a USB stick on any x86 laptop in under two seconds" | "boots from a USB stick on x86_64 UEFI laptops in under ten seconds" (honest, still fast for a full OS) |
| lacma-2026.tex:118 | "renders directly to the framebuffer" | "renders directly via DRM (no compositor, no browser)" (accurate) |
| lacma-2026.tex:118 | "A built-in code command launches Anthropic's Claude Code directly on the framebuffer" |
"A built-in code command drops into a native terminal emulator running Anthropic's Claude Code as a PTY subprocess, so artists can ask an AI coding partner to modify a piece without ever leaving the OS." (accurate, still compelling) |
| lacma-2026.tex:118 | "an 8,466-line musical composition tool called notepat" | Keep "8,466-line" — that's the full web notepat, which ALSO ships to AC Native with some native-specific paring. Or qualify: "an 8,000+ line musical composition tool." |
| lacma-2026.tex:118 | Mentions: room reverb, waveform selection, time-of-day visuals | Add: 32-voice polyphony, USB & UDP MIDI, sample recording, Flite TTS |
| LACMA-2026-APPLICATION-DRAFT.md | Same stale phrasing as tex | Sync after tex is updated |
Status: ☑ drafted ☑ applied ☑ PDF recompiled (492 words, under 500 cap) ☐ submitted
🔥 LACMA-critical content additions #
LACMA nice-to-have (if time) #
3. Platter — refresh #
The whistlegraph-platter/ and papers/sync-platter.mjs imply a "platter" concept (curated presentation/deck). Status of anything that serves as a current AC Native pitch:
4. API surface — refresh #
The disk API is the contract pieces program against. Documentation state:
5. Architectural image — refresh #
The three-layer story (OS / language / network) is the canonical pitch. Refresh targets:
6. Other places the AC Native story appears (sweep needed) #
7. Open questions (flag for Jeffrey) #
- Boot time claim — do we lean into "~10 seconds, a full creative OS from cold USB" (which is honest + still impressive for what it does), or do we aggressively target <2s before grant decisions come in?
- Framebuffer vs DRM — "bare-metal" is the artistic claim. Is DRM too technical for grant copy, or do we say "direct graphics rendering, no compositor" and leave DRM for the technical appendix?
- Claude Code framing — "AI coding partner in the terminal" vs "framebuffer-native AI"? The first is honest; the second overclaims.
- notepat line count — which version do we cite? (Web: 8,466; Native: 6,006.) Or total AC lines that make notepat possible?
- Platter — does this exist as a concrete artifact, or should we assemble one during the refresh?
Working notes / log #
- 2026-04-21 14:00 — First pass on LACMA proposal: stats refreshed (371 pieces, notepat 8466), Anthropic hook added, bio front-loaded, sosoft cards replace Fig 3/4. PDF recompiled.
- 2026-04-21 14:30 — Audit done against current
fedac/native/. Multiple claims need softening (boot time, framebuffer, Claude Code wording). File created to track long-running refresh. - 2026-04-21 14:30 — LACMA-critical copy fixes applied to lacma-2026.tex:127 and LACMA-2026-APPLICATION-DRAFT.md:
- Removed "in under two seconds" boot claim (was ~7.3s actual)
- Changed "renders directly to the framebuffer" → "renders graphics through DRM without a compositor"
- Changed "reads input from raw device events" → "reads input from raw evdev streams"
- Strengthened "polyphonic" → "32-voice polyphony"
- Changed "launches Anthropic's Claude Code directly on the framebuffer" → "drops into a native terminal running Anthropic's Claude Code" (honest, still has the Anthropic punch)
- Added explicit features that were under-represented: eight waveforms, sample recording, USB + UDP MIDI
- Added "twenty other pieces ship alongside it" (previously only notepat was mentioned)
- Updated Fig 5 caption — removed "in under 2 seconds" and "any x86 machine" (now "x86_64 UEFI machines")
- Added caveat "without replacing the factory OS" — accurate to how AC Native boots from USB
- x86_64 escaped as x86_64 in tex (underscore bug)
- Final word count: 492 (was 522 pre-trim) — tightened last clause from feature-list to just "twenty other pieces ship alongside it"
- 2026-04-21 14:38 — Swept the three 100-word statements. Found & fixed one stale claim in Technology & Culture: "boots in two seconds" → "boots directly into a single piece of art software." Artistic Merit's parenthetical "(custom kernel, framebuffer rendering, sample-level audio synthesis)" — kept as lay-language since it's philosophical, not technical. Public Engagement statement was clean.
- 2026-04-21 14:44 — Converted all figures PNG → JPEG via
sips(macOS). Built a 4-card compositecard-gallery.jpgvia a tiny LaTeX stub so the 4 cards compress into a single image slot. Final 5 JPEGs staged ingrants/lacma-2026/jpegs/submit/: platform-screenshot, kidlisp-featured, card-gallery, card-berz (close-up), hardware-yoga. - 2026-04-21 : — (next: video demo filming by @jeffrey; then submit)
How to use this file #
- When you edit the LACMA tex, cross off items in §2.
- When you touch another paper / landing page, add it in §6 and record what you changed.
- When audit reality changes (we reach <2s boot, we add a new feature), update §1 — it's the source of truth.
- When ambiguity bites you, add a question to §7.
- Don't delete items — mark them done with ✅ or ❌ (won't do) so the history stays.