Goal
Turn gittensory from a semi-automated contribution system into a self-running one — a loop anyone can join on either side:
miner finds a valuable issue → builds a polished (non-slop) contribution → submits a PR → maintainer auto-reviews via gittensory CI (hosted or self-hosted) → merge → attribution feeds the next pick → repeat.
Most stages already ship today (plan, pre-submit gate-check, draft, submit, deterministic gate + dual-AI review, autonomy dial). This epic tracks the four remaining gaps that close the loop, plus the public instrumentation that proves it works.
Current state (what already ships)
| Loop stage |
State |
| Plan |
✅ agent_plan_next_work, build_plan DAG, elicitation prompts |
| Build |
✅ by design — miner's own AI harness (Claude Code / Codex) |
| Pre-submit gate-check |
✅ run_local_scorer, check_slop_risk, predict_gate, lint_pr_text (metadata-only) |
| Draft PR |
✅ draft_pr_body, prepare_pr_packet |
| Submit |
✅ by design — local gh action specs; gittensory never writes |
| Auto-review |
⚠️ finishing — unified engine mid-cutover (#1011 → #1027) |
| Merge |
⚠️ maintainer-only — autonomy dial supports auto but defaults to observe |
| Repeat / feedback |
❌ missing — decision-pack rebuild is debounced, up to ~6h stale |
The shared-plumbing insight
Two gaps below (accuracy/trust, and the feedback loop) both need one piece of infrastructure: a durable pr_outcome ground-truth event written to review_audit on the pull_request.closed / merged webhook (the event type and review_targets.terminal_at already exist). Build it once and it powers four things: the public accuracy stat, the maintainer trust dashboard, the autonomy circuit-breaker, and the miner feedback loop. This foundation is owned by the Proof-of-Power sub-issue (deliverable 1).
Children (the four gaps)
Sequencing
#1011 (finish cutover)
└─ pr_outcome plumbing (in Proof-of-Power sub-issue)
├─ accuracy + trust surfacing ┐ parallel
└─ real-time feedback loop ┘
└─ proactive discovery
└─ self-host stack (#975 tree)
Out of scope / guardrails
- Autonomous PR submission stays explicit (local
gh, miner-controlled) — intentional safety boundary, not a gap.
- Respect the miner/maintainer privacy boundary throughout: deterministic, metadata-only signals; never expose raw scores, rewards, hotkeys, or wallet data.
Labels: roadmap, maintainer-only · Assignee: @JSONbored
Goal
Turn gittensory from a semi-automated contribution system into a self-running one — a loop anyone can join on either side:
Most stages already ship today (plan, pre-submit gate-check, draft, submit, deterministic gate + dual-AI review, autonomy dial). This epic tracks the four remaining gaps that close the loop, plus the public instrumentation that proves it works.
Current state (what already ships)
agent_plan_next_work,build_planDAG, elicitation promptsrun_local_scorer,check_slop_risk,predict_gate,lint_pr_text(metadata-only)draft_pr_body,prepare_pr_packetghaction specs; gittensory never writesautobut defaults toobserveThe shared-plumbing insight
Two gaps below (accuracy/trust, and the feedback loop) both need one piece of infrastructure: a durable
pr_outcomeground-truth event written toreview_auditon thepull_request.closed/mergedwebhook (the event type andreview_targets.terminal_atalready exist). Build it once and it powers four things: the public accuracy stat, the maintainer trust dashboard, the autonomy circuit-breaker, and the miner feedback loop. This foundation is owned by the Proof-of-Power sub-issue (deliverable 1).Children (the four gaps)
pr_outcomeplumbing — see sub-issue. Owns the shared ground-truth foundation; exposes the loop's output as public proof.computeCalibration/computeGateParity(insrc/review/ops.ts,src/review/parity.ts; currently unexposed) to the maintainer dashboard and the autonomy circuit-breaker, so maintainers have evidence to move the dial towardauto. Advances Wire ops/stats/alerts/self-improve (modules ported) + cron tick + tunables D1 #1022 and feat(ui): maintainer repo/org quality dashboard #539. (Consumes thepr_outcomefoundation.)pr_outcome, invalidate the miner's decision-pack (src/services/decision-pack.ts, currently up to ~6h stale) so merged → attribution → next-pick feels continuous. (Consumes thepr_outcomefoundation.)Sequencing
Out of scope / guardrails
gh, miner-controlled) — intentional safety boundary, not a gap.Labels:
roadmap,maintainer-only· Assignee: @JSONbored