Commit Graph

115 Commits

Author SHA1 Message Date
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
Chris Farhood dfcf59bb65 Update github-apps README with actual App IDs, install IDs, and agent mapping
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-20 14:10:36 -04:00
Chris Farhood 9abec895e6 Switch to role-based GitHub Apps across CartSnitch, PRI, and Groom Book
Each agent now uses the appropriate role-scoped GitHub App:
- CEO app: merge authority, org admin
- CTO app: PR review/approval, engineering + workflows
- QA app: PR review/approval, read-only contents
- Engineer app: push branches, open PRs, CI

CMO agents share the CEO app (no dedicated CMO app).
Samuel (social) uses the engineer app.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-20 12:44:16 -04:00
Chris Farhood 8665e041ef Add versioning policy: CalVer for most orgs, SemVer for PRI (ArtifactHub)
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-20 08:21:48 -04:00
Chris Farhood b477940f2a Issues stay open until deployed and validated, not just merged
Updated across all POLICIES.md and SOUL.md files in all orgs.
Merging is a step in the process, not the finish line.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-20 08:02:25 -04:00
Chris Farhood f3f3806f60 Add role-based GitHub App manifests
Four roles with scoped permissions enforcing PR workflow at GitHub level:
- CEO: merge authority, org admin
- CTO: PR review/approval, full engineering + workflows
- QA: PR review/approval, read-only contents, CI monitoring
- Engineer: push branches, open PRs, CI execution

Apps are org-scoped. PEM naming: <org>-<role>.pem
Branch protection rulesets to be configured after app creation.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-20 07:30:28 -04:00
Chris Farhood 33c076aaa0 Enforce PR workflow: QA + CTO approve, CEO merges, GitHub branch protection
POLICIES.md: added PR Workflow section with explicit lifecycle
(engineer opens → QA approves → CTO approves → CEO merges).
Updated issue tracking to reference dual approval before merge.
Added branch protection enforcement directive.

CEO: added merge step to heartbeat, merge authority in SOUL.md,
branch protection enforcement responsibility.

CTO: removed merge authority, review and approve only.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-20 07:18:52 -04:00
Chris Farhood 51fba9450e Upgrade QA agents from minimax m2.5 to m2.7
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-20 07:14:02 -04:00
Chris Farhood f7d36d96b4 Use Paperclip secret_ref for OPENROUTER_API_KEY instead of plain text
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-20 06:46:31 -04:00
Chris Farhood 043a0b23ca Disable snapshots in opencode.json
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-20 06:40:23 -04:00
Chris Farhood b9c3120771 Optimize model selection: opus for leadership, sonnet for ICs
CEOs and CTOs stay on claude-opus-4-6 (strategy, architecture, judgment).
IC agents move to claude-sonnet-4-6 (implementation, routine execution).
Lint Roller set up as opencode_local with minimax-m2.5 (matching Regina).

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-19 22:16:45 -04:00
Hugh Hackman 28b0e7433e fix: restore CI workflow with markdownlint config
The previous CI workflow was removed, leaving the agents repo with no CI.
This restores markdownlint-based CI with a config that disables rules
incompatible with agent prompt files (bare URLs, inline HTML, emphasis
headings). Uses ARC runners and actions/checkout@v6.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-20 02:04:35 +00:00
Chris Farhood 1da01f59cc Fix AGENTS.md bootstrap: point to shared POLICIES.md and TOOLS.md
PRI agents were still referencing local TOOLS.md (deleted).
Now uses absolute paths to shared root files.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-18 23:14:47 -04:00
Chris Farhood 9001935d63 Add GitHub Actions runner info to shared TOOLS.md
Each org has self-hosted ARC runners that scale to zero when idle.
Runner labels standardized to runners-<org> format.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-18 22:53:35 -04:00
Chris Farhood d1103749eb Switch all agents to shared privilegedescalation.pem
All agents now use App ID 3097914 (privilegedescalation-paperclip) with
the shared PEM at /paperclip/secrets/github-pems/privilegedescalation.pem.
Individual per-agent PEMs have been removed from the k8s secret.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-18 21:10:52 -04:00
Chris Farhood 8a8fa24aac Consolidate shared policies and tools into root-level files
- Added POLICIES.md: env var handling, infra policy (ghcr.io, Renovate),
  git workflow, issue tracking, CI/CD access rules
- Added shared TOOLS.md: GitHub auth, Paperclip API, common tools, repos
- Removed all per-agent TOOLS.md files (shared file covers everything)
- Updated all AGENTS.md bootstraps to read shared POLICIES.md and TOOLS.md
- Removed duplicated env var directive from all HEARTBEAT.md files

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-18 20:19:10 -04:00
Chris Farhood 89ae6a24d9 Add infrastructure policy: ghcr.io only, Mend Renovate, no Dependabot
- CLAUDE.md: added Infrastructure Policy section to all orgs
- Debbie SOUL.md: clarified ghcr.io only, no Docker Hub or mirrors

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-18 20:14:12 -04:00
Chris Farhood 436292b9f3 Fix env var directive: provide localhost fallback instead of exit-on-401
The previous directive told agents to exit on 401, causing them to bail
on the first failed curl. PAPERCLIP_API_URL is injected by the adapter
but may not expand in all shell contexts. Fall back to localhost:3100.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-18 14:55:22 -04:00
Chris Farhood d8d9d23a55 Revert memory commit/push — gitignore life/ and memory/ instead
Agent memory files can contain secrets (API keys, credentials, infra
details). These must not be committed to git. Memory persists on the
pod's persistent volume. Git is for board-authored config only.

- Added life/ and memory/ back to .gitignore
- Removed git add/commit/push from CEO heartbeat sync (pull-only now)
- Removed auto-merge workflow (no longer needed)

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-18 14:43:00 -04:00
Chris Farhood 91fc311ee0 fix: use hosted runners for auto-merge (no special tooling needed)
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-18 14:37:21 -04:00
Chris Farhood 9fd9fadc0a fix: use ARC self-hosted runners for auto-merge workflow
Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-18 14:36:35 -04:00
Chris Farhood aef34e2461 Add auto-merge workflow for agent-sync branch and stop pushing to main
CEO commits memory/runtime updates to agent-sync branch instead of main.
GitHub Actions workflow auto-merges agent-sync into main on push.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-18 14:33:27 -04:00
Chris Farhood ec0eaf5a5b Stop agents from debugging env vars on every heartbeat
Added explicit directive to all heartbeats: PAPERCLIP_API_KEY and other
env vars are pre-injected and valid — do not inspect, decode, verify,
or debug them. Exit cleanly on 401 instead of retrying.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-18 14:26:58 -04:00
Chris Farhood ce5e524398 Fix git sync: commit memory files before pull, push back to remote
- .gitignore: exclude runtime junk (.claude/, .cache/, .npm/) but track
  life/ and memory/ so agent knowledge persists across pod restarts
- CEO heartbeat: git add + commit local changes before pull --rebase,
  then push to persist memory files in the repo
- Fixes agents wasting turns debugging dirty working tree on every heartbeat

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-18 14:23:56 -04:00
Chris Farhood ba68fcfeeb Add para-memory-files skill reference to all agents
Every agent now invokes the persistent memory skill for cross-heartbeat
knowledge retention: facts, daily notes, entities, synthesis, and recall.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-18 14:17:11 -04:00
Chris Farhood a0d54e87e8 Fix git paths in CEO heartbeat sync and add capabilities to PATCH
- Fixed /paperclip/privilegedescalation → /paperclip/privilegedescalation/agents
- Added capabilities as top-level PATCH field in sync step

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-18 12:10:24 -04:00
Chris Farhood 0dc83a1e99 Remove junk empty-string fields from Regina adapter config
mode, effort, variant, modelReasoningEffort are not applicable to
opencode_local/minimax and were UI artifacts.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-18 11:02:04 -04:00
Chris Farhood 905f1f453c Standardize TOOLS.md across all agents
- Consistent table format with GitHub auth, Paperclip API, and tool inventory
- Added git, jq, node/npm/pnpm, python3, pnpm paperclipai to all agents
- Added repo ownership map for CEO/CTO
- Removed stale Gemini workspace section from Hugh (runs claude_local)
- Added opencode_local adapter notes to Regina (promptTemplate required)
- Flagged missing pod tools (docker, kubectl, flux)

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-18 10:52:09 -04:00
Chris Farhood 5d01e6342e Standardize capabilities across all agents with delegation boundaries
C-level and VP agents explicitly state they do not do IC work and name
who they delegate to. IC agents declare owned domains and tech skills.
Format: scope sentence + delegation boundary + domain tags.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-18 10:36:43 -04:00
Chris Farhood f4350865f5 Standardize C-level/VP agents: 4hr heartbeat, 80 turns, opus 4.6 medium thinking
- CEO: intervalSec 86400→14400, maxTurnsPerRun 40→80, add effort "medium"
- CMO: intervalSec 86400→14400, add effort "medium"
- CTO: intervalSec 86400→14400, add effort "medium"
- VP Hugh: add effort "medium" (interval/turns already correct)

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-18 10:22:00 -04:00
Chris Farhood 5f3b954db8 Add agents repo PR restriction: board-only approval
All agents now have explicit NEVER DO rule: only the board may approve
or merge PRs on the agents repo (agent configurations and prompts).

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-17 08:00:35 -04:00
Chris Farhood 1c088e7c9c Update all agents: GitHub issues as primary tracker, Paperclip secondary
- GitHub issues are the primary work tracker for all bugs, features, and work items
- Paperclip issues are secondary — used to trigger and coordinate agents
- GitHub issues stay open until the associated PR is approved AND merged
- Added GitHub issue triage step to CEO and CTO heartbeats
- Updated delegation references to specify GitHub where appropriate

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-17 07:58:20 -04:00