crates/contains the major code components.- This project uses the Linked Specs convention; consult the
linked-specsskill before working with specs or governed code. FEATURES.md— major feature tour.SECURITY.md— reporting guidance and technical trust-boundary entry points.docs/— focused design and feature notes.**/README.md— component-specific human-oriented documentation where present.**/AGENTS.md— scoped agent instructions; read every applicable file before modifying code.- Before raising security or denial-of-service requirements for IPC, identify the
documented boundary in
SECURITY.md: configured local extensions, cooperative inter-harness peers, and genuinely untrusted external ingress are distinct. Do not expand an unrelated feature into adversarial local-IPC hardening without an approved threat-model change. - Before changing existing documented event-log/journal or harness-extension
interface semantics, or introducing materially consequential or surprising
new semantics, read
specs/GATE-persistence-and-extension-interface-change-approval.md. Obtain explicit user or maintainer confirmation of the exact semantics before implementation; do not hide the choice in unrelated work or create another gate unless the user explicitly requests one. Additive user-requested features with sensible, low-risk defaults preserving existing behavior do not need separate confirmation merely for adding a record or provider-internal interface. - Before designing a multi-stage event-log operation, read
specs/GATE-atomic-event-log-publication.md. - Treat logging and
tracingsink I/O underspecs/ARCH-logging-io-analysis.md; do not expand that exception to protocol, persistence, extension stderr draining, or other functional I/O.
- Use
cargo check --workspace --all-targetsto check Rust code. - Use
cargo nextest runfor tests andtreefmtfor formatting. - After implementation and focused regression tests pass, start one independent
review of the fixed candidate. While that review runs, run
cargo nextest runfor the affected packages; use the workspace suite for cross-cutting changes such as compaction. Keep the candidate and source unchanged until both complete, so review and tests do not race mutations. Address any findings, rerun affected checks, and do not repeat an already-passed equivalent test on an unchanged candidate merely because review began. - Before considering a change done, run final local CI with
selfci check --candidate <change-id>after the candidate is ready. This final check remains mandatory; local tests do not cover every CI lane.
- This project is still very immature; backward compatibility is not required.
- Always consult the
tau-commitskill before making commits. - When debugging existing Tau sessions, consult the
tau-self-knowledge-debuggingskill.
-
Before changing
ContextItem, standalone terminal handling,AgentCompacted, compact-request lowering, compact-response parsing, or opaque raw replay, consultspecs/SPEC-compaction-and-context-recovery.md. For Codex request lowering, response parsing, or opaque replay, also consultcrates/tau-provider-codex/specs/ARCH-tau-provider-codex.md. -
Update or run the named oracle coverage that applies: proto
compaction_window_accepts_provider_item_and_rejects_harness_trigger, harnessstandalone_rejections_do_not_mutate_context_or_compaction_authority, corestandalone_compaction_opaque_windows_match_live_append_and_cold_replay, and deterministic E2Edeterministic_opaque_standalone_compaction_replays_after_clean_restart. -
Compact request lowering must also update or verify the exact
responses-compact-standard.jsonandresponses-compact-lite.jsonCodex fixtures. Compact-response parsing and opaque raw replay must verifyresponses-compact-output.json. Do not replace these focused rejection and live/replay oracles with broad matrix coverage. -
Before changing automatic-compaction policy scheduling, canonical terminal ownership/validation,
AgentPromptStarted.outer_turn_id, outer-turn finishing, or retained completion retry, preserve focused initial- and post-tool-continuation oracles for both normal and canceled terminals. Assert the canonical terminal, outer-turn finish, and protected standalone start are each durable at most once; assert successful publication leaves no retained completion; and verify live append, cold replay, and the applicable restart cut. Keep manual, before-inference, reactive-overflow, and provider-shape coverage in their owning focused suites rather than multiplying a broad matrix. -
Before introducing a new free-form payload kind, or reframing an existing one, in the shared generic user-role
ContentPart::Textcarrier, readGATE-new-generic-user-payload-envelopesandSPEC-exact-sentinel-prompt-envelopes; use the shared registry rather than a component-local provenance wrapper. Typed tool results and the system/developer prompt channel are outside that rule.