You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Create machine-validatable remediation proposals and human-readable approval packets without any execution authority. This is PR 3 of 5 and depends on #311 and #312.
Scope
Typed remediation registry
Create a code-owned, version-controlled registry. Existing shell files remain operator documentation and must not be executed directly by this PR.
Start with 3-5 candidates but mark each proposal_only or execution_candidate. At least the first execution candidates should be low-scope Storage controls with directly readable before/after state. RBAC, networking, Entra, AKS, multi-resource, interactive, and irreversible changes remain proposal-only until separately proven.
Each definition declares:
Registry/playbook ID and semantic version.
Supported rule IDs and exact Azure resource type.
Fixed absolute executable or Azure SDK operation.
Typed, bounded, allowlisted parameters derived from authoritative evidence.
Exact target resource-ID parser and tenant/subscription checks.
Required permissions.
Current-state preconditions and expected postconditions.
Verification rule IDs and relationship/path verification requirements.
Impact, rollback procedure, or explicit irreversible warning.
Timeout, output limit, redaction fields, idempotency behavior, and execution eligibility.
Proposal lifecycle
Add reversible migrations for remediation_runs, immutable plan versions, evidence references, and append-only transitions.
States in this PR: PROPOSED, VALIDATING, VALIDATION_FAILED, AWAITING_APPROVAL, REJECTED, and EXPIRED.
Generate canonical JSON using a documented canonicalization algorithm and a cryptographic plan hash. Bind it to tenant, subscription, resource ID, attack-path ID/version, evidence version, registry version, and expiry. Any executable change changes the hash.
APIs
POST /api/v1/remediation-runs
GET /api/v1/remediation-runs/{run_id}
POST /api/v1/remediation-runs/{run_id}/reject
Enforce server-side roles: viewer may read authorised runs; proposer may create; proposer/approver separation is recorded for later policy; authorised users may reject according to policy.
Optional AI explanation
AI receives only structured published evidence and plan data. Its text is non-executable, stored separately, cites evidence IDs, and fails validation on unsupported material claims. Proposal generation works when AI is disabled, unavailable, or times out.
Required security properties
No command, executable, flag name, target, scope, or parameter value originates from model output or free-form API text.
Objective
Create machine-validatable remediation proposals and human-readable approval packets without any execution authority. This is PR 3 of 5 and depends on #311 and #312.
Scope
Typed remediation registry
Create a code-owned, version-controlled registry. Existing shell files remain operator documentation and must not be executed directly by this PR.
Start with 3-5 candidates but mark each
proposal_onlyorexecution_candidate. At least the first execution candidates should be low-scope Storage controls with directly readable before/after state. RBAC, networking, Entra, AKS, multi-resource, interactive, and irreversible changes remain proposal-only until separately proven.Each definition declares:
Proposal lifecycle
Add reversible migrations for
remediation_runs, immutable plan versions, evidence references, and append-only transitions.States in this PR:
PROPOSED,VALIDATING,VALIDATION_FAILED,AWAITING_APPROVAL,REJECTED, andEXPIRED.Generate canonical JSON using a documented canonicalization algorithm and a cryptographic plan hash. Bind it to tenant, subscription, resource ID, attack-path ID/version, evidence version, registry version, and expiry. Any executable change changes the hash.
APIs
POST /api/v1/remediation-runsGET /api/v1/remediation-runs/{run_id}POST /api/v1/remediation-runs/{run_id}/rejectEnforce server-side roles: viewer may read authorised runs; proposer may create; proposer/approver separation is recorded for later policy; authorised users may reject according to policy.
Optional AI explanation
AI receives only structured published evidence and plan data. Its text is non-executable, stored separately, cites evidence IDs, and fails validation on unsupported material claims. Proposal generation works when AI is disabled, unavailable, or times out.
Required security properties
Measurable acceptance criteria
Delivery evidence attached to PR
Deferred
Natural-language-to-shell, arbitrary commands, multi-step autonomous planning, automatic rule generation, automatic approval, and execution.
Dependencies and handoff
Requires #311 and #312. #314 may enable execution only for registry entries explicitly marked
execution_candidateand reviewed under this issue.Mandatory safety and automation checklist
Registry safety
proposal_onlyunless separately proven.Immutable plan
AI and input isolation
Authorization and audit
Tests and proof
Exit gate