| 1 | # Reasonix project memory |
| 2 | |
| 3 | These standing instructions enter the cache-stable system prefix. Keep durable |
| 4 | project contracts here; use the linked documents for task-specific procedures. |
| 5 | |
| 6 | ## Product and architecture |
| 7 | |
| 8 | - Shared behavior belongs in the transport-agnostic `control.Controller` behind |
| 9 | CLI, HTTP/SSE, and Desktop. Package ownership and import boundaries are enforced |
| 10 | by `tools/repolint/layers.go`; package explanations belong in `doc.go`. |
| 11 | - Subagent boundaries: profile = worker policy/ceilings, `TaskSpec` = this call, |
| 12 | `CapabilityGrant` = permitted resources, `ContextRequest` = initial context, |
| 13 | `SchedulerPolicy` = scheduling. Keep per-call values out of profiles; see |
| 14 | `internal/agent/profile_boundary_test.go`. |
| 15 | - Keep the provider-visible system prefix and tool schemas byte-stable across |
| 16 | turns. Put changing state in the turn tail/session-context; standing-document |
| 17 | edits enter the prefix after reload/new session. |
| 18 | - For shared-state defects, fix the owning state/lifetime boundary. Group related |
| 19 | flags into named substates instead of multiplying independent booleans. |
| 20 | - Performance changes need evidence at the final provider, frontend, or trajectory |
| 21 | boundary through real assembly; `internal/boot/effect_test.go` is an example. |
| 22 | |
| 23 | ## Execution and verification |
| 24 | |
| 25 | Complete the authorized outcome and its relevant acceptance gates. A first patch |
| 26 | or focused green test is not completion when requested work remains. Continue |
| 27 | independent work when a gate is blocked, then report the missing evidence. |
| 28 | |
| 29 | Local tests use disposable fixtures without production access. Run relevant |
| 30 | checks and fix failures introduced by the requested change without asking again. |
| 31 | Choose checks by changed behavior and blast radius; documentation-only work needs |
| 32 | content/link checks. Root Go tests do not cover the separate `desktop/` module. |
| 33 | |
| 34 | Use ordinary commits and fast-forward pushes for review fixes. History rewrites |
| 35 | and force-pushes need explicit authorization and a freshly verified target. |
| 36 | A workflow document does not grant publication, merge, or release authorization. |
| 37 | |
| 38 | ## Task references |
| 39 | |
| 40 | - Build, tests, lint, code style, and PR metadata: |
| 41 | [CONTRIBUTING.md](CONTRIBUTING.md). Format changed Go files; retain required CI |
| 42 | checks. Budget exceptions require narrow, measured justification. |
| 43 | - Transcript viewport, virtualization, measurement, or scroll behavior: |
| 44 | [scroll contract](docs/TRANSCRIPT_SCROLL_CONTRACT.md). |
| 45 | - Standing instructions, imports, background facts, and memory scope: |
| 46 | [memory retrieval](docs/SESSION_MEMORY_RETRIEVAL.md). |
| 47 | - Release qualification and publication: [releasing](docs/RELEASING.md). |
| 48 | |
| 49 | Write comments for non-obvious constraints or invariants, not code paraphrases. |
| 50 | Use the repository lint rules as the source of truth for mechanical limits. |
| 51 |