Generated by task docs:adr-index from the records in this directory. Do not edit.¶
Decision Records¶
How this project is built and worked on, one rule to a record. Each record says what holds and why, and the alternatives it turned down.
- ADR-001: Go, the official MCP SDK, and Mattermost's own client
- ADR-002: Every workflow is a task, and every tool's version is pinned in one place
- ADR-003: AI agents as first-class developers
- ADR-004: Live tests against a real Mattermost are the correctness gate
- ADR-005: Unit tests do not simulate Mattermost
- ADR-006: A unit test inherits nothing and reaches nothing beyond the machine
- ADR-007: Each checkout runs its own Mattermost Team Edition instances in Docker
- ADR-008: A live test seeds and owns its fixtures, and names them at random
- ADR-009: Tests are sorted by what they need, and none of them skips
- ADR-010: Conventional Commits, and git hooks run by lefthook
- ADR-011: Every change integrates on next, linearly, and only main releases
- ADR-012: Pull request readiness, and what may merge itself
- ADR-013: Releases are cut from Conventional Commits on main
- ADR-014: What the quality gates measure, and why each exists
- ADR-015: Governance tests are verified by breaking them
- ADR-016: Versioned docs with MkDocs Material and mike
- ADR-017: Planning lives in GitHub issues, and an issue closes when its fix reaches main
- ADR-018: Agents and tasks write temporary files to .tmp
- ADR-019: The server is given a credential; acquiring one is a separate concern
- ADR-020: stdio and Streamable HTTP from one server, single-tenant first
- ADR-021: Read-only by default, and every write others see asks the person
- ADR-022: MCP Apps views, shown through one tool
- ADR-023: Distributed as signed binaries, .mcpb bundles, and through the MCP Registry
- ADR-024: Mattermost is reached through its own client, at the commit of the newest supported release
- ADR-025: The supported window runs from the oldest supported Extended Support Release to the newest release
- ADR-026: Each supported release's specification and route table are vendored, as reference
- ADR-027: A difference between supported releases is found from Mattermost's own files, before a test runs
- ADR-028: Every parameter of an operation a tool calls is accounted for, and the live suite proves the tool calls what it declares
- ADR-029: Files reach the model as content, and the disk only from a local server
- ADR-030: Names are matched leniently, and a refusal names the next step
- ADR-031: A message is checked before anyone is asked to post it, and says it was written with AI
- ADR-032: Every list pages by an opaque cursor, to its end