Publish Claude Code Binaries / Stage and publish binaries (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-arm64 (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build linux-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build windows-amd64 (push) Canceled after 0s
Sync Tutti Agent Skills / sync (push) Canceled after 0s
Windows Agent Adapters / Test Windows agent adapters (push) Canceled after 0s
Windows Daemon Adapters / Test Windows daemon adapters (push) Canceled after 0s
Publish Tutti App Runtime / Publish runtime catalog (push) Canceled after 0s
Conventions
Use this directory for repository conventions such as naming, layering, testing, and review rules.
These documents should reflect the current stable rules of the repository rather than one-off implementation history. If a scoped spec or plan becomes durable, promote the enduring rule here.
Current documents:
- API Contracts
- Desktop Layering
- Desktop Release
- Desktop Visual Language
- Deprecated Workspace App Agent APIs
- Feature Flags
- Local Git Hooks
- Local State Storage
- Logging
- Tuttid Layering
- npm Package Release
- Runtime Overrides
- Runtime Image Assets
- Static Analysis
- Testing
- Unit Testing
- Troubleshooting
- Tutti Agent Skills Repository
- Tutti CLI Contract
- UI System
- Workbench
- Workspace App Catalog
- Workspace App Runtime
- Workspace Domain
Change Routing Matrix
Use this matrix when a change touches a durable boundary and the right follow-up is not obvious.
| Change touches | Durable source to check or update | Validation to run |
|---|---|---|
| daemon-owned CLI commands or app CLI compatibility | Tutti CLI Contract, plus API Contracts when invoke or capability HTTP shapes change | focused daemon CLI tests; OpenAPI changes also need pnpm generate:api and pnpm check:api-generated |
| daemon HTTP request or response contracts | API Contracts and services/tuttid/api/openapi/tuttid.v1.yaml |
pnpm generate:api, pnpm check:api-generated |
| daemon business rules, persistence, or domain workflows | Tuttid Layering, and a domain convention such as Workspace Domain when one exists | pnpm lint:go, cd services/tuttid && go test ./... && go build ./... |
| desktop Electron, preload, renderer layering, IPC, or daemon supervision | Desktop Layering, Desktop Transport, and Desktop Windows as relevant | pnpm check:electron-runtime-boundaries, pnpm --filter @tutti-os/desktop typecheck, pnpm --filter @tutti-os/desktop build |
| Microsoft Windows support, platform adapters, ConPTY, Windows process behavior, or managed POSIX shell packaging | Windows Platform Support, plus the owning architecture or convention document | focused .github/workflows/windows-agent-adapters.yml and .github/workflows/windows-daemon-adapters.yml checks, plus .github/workflows/windows-desktop-alpha.yml; run owning desktop or daemon checks locally where supported |
| desktop packaging, signing, auto-update, GitHub Release, or release notification | Desktop Release | pnpm --filter @tutti-os/desktop build:unpack, then pnpm check:full when practical |
| workspace app managed runtime artifacts, runtime catalog, or runtime CDN publishing | Workspace App Runtime | node --test ./tools/scripts/build-tutti-app-runtime-catalog.test.mjs, pnpm lint:ts; downloader changes also need focused tuttid and desktop checks |
| Agent Extension host contracts, trusted sources, installation, or verification | Agent Extensions; publisher implementation and rollout guidance live in tutti-os/tutti-agent-extension-skill |
downloader and verifier changes need focused tuttid and desktop checks |
| public npm package releases, package build output, pack contents, or beta package publishing | npm Package Release | pnpm release:pack:check, pnpm typecheck, pnpm lint:ts |
| renderer feature structure or imports | Desktop Layering | pnpm check:renderer-boundaries |
| renderer React render boundaries, store subscription shape, component splitting, or effect usage | Desktop Layering and Workbench/Renderer Troubleshooting for recurring external-store subscription traps | pnpm check:renderer-boundaries, pnpm --filter @tutti-os/desktop typecheck, pnpm --filter @tutti-os/desktop build |
| Workbench snapshot contracts, shared Workbench packages, desktop Workbench host adapters, or daemon snapshot reconciliation | Workbench, API Contracts for synchronized schemas, and Workspace Domain for daemon workspace ownership | pnpm check:renderer-boundaries, pnpm --filter @tutti-os/workbench-surface typecheck, pnpm --filter @tutti-os/workbench-surface test, Workbench-focused Go tests |
| product UI text, Electron dialog labels, empty states, status copy, or user-facing errors | nearest feature docs plus the desktop i18n layer | pnpm check:i18n |
| shared UI tokens, primitives, icons, exports, or CSS entrypoints | UI System and Desktop Visual Language | pnpm check:ui-boundaries, pnpm typecheck |
| runtime raster images, icon resolution, or retained design sources | Runtime Image Assets | inspect intrinsic dimensions and compare the optimized image at its largest rendered size |
repository-owned defaults under config/tutti.defaults.json |
Local State Storage, Logging, or Desktop Transport as relevant | pnpm generate:defaults, pnpm check:defaults-generated |
local state paths or new TUTTI_* / TUTTID_* override variables |
Runtime Overrides, Local State Storage, Logging, and Desktop Transport as relevant | path-specific tests plus pnpm smoke:desktop-transport when transport or listener setup changes |
| repository-managed checks, hooks, lint rules, or validation scripts | Local Git Hooks and Static Analysis | the changed script directly, then pnpm check:full when practical |
| recurring bug patterns, debugging traps, or reusable fix checklists | Troubleshooting | the validation steps recorded by the entry plus the affected package or surface checks |
Keep AGENTS.md files as short action guides. Put stable explanations, review rules, and ownership decisions in this directory or in docs/architecture.