This directory holds the project’s Architecture Decision Records. An ADR states a
decision, the context that forced it, and the consequences accepted with it, as
of its stated date. Together with
../../PROJECT_RULES.md these are the canonical
current authority: where a finding, audit, or research note disagrees with an
ADR, the ADR wins.
../../DECISIONS.md is a different artifact — a
chronological prose log of project decisions, including many too small to need an
ADR. It is not an index of this directory.
This index is exhaustive: every record below is covered by
tests/test_documentation_directory_index.py, so a new ADR that is never linked
here fails the suite. That guard exists because the IDKGraph observatory reports
a document only when no inbound link exists anywhere, so a decision linked from
some unrelated page but missing from its own index stays invisible.
project_spend_usd_max = 0.
(2026-08-28.)VerificationResult is a separate protocol object, and
unverified work applies backpressure rather than accumulating silently.
(Accepted for experimentation, 2026-08-28.)EvaluatorPlan, cryptographically bound to the WorkUnit digest
and kept outside the candidate workspace. (2026-08-28. See the numbering note
below.)../../DECISIONS.md. (2026-08-28.)ADR-0012 — Real Schema Verification Is an Optional Extra, Not a Base Dependency
— jsonschema becomes a pip install idkmesh[verify] optional extra rather
than a base dependency; dependencies = [] stays unchanged, and
experiments/local_verifier.py fails with an actionable message when the
extra is missing. (2026-09-21.)
/api/v1
product namespace, separate local/network security profiles, and an explicit
boundary between human decision recording and integration execution.
(2026-09-23.)sandbox_required=true a runtime precondition: local coding agents
must execute through an enforcing sandbox backend, with no raw-process
fallback, and candidates are captured outside worker authority.
(2026-09-23.)docs/specifications/API_CONVENTIONS_V0_1.md’s error envelope,
status mapping, idempotency, concurrency, and deprecation sections as the
stable v0.1 contract every IDKMesh product API follows, backed by JSON
Schemas and CI-validated examples for the error and list envelopes.
(2026-09-27.)/ ambiguity flagged when GET
/api/v1/runs/{run_id} shipped: attempts, evidence, and decisions
are reserved trailing path segments, resolved as a pure function of the
request path so routing never depends on what a store currently holds.
(2026-09-27.)schemas/*.json file exists, its content must never change
incompatibly; tools/schema_compat_check.py enforces this mechanically
in the required PR Gate, with two recognized widenings (enum growth,
type widening) and one v0.1 blind spot (allOf/oneOf, cross-file
$ref) both documented in its module docstring. (2026-09-27.)GET /api/v1/work-units and /projects/{project_id} are derived on demand
from stored run references, with no new store, no WorkUnit body, no “latest
revision” selection, and explicit ordering, pagination and 404 behavior.
(2026-10-01.)503 + Retry-After, graceful
drain, the adopted stdlib header/body bounds, and a published
operations.limits document; 429 and SSE limits are deliberately deferred
until per-client identity and #741 exist. (2026-10-02.)events table written in the same transaction as the run
change, GET /api/v1/events with filters and cursors, and a bounded,
Last-Event-ID-resumable GET /api/v1/events/stream; coverage is limited to
Product Spine run create/cancel and says so. (2026-10-02.)GET /api/v1/runs/{run_id}/evidence returns the digest-verified evidence
report the offline spine already retains (fail-closed on mismatch), the run
store reads offline-spine rows, and the run list filters by an explicit kind
set so one foreign row no longer breaks it; /decisions and the
human-decision API stay unbuilt pending #740 and an accountable principal.
(2026-10-02.)These record a default hypothesis the project builds on, not a settled contract.
ADR-0015 — Normalize Candidate Identity into ResultManifest Without Pretending Reference Digests Are Content Verification — keeps ResultManifest v0.1 provider-neutral by hashing the canonical CandidateReference envelope, explicitly separating candidate identity from byte-level verification. (Proposed / experimental, 2026-09-23.)
node -> cell -> fabric/region -> global federation as the default
scaling topology hypothesis. (Proposed / default hypothesis, 2026-08-28.)candidate_ready
requires a separately normalized, immutable candidate reference. (Proposed,
2026-09-23.)Two observations that a reader of this directory should not have to discover by listing it. Both are recorded here rather than resolved, because renumbering or re-statusing an accepted decision changes the project’s own record and is the owner’s call.
ADR-0008-independent-evidence-verification.md and
ADR-0008-evaluator-sovereignty.md, both linked above. An ADR number is meant
to be a stable identifier, so “ADR-0008” is currently ambiguous in any citation
that does not also give the title.ADR-0008-evaluator-sovereignty.md
and ADR-0009-evaluator-sovereignty.md. Both are marked Accepted, both
are dated 2026-08-28, and both open with the same sentence — “Adopt
Evaluator Sovereignty as an IDKMesh invariant” — but they state different
requirement lists, ADR-0009’s being the longer. Neither record says it
supersedes the other. DECISIONS.md cites only ADR-0009.There is also no ADR-0001; the sequence begins at 0002.