Decision 0029
Project environments, device center, probes, never rewrite existing Nix
Architecture decision record 0029: Project environments, device center, probes, never rewrite existing Nix
Context
The workflows that make Tacid a builder’s machine rather than a demo.
The three plans
- Grok: git tools allowed in project directories; push asks.
- Fable: embedded as the differentiator; toolchains as dev shells; udev for probes;
tacid flash|serial|probe; sigrok and KiCad; cross-compilation via Nix. - Codex: project detection and generated environments; never rewrite an existing
flake.nix,shell.nixordevenv.nix; a device graph and Device Center; probe and MCU priorities; terminal-as-structured-session; datasheet workflows; destructive-action safeguards.
Decision
Project detection with generated dev shells and direnv; the never-rewrite rule; an optional
.tacid/project.toml for per-project policy and embedded targets. Git tools with destructive
classification. Editor adapters for Neovim and Helix first. Podman, devcontainers, distrobox. A
device center over a typed USB/serial/probe graph with project association. Probes: ST-Link,
J-Link, CMSIS-DAP, Raspberry Pi Debug Probe, Black Magic Probe; OpenOCD and probe-rs; STM32, ESP32,
nRF, RP2040/RP2350, Zephyr boards. tacid flash, tacid serial, tacid probe as transactions
with exact target identity; UART capture; datasheets extracted locally in sandboxes with citations.
Ghostty’s OSC 133 makes terminal sessions structured objects sent to the agent on request, never
scraped.
Consequences
- Phase 5’s exit is a physical demonstration with a board.
- The embedded bench in CI keeps it working.
Alternatives rejected
- A Tacid IDE: the wrong decade for it and the wrong project.