Skip to content

Engineering records

Engineering records serve different stages of a change. Use the smallest record that preserves the decision and its evidence; do not create parallel prose that can drift from executable contracts.

Record map

Question Record Canonical location Lifecycle
What product outcome must remain true? Product requirement docs/product/product-requirements.md Updated when durable scope or acceptance criteria change
Should the project adopt this external behavior or design direction? Proposal issue GitHub issue created from the feature proposal form Open before implementation; close with the resulting decision or pull request
Why was a durable tradeoff accepted or rejected? Architecture decision record The owning package’s docs/decisions/ directory Immutable decision history with explicit supersession
What does a machine-readable contract accept and produce? Executable specification JSON Schema, TypeScript types, MCP tool schemas, and conformance tests Versioned with the public contract
Does a performance threshold pass under a defined method? Benchmark policy and evidence Policy ADR plus commit-bound CI artifact Keep the method durable; regenerate raw evidence for each candidate
How is a vulnerability coordinated? Private security advisory GitHub Security Advisory under SECURITY.md Private until coordinated disclosure; request or assign a CVE only when appropriate
What reviewed implementation will merge? Pull request GitHub pull request and its checks References the applicable issue, decision, specification, and evidence

Proposal and decision boundary

A proposal describes an unresolved problem, intended external behavior, alternatives, compatibility impact, and acceptance evidence. It is not an accepted architecture decision. Use a direct pull request for a narrow correction that preserves public behavior.

An ADR records a durable decision after the tradeoff is understood. Put it in the workspace that owns the boundary, include status and date, and document context, decision, consequences, validation, and rollback. Supersede an ADR instead of silently rewriting its historical decision.

The project uses proposal issues for pre-decision review rather than a second RFC document tree. Introduce a versioned RFC process only when a proposal needs long-lived review outside the issue lifecycle; that change itself requires an architecture decision with an owner and migration plan.

Specifications and generated references

Schemas, exported types, tool input definitions, and tests are the executable specification. Human documentation explains how to use those contracts. API reference pages are generated from reviewed TypeScript exports and remain a Web surface; they do not automatically become MCP corpus entries.

Changing a public contract requires compatible schema and type changes, red and green conformance tests, active documentation, examples, and changelog entries in the same pull request.

Current contract authorities

Surface Authority
MCP messages and transports The versioned Model Context Protocol specification and installed official SDK
Tool arguments Strict Zod definitions in the MCP package; the official SDK advertises their JSON Schema
Corpus manifests Draft 2020-12 schemas, canonicalization, and fixtures in @sumi-os/corpus-contract
TypeScript API reference Exported declarations and generated TypeDoc pages
Future Rust API reference Exported Rust items and rustdoc, only after a supported parity implementation exists
Browser accessibility Published Web standards and WCAG 2.2

LSP is not a project contract. It is an editor language-service protocol, and sharing JSON-RPC with MCP does not make this server an LSP implementation. A future Rust runtime must consume the same language-neutral schemas and fixtures; it must not redefine the wire contract.

Benchmark and security evidence

A benchmark claim must identify the implementation, runtime, platform, sample count, ordering method, thresholds, and raw result artifact. Local reports and generated measurements are not committed as product state. Candidate evidence is bound to the tested commit and retained by CI.

Report suspected vulnerabilities through the private route in SECURITY.md. Do not publish exploit details or create placeholder CVE identifiers. A public advisory and CVE record follow validation and coordinated disclosure, not the initial report.

See Contributing for the implementation and review flow.