{% extends "flow.html" %} {% set step = "inputs" %} {% block main %}

Files

raw exports in, one mapping profile per role · nothing is trusted until sanity
{% if error %}
Blocked. {{ error }}
{% endif %} {% if origin and origin.kind == "rerun" %}
Rerun of {{ origin.src }}. The mapping profiles, the policy preset and any lever overrides carried over — upload only the fresh raw exports and set the new stock date. Upload a profile or policy below only to replace the carried one.
{% else %}
How this works. Each role takes the raw export exactly as your system produced it, plus the mapping profile that names its columns. Profiles are written once per category and reused every run. Missing optional roles degrade loudly, never silently: no velocity means every holding plans as NO-DATA; no tiers means no report bands.
{% endif %}
{% for role, title, required, many, note in slots %}

{{ title }} {{ role }}{% if not required %} · optional{% endif %}

{{ note }}
{% endfor %}

policy the category preset

vocabulary + tenant facts + lever defaults; the levers step can override any lever without touching this file

Stock as-of date

drives the new-door cutoff, the current-season index and every display date; a preset pin always wins over derivation
loads every file through the profiles; mapping only surfaces if something does not fit
{% endblock %}