OpenAgents Control Repository Management Plan
Product Definition
OpenAgents Control should be maintained as a human-controlled orchestration and context layer for AI-assisted work, initially focused on software development.
Its current product promise is:
- Project-aware output — agents load version-controlled project and team patterns before acting.
- Human control — agents propose plans and request approval before execution or destructive operations.
- Editable behavior — agents and context remain inspectable Markdown/configuration rather than hidden proprietary behavior.
- Repeatability — teams can share context, agents, and workflows through source control.
- Behavioral validation — the eval framework checks approval gates, context loading, tool use, and failure handling.
- Distribution — a registry, profiles, installer, and package tooling distribute supported components.
- Model flexibility — users can choose providers and models without redesigning the workflow.
OpenCode is the primary runtime today. Claude Code support is beta. Cursor, Windsurf, a larger package manager, marketplace, lockfile, and broad multi-IDE management are strategic directions, not fully adopted current commitments.
Primary Users
Current priority
- Solo developers who want safe setup, predictable behavior, and quick recovery.
- Team leads who need shared standards, reproducible configuration, and controlled changes.
Later users
- Open-source maintainers who publish and review community components.
- Content creators who would require simpler or graphical interfaces.
- Enterprise administrators, which should remain post-v1 rather than driving current complexity.
Product Principles
Every feature should pass these tests:
- Safe by default: no silent package installs, destructive cleanup, overwrites, or remote execution.
- Previewable: risky operations show planned effects before execution.
- Recoverable: backups, atomic writes, rollback, and clear failure states.
- Local-first: project configuration wins when working in a repository.
- User-owned customization: updates must not destroy unmanaged or modified files.
- One source of truth: avoid independent installer, resolver, model, and metadata implementations.
- Evidence-driven: tests must exercise the behavior actually changed.
- Focused changes: large architectural ideas are split into reviewable vertical slices.
Current Architecture
The implemented repository has four central systems:
- Agents and subagents in
.opencode/agent/ define orchestrators and delegated specialists.
- Context in
.opencode/context/ records standards, workflows, and project knowledge discovered lazily by ContextScout.
- Registry and profiles in
registry.json and .opencode/profiles/ describe distributable components and dependencies.
- Evaluation and validation in
evals/ and scripts/ test agent behavior and repository structure.
Additional systems include the shell installer/updater, Claude Code plugin, compatibility package, task management, skills, and experimental ability enforcement.
Strategic Decisions Required
Record these as ADRs before restarting the large v1 refactor:
- Installer authority: Bash, Node/Bun CLI, or one shared resolver consumed by all frontends.
- File ownership: define generated, OAC-owned, user-edited, and unmanaged files.
- Runtime: supported Node versions and whether Bun is required, optional, or build-only.
- Registry versioning: separate package version, registry data version, and schema version.
- Agent metadata: decide between strict OpenCode frontmatter and centralized metadata.
- Permission syntax: adopt singular
permission and retire contradictory examples.
- Model configuration: inherited runtime defaults, per-agent values, or a central optional router.
- Multi-IDE scope: define what is native, converted, or intentionally unsupported.
- Editable versus declarative installs: define how Nix/immutable modes coexist with editable agents.
- Release model: version bump, npm publication, GitHub release, rollback, and support policy.
Roadmap
Phase 0 — Security and governance
- Fix privileged PR workflow execution.
- Fix broken PR change detection and add meaningful test jobs.
- Add
SECURITY.md and enable private vulnerability reporting.
- Define required checks and branch protection.
- Establish the source-of-truth hierarchy for code, registry, docs, context, and planning proposals.
Phase 1 — Stabilize 0.7.x
- Process the six focused merge candidates from the July PR audit.
- Fix installer, context-path, updater, and task-management regressions through focused replacements.
- Correct stale README, roadmap, changelog, version, and context documentation.
- Establish Linux, macOS, Windows/Git Bash, and worktree validation where relevant.
- Publish one stabilization release after installation and update smoke tests pass.
Phase 2 — Decide the v1 architecture
- Write and approve the ten ADRs above.
- Define a shared file-ownership and installation contract.
- Reconcile the shell installer with the existing CLI work from #259.
- Define migration from current installations.
- Decide which package-refactor features are truly v1: onboarding, discovery, lockfile, rollback, security, and multi-IDE support.
Phase 3 — Deliver v1 incrementally
- Build vertical slices, not one large branch.
- Start with safe initialization and ownership tracking.
- Add doctor/status and rollback before broad update automation.
- Add reproducible lockfiles before community distribution.
- Add marketplace/community features only after signing, verification, and contribution governance exist.
PR Management Policy
Intake
Every PR must have:
- A linked issue or a clear reason why one is unnecessary.
- One problem and one coherent outcome.
- Scope, risk, user impact, and test plan.
- Conventional title.
- Documentation and migration notes when behavior changes.
Required review states
- Needs triage — metadata and ownership incomplete.
- Ready for review — checks pass and acceptance criteria are clear.
- Changes requested — actionable blockers recorded.
- Approved — no unresolved critical findings.
- Deferred — valid but not aligned with the current roadmap.
- Superseded/close — stale, duplicated, or replaced.
Size policy
- Small fix: ideally fewer than 200 changed lines.
- Feature: one independently testable vertical slice.
- Architecture program: tracking issue plus multiple PRs; never a single 10k–20k-line merge.
Review SLA
- Security: same day.
- User-blocking bug: 2 business days.
- Small maintenance PR: 5 business days.
- Feature or architecture PR: triage within 7 days; schedule separately.
Issue Management Policy
- Triage new issues weekly.
- Label by type, area, priority, and status.
- Close answered questions after confirmation or a reasonable inactivity period.
- Merge duplicates into one canonical issue.
- Require reproduction details for bugs before implementation unless impact is urgent.
- Convert large features into an epic with explicit decisions and vertical slices.
- Add progress comments at least every two weeks for active work.
Worktree and Branch Policy
- Use one worktree per active PR or focused issue.
- Keep worktrees outside the main checkout in a single managed parent directory.
- Never force-remove a dirty worktree by default.
- Never delete Docker volumes, environment files, or branches as an implicit cleanup step.
- Never run dependency lifecycle scripts automatically when checking out an untrusted PR.
- Remove worktrees only after verifying clean state and merged/abandoned status.
- Delete remote branches after merge unless retained for an active release or long-running program.
- Review stale branches monthly.
Validation Matrix
| Changed area |
Minimum validation |
| Agent/context |
Frontmatter validation, registry validation, context links, focused eval |
| Registry/profile |
TypeScript and Bash validator tests, dependency resolution, profile install smoke test |
| Installer/updater |
Shell syntax, unit fixtures, clean install, upgrade, collision, rollback, platform matrix |
| Eval framework |
TypeScript build, Vitest, suite validation, focused SDK test |
| Plugin |
Manifest validation, installed-plugin discovery, command/skill smoke test |
| Task/worktree tooling |
Shell tests, normal checkout, linked worktree, dirty-state and containment tests |
| Package/CLI |
Typecheck, unit tests, npm pack, clean global/local install, migration test |
| Workflow |
Least-privilege review, fork simulation, required-check behavior |
| Documentation |
Link validation, version/current-command review |
Release Management
Before release:
- Confirm approved scope and semantic version.
- Run the complete validation matrix for affected systems.
- Reconcile
VERSION, package versions, registry/schema versions, and lockfiles.
- Update a chronological, user-focused changelog.
- Verify package contents with
npm pack.
- Test fresh install and update from the previous supported version.
- Publish npm artifacts and GitHub release through a documented, auditable runbook.
- Verify installation from the published artifacts.
- Record rollback instructions and known issues.
Maintenance Cadence
Weekly
- Triage new issues and PRs.
- Review security and user-blocking reports first.
- Keep no more than three implementation items actively in progress.
- Update owners, status, and blockers.
Monthly
- Review stale PRs, issues, branches, and worktrees.
- Audit dependency and action updates.
- Check README, roadmap, changelog, and context drift.
- Review release readiness and health metrics.
Quarterly
- Reconfirm product priorities and supported platforms.
- Review accepted ADRs and deprecations.
- Audit installer/resolver duplication and maintenance cost.
- Review contributor experience and security posture.
Health Metrics
Track:
- Median time to first PR review.
- Open security and user-blocking issues.
- PRs older than 30 days without a decision.
- Percentage of PRs with meaningful behavioral tests.
- Install/update success by supported platform.
- Documentation pages known to be stale.
- Number of active versus stale branches and worktrees.
- Release frequency and rollback incidents.
Source-of-Truth Order
Until formal ADRs are adopted, use:
- Executable code, package manifests, registry, and active workflows.
- Root README for current public positioning.
- Package-level READMEs for implemented package behavior.
- Current repository standards and context.
- Contributor guides and historical audits.
docs/archive/planning/ as archived historical proposals only.