AOS8 0.6 live-lab evaluation
Status: in progress
Branch: feat/centralmcp-0.6.0 (historical branch name in the legacy secure-ssid/centralmcp repository, preserved verbatim as provenance; the current project is hpe-networking-mcp)
Safety mode: read-only target evidence; no configuration write attempted
This document records live evidence gathered for the 0.6 migration work. It is separate from the completed 0.5 read-only evaluation because the 0.6 harness permits OAuth/session authentication while independently blocking non-read data-plane requests.
Reproduction
# Offline baseline
uv run python scripts/evaluate_aos8_060_lab.py --offline
# Live AOS8 evidence when source credentials are configured
uv run python scripts/evaluate_aos8_060_lab.py \
--live-aos8-readonly \
--config-path /md \
--limit 100 \
--max-items-per-type 1000
# Live Classic or New Central evidence with an explicit target
uv run python scripts/evaluate_aos8_060_lab.py \
--live-central-readonly \
--target-type new_central \
--scope-name "<explicit scope>" \
--persona CAMPUS_AP \
--candidates inputs/aos8-lab-candidates.json
The complete controlled-write workflow is documented in optional-products.md. No controlled write has been executed for this evaluation.
Current access
| Surface | Availability | Current evidence |
|---|---|---|
| New Central | Available | OAuth token bootstrap succeeded, then the data-plane guard observed only GET requests. |
| AOS8 source | Blocked | AOS8_BASE_URL, AOS8_USERNAME, AOS8_PASSWORD, and legacy AOS8_API_TOKEN are not configured. |
| Classic Central | Blocked | No explicit Classic group, GUID, or device serial is configured; New Central scope data is never reused. |
New Central live result
The 0.6 harness refreshed the OAuth token through the HPE authentication
endpoint, installed the Central data-plane request guard, and evaluated the
representative AP-persona candidate set against an explicit Global target.
- Coverage:
live_get_only - Data-plane HTTP methods observed:
GET - Representative result rows: 12
- Live blockers: none
- Target identifiers persisted in evidence: no
- Target secrets supplied or persisted: no
- Migration run created: no
- Configuration write attempted: no
The bounded reads covered global scope resolution, role preflight, VLAN preflight, and WLAN preflight. This confirms the harness can authenticate without weakening the post-authentication GET-only contract. It does not promote any conditional mapping to exact because no create/read-back/delete lifecycle was executed.
A separate bounded GET /network-config/v1alpha1/config-assignments observed
41 distinct profile-type values. The returned values included all five
blocked AOS8 dependency families:
auth-serversserver-groupsaaa-profiledot1xauthmacauth
This confirms the literal values and supports exact client-side assignment tuple verification. It does not authorize assignment writes: collection POST, tuple read-back, instance DELETE, and object cleanup still require a disposable lab round trip.
A second bounded GET used the extra profile-type=roles query parameter. The
service returned 28 assignment tuples and every returned profile-type was
roles, confirming that the live service honors the filter even though the
committed GET schema does not declare it. Verification continues to inspect
the full returned tuple client-side.
Contract findings incorporated
get_network_profile(profile_type="static-route")now exposes/network-config/v1alpha1/static-routefor bounded evidence reads.get_network_profile(profile_type="vrrp-interface")now exposes/network-config/v1alpha1/vrrpfor bounded evidence reads.- Generic set/delete remains blocked for both types because the Gateway IPv4
destination contract,
/v1versus/v1alpha1static-route divergence, VRRP VLAN/interface attachment, and tracking normalization are unresolved. - Live Gateway policy reads confirmed the nested
policy/security-policy/policy-rule[]shape, including rule position,CONDITION_DEFAULT,RULE_ANY,ADDRESS_ANYsource/destination, andACTION_ALLOW/ACTION_DENY. - The New Central adapter now generates a dry-run-only Gateway policy preview
for the exact conservative subset of ordered IPv4
any-to-anyrules,anyservice, permit/allow or deny action, and absent/disabled logging. Named services, aliases, IPv6, logging, and non-Gateway personas fail closed. Real policy apply remains blocked until a disposable create/read-back/delete lifecycle succeeds. - Live device-group reads returned four bounded group records with scope, group type, description, and device-count metadata. This is inventory evidence only; AP-group mapping and device moves remain unimplemented.
- Migration-relevant
create_auth_server,delete_auth_server,create_aaa_profile, anddelete_aaa_profilewrites now validate both the raw HTTP status and parsed response envelope. Non-2xx responses and success-shaped 2xx bodies carrying explicit failure markers raise instead of being eligible for a later success classification.
Live bounded reads against the MOBILITY_GW device function also confirmed:
GET /network-config/v1alpha1/static-routesucceeds. The one returned profile exposednameplusdefault-gateway[]entries containingdg-name,forwarding-type,ipv4-address, andmetric; it did not expose a general destination/prefix route shape. This is useful evidence for default routes only and does not justify a general AOS8 route mapper.GET /network-config/v1alpha1/vrrpsucceeds and returned an empty profile collection in this scope. The endpoint is available, but there is no live VLAN/interface/virtual-router shape to map yet.
Remaining live gates
- Configure AOS8 source credentials and collect a bounded sanitized export.
- Provide an explicit Classic group/GUID/serial and run Classic GET-only WLAN preflight evidence.
- Generate and review a controlled-write plan for a disposable SHARED profile and assignment.
- Execute create/assign/read-back/unassign/delete only after the unchanged plan digest and exact target are confirmed.
- Execute the dry-run-reviewed Gateway policy create/read-back/delete
lifecycle for a lab-owned
centralmcp-lab-*policy (historical prefix from that run; current builds guard onhpe-mcp-lab-*). - Capture a non-empty Gateway interface-VRRP read and a non-default static route before implementing route or VRRP writes.
Until those gates are completed, affected mappings remain conditional, manual, or unsupported exactly as recorded in the contract matrix.