This commit adds: 1. bin/hire-profiles.sh - Script to run hire-an-agent for all bot agents 2. formulas/vault.toml - Formula for vault-bot's .profile repo The hire-profiles.sh script creates .profile repos for: - architect-bot (full hire with user + token + .profile) - dev-bot, review-bot, planner-bot, gardener-bot, supervisor-bot, predictor-bot - vault-bot (using vault formula) - dev-qwen Each .profile repo will contain: - formula.toml - Agent's role formula - journal/.gitkeep - For session journals - knowledge/.gitkeep - For shared knowledge This enables agents to: - Write journals (session reflections) - Load lessons learned from prior runs - Maintain continuous improvement across runs Acceptance criteria: - All bot users have a .profile repo on Forgejo - Each .profile contains formula.toml, journal/.gitkeep, knowledge/.gitkeep - architect-bot user exists with a token in .env - Agents can clone their .profile and write journals on next run Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
89 lines
2.4 KiB
TOML
89 lines
2.4 KiB
TOML
# formulas/vault.toml — Vault formula (external action dispatch)
|
|
#
|
|
# This formula is used for vault-bot's .profile repo. It defines the vault
|
|
# action dispatch workflow where vault items are filed and executed by the
|
|
# vault runner container with injected secrets.
|
|
#
|
|
# The vault redesign (#73-#77) implements PR-based approval workflow:
|
|
# - Agents file vault items via PR to ops repo
|
|
# - Humans approve via PR review
|
|
# - Vault runner executes with injected secrets
|
|
|
|
name = "vault"
|
|
description = "Vault action dispatch: file approval requests for external actions"
|
|
version = 1
|
|
model = "sonnet"
|
|
|
|
[context]
|
|
files = ["AGENTS.md", "docs/VAULT.md", "vault/vault-env.sh"]
|
|
|
|
[[steps]]
|
|
id = "preflight"
|
|
title = "Review vault item request"
|
|
description = """
|
|
Read the vault item request and validate it follows the vault protocol.
|
|
|
|
1. Check the vault item has all required sections:
|
|
- What — what is needed
|
|
- Why — what this unblocks and why it matters now
|
|
- Unblocks — specific issue numbers
|
|
- Human Action — specific steps the human should take
|
|
- Factory Will Then — what happens after approval
|
|
|
|
2. Verify the human action is specific and actionable (not a decision to be made)
|
|
|
|
3. Check for duplicates in vault/pending/, vault/approved/, vault/fired/
|
|
|
|
4. Validate the formula referenced exists in $PROJECT_REPO_ROOT/formulas/
|
|
|
|
5. Check that external actions go through vault dispatch (not direct)
|
|
"""
|
|
needs = []
|
|
|
|
[[steps]]
|
|
id = "create-pr"
|
|
title = "Create PR to ops repo"
|
|
description = """
|
|
Create a PR to the ops repo to file the vault item.
|
|
|
|
1. Build vault item TOML:
|
|
cat > "$OPS_REPO_ROOT/vault/pending/vault-<id>.toml" <<EOF
|
|
id = "<id>"
|
|
formula = "<formula-name>"
|
|
context = "<description>"
|
|
secrets = []
|
|
EOF
|
|
|
|
2. Create branch and PR:
|
|
git checkout -b "vault/<id>"
|
|
git add vault/pending/vault-<id>.toml
|
|
git commit -m "vault: file <id>"
|
|
git push -u origin "vault/<id>"
|
|
# Create PR via API
|
|
|
|
3. Add PR description explaining the request and expected outcome
|
|
"""
|
|
needs = ["preflight"]
|
|
|
|
[[steps]]
|
|
id = "journal"
|
|
title = "Write vault journal entry"
|
|
description = """
|
|
Append a timestamped entry to the vault journal.
|
|
|
|
File path:
|
|
$OPS_REPO_ROOT/journal/vault/$(date -u +%Y-%m-%d).md
|
|
|
|
Format:
|
|
## Vault run — HH:MM UTC
|
|
|
|
### Items filed
|
|
- <id> — <description>
|
|
|
|
### Status
|
|
- PR #<number> filed, awaiting approval
|
|
|
|
After writing the journal, write the phase signal:
|
|
echo 'PHASE:done' > "$PHASE_FILE"
|
|
"""
|
|
needs = ["create-pr"]
|