TacidOS
DevelopersGitHub

Decision 0029

Project environments, device center, probes, never rewrite existing Nix

Architecture decision record 0029: Project environments, device center, probes, never rewrite existing Nix

Status
Accepted
Date
2026-09-03

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.nix or devenv.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.