qsvaps / examples /api_workflow_demo.py
vmore2
Initial release: QSVAPS v0.1.0 - Quantum Superposition Verification for Agent Plan Safety
ce8c08a
"""
Example: API Workflow Verification
Demonstrates verifying a complex API orchestration plan with
resource conflicts, dependency chains, and mandatory steps.
"""
import sys
import os
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from qsvaps import (
Plan,
PlanAction,
PlanConstraint,
ResourceConstraint,
ConstraintType,
PlanVerifier,
QSVAPSVisualizer,
)
def main():
"""Build and verify an API orchestration plan."""
# ── Define the plan ──────────────────────────────────────────────────
plan = Plan(
name="Multi-API Data Aggregation",
actions=[
PlanAction(
name="auth_service_a",
description="Authenticate with Service A",
resources=["auth_tokens"],
can_fail=True,
),
PlanAction(
name="auth_service_b",
description="Authenticate with Service B",
resources=["auth_tokens"],
can_fail=True,
),
PlanAction(
name="fetch_users",
description="Fetch user records from Service A",
resources=["bandwidth"],
can_fail=True,
),
PlanAction(
name="fetch_analytics",
description="Fetch analytics from Service B",
resources=["bandwidth"],
can_fail=True,
),
PlanAction(
name="transform",
description="Transform and join datasets",
resources=["compute"],
can_fail=True,
),
PlanAction(
name="validate",
description="Validate output schema",
can_fail=False, # Must succeed
),
PlanAction(
name="store_results",
description="Store results in database",
resources=["db_connection"],
can_fail=False, # Must succeed
),
],
dependencies=[
("auth_service_a", "fetch_users"),
("auth_service_b", "fetch_analytics"),
("fetch_users", "transform"),
("fetch_analytics", "transform"),
("transform", "validate"),
("validate", "store_results"),
],
resource_constraints=[
ResourceConstraint("auth_tokens", max_concurrent=1),
ResourceConstraint("bandwidth", max_concurrent=1),
],
custom_constraints=[
PlanConstraint(
expression=f"x0 or x1", # At least one auth must work
description="At least one authentication must succeed",
constraint_type=ConstraintType.CUSTOM,
variables_involved=["s_auth_service_a", "s_auth_service_b"],
),
],
)
# ── Verify ───────────────────────────────────────────────────────────
viz = QSVAPSVisualizer()
print(viz.draw_plan(plan))
verifier = PlanVerifier(shots=4096)
result = verifier.verify(plan, verbose=True)
print(viz.format_result(result))
# ── Print summary ────────────────────────────────────────────────────
if not result.is_safe:
print(
f"\n⚠️ This plan has {result.num_violations} potential "
f"failure modes out of {result.total_states:,} possible "
f"execution states."
)
print(
f" Grover's algorithm found them in "
f"{result.grover_iterations} iteration(s) "
f"(vs ~{result.total_states} classical checks)."
)
else:
print("\n✅ Plan is safe under all modeled scenarios.")
if __name__ == "__main__":
main()