AACM Compliance Policy
The readiness request should not just ask, “Can this machine join?”
It should ask:
Can this machine join under the current policy for the role it is requesting?
And for your side-thread with the Merry Men and BB, you can absolutely call that:
AACM Compliance Policy
That does two useful things:
- Keeps AACM in the story.
- Turns “how do we test AACM?” into something concrete.
The policy is what tells Get Smart how to test
The readiness request arrives with a requested role:
{
"machine_id": "gsmr-lab-001",
"requested_role": "aacm_demo_candidate",
"requested_action": "join_managed_workflow",
"policy_set": "aacm-compliance-policy-v0.1"
}Then Get Smart says:
“Fine. For
aacm_demo_candidate, what evidence is required?”
The AACM Compliance Policy defines that.
What the policy contains
The policy should define:
|
Policy section |
Purpose |
|---|---|
|
Role |
What kind of machine is requesting admission |
|
Required evidence |
What the machine must provide |
|
Required checks |
What must be tested |
|
Pass criteria |
What counts as compliant |
|
Review triggers |
What sends it to human review |
|
Remediation triggers |
What sends it to AACM or another path |
|
Prohibited actions |
What AACM must not do |
|
Output format |
What AACM/Get Smart must return |
|
Traceability |
What evidence, rule version, and decision must be recorded |
This becomes both:
- the readiness rulebook
- the AACM test specification
Lovely double-use. One scroll, two dragons. 🧾
The important separation
Get Smart does not need to know AACM’s secret inner workings.
Get Smart needs to know:
Given this policy, this input, and this evidence, what output should AACM produce?
That means you can test AACM from the outside.
Not:
“Show me your magic brain.”
But:
“Here is a known case. Here is the policy. Here is the expected classification. Does AACM produce the correct recommendation?”
That is exactly demo-readiness thinking.
Example policy logic
For a machine requesting AACM demo admission:
policy_id: aacm-compliance-policy-v0.1
role: aacm_demo_candidate
required_evidence:
- machine_id
- owner
- requested_role
- os_name
- os_version
- patch_status
- agent_status
- build_source
rules:
- id: owner_required
if_missing: owner
status: insufficient_evidence
- id: patch_status_required
if_missing: patch_status
status: review_required
- id: outdated_patch_status
if: patch_status == "outdated"
status: remediation_required
remediation_path: aacm_review
- id: clean_machine_no_agent_required
if:
patch_status: current
agent_status: not_installed
status: approved
agent_required: false
- id: agent_only_if_remediation_approved
if:
status: remediation_required
agent_required: policy_decision
The gem is this rule:
Clean machine, no agent required.
That preserves your whole design principle.
How this tests AACM
You create test cases.
Test case 1: Clean machine
Input:
{
"machine_id": "gsmr-lab-001",
"owner": "get-smart-lab",
"requested_role": "aacm_demo_candidate",
"os_name": "RHEL-compatible",
"os_version": "9",
"patch_status": "current",
"agent_status": "not_installed",
"build_source": "kickstart:rhel9-minimal.ks"
}Expected output:
{
"readiness_status": "approved",
"agent_required": false,
"remediation_required": false
}Test case 2: Missing patch evidence
Expected output:
{
"readiness_status": "review_required",
"agent_required": false,
"reason": "patch_status_missing"
}Test case 3: Outdated machine
Expected output:
{
"readiness_status": "remediation_required",
"remediation_path": "aacm_review",
"agent_required": "requires_policy_decision"
}Test case 4: YeOldeBox
Expected output:
{
"readiness_status": "legacy_exception_required",
"agent_required": false,
"reason": "legacy_or_vendor_restricted_machine"
}That is how you test AACM without letting it run wild through the village with a wrench.
Where AACM sits
The flow becomes:
Machine readiness request
↓
Machine identity check
↓
AACM Compliance Policy selected
↓
Evidence collected
↓
Get Smart readiness rules applied
↓
Decision:
approved / review_required / remediation_required / rejected
↓
Only if needed:
route to AACM recommendation or remediation pathSo AACM is not the gatekeeper by default.
Policy is the gatekeeper.
AACM is a possible evaluator/remediator under policy.
The phrase I’d use
AACM Compliance Policy defines what evidence is required, what checks are valid, what outputs are expected, and when AACM is allowed to recommend or perform remediation.
Or shorter:
The policy tells us how to test AACM, and when AACM is allowed to act.
That is the spine.
Phase One version
For the Camelot/Kickstart lab, your first target can be tiny:
Goal: prove that a machine built from a known Kickstart profile can submit a readiness request and be classified under aacm-compliance-policy-v0.1.
Minimum pieces:
- one sample Kickstart profile
- one sample machine evidence JSON
- one policy YAML
- one readiness assessment script/checklist
- one expected output JSON
-
three test cases:
- approved
- review required
- remediation required
That lets you say, truthfully:
Get Smart Machine Readiness can evaluate a machine readiness request against a named policy and produce a traceable status.
That is a real claim. Not vapor. Not “AI dust in a velvet pouch.”