Skip to content

Spec: maintainer/owner conversational surface — grounding catalog, action catalog, authz matrix, placement, transport #9187

Description

@JSONbored

Context

Part of the ORB maintainer chat platform epic. Before any backend or UI work, every interpretive question must be closed here, exactly as #6230 did for the contributor side. The contributor-side artifacts to mirror (and diverge from deliberately, with reasons): #6230 (spec), #6517 (read-only grounding contract), #6521 (confirmed action-dispatch), #6303 (SSE audit).

Requirements — every numbered item gets an explicit recorded decision

  1. Grounding-tool catalog (read-only). Decide the v1 tool list. Candidate minimum, to confirm/trim/extend: queue snapshot (open PRs + dispositions + holds with reasons), per-PR status (gate verdict, blockers, CI state, decision-record digest), decision-record fetch by digest, ledger-verify status proxy, calibration/fairness summary (accuracy with coverage and interval — never a bare scalar), effective-config resolution (resolved .loopover.yml + settings precedence), audit-event tail per repo, repo-settings snapshot. For each: exact data source (existing service/module), redaction treatment, response token budget.
  2. Action catalog. Decide the v1 dispatchable actions and their authz tier. Candidates: per-repo agent pause/resume; dry-run toggle; force re-gate (reuse the feat(queue): wire an admin trigger for agent-regate-pr force re-gates #8958 admin trigger); approval-queue release; human-attributed manual-review release (this would be the missing human-provenance removal path). Explicitly decide: global freeze is display-only in chat (ratchet semantics), yes/no.
  3. Authz matrix. Session actor → installation → repo. Which existing helpers gate reads vs dispatches (requireRepoMaintainer / requireSessionRepoAccess / verifyInstallationAdmin), what operators (ADMIN_GITHUB_LOGINS) may additionally do, and what happens for affiliation-tier (data-read) maintainers — read-only chat, no dispatch?
  4. Placement. New app.* route vs a chat rail embedded in app.maintainer.tsx/app.owner.tsx — decide, with the mobile/narrow-viewport behavior.
  5. Transport. SSE per research: audit streaming/SSE support in loopover's API layer for chat-interface response streaming #6303's findings; confirm it holds for both the hosted Worker path and the self-host container path, or record the split.
  6. Model/provider path. Which provider plan executes chat completions (existing AI_PROVIDER chain vs a dedicated chat slot), its budget controls, and its failure behavior (degrade to deterministic tool results, never fabricate).
  7. Tenant model. Alignment with Decouple "admin of a GitHub install" from "has a running container" #4927 (admin-of-install ≠ has-a-container): what the chat shows a maintainer whose repo has no running deployment.
  8. Parity contract. The same surface against self-host and hosted; name any deliberate divergences.

Deliverables

  • Every numbered item above answered in a decision-record comment on this issue.
  • The epic's other sub-issues re-checked against the decisions (scope adjustments applied to them before implementation starts).

Expected outcome

Implementation issues in this epic can be executed with zero interpretive latitude.

Metadata

Metadata

Assignees

Labels

maintainer-onlyOwner-only work — yields no Gittensor points.orbGittensory Orb related - maintainer self-hosting analytics.

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions