# Development This is the contributor entry point for Scriptorium. Use the task-specific reading guide below before making changes. Canonical architecture, contracts, component behavior, and policies remain in their owning documents. ## Initial Orientation Before starting work: 1. inspect the working tree and preserve unrelated changes; 2. read the architecture policy for code or design work; 3. read the policy, contract, and internal documents listed for the task; 4. inspect the relevant implementation and tests before deciding how to change them. Start with: - [Architecture policy](policy/architecture.md) for system boundaries, invariants, and non-goals; - [Internal component overview](internal/overview.md) for the current package and component map; - [Documentation policy](policy/documentation.md) before changing documentation; - [Testing policy](policy/testing.md) before adding, rewriting, or deleting tests. ## Task-Specific Reading Guide | Task | Read before changing | | --- | --- | | Repository orientation or component responsibility | [Internal component overview](internal/overview.md) and [architecture policy](policy/architecture.md) | | Public Go package or engine behavior | [Go package consumer contract](consumers/pkg-scriptorium.md), [internal component overview](internal/overview.md), [runner internals](internal/runner.md), [adapter internals](internal/adapters.md), and [source internals](internal/sources.md) | | CLI commands, flags, output, or exit behavior | [CLI contract](cli.md), [internal component overview](internal/overview.md), and [adapter internals](internal/adapters.md) | | HTTP routes, DTOs, limits, or status mapping | [HTTP API contract](api.md), [internal component overview](internal/overview.md), [adapter internals](internal/adapters.md), and [source internals](internal/sources.md) | | Application configuration | [Configuration contract](config.md), [internal component overview](internal/overview.md), [adapter internals](internal/adapters.md), and [source internals](internal/sources.md) | | Prompt, profile, schema, or artifact loading | [Configuration contract](config.md), [internal component overview](internal/overview.md), and [source internals](internal/sources.md) | | Runner orchestration, rendering, validation, or repair | [Runner internals](internal/runner.md) and [source internals](internal/sources.md) | | OpenAI-compatible request or response behavior | [OpenAI-compatible integration](integrations/openai-compatible-chat.md), [runner internals](internal/runner.md), and [adapter internals](internal/adapters.md) | | Subprocess behavior | [Subprocess integration](integrations/subprocess.md) and [CLI contract](cli.md) | | Runtime operation, recovery, or troubleshooting | [Operations](operations.md) and [troubleshooting](troubleshooting.md) | | Examples or copyable assets | The owning contract for the demonstrated behavior and the related files under `examples/` | | Architecture decisions or future work | The [documentation policy](policy/documentation.md), relevant accepted ADRs such as [ADR 0001](adr/0001-adopt-canonical-documentation-ownership.md), and relevant roadmap documents under `roadmap/` | For cross-cutting changes, follow every applicable row. Internal component documents own detailed subsystem change recipes. ## Baseline Validation Use focused checks while iterating, then run validation proportionate to the change and the risks described by the testing policy. The repository-level baseline for code changes is: ```bash go test ./... go vet ./... go build ./cmd/scriptorium ``` Documentation-only work does not require the full Go suite unless it changes commands, examples, generated output, or another behavior that the suite validates. Always check changed links, paths, examples, and canonical ownership.