{# The plan. Every requirement is shown WITH its source quote: that pairing is the anti-fabrication mitigation, so a reviewer reads the claim and its evidence side by side. Nothing here is marked safe — a quote is text a model chose out of the author's own writing, and it is escaped. #} {% extends "base.html" %} {% from "mirrorwall/components.html" import badge, empty_state %} {% block content %}

{{ project.title }} — plan

Back to the project

Requirements

{% if requirements %}
{% for requirement in requirements %} {% endfor %}
Compiled requirements, with the material that supports each
KeyRequirementClass Checked bySourceUnits
{{ requirement.key }} {{ requirement.text }} {{ badge("blocking" if requirement.blocking else "advisory", tone="warning" if requirement.blocking else "neutral") }} {{ requirement.checks }} {% if not requirement.mechanical %}{{ badge("model review only" if requirement.blocking else "model-assisted", tone="warning" if requirement.blocking else "neutral") }}{% endif %} {{ requirement.source }}
{{ requirement.quote }}
{{ requirement.units | join(", ") or "—" }}
{% else %} {{ empty_state("No requirements compiled yet.") }} {% endif %}

Units

{% if units %}
{% for unit in units %} {% endfor %}
The unit plan, in reading order
KeyTitleGoalRequirementsState
{{ unit.key }} {{ unit.title }} {{ unit.goal }} {{ unit.requirements or "—" }} {{ badge(unit.state, tone="success" if unit.state == "committed" else "neutral") }}
{% else %} {{ empty_state("No plan yet. Build one to begin.") }} {% endif %} {% endblock %}