<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-CA">
	<id>https://helixprojectai.com:443/wiki/index.php?action=history&amp;feed=atom&amp;title=Runbook_stub_human_confirm_ui</id>
	<title>Runbook stub human confirm ui - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://helixprojectai.com:443/wiki/index.php?action=history&amp;feed=atom&amp;title=Runbook_stub_human_confirm_ui"/>
	<link rel="alternate" type="text/html" href="https://helixprojectai.com:443/wiki/index.php?title=Runbook_stub_human_confirm_ui&amp;action=history"/>
	<updated>2026-04-20T09:48:31Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://helixprojectai.com:443/wiki/index.php?title=Runbook_stub_human_confirm_ui&amp;diff=70&amp;oldid=prev</id>
		<title>Steve Helix: Created page with &quot;= Human Confirmation UI Module = &#039;&#039;&#039;Stub implementation for human-in-the-loop approval system&#039;&#039;&#039;  == Overview == The Human Confirm UI provides a deterministic CLI interface for obtaining human approval of critical actions within the Helix Safety Framework.  == Code Implementation == &lt;syntaxhighlight lang=&quot;python&quot;&gt; # ------------------------------------------------------------- # stub_human_confirm_ui.py # ------------------------------------------------------------- impo...&quot;</title>
		<link rel="alternate" type="text/html" href="https://helixprojectai.com:443/wiki/index.php?title=Runbook_stub_human_confirm_ui&amp;diff=70&amp;oldid=prev"/>
		<updated>2025-10-07T18:06:29Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;= Human Confirmation UI Module = &amp;#039;&amp;#039;&amp;#039;Stub implementation for human-in-the-loop approval system&amp;#039;&amp;#039;&amp;#039;  == Overview == The Human Confirm UI provides a deterministic CLI interface for obtaining human approval of critical actions within the Helix Safety Framework.  == Code Implementation == &amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt; # ------------------------------------------------------------- # stub_human_confirm_ui.py # ------------------------------------------------------------- impo...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Human Confirmation UI Module =&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Stub implementation for human-in-the-loop approval system&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
The Human Confirm UI provides a deterministic CLI interface for obtaining human approval of critical actions within the Helix Safety Framework.&lt;br /&gt;
&lt;br /&gt;
== Code Implementation ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# -------------------------------------------------------------&lt;br /&gt;
# stub_human_confirm_ui.py&lt;br /&gt;
# -------------------------------------------------------------&lt;br /&gt;
import json&lt;br /&gt;
from datetime import datetime&lt;br /&gt;
from typing import Any, Mapping, Optional&lt;br /&gt;
&lt;br /&gt;
# Import the signed-audit logger that Helix already provides&lt;br /&gt;
from helix_audit import log_event&lt;br /&gt;
&lt;br /&gt;
from dataclasses import dataclass, field&lt;br /&gt;
import uuid&lt;br /&gt;
&lt;br /&gt;
@dataclass(frozen=True)&lt;br /&gt;
class HumanConfirmRequest:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Deterministic request that will be shown to the user.&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    request_id: str = field(default_factory=lambda: str(uuid.uuid4()))&lt;br /&gt;
    action_description: str = &amp;quot;&amp;quot;&lt;br /&gt;
    caller_net: str = &amp;quot;&amp;quot;&lt;br /&gt;
    requester_user: Optional[str] = None&lt;br /&gt;
    timestamp: datetime = field(default_factory=datetime.utcnow)&lt;br /&gt;
    payload: Optional[Mapping[str, str]] = None&lt;br /&gt;
&lt;br /&gt;
    @staticmethod&lt;br /&gt;
    def make(&lt;br /&gt;
        action_description: str,&lt;br /&gt;
        caller_net: str,&lt;br /&gt;
        requester_user: Optional[str] = None,&lt;br /&gt;
        payload: Optional[Mapping[str, str]] = None,&lt;br /&gt;
    ) -&amp;gt; &amp;quot;HumanConfirmRequest&amp;quot;:&lt;br /&gt;
        return HumanConfirmRequest(&lt;br /&gt;
            action_description=action_description,&lt;br /&gt;
            caller_net=caller_net,&lt;br /&gt;
            requester_user=requester_user,&lt;br /&gt;
            payload=payload,&lt;br /&gt;
        )&lt;br /&gt;
&lt;br /&gt;
def request_confirmation(request: HumanConfirmRequest) -&amp;gt; bool:&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Show a deterministic CLI prompt, capture an explicit &amp;quot;yes&amp;quot;,&lt;br /&gt;
    and write an immutable, RSA-4096-signed audit entry.&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    # ---- UI (kept deterministic, no hidden defaults) -----------------&lt;br /&gt;
    print(&amp;quot;\n=== Helix Human Confirmation Required ===&amp;quot;)&lt;br /&gt;
    print(f&amp;quot;Request ID   : {request.request_id}&amp;quot;)&lt;br /&gt;
    print(f&amp;quot;Timestamp    : {request.timestamp.isoformat()}Z&amp;quot;)&lt;br /&gt;
    print(f&amp;quot;Caller Net   : {request.caller_net}&amp;quot;)&lt;br /&gt;
    if request.requester_user:&lt;br /&gt;
        print(f&amp;quot;Requested by : {request.requester_user}&amp;quot;)&lt;br /&gt;
    print(f&amp;quot;Action       : {request.action_description}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    if request.payload:&lt;br /&gt;
        print(&amp;quot;Payload:&amp;quot;)&lt;br /&gt;
        for k, v in request.payload.items():&lt;br /&gt;
            print(f&amp;quot;  - {k}: {v}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    # ---- Get explicit consent -----------------------------------------&lt;br /&gt;
    user_input = input(&amp;quot;\nConfirm? (y/N): &amp;quot;).strip().lower()&lt;br /&gt;
    approved = user_input == &amp;quot;y&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # Build the audit-log payload&lt;br /&gt;
    audit_payload: dict[str, Any] = {&lt;br /&gt;
        &amp;quot;request_id&amp;quot;: request.request_id,&lt;br /&gt;
        &amp;quot;approved&amp;quot;: approved,&lt;br /&gt;
        &amp;quot;timestamp&amp;quot;: request.timestamp.isoformat() + &amp;quot;Z&amp;quot;,&lt;br /&gt;
        &amp;quot;caller_net&amp;quot;: request.caller_net,&lt;br /&gt;
        &amp;quot;action_description&amp;quot;: request.action_description,&lt;br /&gt;
        &amp;quot;requester_user&amp;quot;: request.requester_user,&lt;br /&gt;
        &amp;quot;payload&amp;quot;: request.payload,&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    # Write the signed event&lt;br /&gt;
    log_event(event_type=&amp;quot;human_confirm&amp;quot;, data=audit_payload)&lt;br /&gt;
&lt;br /&gt;
    return approved&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Usage Example ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Example usage in a Petri net transition&lt;br /&gt;
request = HumanConfirmRequest.make(&lt;br /&gt;
    action_description=&amp;quot;Execute external API: payment processing&amp;quot;,&lt;br /&gt;
    caller_net=&amp;quot;payment_processor_v1&amp;quot;,&lt;br /&gt;
    requester_user=&amp;quot;alice@helix.ai&amp;quot;,&lt;br /&gt;
    payload={&amp;quot;amount&amp;quot;: &amp;quot;150.00&amp;quot;, &amp;quot;currency&amp;quot;: &amp;quot;USD&amp;quot;, &amp;quot;recipient&amp;quot;: &amp;quot;vendor123&amp;quot;}&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
if request_confirmation(request):&lt;br /&gt;
    # Proceed with the approved action&lt;br /&gt;
    execute_payment()&lt;br /&gt;
else:&lt;br /&gt;
    # Abort or take alternative action&lt;br /&gt;
    log_denied_payment()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Audit Event Structure ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Human Confirm Audit Payload&lt;br /&gt;
! Field !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| request_id || string || Unique identifier for this confirmation request&lt;br /&gt;
|-&lt;br /&gt;
| approved || boolean || Whether the human approved the action&lt;br /&gt;
|-&lt;br /&gt;
| timestamp || string || ISO 8601 timestamp of the request&lt;br /&gt;
|-&lt;br /&gt;
| caller_net || string || Identifier of the requesting net&lt;br /&gt;
|-&lt;br /&gt;
| action_description || string || Human-readable description of the action&lt;br /&gt;
|-&lt;br /&gt;
| requester_user || string || Optional user who initiated the request&lt;br /&gt;
|-&lt;br /&gt;
| payload || object || Additional context-specific data&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Integration Points ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Event Type&amp;#039;&amp;#039;&amp;#039;: &amp;lt;code&amp;gt;human_confirm&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Cryptographic Signing&amp;#039;&amp;#039;&amp;#039;: RSA-4096 via &amp;lt;code&amp;gt;log_event&amp;lt;/code&amp;gt; helper&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Deterministic Behavior&amp;#039;&amp;#039;&amp;#039;: Consistent output for identical inputs&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Safety Compliance&amp;#039;&amp;#039;&amp;#039;: Enforces human-first principle&lt;br /&gt;
&lt;br /&gt;
== Related Components ==&lt;br /&gt;
* [[Helix Audit Logging]]&lt;br /&gt;
* [[Petri Net Engine]]&lt;br /&gt;
* [[Safety Framework]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Code Modules]]&lt;br /&gt;
[[Category:Operations]]&lt;br /&gt;
[[Category:Safety Components]]&lt;/div&gt;</summary>
		<author><name>Steve Helix</name></author>
	</entry>
</feed>