[2026-05-14] gha-ci-executor: fix Peekaboo/TCC assessment, add task tagging contract, scope guardrails, orchestrator link
This commit is contained in:
@@ -9,6 +9,7 @@
|
||||
- **Asana task: MM Bots**: https://app.asana.com/1/137249556945/project/908478224964033/task/1214799615211686
|
||||
- **Mattermost Migration Plan**: [[mattermost-migration]]
|
||||
- **Executor Orchestrator Redesign**: [[executor-orchestrator-redesign]]
|
||||
- **Executor Orchestrator Redesign**: [[executor-orchestrator-redesign]]
|
||||
|
||||
---
|
||||
|
||||
@@ -272,9 +273,21 @@ Sentry webhook
|
||||
|
||||
---
|
||||
|
||||
## Peekaboo on GHA — Constraint
|
||||
## Peekaboo on GHA — Revised Assessment
|
||||
|
||||
GHA hosted runners run with **SIP enabled** — `tccutil insert` for Screen Recording / Accessibility doesn't work.
|
||||
Earlier assessment ("SIP blocks TCC") was incorrect. Actual situation:
|
||||
|
||||
- GHA runner user has `sudo` access
|
||||
- SIP protects system files (`/System`, `/usr`) — NOT user-level `TCC.db`
|
||||
- `TCC.db` is at `~/Library/Application Support/com.apple.TCC/TCC.db`
|
||||
- Can be modified via `sqlite3` with sudo → grants Screen Recording + Accessibility
|
||||
- This is a standard CI pattern for screenshot testing
|
||||
|
||||
Xcode automation already works on GHA (AppleScript/XCUITest) — same TCC layer.
|
||||
|
||||
**Revised conclusion: Peekaboo on GHA hosted runner is likely viable.** Needs validation in Phase 1.
|
||||
|
||||
Fallback if sqlite3 approach fails: ddg-vm via SSH from GHA job (existing infra, confirmed working).
|
||||
|
||||
**Solution for visual reproduction:**
|
||||
|
||||
@@ -360,7 +373,45 @@ No Prefect needed — this path is synchronous and triggered by humans.
|
||||
|
||||
---
|
||||
|
||||
## Phased Implementation
|
||||
## Task Intake & Scope Control
|
||||
|
||||
### Asana Tagging Contract
|
||||
|
||||
Only tasks explicitly tagged for automation enter the pipeline. The agent never self-selects tasks.
|
||||
|
||||
| Tag | Meaning |
|
||||
|---|---|
|
||||
| `executor:ready` | Task approved for autonomous execution — analyst reviews and tags this |
|
||||
| `executor:analyze` | Analysis Agent runs, generates prompt, but does NOT dispatch GHA — output goes to Asana comment for human review |
|
||||
| `executor:hold` | Task in queue, blocked (dependency, unclear scope) |
|
||||
|
||||
Workflow:
|
||||
1. Alex (or designated reviewer) tags task `executor:ready` in Asana
|
||||
2. Prefect polls Asana for tasks with this tag (every N min, or webhook)
|
||||
3. Tag is removed / replaced with `executor:in-progress` once dispatched
|
||||
4. No tag = not touched, ever
|
||||
|
||||
### Scope Guardrails (Eagle auto-approval layer)
|
||||
|
||||
From [[executor-orchestrator-redesign]]: Eagle monitors `#executor` channel using message protocol.
|
||||
GHA workers use same `[REQUEST:]` / `[ESCALATE:]` protocol — Eagle is the gatekeeper regardless of where the worker runs.
|
||||
|
||||
```
|
||||
Asana task tagged executor:ready
|
||||
→ Prefect: run_analysis_agent()
|
||||
→ Prefect: dispatch_gha()
|
||||
→ GHA worker posts [STATUS:] / [REQUEST:] to MM #executor-queue
|
||||
→ Eagle monitoring cron (2 min) reads channel
|
||||
→ Auto-approve safe actions, escalate ambiguous to Alex
|
||||
→ Worker proceeds only after approval
|
||||
```
|
||||
|
||||
Auto-approval rules (same as orchestrator redesign):
|
||||
- `create_worktree`, `run_build`, `run_tests`, `open_draft_pr`, `push_branch` → ✅ silent approve
|
||||
- `post_asana_comment`, any scope expansion → ⚠️ escalate to Alex
|
||||
- `merge_pr` → ❌ always escalate
|
||||
|
||||
|
||||
|
||||
### Phase 1: GHA Validation (1-2 days)
|
||||
- [ ] Create `executor-worker.yml` in apple-browsers repo
|
||||
|
||||
Reference in New Issue
Block a user