{% extends "base.html" %} {% block title %}Internal Developer Portal{% endblock %} {% block content %}
CUI // SP-CTI

Internal Developer Portal

{{ totals.components }} components {{ totals.assessed }} assessed {% if totals.unassessed %} {{ totals.unassessed }} not assessed {% endif %} {{ totals.unowned }} unowned {{ scorecard_name }}{% if evaluated_on %} · evaluated {{ evaluated_on }}{% endif %}{% if window %} · window {{ window }}{% endif %} Refresh facts

Catalog and scorecards over ICDEV's own registered components. Facts come from args/component_registry.yaml and the repo tree via the IQE collection idp.components; grades come from args/scorecards/{{ scorecard_key }}.yaml. Adding a rule or a level is a YAML edit — see Canvas Health for the file-existence view of the same tree.

{% if scorecards | length > 1 %}
{% for sc in scorecards %} {{ sc.name }} {% endfor %}
{% endif %} {# Scope + isolation posture (idp-mt-01). Shown only for a tenant-scoped read: the platform's own view covers every registered component, so an "unapproved for external offering" notice on it would be noise about a thing that is not happening. #} {% if tenancy and tenancy.scoped %}
Scoped to tenant {{ tenancy.tenant_id }}. Showing the {{ tenancy.scope_size }} component(s) this tenant has enabled, not the full platform estate. {% if tenancy.notice %}
{{ tenancy.notice }}
{% endif %}
Isolation posture: {{ tenancy.isolation_posture }} {% if tenancy.decision_record %} · decision record: {{ tenancy.decision_record }} {% endif %}
{% endif %} {% if scorecard_error %}
Scorecard could not be evaluated.
{{ scorecard_error }}
The catalog below still lists every registered component; only the grades are missing.
{% endif %}
This page grades itself {% if self_report.in_catalog %} in its own catalog {% else %} missing from its own catalog {% endif %} {% if self_report.level %} {{ self_report.level }} {% else %} unranked {% endif %} {% if self_report.score is not none %} {{ self_report.score | round(0) | int }}% {% endif %} {% if self_report.completeness_passed %} 8-point gate: pass {% else %} 8-point gate: fail {% endif %} Full breakdown →
{% if self_report.completeness.items %}
{% for item in self_report.completeness['items'] %} {% if item.present %}✅{% elif item.required %}❌{% else %}➖{% endif %} {{ item.point }} {% endfor %}
{% endif %}
{% for level in ladder %}
{{ level.name }} {{ level_distribution.get(level.name, 0) }}
{{ level.description }}
{% else %}
No ladder — the scorecard did not load.
{% endfor %}
unranked {{ level_distribution.get('unranked', 0) }}
Measured, and has not cleared the lowest rung.
not assessed {{ level_distribution.get('unassessed', 0) }}
No rule in this scorecard applied. Counted apart from "unranked" — nothing measured these, so they are neither passing nor failing.
Letter grade: {% for band in grade_bands %} {{ band.letter }} · {{ grade_distribution.get(band.letter, 0) }} {% endfor %} {{ unassessed_label }} · {{ grade_distribution.get('unassessed', 0) }} Bands are configuration — grading.bands in args/scorecards/{{ scorecard_key }}.yaml.
{% if dimensions %}
Dimensions: {% for dim in dimensions %} {{ dim.label }} {% endfor %} Each component's score breaks down across these; every cell links to the rules and the evidence behind it.
{% endif %} {% if schema_status %}
Backing signals: {% for row in schema_status %} {{ row.table }}{% if not row.present %} (absent){% endif %} {% endfor %} A signal that is absent renders as "not measured", never as a pass.
{% endif %}
Rules — {{ scorecard_name }}
{% for rule in rules %} {% else %} {% endfor %}
Rule Gates Weight Passing Applicable Coverage
{{ rule.title or rule.identifier }}
{{ rule.identifier }}
{# The rule IS its evidence: this is the exact IQE the evaluator ran, paste-able into the query widget below. #}
how it is measured
{{ rule.expression }}
{% if rule.filter_expression %}
applies to: {{ rule.filter_expression }}
{% endif %} {% if rule.evidence_note %}
{{ rule.evidence_note }}
{% endif %}
{% if rule.gates_ladder %} {{ rule.level }} {% else %} scores only {% endif %}
{{ rule.dimension }}
{{ rule.weight }} {{ rule.passing }} {{ rule.applicable }} {% set _pct = (rule.passing / rule.applicable * 100) if rule.applicable else 0 %}
{{ _pct | round(0) | int }}%
No rules loaded.
Component catalog

{{ totals.canvases }} canvases are in scope for the 8-point dashboard-page gate; {{ totals.completeness_passing }} pass it. Components outside that scope are not graded on it.

{% for group in groups %}
{{ group.label }} {{ group.rows | length }}
{% for dim in dimensions %} {% endfor %} {% for col_key, col_header, col_bool in columns %} {% if col_key != 'owner' %} {% endif %} {% endfor %} {% for row in group.rows %} {# Grade and score are blank-with-a-word, never 0/F, when unassessed: an F is a measured verdict and this component has none. #} {% for cell in row.dimensions %} {% endfor %} {% for col_key, col_header, col_bool in columns %} {% if col_key == 'owner' %} {# rendered as its own column above #} {% elif col_bool %} {% elif col_key == 'route' %} {% else %} {% endif %} {% endfor %} {% endfor %}
Component Owner Level Grade Score{{ dim.label }}{{ col_header }}Failing rules
{{ row.display_name }}
{{ row.key }}
{% if row.owner %} {{ row.owner }} {% if row.owner_contact %}
{{ row.owner_contact }}
{% endif %} {% if row.on_call %}
on-call: {{ row.on_call }}
{% endif %} {% else %} unowned {% endif %}
{% if row.level %} {{ row.level }} {% elif row.assessed %} unranked {% else %} {{ unassessed_label }} {% endif %} {% if row.letter_grade %} {{ row.letter_grade }} {% else %} — {% endif %} {% if row.score is not none %}{{ row.score | round(0) | int }}% {% else %}n/a{% endif %} {% if cell.assessed %} {{ cell.score | round(0) | int }}% {% else %} n/a {% endif %} {% if row.facts.get(col_key) %}✅{% else %}❌{% endif %}{% if row.route %}{{ row.route }}{% else %}—{% endif %}{{ row.facts.get(col_key) or '—' }} {% if row.failures %}{{ row.failures | join(', ') }}{% else %}—{% endif %}
{% else %}
No components found. args/component_registry.yaml could not be read.
{% endfor %}
Facts are memoized per process; refresh re-reads the registry and the tree. Every score above traces to {{ adapter_module }} via the rules in {{ scorecard_source }}; a dimension marked n/a was not measured, not passed. JSON: /idp/api/catalog, /idp/api/scorecard, /idp/api/component/<key>, /idp/api/evidence?component=<key>&rule=<id>.
{% include "includes/iqe_query_widget.html" %} {# /idp/catalog and /idp/scorecards are the same page with a different entry point — three nav links, one template, one set of facts. Jumping to the section beats maintaining three near-identical templates that drift. #} {% if focus in ('catalog', 'scorecard') %} {% endif %} {% endblock %}