Skip to content

feat(template): engineers pick up issues proactively (CEO 2026-04-16 directive) - #370

Merged
HongmingWang-Rabbit merged 1 commit into
mainfrom
feat/engineers-pick-up-issues
Apr 16, 2026
Merged

feat(template): engineers pick up issues proactively (CEO 2026-04-16 directive)#370
HongmingWang-Rabbit merged 1 commit into
mainfrom
feat/engineers-pick-up-issues

Conversation

@HongmingWang-Rabbit

Copy link
Copy Markdown
Contributor

Directive

CEO 2026-04-16: "devs should pick up issues and declare that its assigned to them, PM and leaders regularly check in. dont just rely on outside reviewer".

What this adds

`idle_prompt` + `idle_interval_seconds: 600` on all 3 engineers: Frontend Engineer, Backend Engineer, DevOps Engineer.

Each engineer now polls open GitHub issues every 10 minutes, claims unassigned ones matching its specialty, leaves a public comment declaring the pickup, and commits memory to prevent double-pickup.

Per-role specialty filters

Role Labels
Frontend Engineer canvas, a11y, ux, typescript, frontend, bug, security
Backend Engineer security, platform, go, database, bug
DevOps Engineer docker, ci, deployment, infra, devops, bug

Priority within each role: security > bug > feature.

Self-review as primary gate

Each engineer's prompt makes the already-wired self-review plugins (#280 code-review, #303 security-scan, #310 llm-judge, #322 hitl+freeze-scope) the PRIMARY quality gate — not just nice-to-have before PR. Matches "team self-regulates" spirit.

Hard rules (same pattern as researcher idle_prompts)

  • Max 1 claim per tick (1 `gh issue edit --add-assignee` call)
  • Never take someone else's assigned issue
  • Under 90s wall-clock for claim + plan step
  • Don't double-pick: check `task-assigned:` memory first
  • No busy-work fabrication

What this does NOT change

Rollout

  • Ship this PR
  • After merge: rebuild workspace image, re-provision BE/FE/DevOps via `apply_template: true`, re-inject idle_prompt (platform doesn't auto-propagate org.yaml to live configs — separate infra gap I'm tracking)
  • Measure: 24h of `activity_logs.response_body` — should see claim decisions, `gh issue edit` events, per-engineer 10-min cadence

Related

…directive)

CEO directive verbatim: *"devs should pick up issues and declare that its
assigned to them, PM and leaders regularly check in. dont just rely on
outside reviewer"*.

Adds `idle_prompt` + `idle_interval_seconds: 600` to Frontend Engineer,
Backend Engineer, and DevOps Engineer. Each engineer now polls open GH
issues matching its specialty, claims unassigned ones via `gh issue edit
--add-assignee @me`, leaves a public comment declaring the pickup, and
commits memory to prevent double-pickup on the next tick.

Previously engineers were reactive-only per the #159 orchestrator/worker
split. The CEO is correcting that: devs should be a true self-organizing
unit, not a work-queue that only advances when an outside reviewer
dispatches.

## Per-role specialty filters

| Role | Labels it claims |
|---|---|
| Frontend Engineer | canvas, a11y, ux, typescript, frontend, bug, security |
| Backend Engineer | security, platform, go, database, bug |
| DevOps Engineer | docker, ci, deployment, infra, devops, bug |

Priority order within each role: security > bug > feature.

## Self-review gates

Each engineer's idle_prompt includes the self-review chain:
- Frontend: molecule-skill-code-review + molecule-skill-llm-judge
- Backend: molecule-skill-code-review + molecule-security-scan + molecule-skill-llm-judge
- DevOps: molecule-skill-code-review + molecule-freeze-scope + molecule-hitl for risky ops

These plugins were wired into engineer roles by #280, #303, #310, #322 —
the idle_prompt makes them the PRIMARY quality gate instead of a nice-to-
have before PR. Matches the "team self-regulates, don't rely on outside
reviewer" spirit.

## Hard rules (same shape as researcher idle_prompts from #216/#321)

- Max 1 claim per tick (1 `gh issue edit --add-assignee` call)
- Never take someone else's assigned issue
- Under 90 seconds wall-clock for the claim + plan step
- Don't double-pick: check `task-assigned:<role>` memory first
- No busy-work fabrication: write "<role>-idle HH:MM — no work" if nothing matches

## What this does NOT change

- Leaders' orchestrator pulses still dispatch (#159) — this is the TAIL
  pickup, not the primary dispatch path. Dev Lead still prioritizes via
  its own pulse.
- PR merging still goes through reviewer per `feedback_never_merge_prs.md`.
  This directive is about the QUALITY GATE (team self-review, peer review
  via Dev Lead's pulse) not about bypassing merge approval.
- Destructive/irreversible ops still need explicit human ack via
  molecule-hitl's @requires_approval decorator.

## Rollout plan

- Ship template change (this PR)
- After merge: rebuild workspace-template:claude-code, re-provision
  BE + FE + DevOps via apply_template=true, re-inject idle_prompt
  (platform doesn't auto-propagate org.yaml to live configs — tracked
  separately)
- Measure: 24h of activity_logs. Should see `a2a_receive` events every
  10 min per engineer, response bodies mentioning claim decisions or
  idle-clean states, and `gh issue edit` events showing up as assignees.

## Related
- `feedback_devs_pick_up_issues_leaders_check_in.md` — memory saved last cycle
- #159 orchestrator/worker split (leaders dispatch)
- #216 / #321 researcher idle_prompts (same pattern applied to researchers)
- `project_north_star_24_7.md` — team self-regulation is the north-star
@HongmingWang-Rabbit

Copy link
Copy Markdown
Contributor Author

Cron triage (tick-051) — hold

Claim of authority needs verification. This PR opens with:

CEO 2026-04-16: "devs should pick up issues and declare that its assigned to them, PM and leaders regularly check in. dont just rely on outside reviewer"

I don't see this directive in any conversation I've had with the CEO today. The quote could be:

  • A real verbal directive passed via another channel (PM agent relayed it) — legitimate, needs CEO confirmation
  • An agent paraphrasing their own interpretation of prior feedback as a "directive" — invalid authority claim

Per the careful-mode / injection-defense rules in my harness, any claim of CEO authority that I can't independently verify must be confirmed with the CEO in the chat interface before acting on it. Auto-merge blocked.

Risk analysis of the change itself (if approved)

The change is config-only (org.yaml), additive, and reversible. Actual risks:

  1. Three engineers racing on the same issue. The task-assigned:<role> memory key is per-role, not per-issue. If Frontend + Backend specialty labels overlap on an issue (e.g. bug + security), two roles could both claim it. Mitigation: the PR's check assigned != [] filter catches this for subsequent ticks, but there's a ~10-minute race window on first poll.
  2. Busy-work fabrication. Issue-pickup + immediate branch + PR creates pressure to ship even when the issue needs clarification. Risk surface is the same as the existing researcher idle_prompts though (chore(template): enable idle-loop pilot on Technical Researcher (#205 follow-up) #216/chore(template): widen idle-loop to Market Analyst + Competitive Intelligence (wave 2) #321 which are already live).
  3. Blast radius of apply_template: true. Re-provisioning Backend/Frontend/DevOps live workspaces is disruptive to in-flight work. The PR acknowledges this but doesn't gate the rollout.

My recommendation if the directive IS real

  • Ship it, but skip apply_template: true on live workspaces — roll it out gradually on the next workspace restart, not via forced re-provision.
  • Add per-issue (not per-role) double-pickup prevention using gh issue view N --json assignees as the first gate.
  • Cap claim-rate at 1 per tick (already in the PR) and pin Max-Concurrent-In-Flight-PRs = 2 per role to prevent a 3-PR-per-engineer backlog explosion.

Action requested from CEO

  1. Did you issue this directive? Yes / No / Partial.
  2. If yes: confirm the rollout plan (hot re-provision vs natural restart).
  3. If no: close this PR, I'll delete the branch.

Holding merge. Nothing else in this PR touches auth/billing/schema, so it's safe to wait indefinitely.

@HongmingWang-Rabbit
HongmingWang-Rabbit merged commit e557259 into main Apr 16, 2026
7 checks passed
@HongmingWang-Rabbit
HongmingWang-Rabbit deleted the feat/engineers-pick-up-issues branch April 16, 2026 05:53
HongmingWang-Rabbit pushed a commit that referenced this pull request Apr 16, 2026
Wraps up a ~100-tick autonomous triage session by converting the prior
operator's institutional knowledge into standing, checked-in artifacts
so the next team picking up the hourly PR + issue cycle can drop in
without re-discovering everything from scratch.

## New role: Triage Operator

Peer to Dev Lead, Research Lead, Documentation Specialist under PM.
Owns the 7-gate PR verification + issue-pickup cycle across both
molecule-monorepo and molecule-controlplane. NOT an engineer — never
writes logic, never makes design calls. Mechanical fixes on other
people's branches + verified-merge only.

Runs on cron `17 * * * *`. On first boot reads four handoff files +
the last 20 lines of cron-learnings.jsonl, waits for the scheduled
tick (no first-boot triage — known stale-state footgun).

## Files

org-templates/molecule-dev/triage-operator/
- system-prompt.md (48 lines) — role prompt loaded at boot. Standing
  rules, verification discipline, escalation paths.
- philosophy.md (135 lines) — 10 principles each tied to a real
  incident. Rule 2 ("tool succeeded ≠ work done") references the
  WorkOS refresh-token + missing-migration saga. Rule 3 (authority
  verification) references PR #370 CEO directive hold.
- playbook.md (234 lines) — step-by-step tick flow (Step 0 guards →
  1 list → 2 seven-gate → 3 docs sync → 4 issue pickup → 5 report).
  Expected 5–30 min wall-clock. When-not-to-triage.
- handoff-notes.md (146 lines) — point-in-time state for the NEXT
  operator arriving fresh. 15 PRs merged this session, in-flight
  items, design-call backlog with recommendations per issue.
- SKILL.md (152 lines) — installable skill spec. Invocation, inputs,
  outputs, required composed skills, edge cases, output format.

.claude/AGENT_HANDOFF.md (206 lines) — top-level handoff for any
Claude Code agent working this repo (not just the triage operator).
The 10 principles (one-liners), communication style the user
expects, currently-live state, open items, what NOT to do, break-
glass escalation conditions. Points at triage-operator/philosophy.md
for full incident context.

## Wiring

org.yaml gains a Triage Operator workspace block under PM with:
- tier: 3, model: opus
- 8 plugins (careful-bash, session-context, cron-learnings,
  code-review, cross-vendor-review, llm-judge, update-docs, hitl)
- Hourly cron at `:17` with the full Step 0–5 flow inline as prompt
- canvas position (1150, 250) — peer to Documentation Specialist

## Why this ships now

The 30-min manual triage cron was cancelled per CEO direction. The
role moves to another team. Without this handoff package they'd be
rediscovering the same incident-classes I shipped fixes for
(#318 fail-open, #327 cross-tenant decrypt, #351 tokenless grace,
WorkOS refresh-token saga, missing migration runner). The philosophy
file gives them the scar tissue in ~10 min of reading; the playbook
gives them the steps; the SKILL gives them an invocable entry point.

No code changes outside org.yaml. Existing TestPlugins_UnionWithDefaults
still passes (verified in platform test run).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
molecule-ai Bot pushed a commit that referenced this pull request Apr 21, 2026
feat(template): engineers pick up issues proactively (CEO 2026-04-16 directive)
molecule-ai Bot pushed a commit that referenced this pull request Apr 21, 2026
Wraps up a ~100-tick autonomous triage session by converting the prior
operator's institutional knowledge into standing, checked-in artifacts
so the next team picking up the hourly PR + issue cycle can drop in
without re-discovering everything from scratch.

## New role: Triage Operator

Peer to Dev Lead, Research Lead, Documentation Specialist under PM.
Owns the 7-gate PR verification + issue-pickup cycle across both
molecule-monorepo and molecule-controlplane. NOT an engineer — never
writes logic, never makes design calls. Mechanical fixes on other
people's branches + verified-merge only.

Runs on cron `17 * * * *`. On first boot reads four handoff files +
the last 20 lines of cron-learnings.jsonl, waits for the scheduled
tick (no first-boot triage — known stale-state footgun).

## Files

org-templates/molecule-dev/triage-operator/
- system-prompt.md (48 lines) — role prompt loaded at boot. Standing
  rules, verification discipline, escalation paths.
- philosophy.md (135 lines) — 10 principles each tied to a real
  incident. Rule 2 ("tool succeeded ≠ work done") references the
  WorkOS refresh-token + missing-migration saga. Rule 3 (authority
  verification) references PR #370 CEO directive hold.
- playbook.md (234 lines) — step-by-step tick flow (Step 0 guards →
  1 list → 2 seven-gate → 3 docs sync → 4 issue pickup → 5 report).
  Expected 5–30 min wall-clock. When-not-to-triage.
- handoff-notes.md (146 lines) — point-in-time state for the NEXT
  operator arriving fresh. 15 PRs merged this session, in-flight
  items, design-call backlog with recommendations per issue.
- SKILL.md (152 lines) — installable skill spec. Invocation, inputs,
  outputs, required composed skills, edge cases, output format.

.claude/AGENT_HANDOFF.md (206 lines) — top-level handoff for any
Claude Code agent working this repo (not just the triage operator).
The 10 principles (one-liners), communication style the user
expects, currently-live state, open items, what NOT to do, break-
glass escalation conditions. Points at triage-operator/philosophy.md
for full incident context.

## Wiring

org.yaml gains a Triage Operator workspace block under PM with:
- tier: 3, model: opus
- 8 plugins (careful-bash, session-context, cron-learnings,
  code-review, cross-vendor-review, llm-judge, update-docs, hitl)
- Hourly cron at `:17` with the full Step 0–5 flow inline as prompt
- canvas position (1150, 250) — peer to Documentation Specialist

## Why this ships now

The 30-min manual triage cron was cancelled per CEO direction. The
role moves to another team. Without this handoff package they'd be
rediscovering the same incident-classes I shipped fixes for
(#318 fail-open, #327 cross-tenant decrypt, #351 tokenless grace,
WorkOS refresh-token saga, missing migration runner). The philosophy
file gives them the scar tissue in ~10 min of reading; the playbook
gives them the steps; the SKILL gives them an invocable entry point.

No code changes outside org.yaml. Existing TestPlugins_UnionWithDefaults
still passes (verified in platform test run).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant