📋Capabilities (Current State)
One row per capability: how production behaves right now, with status (active / off-by-default / planned) and flag defaults.
Division of roles: the feature map (Layer 3) records development progress; this capability list shows the current state — not whether something is implemented, but how production behaves right now, via status and flag defaults.
ℹ️How to read this
“Implemented” and “enabled by default” are different things (see “How to Read This Spec”).
Currently active 6 / implemented-but-off 12 / planned 0
(18 total). A default-OFF capability does nothing in production until its flag is raised.
Inbound AI verdict
| Capability | Status | Flag (default) | Notes |
|---|
| Rule-layer verdict (8 steps) | active (on by default) | — (always) | blocklist→whitelist→hours→auth-KW→KW score→opener floor→category→threshold
backend/engine/scorer.py |
| Termination safety valve | active (on by default) | AEGIS_TERMINATE_MIN_SCORE=0.8 | score-based termination only at ≥0.8; L1 gates unconditional
backend/engine/verdict_port.py |
| route-decision 3-way branch (Gate 1) | active (on by default) | — (always) | pre-call block / human / ai; undecidable falls to a human (fail-open)
backend/api/route_decision.py |
| AMI Hangup (Gate 2) | implemented, off by default | bridge feat/d1(未マージ) | awaiting on-device verification; Docker-verified, guarded by the 0.8 valve
aegis-sip-bridge src/bridge.py |
| LLM-layer shadow recording | implemented, off by default | AEGIS_VERDICT_MODE=rules(既定) | set to shadow to start rules-alongside recording (record-only, main line unchanged)
backend/api/realtime_session.py |
| fraud enum (fraud classification) | implemented, off by default | AEGIS_FRAUD_ENUM_SCORE=0.95 | platform #67 merged; awaiting bridge #17 — live only when both land
backend/services/tools_core.py |
Outbound restriction
| Capability | Status | Flag (default) | Notes |
|---|
| Premium / international call blocking | implemented, off by default | AEGIS_BLOCK_PREMIUM / AEGIS_BLOCK_INTERNATIONAL(既定0) | enabled with =1 (switch-style; passes through by default)
voice-edge configs/extensions.d/30-from-ext.conf |
| Emergency numbers always allowed | active (on by default) | — (always) | 110/119/118 always callable regardless of flags
voice-edge configs/extensions.d/30-from-ext.conf |
Recording & PII
| Capability | Status | Flag (default) | Notes |
|---|
| retention_until stamping | active (on by default) | AEGIS_REALTIME_RETENTION_DAYS=30 | stamps a retention deadline on all call_logs paths (deadline only; never deletes)
backend/core/retention.py |
| Deletion sweeper (periodic task) | implemented, off by default | AEGIS_RETENTION_SWEEP_SCHEDULER_ENABLED=false | ⚑ actual deletion impossible in code (F1 forces dry-run); unlocking awaits F2
backend/services/retention_scheduler.py |
| Realtime recording | implemented, off by default | AEGIS_REALTIME_RECORDING_ENABLED=false | the RecordingStorage abstraction is wired; full implementation awaits the B3 design
backend/services/recording_storage.py |
Billing
| Capability | Status | Flag (default) | Notes |
|---|
| Usage metering | implemented, off by default | AEGIS_USAGE_METERING_ENABLED=false | append-only, idempotent, PII-less; recorded only at call finalization
backend/services/usage_metering.py |
Notifications
| Capability | Status | Flag (default) | Notes |
|---|
| App notification | implemented, off by default | AEGIS_NOTIFY_APP_ENABLED=false | actual sending is a stub (awaiting Chris's confirmation)
backend/notifications/channels.py |
| Slack notification | implemented, off by default | AEGIS_NOTIFY_SLACK_ENABLED=false | implemented (the legacy SlackNotifier wrapped in the channels abstraction)
backend/notifications/channels.py |
| LINE notification | implemented, off by default | AEGIS_NOTIFY_LINE_ENABLED=false | interface only; sending not implemented
backend/notifications/channels.py |
| Email notification | implemented, off by default | AEGIS_NOTIFY_EMAIL_ENABLED=false | interface only; sending not implemented
backend/notifications/channels.py |
MCP
| Capability | Status | Flag (default) | Notes |
|---|
| MCP 28 tools (read 12 / write 13 / approval 3) | active (on by default) | AEGIS_MCP_TRANSPORT=stdio(既定) | AI agents get dashboard-equivalent reads and writes; see the MCP Tools page
backend/mcp/tools/ |
| Strict approval mode (enforced two-person approval) | implemented, off by default | strict_approval_mode_default=False(client 単位) | for a client with it ON, loosening changes require propose → approval by another operator → apply
backend/services/strict_approval_gate.py |
Not supported (explicitly)
- Outbound calling in general — groundwork only on the roadmap
- FAQ answering — KB integration is planned (not implemented)
- Always-on recording — off by default; continuous recording is not supported