Date: 2026-09-23
Status: execution blueprint
Program issue: #713
Purpose: define the complete plan, ownership, dependencies, release evidence, and non-negotiable boundaries required before expanding IDKMesh APIs.
IDKMesh should have one coherent API platform that can support:
“API complete” does not mean “some endpoints exist.” It means the declared v1 surface is versioned, schema-bound, authenticated/authorized for its deployment profile, deterministic where promised, idempotent where mutating, observable, bounded under load, documented, client-consumable, and release qualified.
routing != dispatch authority
dispatch != acceptance
worker success != verification
verification recommendation != human decision
human decision != integration execution
identity distinction != verification independence
model capability != repository authority
API convenience != authority expansion
The API may expose, record, and transport authority decisions. A transport adapter must never invent authority.
Do not duplicate these existing owners:
| Area | Existing owner |
|---|---|
| API production-readiness umbrella | #713 |
| Control Tower UI/read API | #572 + PR #658 |
| HTTP runtime baseline | #677 |
| Connector CLI/HTTP control surface | #580 |
| Connector/control-plane program | #570 |
| End-to-end Product Spine | #682 |
| Local persistence/idempotency | #616 |
| GitHub-native durable run/evidence ledger | #597 |
| GitHub multi-user role/authority profile | #598 |
| GitHub governance/secret-access baseline | #607 |
| Enterprise identity/RBAC/ABAC | #670 |
| Enterprise readiness/security | #667 |
| Human Decision Record schema | schemas/human-decision-record-v0.1.schema.json |
| Connector Control API design | docs/specifications/CONNECTOR_CONTROL_API_V0_1.md |
New API issues created by this plan own integration gaps, not duplicate implementations.
The target API has five layers:
clients
|
+-- CLI
+-- Control Tower web client
+-- Python SDK
+-- TypeScript SDK
+-- GitHub / connector adapters
|
transport adapters
|
+-- local loopback HTTP
+-- future production HTTP adapter
|
application services
|
+-- Project / WorkUnit query
+-- routing / connector control
+-- run lifecycle
+-- evidence inspection
+-- human decision recording
+-- event query/stream
|
domain contracts
|
+-- WorkUnit
+-- RoutingDecision
+-- CandidateReference
+-- ResultManifest
+-- VerificationResult
+-- Run Evidence Report
+-- Human Decision Record
|
durable evidence / metadata / event stores
Transport, persistence, and UI are replaceable adapters around the same domain and application-service semantics.
Must not expose the development stdlib HTTP server directly.
Expected shape:
client
-> TLS/proxy boundary
-> trusted identity adapter
-> authorization policy
-> production transport
-> application services
-> durable metadata/evidence/event stores
Profile N requires #670 identity/policy integration plus #743 API security profile before mutating endpoints are enabled.
Planning decision:
/api/v1/...
is the product HTTP namespace.
Object schema versions remain independent, for example:
HTTP compatibility line: /api/v1
object schema: 0.1 or idkmesh.io/v1alpha1
The older Connector Control API document currently uses /v1; #736/#738 own
reconciling that design before connector HTTP implementation becomes canonical.
The intended v1 resource families are:
GET /healthzGET /readyzGET /api/v1/statusGET /api/v1/openapi.jsonGET /api/v1/projects/{project_id}GET /api/v1/work-unitsGET /api/v1/work-units/{id}GET /api/v1/runsGET /api/v1/runs/{id}GET /api/v1/runs/{id}/attemptsGET /api/v1/runs/{id}/evidenceGET /api/v1/runs/{id}/decisionsPOST /api/v1/human-decisionsRecording a decision does not execute integration.
GET /api/v1/eventsCanonical ownership remains #580/#570:
These endpoints must share the same conventions and application/domain services.
Every public endpoint must define:
The cross-program ownership/proof matrix is:
docs/planning/API_V1_REQUIREMENTS_TRACEABILITY_MATRIX_2026-09-23.md
It maps each professional API requirement to existing subsystem owners, API integration issues, and release evidence. If a new requirement has no owner and no proof, implementation pauses until the plan is updated.
#735 current API convergence
|
v
#736 conventions -----------+
| |
+--> #737 schemas ------+
| |
+--> #738 architecture -+
|
+-------------+--------------+
| | |
v v v
#739 #741 #742
read model events reliability
| | |
+------+------+<--------------+
|
v
#745 qualification
|
v
#746 SDK/docs
|
v
#747 v1 beta
Mutation path:
#736 + #737 + #738
+
#616 persistence/idempotency
+
#670 identity/policy
|
v
#740 Human Decision API
|
v
#745 qualification
Network path:
#677 runtime + #670 identity/policy + #738 architecture
|
v
#743
|
+------+------+
v v
#742 #744
reliability observability
#616 local metadata + #597 GitHub ledger + #738 architecture
|
v
#750
storage profiles
Before implementing a new endpoint:
The API threat model is documented in:
docs/security/API_THREAT_MODEL_V0_1.md
It separates local, GitHub-first, and network/multi-user trust boundaries and maps authority confusion, auth bypass, replay, CSRF/CORS, proxy ambiguity, webhook forgery, SSRF, storage tamper, and overload threats to their owning issues.
The first professional API beta is complete only when the exact beta scope has:
The beta may intentionally exclude some future domains, but it must not leave the semantics of included domains implicit.
This plan reduces “architecture by chat” and makes API work independently claimable. Contributors can pick one issue with bounded acceptance evidence without needing to understand every connector, research algorithm, or enterprise deployment concern.
The issue graph should be maintained as implementation evidence changes.