Skip to content

Slack: connect authorized tasks to a qualified Code Mower supervisor #977

Description

@jeffhuber

Part of Slack epic #903 and roadmap #900; revision 3, supervised bounded execution.

Problem

The merged Slack contract assumes a registered runner, but registration alone does not demonstrate a working, qualified orchestrator. session start prepares state and instructions; it is not a universal process launcher. Selecting hosted Devin as the execution transport cannot satisfy a missing qualified supervisor by promoting Devin to orchestrator.

Scope / PR mapping

One OSS PR: implement the maintained adapter between a privately authorized Slack task and an explicitly configured, qualified Code Mower supervisor runtime. Freeze the versioned admission/claim/status/result contract used by hosted #919/#920. Reuse existing session, lifecycle, role-policy, exact work/run binding, and handoff facilities; provide a real supported runtime invocation/connection for the initial qualified Codex or Claude posture. Avoid a universal launcher, implicit provider fallback, or new Slack-owned orchestration engine.

The OSS adapter owns supervisor readiness/claim, orchestration decisions, and bounded builder/review delegation. Hosted #919 owns durable receipts/queues; #920 owns the authenticated hosted bridge and Slack/provider transport. Source files have one owner per PR. Private operational text travels only through authorized private stores/connections; telemetry uses closed metadata.

Acceptance criteria

  • A registered, configured, and role-qualified supervisor is actually reachable and able to accept work before a hosted builder create is permitted.
  • Tenant/repository/work/run/operation bindings, claim expiry, revocation, and restart are checked at handoff and re-entry; stale or mismatched claims fail closed.
  • An absent/unqualified supervisor leaves work waiting or rejected with an actionable reason, never dispatched as Devin orchestration.
  • The supervisor owns task scope, bounded spend, explicit recovery decisions, exact PR/head collection, independent eligible review routing, and completion decisions.
  • Builder completion, provider exit, review readiness, and merge status remain separate; unsafe or uncertain takeover cannot start a replacement writer.
  • A maintained local supervisor path accepts a synthetic authorized task and drives the builder/review interface; fake hosted queue/provider fixtures cover duplicate claim, ambiguous handoff, disconnect/restart, and cancellation.
  • Integration contract/version fixtures are consumable by Slack: durable inbox/outbox and start/status/cancel interaction #919/Slack: Devin dispatch, clarification, completion, and cancellation bridge #920; a live hosted completion and cancellation are verified there and in final Release: qualify and publish basic supervised Slack ingress in v1.5.0 #923, not claimed from unit fixtures.
  • No supervisor grants new tracker-write/merge authority; existing repository and owner policy remain effective.

Dependencies and target

Implementation follows #975, #962, and #963; reuse merged #916/#917 and #906. Freeze this contract before #919 runtime integration. It has no Graphify or Board release dependency. Required for #920 and the v1.5.0 canary.

Planned builder: Code Mower Codex. Planned independent reviewer: Code Mower Claude, subject to actual contributor exclusion.

Delivery and evidence

One independently reviewable implementation PR in the repository named below; one named Code Mower builder and one writer per branch. Record the PR, exact head, contributing builder lineage, independent eligible reviewer verdict, focused and relevant regression tests, CI, authoritative code-mower/gate, and outcome. Resolve all P0/P1/P2 findings before merge. Re-review every changed head. An implementation provider never acquires orchestration or merge authority by being selectable. Keep source, diffs, prompts, messages, private context, identities, provider references, raw output, credentials, and personal paths out of public evidence and cloud reporting.

Planned builder assignments are scheduling proposals, not active sessions. Paid canaries require an explicit campaign-wide cap and stable private bindings; no uncertain automatic retry and no new recovery allowance is implied by this issue.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    builder:codexCode Mower generated labelcontract-firstRequires product/data/merge contract agreement before dependent work mergesdispatched:codexCode Mower generated labelenhancementNew feature or requesttier:RCode Mower generated label

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions