| name | backend-runtime-governance |
| description | Use when changing backend route placement, service boundaries, runtime ownership, or backend docs/tests alignment. |
Hussh Backend Runtime Governance Skill
Purpose and Trigger
- Primary scope:
backend-runtime-governance
- Trigger on backend route placement, service boundaries, runtime ownership, and backend runtime docs/tests alignment.
- Avoid overlap with
backend-api-contracts and backend-agents-operons.
Coverage and Ownership
- Role:
spoke
- Owner family:
backend
Owned repo surfaces:
consent-protocol/api
consent-protocol/hushh_mcp/services
consent-protocol/hushh_mcp/integrations
consent-protocol/tests/services
Non-owned surfaces:
backend
security-audit
repo-operations
Do Use
- Route and service placement decisions inside the backend runtime.
- Runtime ownership boundaries between routes, services, and integrations.
- Aligning backend runtime docs and service-layer tests with implementation changes.
- Reviewing runtime DB table ownership, data-class posture, retention policy, and access paths when backend migrations or services add durable state.
Do Not Use
- Broad backend intake where the correct spoke is still unclear.
- Agent/operon orchestration work.
- Proxy contract work that primarily belongs to API contracts.
Read First
docs/reference/architecture/architecture.md
docs/reference/architecture/api-contracts.md
consent-protocol/docs/README.md
.codex/skills/backend-runtime-governance/references/async-runtime-performance.md
docs/reference/architecture/schema-migration-discipline.md
Workflow
- Confirm the runtime boundary before moving code between routes, services, or integrations.
- Keep backend tests and backend docs aligned with runtime changes.
- For any migration or durable service table, confirm the runtime DB data-plane contract declares owner, data class, primary access path, expected row growth, retention policy, deletion behavior, and plaintext/ciphertext posture.
- Treat consent validation, trust, and audit rules as
security-audit concerns when they become the primary boundary.
- Treat
uv as the canonical Python toolchain for contributor and CI flows; requirements*.txt are generated runtime artifacts, not the source of dependency truth.
- For backend bootstrap, packaging, or runtime-governance changes, rerun the authoritative service checks once directly and once again through the canonical repo entrypoint.
- When a backend runtime failure is visible in UAT or CI, use
./bin/hushh codex rca --surface runtime --text or --surface uat --text first so service fixes are anchored to the blocking runtime classification instead of log-chasing.
- For slow or intermittently "unreachable" endpoints, run the async runtime performance health check before editing: confirm whether the asyncio event loop is blocked by a synchronous call (DB client, external SDK) rather than a slow DB, then apply the
run_in_threadpool/asyncio.to_thread offload and the layered caching strategy in references/async-runtime-performance.md. Never call the synchronous db/db_client.py client or a blocking SDK directly from an async def handler.
Handoff Rules
- If the request is still broad or ambiguous, route it back to
backend.
- If the task is primarily a proxy/backend wire contract, use
backend-api-contracts.
- If the task is primarily about agents or operons, use
backend-agents-operons.
- If the task becomes trust/IAM/vault policy work, route to
security-audit.
Required Checks
cd consent-protocol && python3 -m pytest tests/services -q
./bin/hushh codex data-model-audit