Commit Graph

146 Commits

Author SHA1 Message Date
Hugh Hackman e56a6bd9ef fix: remove extra trailing blank line in CONFIG.md (MD012) 2026-03-25 09:07:24 +00:00
Chris Farhood b60920df05 Add opencode.json to every agent directory
Every agent must have opencode.json with permission: allow,
regardless of adapter type. Without it, opencode auto-rejects
file access outside the agent's cwd.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 21:57:19 -04:00
Chris Farhood 779a9ac73e CEO: copy runtime config files (opencode.json, .mcp.json) to agent cwd
The agents repo is not the agent's cwd — opencode.json and .mcp.json
must exist in the cwd at runtime for permissions and MCP access.
CEO now copies these files from the repo to each agent's cwd during
the sync step.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 21:39:45 -04:00
Chris Farhood 34f4e2a8cb Add missing opencode.json for Hugh — fix permission auto-reject
Hugh (opencode_local) had no opencode.json, so opencode defaulted
to rejecting file access outside his cwd. This blocked him from
accessing .github/workflows/ in other repos.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 21:37:17 -04:00
Chris Farhood f4db862e38 CEO: rebuild heartbeat, add new-agent onboarding, triple approval
- Restore full heartbeat (was truncated at 41 lines)
- Add placeholder detection + agent creation via Paperclip API
- New hires get PRed back for board approval, not self-merged
- Update merge step to require triple approval (UAT + QA + CTO)
- Update SOUL.md merge rule to include Patty (UAT)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 21:17:21 -04:00
Chris Farhood 0902d9cc57 Move CEO (Countess) from Opus to Sonnet with high effort
CEO heartbeat is mostly mechanical — repo sync, config PATCH,
delegation routing, PR merging. Sonnet on high effort handles
this reliably at a fraction of Opus token cost.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 20:53:45 -04:00
Chris Farhood 4ee7a5bf29 Update PR workflow: CI → UAT (Patty) → QA (Regina) → CTO → merge
Reorder the review pipeline so cheap/fast stages gate expensive ones:
CI (free) runs first, then Patty validates E2E on MiniMax, then
Regina does deep code review on Sonnet, then Nancy reviews last.

- POLICIES.md: rewrite PR Workflow with 6-step ordered pipeline
- Patty SOUL.md: establish her as first reviewer, add CI-must-pass rule
- Patty HEARTBEAT.md: check CI status before E2E, report results for Regina
- Regina SOUL.md: flip from "review first" to "review after UAT"
- Regina HEARTBEAT.md: skip PRs without CI + E2E validation

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 20:52:05 -04:00
Chris Farhood 9d9c85c310 Merge pull request #39 from privilegedescalation/patty-agent-id-placeholders
Fill in Pixel Patty agent ID and credentials
2026-03-24 20:47:22 -04:00
Countess von Containerheim ed84d094cb chore: fill in Pixel Patty agent ID and GitHub App credentials
Replace placeholders in CONFIG.md and HEARTBEAT.md with actual values:
- Agent ID: e9e671e5-ebfc-4cf6-bebe-1f8e5782ad9a
- GitHub App ID: 3141264 (shared privilegedescalation-engineer)
- PEM path: privilegedescalation-engineer.pem

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-25 00:44:46 +00:00
Chris Farhood 3a6b6db197 Add Pixel Patty (UAT) and move Playwright MCP from Regina
Split QA and UAT responsibilities: Regina keeps code-level QA
(vitest, PR review, CI health) on claude_local/sonnet, while
new agent Pixel Patty handles E2E browser testing via Playwright
MCP on opencode_local/minimax — reducing token cost for the
browser-heavy automation work.

- Add engineering/patty/ with full agent file set
- Remove Playwright MCP references from Regina's SOUL.md
- Delete Regina's stale opencode.json (now on claude_local)
- Update roster, directory tree, and shared tools

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 20:35:45 -04:00
Chris Farhood d401c59901 Merge pull request #38 from privilegedescalation/gandalf-opencode-permissions
Add opencode.json for Gandalf (allow-all permissions)
2026-03-24 20:30:56 -04:00
Countess von Containerheim cb04517a8e Add opencode.json for Gandalf with allow-all permissions
Gandalf was missing the OpenCode permission config that CMO and Regina
already have. Without this file, OpenCode defaults to restricted
directory-scoped permissions, blocking normal operation.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-25 00:21:59 +00:00
Chris Farhood 40ec5fba35 Merge pull request #37 from privilegedescalation/org-adjustments-harness-model-policy
Update org harness/model/effort and PR review policy
2026-03-24 20:01:21 -04:00
Countess von Containerheim 493a4eaa0e fix(ceo): make repo sync step 1 with hard gate — exit on failure
Repo sync must complete before any other heartbeat work. If sync fails,
the heartbeat must exit with an error state immediately. No
parallelization, no skipping.

Also fixes escaped backslash-bang in cat-file check.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-24 20:53:38 +00:00
Countess von Containerheim b648194898 fix(ceo): handle unreachable last-synced SHA in heartbeat sync
If the repo was force-pushed or shallow-cloned, the saved SHA may no
longer exist. Detect this and fall back to a full resync instead of
failing silently.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-24 20:42:44 +00:00
privilegedescalation-ceo[bot] bd493d72ae Merge pull request #35 from privilegedescalation/policy/no-rbac-escalation
Add RBAC no-escalation policy to POLICIES.md
2026-03-24 18:54:16 +00:00
privilegedescalation-ceo[bot] cc2cbb9854 Update org harness/model/effort and PR review policy per board directive
Board directive (PRI-827):
- CTO: effort medium → high
- QA (Regina): opencode_local MiniMax → claude_local Sonnet 4.6 high effort
- Engineering/DevOps (Gandalf, Hugh): claude_local → opencode_local MiniMax M2.7
- Policy: QA reviews PRs first, CTO reviews second (mandatory order)
- Policy: CTO breaks down and distributes all work to engineers

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-24 18:52:36 +00:00
Chris Farhood ef259dcbb2 policy updates 2026-03-22 17:32:33 -04:00
Chris Farhood ab55b94051 Add no-package-mirrors policy
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 21:20:48 -04:00
Chris Farhood 9a6ab6d2bc Enhance COMPANY.md with FQDN details
Added descriptions for Production and Development FQDNs.
2026-03-21 19:30:00 -04:00
Chris Farhood 6c26128f86 Update Development FQDN in COMPANY.md 2026-03-21 19:28:42 -04:00
Chris Farhood 4f10cbbf13 Fix formatting in COMPANY.md 2026-03-21 19:28:10 -04:00
Chris Farhood 6bbe508aee Revise COMPANY.md with company info and roster
Updated company information and added agent roster.
2026-03-21 19:17:21 -04:00
Chris Farhood 8148e00c50 Move agent cwd to /workspaces/ emptyDir volume
Separates working directory (ephemeral, /workspaces/) from agent
home/config directory (persistent, /paperclip/). Prevents branch
switching in one agent's work from breaking other agents' instructions.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 18:27:49 -04:00
Samuel Stinkpost e67edc8958 Add RBAC and Permissions policy section to POLICIES.md
Board directive (PRI-589): agents must stop requesting additional
RBAC, GitHub App permissions, and cluster permissions. Adds explicit
policy with workaround guidance for branch protection, security
scanning, CI runner health, and E2E testing.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-21 20:38:15 +00:00
Chris Farhood 66d78ef403 Add sealed secrets policy and kubeseal to tools
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 15:52:56 -04:00
Chris Farhood 52446ea77c Add proactive product research step to VP Product heartbeat
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 15:26:03 -04:00
Chris Farhood 75ff06be00 Recommend Flux for dev namespace, keep kubectl as fallback
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 15:20:23 -04:00
Chris Farhood 91a3a29fff Update MiniMax agents to route through OpenRouter
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 12:41:12 -04:00
Chris Farhood d13e094d5e Add cc @cpfarhood to PR body policy
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 12:06:54 -04:00
Chris Farhood e687d9abfc Clarify two-stage GitOps deployment pipeline in POLICIES.md
Agents were assuming the org infra repo is what Flux watches directly.
The actual flow is: org/infra → cpfarhood/kubernetes (Flux watches this).

New policy explains:
- Existing resources: commit to org infra repo, Flux picks it up
- New resources (namespaces, kustomizations, secrets): also needs
  a cpfarhood/kubernetes change — escalate to the board
- Never assume committing to org infra repo is always sufficient

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-21 11:24:21 -04:00
Chris Farhood 2bf860016d Deduplicate agent files: remove shared policy rules from individual SOUL.md
Stripped rules that are already in POLICIES.md from all 28 SOUL.md files:
- "GitHub issues are the primary tracker"
- "GitHub issues stay open until deployed and validated"
- "Push directly to main" (in WHAT YOU NEVER DO)
- "Approve or merge PRs on agents repo" (in WHAT YOU NEVER DO)
- "Modify .github/workflows" (in WHAT YOU NEVER DO)

Also fixed:
- CartSnitch CTO: removed stale merge authority (contradicted POLICIES.md)
- CartSnitch Annie: removed empty DEPLOYMENT & CI section
- Groom Book COMPANY.md: updated roster with all 6 agents
- PRI COMPANY.md: removed Samuel, added VP Product, updated models/adapters

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-21 11:17:40 -04:00
Chris Farhood 08c912deb2 Add Headlamp namespace policy: prod in kube-system, dev in privilegedescalation-dev
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-21 11:05:58 -04:00
Chris Farhood 2fd9f0691d Add dev namespace access and kubectl to POLICIES.md and TOOLS.md
Each org now has a -dev namespace where agents can freely use kubectl
for testing and iteration. Production namespaces remain Flux-only.

Access model:
- Cluster-wide: read-only
- Production namespace: read-write (Flux-managed, no manual kubectl)
- Dev namespace: read-write (agents may use kubectl freely)

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-21 11:05:32 -04:00
Chris Farhood c0298d3052 Add cluster infrastructure standards to POLICIES.md, consolidate MCP in TOOLS.md
POLICIES.md: Added Cluster Infrastructure section documenting available
operators (CNPG, DragonflyDB, EMQX, TrueNAS CSI, Rook-Ceph, Authentik,
Prometheus, MariaDB) with usage policies.

TOOLS.md: Consolidated MCP Servers section with minimax-search and
Playwright entries in a single table.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-21 10:56:32 -04:00
Chris Farhood 0c202506d5 Switch CMOs and QAs to minimax/MiniMax-M2.7 direct (no OpenRouter)
CMOs (Savannah, Addison, Clipper):
- Switched from claude_local/sonnet to opencode_local/minimax
- Uses MINIMAX_API_KEY secret_ref (direct MiniMax API, not OpenRouter)
- opencode.json with web search MCP
- Removed .mcp.json (claude_local only)
- promptTemplate required in DB (no instructionsFilePath)

QAs (Betty, Regina, Lint Roller):
- Switched from openrouter/minimax to minimax direct
- Model: minimax/MiniMax-M2.7 (was openrouter/minimax/minimax-m2.7)
- Uses MINIMAX_API_KEY instead of OPENROUTER_API_KEY

VP Products: unchanged (stay on opus, .mcp.json for web search MCP only)

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-21 10:39:04 -04:00
Chris Farhood a7680209db Add MiniMax web search MCP to VP Product and CMO agents
- .mcp.json configured with minimax-coding-plan-mcp (web_search + understand_image)
- MINIMAX_API_KEY added as secret_ref in adapter config env (per-org secrets)
- SOUL.md updated with web search usage guidance
- Keys stored in Paperclip secrets, not in repo

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-21 08:55:05 -04:00
Chris Farhood d4b984b283 Tighten Kubernetes policy: kubectl is read-only, Flux is the only write path
- POLICIES.md: explicitly list kubectl as read-only, enumerate banned
  mutating commands (apply, delete, edit, patch, create)
- Groom Book TECH_STACK.md: fixed "read/write access" to "read-only"
  and removed language implying manual kubectl apply is acceptable

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-20 23:37:30 -04:00
Chris Farhood 10935a9acc Fix CEO triage: dynamically list all org repos instead of hardcoded list
CEOs were missing issues in repos not explicitly listed (e.g.,
groombook/infra, PRI plugin repos). Now uses gh repo list to
discover all repos in the org at triage time.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-20 23:00:19 -04:00
Chris Farhood cd62d2f6ec Add Flux GitOps deployment policy to shared POLICIES.md
All infra changes go through the infra repo and Flux reconciliation.
No manual kubectl apply, no direct cluster modifications.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-20 21:40:36 -04:00
Chris Farhood 8fb8382403 Merge pull request #33 from privilegedescalation/docs/add-task-assignment-policy
docs: add task assignment section to POLICIES.md
2026-03-20 21:28:43 -04:00
Samuel Stinkpost e7e51d074c docs: add task assignment section to shared POLICIES.md
Documents the curl commands for creating and reassigning Paperclip issues,
with guidance on required fields (title, description, assigneeAgentId, parentId)
and the rule: never leave work unassigned.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-21 01:24:30 +00:00
Chris Farhood 13c5b14522 Add Task Assignment section to shared POLICIES.md
Provides every agent with the exact API calls for creating assigned
issues and reassigning existing ones. Includes curl examples with
assigneeAgentId, parentId, and run ID headers.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-20 21:15:00 -04:00
Chris Farhood d7b34fff30 Hire VP of Product for CartSnitch, Groom Book, and Privileged Escalation
New agents:
- Coupon Carl (CartSnitch) — grocery price tracking product vision
- Pawline Prioritizer (Groom Book) — pet grooming business tool product vision
- Kubectl Karen (PRI) — Headlamp K8s plugin product vision

Each VP Product has:
- Detailed product vision with target users, anti-personas, and scope boundaries
- Explicit prioritization framework with P0-P3 tiers
- Feature spec template with acceptance criteria
- Competitive landscape analysis
- In-scope / out-of-scope / gray-area classifications
- Scope guard responsibility on PRs (not code quality)
- Backlog ownership and "say no" authority

Reports to CEO. Uses opus 4.6 (judgment-heavy role).
Uses CEO GitHub App for backlog management.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-20 20:42:34 -04:00
Chris Farhood 1a34ab37de CMO overhaul: IC marketing work, remove Samuel, hire Groom Book CMO
- All CMOs now own and execute the full marketing function (IC work)
- Removed delegation language — no subordinates to delegate to
- Removed GitHub auth and gh commands from CMO heartbeats (CMOs don't use GitHub)
- PRI: removed Samuel Stinkpost references (terminated)
- PRI: updated Addison's capabilities and SOUL.md
- Groom Book: hired Clipper McGee as CMO
- Updated org charts in CLAUDE.md and CEO SOUL.md files

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-20 20:21:28 -04:00
Chris Farhood a45b822cfd Standardize heartbeat step 2: generic inbox-lite for all agents
Replaced hardcoded "Check for assigned work from <manager>" and
pnpm paperclipai CLI with consistent inbox-lite API call.
Agents work on whatever is assigned regardless of who assigned it.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-20 20:13:42 -04:00
Chris Farhood 22b729fc98 Merge pull request #30 from privilegedescalation/fix/restore-agents-ci
fix: restore CI workflow with markdownlint config
2026-03-20 19:57:04 -04:00
Chris Farhood e29531913c Align Regina with other QA agents: Playwright, generic heartbeat, dedupe policies
- Added Playwright MCP to opencode.json and SOUL.md
- Heartbeat: "Check for assigned work from Nancy" → generic inbox check
- Heartbeat: simplified PR review, CI health, and bug triage steps
- Heartbeat: removed hardcoded agent IDs from issue assignments
- SOUL.md: removed ArtifactHub rule (already in shared POLICIES.md)
- SOUL.md: updated merge language to match PR workflow policy
- TOOLS.md: added MCP Servers section

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-20 19:40:41 -04:00
Samuel Stinkpost 5de7138953 fix: disable additional markdownlint rules for agent prompt files
AGENTS.md files are prose-first (no heading required — MD041), mix
list styles (MD004), and use tight lists in compact docs (MD032).
These are structural choices for agent prompts, not markdown errors.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-20 23:09:30 +00:00
Samuel Stinkpost 1e3d4d6e88 fix: disable strict markdownlint rules for agent prompt files
Agent prompts, operational docs (OPERATIONS.md, POLICIES.md, TOOLS.md),
and marketing SOUL files intentionally use long lines, compact heading
style, and fences inside blockquotes. Disabling MD013, MD022, MD031,
and MD040 prevents false-positive CI failures on these files.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-20 23:06:38 +00:00