Date: 2026-09-22
Status: developer execution plan
Decision: ADR-0013
Operational specification: GitHub-First Operations v0.1
Umbrella: #570
Deliver an external-project IDKMesh product that a software team can install into a GitHub repository and use collaboratively without operating a permanent IDKMesh server.
The plan is complete only when the second-project pilot demonstrates the claim.
C1 connector kernel #574
|
+----------------------+
| |
C2 Jules #575 C3 model provider #576
|
C4 local agent #577
+----------------------+
|
C5 GitHub dispatch #578
|
C6 candidate normalization #579
|
+----------------------------+
| |
C8 bootstrap #596 C9 durable state #597
| |
+-------------+--------------+
|
C10 multi-user #598
|
C12 governance/security #607
|
C13 structured intake/Projects #608
|
C7 CLI/API #580
|
C14 evidence/release UX #609
|
C11 no-server second-project pilot #599
|
evidence-based decision
GitHub-only default or G2 escalation
Parallelism is allowed where dependencies permit; do not parallel-edit the central connector/run-state contracts before they stabilize.
Developer output
PR size
Prefer 2–4 bounded PRs rather than one monolith:
Exit gate
Offline fake connectors pass configure -> validate -> probe -> route.
Run one hosted agent path and one local/model-backed path through common contracts.
Exit gate
Same harmless WorkUnit can reach candidate-ready state through two materially different connectors without coordinator-core provider conditionals.
Implement:
Do not auto-dispatch every issue.
Exit gate
Same event replayed twice -> one admitted run.
Normalize:
Bind exact candidate SHA and produce canonical ResultManifest/evidence request.
Exit gate
PR-backed and artifact-bundle candidates reach equivalent canonical verification semantics.
Implement idkmesh init --github.
Generated artifacts
.idkmesh/ config;Exit gate
Fresh test repository reaches WorkUnit preview with no IDKMesh server.
Implement restart-safe run/admission ledger.
PR slices
Exit gate
Kill coordinator after dispatch; recovery continues without duplicate provider work.
Implement:
Exit gate
Two users can race for one WorkUnit without duplicate execution; unauthorized actor cannot cross configured dispatch gate.
Implement doctor --github preflight plus generated-workflow hardening.
Must cover
Exit gate
Untrusted fork/PR cannot reach provider secrets in the generated G0 workflow set.
Add:
Exit gate
New contributor can submit a bounded task without raw JSON; Project removal does not break execution.
Target CLI:
idkmesh init --github
idkmesh project add
idkmesh connections validate/list/probe
idkmesh doctor --github
idkmesh work preview --issue N
idkmesh run --issue N --agent X
idkmesh run status RUN
idkmesh run cancel RUN
idkmesh evidence show RUN
Optional HTTP API wraps the same service layer; it is not mandatory for G0.
Exit gate
No provider-specific JSON knowledge is required for the supported happy path.
Implement:
Exit gate
A maintainer can understand run/candidate/verification/human-decision state using normal GitHub UI.
This is the product proof.
Required:
Do not waive requirements to make the demo succeed.
| GitHub capability | G0 role | Required? | IDKMesh authority meaning |
|---|---|---|---|
| Repository | canonical project/code state | yes | source/integration surface |
| Issues | work intake/coordination | yes | proposal, not execution authority |
| Pull Requests | candidate/integration review | yes | candidate + protected integration surface |
| Actions | event coordinator/tests/recovery | yes | execution only |
| Rulesets/branch protection | integration guard | yes/recommended by project risk | repository authority boundary |
| Secrets | provider credential storage | as needed | secret material only |
| Environments | high-risk secret/dispatch gate | recommended | extra authorization, not correctness |
| CODEOWNERS | sensitive-path reviewer routing | recommended | review routing |
| Issue Forms | structured WorkUnit proposal | recommended | input only |
| Projects | team planning/status view | optional | projection only |
| Workflow/job summaries | run evidence UX | recommended | observation only |
| Pages | read-only Control Tower | optional | publication only |
| Releases | product release | pilot yes | release record |
| Artifact attestations | build provenance | optional | provenance, not correctness |
| OIDC | short-lived cloud auth | optional | credential mechanism |
| GitHub App/webhooks | low-latency/multi-repo G2/G3 | later | transport/identity boundary |
| Checks API | richer status via App | later | reporting only |
| Discussions | community/Q&A | optional | no run authority |
| Merge queue | high-throughput integration | later | GitHub integration ordering only |
| cache/artifacts | performance/log retention | optional | never canonical evidence alone |
An issue is ready for an implementation agent/human only if it contains:
If those are missing, first create a planning/research WorkUnit.
Each implementation PR must include:
For state/security/dispatch code, include an explicit adversarial case.
Pure deterministic tests for contracts, routing, idempotency, claims, state transitions, redaction.
Use fake GitHub/provider HTTP boundaries and fixture events.
Use safe repository-owned events; never require secrets on untrusted PR-head execution.
Mandatory before pilot:
Only after offline contract tests are complete. Use low-risk public WorkUnits and record quota/cost/provenance.
The pilot is the end-to-end acceptance suite.
Use a small, composable label set rather than creating one label per provider.
Recommended dimensions:
State
work:readywork:claimedwork:candidatework:verifyingwork:blockedRisk
risk:lowrisk:mediumrisk:highAuthority
authority:agent-candidateauthority:human-requiredauthority:human-gateauthority:deterministicCapability tier
model:t0-deterministic through model:t4-peakExecution readiness
agent-readyProvider execution labels such as jules remain explicit dispatch signals, not generic readiness.
Do not duplicate canonical state in labels if the durable ledger disagrees; labels are a projection.
#574 accepted.
#575/#576/#577 sufficient to demonstrate two paths.
#578/#579/#596/#597 complete.
#598/#607/#608 complete.
#580/#609 complete.
#599 complete with retained evidence.
Only then decide whether G2 service work moves into the primary roadmap.
At any time, choose the earliest open issue in the critical path whose dependencies are closed/merged.
As of this plan’s creation, #574 has started landing. Developers should avoid creating a second connector kernel and instead take the next bounded missing slice in #574 or a dependency-unblocked child.
The program is complete when a new team can:
If that works, G0 becomes the documented default deployment profile.