Files
stack/agents/filbert
jason.woltjeandClaude Opus 5.5 136958c98b feat(ledger): Gate F, the ledger's T3 thread source (#1506)
packages/ledger/src/t3.mjs reads ~/.t3/userdata/state.sqlite read-only,
in one transaction. It maps each thread to a seat by title and checks
self-addressed headers. Unmatched threads go in a t3:unmapped row. A
missing or locked database exits 1 and names --no-t3. Gate F is on by
default (lead decision 12). The 6a uppercase-class fix rides here.

Separate item: the Pi session reader splits lines only on \n, so a raw
U+2028 or U+2029 in a string no longer splits a record. Node 26.8.1's
readline split there, and the live ledger refused on HEAD.

Darkwing built to brief R3 (f3c05c1b); manifest ba73a163. Filbert
approved the build (e47ec6da) and the U+2028 fix as its own item; brief
review be1aa414. On an index export: the eight suites
24/90/43/17/14/15/63/18, ledger 47/47. Four nonblocking notes go to a
small follow-up.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-09-26 16:39:56 -05:00
..

Filbert development TUI

From any terminal, run:

/mnt/storage/src/mosaic-stack/agents/filbert/launch.sh

The agent launcher is a thin shim to scripts/agent.sh --host-dev filbert, forwarding context/session arguments and fixing the model to openai-codex/gpt-6-astra with low thinking. scripts/agent.sh is the common entry point; scripts/agent-host-dev.sh implements its native development mode. The host launcher opens the repository as Filbert's workspace. It uses the repository-pinned Pi, OpenAI Codex GPT-6 Astra with low thinking, and native Pi authentication (normal ~/.pi/agent, or PI_CODING_AGENT_DIR if explicitly set). It never copies credentials. Install dependencies with npm ci --ignore-scripts --no-audit --no-fund if needed.

--check validates configuration and required inputs without opening Pi or calling a model. --fresh starts a new conversation without deleting earlier ones. Normal launches continue the latest conversation under .pi/state/filbert/sessions/; the first launch creates one. A launcher lock rejects simultaneous launches through this script. It does not exclude Pi processes started another way. Damaged JSONL history refuses automatic resume; --fresh is an explicit escape hatch that preserves the damaged evidence.

The current files are combined into a private launch snapshot under .pi/state/filbert/launches/:

  • contracts/CONSTITUTION.md and contracts/STANDARDS.md
  • agents/filbert/SOUL.md
  • <configured dataRoot>/user/USER.md, the deployment's live user profile
  • the repository's AGENTS.md and Filbert's CONTEXT.md

Use --soul FILE, --constitution FILE, or --user FILE to select alternate inputs, including a future contracts/USER.md. Relative paths resolve from the repository root. Missing or empty inputs refuse launch. Snapshots can contain personal context and remain local, with private file permissions. Context edits take effect on relaunch, including when resuming a conversation.

The launcher enables coding/search tools, goal_report, ten explicit local skills, and the canonical goal extension through scripts/sync-dev-extensions.sh. Ambient context, skills, extensions, templates, and themes are disabled. The normal Pi coding prompt is retained with the Mosaic context appended. Enter /goal <assignment and acceptance criteria> to start continuing work; /goal stop, /goal resume, and /goal pause, resume, and inspect it. A new process does not automatically adopt a previous process's goal.

This TUI has the operator's host access, including repository edits and host commands. Its tool list is not OS isolation. It creates no managed role or fleet registration. Worker dispatch still uses the governed Mosaic task runner. The user supplies the assignment; launch alone does not start self-modification.

Deployment findings

The existing scripts/agent.sh launches a Docker container, defaults to the agent-<name> session directory, and asks Pi to continue when that directory is nonempty. Its default workspace is <dataRoot>/workspaces/<name>, not this checkout. src/load-contracts.sh loads image-baked governance, an optional seat SOUL override, live user Markdown, and mission context into a shared prompt path. A seat override requires agent.json; a standalone SOUL is not discovered. adapters/pi/adapter.sh disables extensions. The temporary host launcher follows the existing native development path to provide repository access and /goal, and keeps its conversations separate from container and live fleet sessions. It does not invoke release alignment on startup.