MARK V — ADVERSARIAL / CONFORMANCE FINDINGS ================================================================================ Prepared for: ChatGPT review node (mechanical four-way) By: NODE_03 GROK (GrokCastle) under Catcher ROAGE Date: 2026-08-08 Scope: RFC 0.1.0-draft, Ball FSM, Sync Lifecycle, HITL FSM, OpenAPI 0.2.0-draft, SHALL 0.1.1 (shall-v0.1.txt), station-scaffold, Castle/n3p implementation Method: Spec cross-walk + living-code spot check. Not a full automated harness run. Law: Create No Victims. Features never redefine CORE. STATUS KEY: OPEN | PARTIAL | FIXED | WONTFIX | ACCEPTED_RISK -------------------------------------------------------------------------------- CANONICAL ARTIFACT URLs (current as of this report) -------------------------------------------------------------------------------- https://roage.com/AI/market/spec/ https://roage.com/AI/market/spec/state/ball-fsm.txt https://roage.com/AI/market/spec/state/sync-lifecycle.txt https://roage.com/AI/market/spec/state/hitl-fsm.txt https://roage.com/AI/market/spec/conformance/shall-v0.1.txt https://roage.com/AI/market/spec/openapi/mark-v-station-v0.2.yaml https://roage.com/AI/market/spec/openapi/mark-v-station-v0.2.yaml.txt https://roage.com/AI/market/spec/VERSIONING.txt https://roage.com/AI/market/station-scaffold.json https://roage.com/AI/res/CURRENT.txt (SPEC_VERSION=0.2.0-draft) https://roage.com/AI/res/objective-atonement.html Castle implementation notes: Ball files: D:\GrokCastle\ball\*.json (ad-hoc status/touchdown, not OpenAPI Ball) HITL: D:\GrokCastle\html_helper\ + spaa\hitl_bridge.py Mesh Message DB: mesh\site_portal\api.php MSG.* -> mesh_messages table Jobs with objective_id: mesh\pws_admin.py (PWS queue), not n3p Ball API ================================================================================ FINDINGS ================================================================================ ID: M5-CONF-001 Affected: ball-fsm.txt · OpenAPI BallState · SHALL OPEN DECISION Condition: GRACE representation differs across artifacts Observed: FSM prose = "optional substate" of IN_PROGRESS; OpenAPI 0.2 lists GRACE as first-class BallState enum with grace_expires_at; SHALL leaves OPEN DECISION Expected: Single authoritative representation (state vs substate) frozen in RFC 0.2 Severity: HIGH (interop divergence risk) Fixed: NO — PARTIAL (behavior TTL vector exists; representation not frozen) ID: M5-CONF-002 Affected: ball-fsm.txt wire JSON footnote Condition: Wire example still uses legacy grant enum only Observed: { ball_id, state, grant: none|catcher|allowlist, ts, summary } Expected: Align with grant_provenance + objective_id per SHALL / OpenAPI 0.2 Severity: MEDIUM Fixed: NO ID: M5-CONF-003 Affected: ball-fsm.txt Transitions table Condition: GRACE not listed as graph edge Observed: Grace only in separate "Grace Period" prose; no IN_PROGRESS->GRACE or GRACE->IN_PROGRESS|BLOCKED|PARKED in Transitions list Expected: Explicit edges if GRACE is first-class; or remove from top-level enum Severity: HIGH Fixed: NO ID: M5-CONF-004 Affected: sync-lifecycle.txt · OpenAPI TipSyncState Condition: Two vocabularies for sync posture Observed: Lifecycle: COLD, TIP_FETCH, CORE_BOUND, STATION_LOCAL, SYNC_CONFIRM, READY, DEGRADED, SEMANTIC_DRIFT. OpenAPI TipSyncState: UNSYNCED, DEGRADED, SYNC_CONFIRMED only. No mapping table. Expected: Mapping or single enum for operational tip authority Severity: HIGH Fixed: NO ID: M5-CONF-005 Affected: VERSIONING.txt · CURRENT.txt Condition: SPEC_VERSION freeze line stale Observed: VERSIONING.txt "Current draft: SPEC_VERSION = 0.1.0-draft" CURRENT.txt SPEC_VERSION=0.2.0-draft Expected: VERSIONING matches published tip Severity: LOW (doc drift) — can confuse negotiation Fixed: NO at report time (should patch) ID: M5-CONF-006 Affected: SHALL · OpenAPI 0.2 · vectors Condition: objective_id bind required in SHALL when ORDS exists Observed: OpenAPI Ball/Job have objective_id; no dedicated vector V-BALL-OBJECTIVE-BIND; scaffold has no objective resource Expected: Vector + station model for Objective/ORDS packet Severity: HIGH (ChatGPT priority gap) Fixed: PARTIAL (field added to OpenAPI 0.2; vector/schema incomplete) ID: M5-CONF-007 Affected: station-scaffold.json Condition: Requested resource model for Ball/Job/Objective/Grant/Audit/Message Observed: Scaffold defines folders + core/mu minimum fields only; ball folder "optional"; no JSON schemas for Ball, Job, Grant, Audit, Message, Objective Expected: Resource/schema map or pointer to OpenAPI as normative station model Severity: HIGH (highest-value mule gap for implementers) Fixed: NO ID: M5-CONF-008 Affected: Castle ball/*.json vs OpenAPI Ball Condition: Living Ball records do not match protocol schema Observed: Example BALL_HUT002_SPAA uses status/touchdown/closed/objective string, not state enum, grant_provenance, objective_id field name consistency Expected: PROFILE_STATION Ball store matches Ball schema or documents profile delta Severity: HIGH (implementation non-conformance) Fixed: NO ID: M5-CONF-009 Affected: OpenAPI /balls* · Castle / n3p Condition: No station implements REST Ball transition API Observed: OpenAPI defines /balls and /balls/{id}/transition; no matching server in site_portal api.php (MSG/WISH/MYSQL only) Expected: Implementation or explicit "filesystem profile" conformance note Severity: HIGH (spec without implementer path) Fixed: NO — ACCEPTED for 0.2-draft if labeled aspirational wire ID: M5-CONF-010 Affected: OpenAPI · hitl-fsm.txt Condition: HITL FSM has no OpenAPI resources/paths Observed: HITL phases documented; glass is local html_helper; not in OpenAPI tags Expected: Optional HITL resource or PROFILE_HITL appendix in OpenAPI Severity: MEDIUM Fixed: NO ID: M5-CONF-011 Affected: conformance suite Condition: Vectors not executed by automated harness Observed: shall-v0.1.txt defines vectors; no Python/HTTP harness against Castle Expected: Harness producing PASS/FAIL audit per vector for PROFILE_* Severity: HIGH (constitution not yet executable) Fixed: NO ID: M5-CONF-012 Affected: SHALL · OpenAPI GrantProvenance · allowlist runtime Condition: "ALLOWLIST must not mean safe" Observed: Schema description warns; no machine check that allowlisted job types are low-blast only; high-blast could be mis-tagged ALLOWLIST Expected: Policy: high-blast job classes require CATCHER; vector for bypass attempt Severity: CRITICAL (authorization bypass class) Fixed: NO ID: M5-CONF-013 Affected: sync-lifecycle SEMANTIC_DRIFT · TipSyncState Condition: Semantic drift not in tip sync enum Observed: SEMANTIC_DRIFT is lifecycle state; TipSyncState omits it Expected: Include or map SEMANTIC_DRIFT under DEGRADED/UNSYNCED with decoder probe Severity: MEDIUM Fixed: NO ID: M5-CONF-014 Affected: mesh_messages (n3p) · OpenAPI Message Condition: DB message model thinner than protocol Message + Ball authority Observed: columns: msg_id, from_node, to_node, sync_code, silicon_rev, subject, body, status, victims, timestamps — no ball_id, objective_id, grant_provenance Expected: Optional FK fields or documented PROFILE_MESH delta Severity: MEDIUM Fixed: NO ID: M5-CONF-015 Affected: MSG.SEND implementation · OpenAPI MessageSend absence semantics Condition: Empty sync_code accepted without DEGRADED flag Observed: api.php accepts sync_code default ''; no force tip inherit/reject Expected: Documented absence policy enforced (inherit tip | reject | mark DEGRADED) Severity: MEDIUM (synchronization failure / silent unsynced mail) Fixed: NO ID: M5-CONF-016 Affected: html_helper ACK path (historical) Condition: ACK overwrote cpq_current Observed: Prior race; code path now last_ack oriented (mm_enabled / NODE_READY gates) Expected: ACK MUST NOT clobber cpq_current (HITL FSM + SHALL) Severity: HIGH when open Fixed: YES (station living code; keep regression vector V-HITL-ACK-POS) ID: M5-CONF-017 Affected: hitl-fsm Failure · hitl_bridge Condition: ACK without INGESTED when bridge down Observed: Documented failure mode; requires ensure_runners recovery Expected: Operational runbook + optional vector "bridge down => no false NODE_READY" Severity: MEDIUM Fixed: PARTIAL (documented; not fully automated) ID: M5-CONF-018 Affected: OpenAPI Ball.grant deprecated + grant_provenance Condition: Dual fields during transition Observed: Both grant and grant_provenance present; mapping documented Expected: Single field after deprecation window; MAJOR bump when grant removed Severity: LOW Fixed: PARTIAL (compat path intentional) ID: M5-CONF-019 Affected: OpenAPI POST /balls/{id}/transition Condition: Schema accepts any BallState as to_state Observed: No machine-readable allowed-edges map; 409 described in prose only Expected: OpenAPI extension or linked transition matrix; server-side enforce Severity: HIGH (state-transition bypass if naive impl) Fixed: PARTIAL (prose + SHALL + 409; not schema-enforced) ID: M5-CONF-020 Affected: victim-trace = 0 Condition: Law as declaration vs machine invariant Observed: victims field on mesh_messages; Ball schema lacks victim_trace field; no auto-fail if victims>0 on high-blast Expected: Optional Ball.victim_trace; vector fail if >0 on TOUCHDOWN for profile Severity: MEDIUM Fixed: NO ID: M5-CONF-021 Affected: RFC abstract vs OpenAPI implementation reality Condition: "Executable" packaging without reference impl harness Observed: Package claims implementable standard; Castle is partial profile only Expected: PROFILE labels: filesystem-station, mesh-message, full-rest-station Severity: MEDIUM Fixed: NO ID: M5-CONF-022 Affected: Decoder ring vs wire Condition: Semantic drift can pass wire tests Observed: DecoderRingProbe exists; not required for PROFILE_MINIMAL; no automatic block of high-blast on MELD_FAIL Expected: Optional SHOULD stay; PROFILE_HARDENED may require probe log Severity: LOW (by design for 0.1.x) Fixed: ACCEPTED_RISK for draft ID: M5-CONF-023 Affected: SCOPED -> GRANTED allowlist path Condition: Low-blast allowlist auto-grant Observed: FSM allows; no definition of which operations are low-blast Expected: Explicit low-blast operation class list in allowlist + SHALL Severity: HIGH (authorization ambiguity) Fixed: NO ================================================================================ SUMMARY COUNTS ================================================================================ CRITICAL: 1 (M5-CONF-012) HIGH: 9 MEDIUM: 8 LOW: 3 FIXED: 1 full + 3 partial OPEN: majority — expected for 0.2-draft pre-harness ================================================================================ RECOMMENDED NEXT BALL (Define · Design · Deploy) ================================================================================ 1. Freeze GRACE representation + edges in ball-fsm (M5-CONF-001/003) 2. Map TipSyncState <-> sync-lifecycle (M5-CONF-004/013) 3. station-scaffold resource schemas OR normative pointer to OpenAPI 0.2 4. Align Castle ball/*.json or declare PROFILE_FILESYSTEM_BALL 5. Automate V-BALL-HIGHBLAST-NEG + V-HITL-ACK-POS harness 6. Define low-blast op classes (M5-CONF-012/023) 7. Patch VERSIONING.txt SPEC_VERSION to 0.2.0-draft (M5-CONF-005) END OF FINDINGS ================================================================================