Adaptive organic security guidance framework. Agents decide what's understood and escalate what isn't. Security that gets more automatic as it matures, with root kept human.
Assistant: codex Assistant-Model: gpt-6-astra Assistant-Session: 01a101af-e240-7882-a1e3-e37720cbdbea |
||
|---|---|---|
| envelopes | ||
| specs | ||
| src/emergent_security | ||
| tests | ||
| workplans | ||
| .custodian-brief.md | ||
| .gitignore | ||
| AGENTS.md | ||
| emergent-security-agent.md | ||
| INTENT.md | ||
| pyproject.toml | ||
| README.md | ||
| SCOPE.md | ||
emergent-security
Adaptive organic security guidance framework. Agents decide what's understood and escalate what isn't. Security that gets more automatic as it matures, with root kept human.# Emergent Security — default envelope
The default delegation envelope of the Emergent Security canon v0.8 (A6) as policy data, the tenant envelopes (B10, B11) as examples, and a small reference decision function (A3) that the fixtures run against.
envelopes/
scales.yaml ordinal risk scales shared by all envelopes
default-envelope.yaml A6: what an L0 agent decides alone in a HOT build estate
examples/
platform-tenant-acme.yaml B10: platform-owned outer bound for one tenant
tenant-governance-acme.yaml B11: tenant-owned narrowing, self_governed mode
src/emergent_security/ one module per concern (see package docstring)
tests/fixtures/
decisions/*.yaml request → expected decision, data only
tenants/governance-validation.yaml
Run
pip install -e '.[test]'
pytest
Semantics in one screen
- Modes:
autonomous,autonomous_with_obligations,escalate,deny,root_authorization_required. - Variants refine a row by request attributes; first match wins and may replace mode, rules, obligations and evidence.
denyandroot_authorization_requiredare constitutional: they apply in every scope, including tenants and COLD zones, and no delegation overrides them.- Every other row applies only where
applies_whenmatches (L0, HOT, build, no tenant). escalatemeans "not delegated here". A registry delegation can grant it (most specific scope wins, ties by id).- Inside a tenant the default envelope never grants anything. Grants come from the platform tenant envelope or the registry, always bounded by the effective envelope: platform ∩ tenant governance.
- Risk fails safe. A dimension the envelope declares but the request leaves unclassified, or classifies with an unknown value, counts as exceeding.
Changing the policy, test first
- Add or change a case in
tests/fixtures/decisions/*.yamldescribing the request and the expected decision. Runpytest; it must fail. - Change
envelopes/default-envelope.yaml(or an envelope example) until it passes. Touch code only if the canon's semantics changed. - Adding an A6 row also means updating
A6_CLASSESintests/test_default_envelope.pyand the canon table.
The suite also enforces determinism, idempotency (inputs never mutated, registry order irrelevant), that auto mode equals no tenant configuration, and the G7 tenant invariants.