{% extends "base.html" %} {% block title %}Assessment #{{ assessment_id }} — Software Integrity — ICDEV{% endblock %} {% block content %} {# Context (from tools/integrity/blueprint.py :: integrity_detail): assessment_id : int assessment : id, source_type, source_ref, mode, project_id, session_id, dir_digest, status, verdict, risk_score, classification, created_by, created_at, updated_at capabilities : [{id, file_path, function_name, capability_type, evidence, line_start, line_end, risk_weight}] findings : [{id, source_scanner, finding_type, severity, file_path, line, detail}] verdict : {id, verdict, risk_score, rationale, decided_by, created_at} | None authorizations: [{id, capability_id, requirement_id, claim_ref, authorized, reason, reviewed_by, created_at}] is_terminal : bool (status in approved / rejected) verdicts : VERDICTS #}
This item is held in quarantine pending a human decision. Promote to clear it for use, or reject to keep it blocked. The decision is append-only and audited.
Behavioral capabilities extracted statically from the source (AST + Semgrep taxonomy). Higher risk weight = more dangerous to exercise.
{% if capabilities %}| Capability | File | Function | Lines | Evidence | Risk |
|---|---|---|---|---|---|
| {{ (c.capability_type or '—').replace('_', ' ') }} | {{ c.file_path or '—' }} | {{ c.function_name or '—' }} | {% if c.line_start %}{{ c.line_start }}{% if c.line_end and c.line_end != c.line_start %}–{{ c.line_end }}{% endif %}{% else %}—{% endif %} |
{% set ev = c.evidence %}
{% if ev is mapping %}
{{ ev.get('snippet') or ev.get('detail') or ev.get('match') or ev }}
{% elif ev is iterable and ev is not string %}
{{ ev|join('\n') }}
{% else %}
{{ ev or '—' }}
{% endif %}
|
{% set rw = c.risk_weight if c.risk_weight is not none else 0 %}{{ ((rw*100) if rw <= 1 else rw)|round(0)|int }} |
Grouped by scanner; ordered by severity within each group.
{% if findings %} {% set scanners = findings|map(attribute='source_scanner')|list %} {% set seen = [] %} {% for f in findings %}{% if f.source_scanner not in seen %}{% set _ = seen.append(f.source_scanner) %}{% endif %}{% endfor %} {% for scanner in seen %} {% set group = findings|selectattr('source_scanner', 'equalto', scanner)|list %} {% set group = group|sort(attribute='severity', reverse=False) %}| Severity | Type | File | Line | Detail |
|---|---|---|---|---|
| {{ f.severity or 'info' }} | {{ (f.finding_type or '—').replace('_', ' ') }} | {{ f.file_path or '—' }} | {{ f.line if f.line is not none else '—' }} |
{% set d = f.detail %}
{% if d is mapping %}
{{ d.get('message') or d.get('detail') or d.get('description') or d }}
{% elif d is iterable and d is not string %}
{{ d|join('\n') }}
{% else %}
{{ d or '—' }}
{% endif %}
|
How each exercised capability reconciles against authorized requirements (Mode A) or claimed purpose (Mode B).
| Capability ID | Requirement | Claim | Authorized | Reason | Reviewed By |
|---|---|---|---|---|---|
| {{ au.capability_id if au.capability_id is not none else '—' }} | {{ au.requirement_id or '—' }} | {{ au.claim_ref or '—' }} | {% if au.authorized %}authorized{% else %}unauthorized{% endif %} | {{ au.reason or '—' }} |
{{ au.reviewed_by or 'engine' }} |