{% extends "base.html" %} {% from "_links.html" import edge_list, go, kind_dot %} {% from "_map.html" import render_map %} {% block main %}
{% include "_crumbs.html" %}
{{ kind_dot(kind) }}{{ kind_name }} {% if node.level %}Level {{ node.level }}{% endif %} {% if registry_status %}{{ registry_status }}{% endif %} {% if node.attr("evidence_kind") %}{{ node.attr("evidence_kind") }}{% endif %} {% if node.attr("observed") %}Observed {{ node.attr("observed") }}{% endif %}

{{ node.label }}

{{ node.uri }} {% if cascade_route or map_id %}
{% if cascade_route %} What stops being true if this is falsified? {% endif %} {% if map_id %} {# A plain link on purpose: a full load is what makes :target light this node's line on the map. #} Show on the map {% endif %}
{% endif %}
{% if neighbourhood.nodes | length > 1 %}

Neighbourhood

Everything one edge away, in the map's lanes.

{{ render_map(neighbourhood, base) }}
{% endif %}
{% if file_span %}{{ file_span }}{% endif %} {% if hypothesis %}

Hypothesis

{{ hypothesis }}
{% if criteria %}

Falsified when

    {% for item in criteria %}
  • {{ item }}
  • {% endfor %}
{% else %}

No falsification criteria are recorded.

{% endif %}
{% endif %} {# The node's own prose, rendered from Markdown with raw HTML disabled: the renderer escapes anything that is not CommonMark, so a note is data and an author cannot put elements onto every reader's page. Relative links between notes are rewritten to the routes of the nodes they name. A requirement renders its text and its scenarios, each anchored by slug, with the code it names linked to the code's page. #} {% if body %}
{{ body }}
{% elif not hypothesis and not contract and not contract_evidence %}

This node carries no prose of its own; its connections say what it is for.

{% endif %} {# A data contract renders its content the way a reviewer reads it: what it is for, the quality rules it holds itself to -- the executed assertions that bind level-4 coverage -- and the shape it promises. #} {% if contract %}
{% if contract.purpose %}

{{ contract.purpose }}

{% endif %} {% if contract.usage %}

Usage. {{ contract.usage }}

{% endif %} {% if contract.limitations %}

Limitations. {{ contract.limitations }}

{% endif %} {% if contract.rules %}

Quality rules

The executed assertions this contract holds itself to — the level-4 evidence that binds a requirement.

    {% for rule in contract.rules %}
  • {{ rule.where }} {{ rule.text }}
  • {% endfor %}
{% endif %} {% if contract.objects %}

Schema

{% for obj in contract.objects %}

{{ obj.name }}

{% if obj.description %}

{{ obj.description }}

{% endif %} {% if obj.fields %} {% for field in obj.fields %} {% endfor %}
FieldTypeRequired
{{ field.name }}{{ field.type }}{{ "required" if field.required else "" }}
{% endif %}
{% endfor %} {% endif %}
{% endif %} {# Contract quality rules in this node's scope, shown as the level-4 evidence they are: on a requirement, the contracts it requires; on an evidence record, the contracts its requirements require. #} {% if contract_evidence %}

Contract quality · level-4 evidence

Quality rules on the contracts in scope are executed assertions; a requirement that names a contract carrying one is bound at level 4.

{% for item in contract_evidence %}

{{ item.label }}

    {% for rule in item.rules %}
  • {{ rule.where }} {{ rule.text }}
  • {% endfor %}
{% endfor %}
{% endif %} {% if pending %}

Pending delegations

Proposed but not yet archived into openspec/specs/.

    {% for item in pending %}
  • {{ item }}
  • {% endfor %}
{% endif %}
{% endblock %}