From 163cfabd67d0d6db732c536fe1831173b5ed6953 Mon Sep 17 00:00:00 2001 From: Svrnty Date: Mon, 1 Jun 2026 07:35:04 -0400 Subject: [PATCH] Record Hermes WebUI control panel evidence --- ...CTO-HERMES-WEBUI-CONTROL-PANEL-EVIDENCE.md | 54 +++++++++++++++++++ WORKBOARD.yaml | 3 +- tools/validate_cto_child.py | 30 ++++++++++- 3 files changed, 84 insertions(+), 3 deletions(-) create mode 100644 .sot/03-PROTOCOLS/CTO-HERMES-WEBUI-CONTROL-PANEL-EVIDENCE.md diff --git a/.sot/03-PROTOCOLS/CTO-HERMES-WEBUI-CONTROL-PANEL-EVIDENCE.md b/.sot/03-PROTOCOLS/CTO-HERMES-WEBUI-CONTROL-PANEL-EVIDENCE.md new file mode 100644 index 0000000..f0f2fc4 --- /dev/null +++ b/.sot/03-PROTOCOLS/CTO-HERMES-WEBUI-CONTROL-PANEL-EVIDENCE.md @@ -0,0 +1,54 @@ +--- +name: CTO Hermes WebUI Control Panel Evidence +status: validated +lifecycle_classification: sot +owner: jp +created: 2026-06-01 +last_reviewed: 2026-06-01 +core_promotion_status: not-promoted +--- + +# CTO Hermes WebUI Control Panel Evidence + +Local planning SOT only. Not a Core Protocol. Not active Core authority. + +## Scope + +This evidence closes `CTO-WORK-059`. + +The implementation adds a Hermes-owned WebUI consumer panel for CTO Harness proof state. It does not change Cortex Core authority, Case authority, target repository ownership, upstream `hermes-webui`, or upstream `hermes-agent`. + +## Implementation Evidence + +- Hermes plugin commit: `9c8f345 Add CTO harness control panel` +- Route: `/api/cto/control-summary` +- Route file: `routes/cto_control_summary.py` +- Frontend asset: `cto_control_panel.js` +- Style asset: `cto_control_panel.css` +- Connection map: `CONNECTION-MAP.md is fresh` + +## Validation Evidence + +- Focused validation before commit: `python3 -m pytest tests/unit/test_cto_control_summary.py tests/evals/test_features.py -q` +- Focused result: `8 passed, 1 skipped` +- Aggregate validation before commit: `python3 scripts/ast-connection-map.py --check` +- Aggregate validation before commit: `python3 -m pytest tests/ -q` +- Aggregate result before commit: `100 passed, 4 skipped` +- Aggregate validation after merge: `python3 scripts/ast-connection-map.py --check` +- Aggregate validation after merge: `python3 -m pytest tests/ -q` +- Aggregate result after merge: `104 passed` + +## Governance Evidence + +- Harness-backed summary data remains the source of truth. +- Case runtime default active: false +- target repository mutation: false +- upstream `hermes-webui` edited: false +- upstream `hermes-agent` edited: false +- Case remains a candidate backend behind the CTO Harness seam. +- Hermes provides visualization and control only. +- Cortex remains SOT authority. + +## Result + +`CTO-WORK-059` is validated because Hermes now exposes a read-only CTO control panel over Harness evidence without activating Case, mutating target repositories, or editing upstream vendor source. diff --git a/WORKBOARD.yaml b/WORKBOARD.yaml index 7213452..0a1c3bd 100644 --- a/WORKBOARD.yaml +++ b/WORKBOARD.yaml @@ -293,7 +293,6 @@ items: owner: "" - id: CTO-WORK-059 title: Hermes WebUI CTO Harness Control Panel - status: candidate + status: validated source: .sot/03-PROTOCOLS/CTO-HERMES-WEBUI-CONTROL-PANEL-ISSUES.md owner: "" - diff --git a/tools/validate_cto_child.py b/tools/validate_cto_child.py index abb509a..9dda427 100644 --- a/tools/validate_cto_child.py +++ b/tools/validate_cto_child.py @@ -50,6 +50,7 @@ REQUIRED_FILES = [ ".sot/03-PROTOCOLS/CTO-HERMES-REAL-REFRESH-CONTROL-REPLAY-EVIDENCE.md", ".sot/03-PROTOCOLS/CTO-HERMES-WEBUI-CONTROL-PANEL-PRD.md", ".sot/03-PROTOCOLS/CTO-HERMES-WEBUI-CONTROL-PANEL-ISSUES.md", + ".sot/03-PROTOCOLS/CTO-HERMES-WEBUI-CONTROL-PANEL-EVIDENCE.md", ".sot/03-PROTOCOLS/CTO-FIRST-REAL-GOVERNED-WORKFLOW-PRD.md", ".sot/03-PROTOCOLS/CTO-FIRST-REAL-GOVERNED-WORKFLOW-ISSUES.md", ".sot/03-PROTOCOLS/CTO-FIRST-REAL-GOVERNED-WORKFLOW-APPROVAL-PACKET.md", @@ -152,6 +153,23 @@ REQUIRED_HERMES_WEBUI_CONTROL_PANEL_PHRASES = [ "Do not activate Case as default backend.", ] +REQUIRED_HERMES_WEBUI_CONTROL_PANEL_EVIDENCE_PHRASES = [ + "Local planning SOT only. Not a Core Protocol. Not active Core authority.", + "CTO-WORK-059", + "9c8f345 Add CTO harness control panel", + "/api/cto/control-summary", + "cto_control_panel.js", + "cto_control_panel.css", + "routes/cto_control_summary.py", + "CONNECTION-MAP.md is fresh", + "104 passed", + "Case runtime default active: false", + "target repository mutation: false", + "upstream `hermes-webui` edited: false", + "upstream `hermes-agent` edited: false", + "Harness-backed summary data remains the source of truth.", +] + REQUIRED_HERMES_REAL_REFRESH_CONTROL_REPLAY_EVIDENCE_PHRASES = [ "Local planning SOT only. Not a Core Protocol. Not active Core authority.", "CTO-WORK-057", @@ -1165,6 +1183,16 @@ def main() -> int: if phrase not in text: errors.append(f"missing_hermes_webui_control_panel_issue_phrase:{phrase}") + hermes_webui_control_panel_evidence = ROOT / ".sot/03-PROTOCOLS/CTO-HERMES-WEBUI-CONTROL-PANEL-EVIDENCE.md" + if hermes_webui_control_panel_evidence.is_file(): + text = hermes_webui_control_panel_evidence.read_text(encoding="utf-8") + if "core_promotion_status: not-promoted" not in text: + errors.append("hermes_webui_control_panel_evidence_missing_not_promoted_frontmatter") + for phrase in REQUIRED_HERMES_WEBUI_CONTROL_PANEL_EVIDENCE_PHRASES: + checked.append(f"hermes_webui_control_panel_evidence_phrase:{phrase}") + if phrase not in text: + errors.append(f"missing_hermes_webui_control_panel_evidence_phrase:{phrase}") + hermes_real_refresh_control_replay_evidence = ROOT / ".sot/03-PROTOCOLS/CTO-HERMES-REAL-REFRESH-CONTROL-REPLAY-EVIDENCE.md" if hermes_real_refresh_control_replay_evidence.is_file(): text = hermes_real_refresh_control_replay_evidence.read_text(encoding="utf-8") @@ -1774,7 +1802,7 @@ def main() -> int: "CTO-WORK-056": "validated", "CTO-WORK-057": "validated", "CTO-WORK-058": "validated", - "CTO-WORK-059": "candidate", + "CTO-WORK-059": "validated", } for issue_id, expected in expected_statuses.items(): checked.append(f"workboard_status:{issue_id}:{expected}")