- Move ASPICE docs to chanoraapp/docs submodule at docs/ - Move development docs to dev-docs/ (superpowers, offline-knowledge, impl-mapping) - Add AGENTS.md with project conventions for AI agents - Add impl-mapping.md (SAD component → source file mapping) - Archive completed plans to dev-docs/superpowers/plans/_archived/ - Remove AGENTS.md from .gitignore (now tracked)
5.9 KiB
AGENTS.md — Chanora Project Conventions
Project Overview
Chanora is a cross-platform voice client (Flutter + Rust) targeting TeamSpeak-compatible servers. The project follows ASPICE engineering processes with full traceability from system requirements through verification.
Repository Structure
chanora/ ← Code repo (this one)
├── docs/ → chanoraapp/docs ← Git submodule: ASPICE docs, Docusaurus doc site
├── dev-docs/ ← Local-only development docs
│ ├── superpowers/ ← AI agent specs and plans
│ │ ├── specs/ ← Feature/design specs (active)
│ │ └── plans/ ← Implementation plans (active)
│ │ └── _archived/ ← Completed plans
│ ├── offline-knowledge/ ← Doc maintenance tools, link coverage
│ ├── implementation-status-* ← Code state snapshots
│ └── release/ios-build.md ← Operational build instructions
├── apps/chanora_flutter/ ← Flutter application
├── core/chanora_core/ ← Rust core API + orchestration
├── crates/ ← Rust crates (protocol, audio, state, etc.)
└── dev-docs/impl-mapping.md ← SAD component → source file mapping
Documentation Two-Repo Model
docs/ is a git submodule pointing to the chanoraapp/docs repository. It serves a Docusaurus doc site with ASPICE traceability. It is NOT a local directory you can freely create files in.
What lives where
| Content | Location | Reason |
|---|---|---|
| SysRS, SysDes, SRS, SAD, SDD | docs/ (submodule) |
ASPICE baselines, served on doc site |
| Verification plans (SWE.4/5/6, SYS.4) | docs/ (submodule) |
ASPICE verification evidence |
| Governance, traceability, decision register | docs/ (submodule) |
ASPICE governance |
| Security, privacy, legal | docs/ (submodule) |
Stakeholder-facing |
| UI/UX guidelines, i18n architecture | docs/ (submodule) |
Design references |
| Feature specs and implementation plans | dev-docs/superpowers/ |
Code-coupled, agent working files |
| Link coverage, doc quality analysis | dev-docs/offline-knowledge/ |
Maintenance tools |
| Implementation status snapshots | dev-docs/ |
Code state tracking |
| Source file path references | dev-docs/impl-mapping.md |
Developer convenience, not ASPICE |
Rules for agents
-
Never create or edit files in
docs/without understanding it's a submodule. Changes there require committing in thechanoraapp/docsrepo first, then updating the submodule pointer in this repo. -
ASPICE documents do not contain code file paths. ASPICE traces requirement IDs (e.g.,
SysRS-233,SRS-045,SDD-MOD-009), not source file paths. If you need to map a component to its source, use or updatedev-docs/impl-mapping.md. -
Specs and plans go in
dev-docs/superpowers/. Follow the naming convention:YYYY-MM-DD-<topic>-design.mdfor specs,YYYY-MM-DD-<topic>.mdfor plans. -
Completed plans move to
_archived/. Once a plan is fully implemented and verified, move it todev-docs/superpowers/plans/_archived/. -
Doc site uses Docusaurus. The
chanoraapp/docsrepo uses Docusaurus 3.10 (Meta-maintained). Do not add MkDocs, mdBook, or other doc site generators.
ASPICE Traceability Chain
SysRS → SysDes → SRS → SAD (SWE.2) → SDD (SWE.3) → Verification
↓ ↓
SWE.4 (unit) SWE.4/5/6/SYS.4
- Requirement IDs are the traceability mechanism, not file paths.
- Every downstream document must reference upstream IDs it traces from.
- Verification plans map to their upstream design/requirements level:
- SYS.4 ← SysDes, SysRS
- SWE.5 ← SAD (SWE.2)
- SWE.4 ← SDD (SWE.3)
- SWE.6 ← SRS
- Requirement IDs should be added to doc front matter
tags:for traceability browsing.
Code Architecture
| Component | Location | Responsibility |
|---|---|---|
| Flutter app shell | apps/chanora_flutter/ |
UI, Material 3, navigation, localization |
| Rust core | core/chanora_core/ |
Session orchestration, bridge events |
| Protocol adapter | crates/chanora_protocol/ |
TeamSpeak protocol via tsclientlib |
| State sync | crates/chanora_state/ |
Snapshots, deltas, reducers |
| Audio subsystem | crates/chanora_audio/ |
Capture, DSP, Opus, PTT |
| Storage | crates/chanora_storage/ |
Bookmarks, identity, encryption |
| Diagnostics | crates/chanora_diagnostics/ |
Redaction, logs, export |
| Resolver | crates/chanora_resolver/ |
SRV/TSDNS/DNS resolution |
| Prefetch | crates/chanora_prefetch/ |
Resolution warming, TTL cache |
| Bridge | crates/chanora_bridge/ |
Flutter/Rust typed DTO boundary |
| Cache | crates/chanora_cache/ |
Avatar/icon blob cache |
Coding Conventions
- Rust: Follow workspace
Cargo.tomlstructure. Runcargo check,cargo clippy,cargo testbefore committing. - Flutter: Run
flutter analyze,flutter testbefore committing. - No code comments unless explicitly requested.
- Git commits: Follow convention in
docs/governance/git-commit-message-convention.md(accessible via submodule). - Bridge boundary: Flutter must not directly depend on protocol-library internals. All cross-boundary communication goes through
chanora_bridgetyped DTOs.
Verification Commands
cargo check && cargo clippy && cargo test
cd apps/chanora_flutter && flutter analyze && flutter test
Important References
- Traceability matrix:
docs/governance/traceability-matrix.md - Decision register:
docs/governance/product-decision-register.md - Security guidelines:
docs/security/security-privacy-legal-guideline.md - Release readiness:
docs/release/release-readiness-go-nogo-record.md - Doc site repo:
chanoraapp/docs(Docusaurus) - Doc site local preview:
cd docs && npm run start