Replace the scattered per-agent .txt-file mapping (whose names embedded
model-family identity like tier-qwen-med and tier-kimi and went stale
the moment a model was swapped) with a single source-of-truth manifest
at .opencode/models/tiers.yaml. The four tier slots get model-agnostic
slot-based names (tier-min, tier-0, tier-1, tier-2); the model in each
slot is configured ONLY in the manifest.
Derived artifacts (per-agent .txt files and the mapping table block in
tier-dispatcher.md) are now generated by tools/sync_tier_models.py.
A drift-detection test in tests/auto_agents/test_tier_model_registry.py
fails CI if any derived file diverges from the manifest, if an agent
referenced by the manifest lacks an agent file, if the manifest cites
a provider not declared in opencode.json, or if opencode.json carries
a stale tier-* entry.
To swap a model in a slot: edit tiers.yaml -> run
python3 tools/sync_tier_models.py -> commit. The runtime dispatcher
re-reads the .txt files per cycle (no restart); the static OpenCode
config path needs a server restart.
Tier rename mapping (escalation_tier integers UNCHANGED):
tier-qwen-small -> tier-min (slot -1)
tier-qwen-med -> tier-0 (slot 0, default first attempt)
tier-qwen-large -> tier-1 (slot 1)
tier-kimi -> tier-2 (slot 2)
Vestigial tier-* agents removed (declared but never in the active
mapping): tier-haiku, tier-sonnet, tier-opus, tier-codex,
tier-gpt5-mini, tier-gpt5-nano, tier-o4-mini.
estimator-implementation.md now reasons in capability descriptors
(cheapest / default / advanced / complex) instead of model-family
labels (qwen-small / qwen-med / qwen-large / kimi), so the estimator
stays correct across model swaps. The stale "default tier = gpt-5-mini"
docstring claim (already drifted to claude-haiku-4-5) is removed.
Companion prose updates across every consumer of tier names:
- Agent prompts: tier-dispatcher.md, implementation-worker.md,
estimator-implementation.md
- Skills: implementer-pr-context, implementer-workspace
- Python: dispatch_implementer.py, _opencode_worker.py,
_pr_context_sentinel.py, implementer_workspace.py,
setup_auto_labels.py, _attempt_history.py
- Tests: test_worker_permissions.py (parametrize list + byte-identity
test now covers 4 slot files instead of 3 family-named files),
test_opencode_worker_models.py (synthetic-fixture names updated)
- Docs: .opencode/models/README.md, docs/development/models.md,
docs/development/agent-system-specification.md,
docs/development/auto-agents-tier-2-3-plan.md,
docs/development/implementer-in-cycle-escalation-plan.md,
docs/development/final-working-harvest-plan.md
Validation: 1625 tests pass (+6 net new from the tier-registry test
file), 3 skipped. python3 tools/sync_tier_models.py --check exits 0.
local_ci_gate.sh --gate lint PASS.
Files: 9 added, 22 deleted, 18 modified. The drift-detection test
ran green on every step of the refactor, catching one out-of-sync
.txt file before commit.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Restore original permission structure and model configuration while adding
only the changes needed for issue #7521: forgejo_update_pull_request
permission and PR Workflow for Major Changes documentation section.
Fixes addressed:
- Restore flat permission format (was incorrectly restructured to nested)
- Restore model to claude-haiku-4-5 with reasoningEffort max
- Restore removed critical rules (6: label delegation, 7: pagination)
- Restore removed permission denials (*, doom_loop, question, etc.)
- Add CHANGELOG.md entry for this feature
- Restore CONTRIBUTORS.md to master (remove unrelated changes)
ISSUES CLOSED: #7521
# Conflicts:
# CONTRIBUTORS.md
Renamed backlog-grooming-pool-supervisor to grooming-pool-supervisor and
backlog-grooming-worker to grooming-worker. The grooming agents now analyze
all open issues AND pull requests (not just the backlog). Workers perform a
full 10-point quality analysis on a single item instead of processing
batches. PRs with unaddressed reviews are prioritized. PR labels are synced
from linked issues. Workers post [GROOMED] markers for tracking.
Fixed critical issue: implementation-pool-supervisor now correctly dispatches
workers through tier selectors (tier-haiku/codex/sonnet/opus) instead of
launching implementation-worker directly, ensuring the escalation model
actually sets the correct model tier. Added implementation-worker to all
four tier selector task permissions.
Updated session tags from AUTO-BLOG to AUTO-GROOM. Updated specification
sections 4.2.1, 5.5, 5.5.1, 9.7, and architecture diagram.
ISSUES CLOSED: n/a
Add comprehensive responsibility-first analysis of the entire agent system
covering 144 named responsibilities (R-01 through R-144) organized into 8
categories with 29 sub-categories and complete bidirectional cross-references.
Key additions:
- Section 22.0: Categorized Responsibility Index with navigation guide
- Section 7.9: Universal Supervisor Responsibilities (13 shared baseline)
- Section 22.145: Redundancy Analysis Summary with depth distribution,
highest-redundancy items, most cross-referenced agents, and 5 named
redundancy patterns
- 30 agent back-reference tables covering ~50 individual agents
- Category introductions explaining scope and significance
- 6th foundational principle (Defense-in-Depth) added to Section 1.1
Categories: A (Development Lifecycle, 50 items), B (Quality Assurance),
C (Ticket Hygiene), D (Architecture), E (Operational Health),
F (Human Interaction), G (Strategic Governance), H (Project Standards).
ISSUES CLOSED: N/A
- Fixed duplicate section number: two §2.4 -> renamed first to §2.3.1
- Verified all section cross-references valid
- Verified Appendix A model/mode data matches frontmatter (10 samples)
- Verified mkdocs.yml navigation entry
- Comprehensive stale-name sweep: zero hits across all files
- Added v1.36.0 revision entry with final statistics
- Added FORGEJO_REVIEWER_PASSWORD to Section 6.17 env table and Appendix C
- Purged all remaining "self-approval"/"shared bot account" language from spec
- Updated Sections 8.3.2 and 8.3.3 for dual-account architecture
- Added v1.31.0 revision entry
- Added v1.27.0 entry: all 17 agents fixed with correct READ-before-CREATE order
- All agents now include rolling average interval defaults and Estimated Cycle Interval requirement
- Fixed broken Section 20.4 reference (section was removed in v1.16.0)
- Fixed wrong Section 13.2 reference (should be Section 11.2 for escalation)
- Replaced stale stale-check work type with awaiting-review in Section 10.1
- Added v1.19.0 revision entry
- Fixed build-opencode model in Appendix A from (not specified) to claude-sonnet-4-6
- Added v1.18.0 revision entry documenting 6 functional bugs fixed in agent definitions
- Adds a comprehensive specification for the autonomous agent system.
- Details the intended behavior, interactions, and design of all agents.
- Includes Kroki-based diagrams for workflows and interactions.
- Serves as the source of truth for agent implementation.