Files
bot-bottle/docs/prds
didericis-claude 970c5066d7 feat(agent_provider): migrate tests, drop guest-home/skills-dir env knobs, activate PRD 0050
- tests/unit/test_provision_apply.py covers the new shared
  apply helpers (apply_skills / apply_prompt / apply_provision)
  that replace the per-backend modules deleted in the prior
  commit.
- tests/unit/test_contrib_supervise_mcp.py covers both providers'
  provision_supervise_mcp behavior — confirms the codex bottle
  now runs `codex mcp add` symmetrically with claude.
- tests/unit/test_smolmachines_provision.py drops the four test
  classes whose subjects moved (TestProvisionPrompt /
  TestProvisionProviderAuth / TestProvisionSkills /
  TestProvisionSupervise); the backend-side CA / git / workspace
  classes stay.
- tests/unit/test_docker_provision_provider_auth.py removed; its
  coverage now lives in tests/unit/test_provision_apply.py
  (apply_provision is backend-agnostic, one test file suffices).

Drops the BOT_BOTTLE_CONTAINER_HOME, BOT_BOTTLE_GUEST_HOME,
BOT_BOTTLE_CONTAINER_SKILLS_DIR, and BOT_BOTTLE_GUEST_SKILLS_DIR
env knobs the deleted provision modules used to read. /home/node
is hardcoded everywhere the knobs lived; the values were
effectively constants today and removing them keeps the PRD-0050
surface area honest.

Flips PRD 0050 Status: Draft → Active. Closes #177 on merge.
2026-06-03 21:35:41 -04:00
..
2026-05-07 22:45:36 -04:00

Product requirement docs

One PRD per feature: what to build, why, and how it's scoped. The PRD is the durable spec — it should stand on its own without a Gitea issue thread (see ../README.md for when a PRD is the right document vs. a research note or a decision record).

Naming and numbering

NNNN-kebab-title.md, zero-padded and sequential (0024-…, 0025-…). Numbers are never reused; gaps are fine (there is no 0005). The number is assigned at creation and stays fixed for the life of the doc.

Status

The Status: line near the top tracks the PRD's lifecycle:

  • Draft — proposed, not yet shipped.
  • Active — the design has shipped to main and is in effect.
  • Superseded by PRD NNNN — replaced by a later PRD; kept for history.
  • Retargeted by PRD NNNN — folded into a later PRD's scope.

Format

# PRD NNNN: <short title>

- **Status:** Draft
- **Author:** <who>
- **Created:** YYYY-MM-DD
- **Issue:** #<n>            # optional — convenience pointer only

## Summary
One paragraph: what this builds and the pain it solves.

## Problem
The current state and why it's inadequate.

## Goals / Success Criteria
Bullets a reviewer can check the finished work against.

## Non-goals
What this explicitly does not do — and won't, to head off scope creep.

## Scope
In scope / out of scope, when the boundary needs spelling out.

## Design
How it works: schema, data flow, diagrams, algorithms as needed.

## Implementation chunks
Ordered, mergeable steps (optional; for multi-PR features).

## Open questions
Unresolved decisions — resolve or fold into Design before shipping.

Sections are a guide, not a straitjacket: drop the ones a given PRD doesn't need (a small change rarely needs Scope or Implementation chunks) and add others where they help (e.g. Testing strategy, Alternatives considered, References). Keep the rationale self-contained — inline the reasoning rather than linking out to an issue thread, so the PRD survives a move off Gitea.