{% extends "base.html" %} {% block title %}Fleet audit report — Steward{% endblock %} {% block content %} {% if error %} {% else %}
← Dashboard
Agentic identity governance

Fleet audit report

Effective access, segregation of duties, least privilege, and accountable ownership—backed by graph entities, not guesses.

Generated {{ report.generated_at }} · Steward schema {{ report.schema_version }}
Fleet scope{{ report.scope.agents }} agents{{ report.scope.tools }} tools · {{ report.scope.delegation_edges }} delegation edges
Verified findings{{ report.executive_summary.findings }}{{ report.executive_summary.critical_agents }} critical-risk agents
Certification queue{{ report.executive_summary.review_status }} pendingReview each agent risk card
{% if report.executive_summary.framework_coverage and report.executive_summary.framework_coverage.frameworks %}
Framework coverage{{ report.executive_summary.framework_coverage.controls }} controls{{ report.executive_summary.framework_coverage.frameworks }} published frameworks · context, not certification
{% endif %}
{% if report.executive_summary.top_risks %}
Executive summary

Top risks by composite score

Ranked by Steward's deterministic risk score — reproducible on every run, so the board sees the same ordering the auditor can recompute.

    {% for risk in report.executive_summary.top_risks %}
  1. {{ risk.agent_id }} — {{ risk.title }} {% if risk.risk_score is not none %}risk {{ risk.risk_score }}/100{% endif %}
  2. {% endfor %}
{% endif %} {% if report.mcp_threat_context %}
Documented MCP threat context

Authentication and token protection

{% for context in report.mcp_threat_context %}
{{ context.title }}

This is context only, not a Steward finding or evidence that the loaded fleet has a token issue.

{{ context.owasp_mcp.id }} · {{ context.owasp_mcp.title }}

{{ context.incident.title }} · {{ context.incident.date }}

{{ context.incident.relevance }}

{% endfor %}
{% endif %}
Model provenance

Optional model enrichment

{{ report.llm_enrichment.label }} {% if report.llm_enrichment.mode %}{{ report.llm_enrichment.mode }}{% endif %}

{{ report.llm_enrichment.description }}

{% if report.llm_enrichment.completion.coverage %}

Completion: {{ report.llm_enrichment.completion.coverage | join(' · ') }}

{% endif %} {% if report.llm_enrichment.reason %}

Note: {{ report.llm_enrichment.reason }}

{% endif %} {% if report.llm_enrichment.disclosure %}

Disclosure: {{ report.llm_enrichment.disclosure }}

{% endif %}
{% if report.llm_enrichment.operations %}
{% for operation in report.llm_enrichment.operations %}
{{ operation.label }} {{ operation.status_label }} {% if operation.coverage %}{{ operation.coverage | join(' · ') }}{% endif %} {% if operation.incomplete_agents %}Incomplete: {{ operation.incomplete_agents | join(', ') }}{% endif %} {% if operation.incomplete_tools %}Unclassified: {{ operation.incomplete_tools | join(', ') }}{% endif %} {% if operation.failed_batch_tools %}Recovered batch retry: {{ operation.failed_batch_tools | join(', ') }}{% endif %} {% if operation.individual_retry_tools %}Individual retry: {{ operation.individual_retry_tools | join(', ') }}{% endif %} {% if operation.on_demand_retry_tools %}On-demand retry: {{ operation.on_demand_retry_tools | join(', ') }}{% endif %}
{% endfor %}
{% endif %}
Scope and data discipline

What was analyzed

{{ report.scope.what_was_analyzed }}

Control language

Finding-to-control mapping

{% for control in report.control_mapping %} {% endfor %}
SignalControl mappingFindingsHighest risk
{{ control.label }}{{ control.control_mapping }}{{ control.findings }}{{ control.highest_severity }}
{% if report.control_framework_coverage %}
Framework coverage

Control-framework coverage matrix

Findings mapped to published control frameworks (versions cited). This matrix is auditor context — it is not a compliance certification.

{% for framework_row in report.control_framework_coverage %} {% for control in framework_row.controls %} {% endfor %} {% endfor %}
FrameworkControlNameFindingsSignals
{{ framework_row.framework }} {{ control.control_id }} {{ control.control_name }} {{ control.findings }} {{ control.check_types | join(", ") }}
{% if report.governance_process_controls %}

The governance process itself (signed audit ledger, certification queue) speaks to: {% for item in report.governance_process_controls %}{{ item.framework }} {{ item.control_id }} ({{ item.control_name }}){{ "; " if not loop.last else "." }}{% endfor %}

{% endif %}
{% endif %} {% if report.peer_analytics and report.peer_analytics.applicable and report.peer_analytics.outliers %}
Peer analytics

Peer-group outliers

{{ report.peer_analytics.note }} Heuristic, not a finding — Jaccard similarity of effective access sets, threshold {{ report.peer_analytics.similarity_threshold }}, {{ report.peer_analytics.agents_considered }} agents considered.

{% for outlier in report.peer_analytics.outliers %} {% endfor %}
AgentEffective toolsHigh-impactMax peer similarityWhy flagged
{{ outlier.agent_id }} {{ outlier.effective_tool_count }} {{ outlier.high_impact_count }} {{ "%.2f" | format(outlier.max_similarity) }}{% if outlier.nearest_peer %} ({{ outlier.nearest_peer }}){% endif %} {{ outlier.reason }}
{% endif %}
Verified findings

Evidence trail and remediation

{% for finding in report.findings %}
{{ finding.severity }} {% if finding.risk_score is not none %}risk {{ finding.risk_score }}/100{% endif %} {{ finding.check_label }} {{ finding.source_label }} {{ finding.agent_id }} ↗

{{ finding.title }}

{{ finding.business_risk }}

Recommended action{{ finding.recommended_action }}
Evidence{% for evidence in finding.evidence %}{{ evidence.entity_type | replace('_', ' ') }}{{ evidence.entity_id }}{% endfor %}
{% include "_finding_context.html" %}
{{ finding.control_mapping }}
{% else %}

No verified findings

Steward suppressed anything without valid citations.

{% endfor %}
Access certification

Reviewer queue

Export JSON →
{% for card in report.certification_packet.risk_cards %} {% endfor %}
AgentOwnerRisk tierFindingsReview
{{ card.agent.name }}{{ card.agent.id }} {{ card.agent.owner or "Unassigned" }} {{ card.risk_tier }} {{ card.findings | length }} {{ card.review.status }}
{% endif %} {% endblock %}