{% extends 'generic/object.html' %} {% load helpers %} {% load i18n %} {% block content %}
| {% trans "Reference" %} | {{ object.ref|placeholder }} |
|---|---|
| {% trans "Source" %} | {{ object.source|linkify }} |
| {% trans "State" %} | {% badge object.get_state_display bg_color=object.get_state_color %} |
| {% trans "Verdict" %} | {% if object.verdict %} {% badge object.get_verdict_display bg_color=object.get_verdict_color %} {% else %} {% trans "Not yet verified" %} {% endif %} |
| {% trans "Requester" %} | {{ object.requester|placeholder }} |
| {% trans "Priority" %} | {{ object.priority }} |
| {% trans "Summary" %} | {{ object.summary|placeholder }} |
{% trans "Move this change on:" %}
{% for move in transitions %} {% endfor %} {% for move in transitions %} {% if not move.allowed and move.blockers %}| {% trans "Baseline (before)" %} | {{ object.before_snapshot_id|placeholder }} |
|---|---|
| {% trans "Post-change (after)" %} | {{ object.after_snapshot_id|placeholder }} |
| {% trans "Branch" %} | {{ object.branch_name|placeholder }} |
{% trans "Attested, not measured. Nothing here can observe the network being changed, so this is a human claim about when it happened." %}
| {% trans "When" %} | {{ object.applied_at|placeholder }} |
|---|---|
| {% trans "Attested by" %} | {{ object.applied_by|placeholder }} |
| {% trans "Reference" %} | {{ object.applied_ref|placeholder }} |
{% trans "Each criterion is an NQE query and what to expect of it. It is bound to a committed query version before anything is measured, and cannot change once evidence exists." %}
{% if criteria %}| {{ criterion.name }}{% if not criterion.blocking %} {% trans "advisory" %}{% endif %} | {{ criterion.get_expectation_display }} | {% if criterion.is_bound %} {% trans "bound" %} {% else %} {% trans "not bound" %} {% endif %} | {% if perms.forward_netbox.change_forwardchangecriterion %} {% trans "Edit" %} {% endif %} {% if perms.forward_netbox.delete_forwardchangecriterion %} {% endif %} |
{% trans "No criteria yet." %}
{% endif %} {% if perms.forward_netbox.add_forwardchangecriterion %} {% trans "Add criterion" %} {% endif %}{% trans "This is what the verdict is computed from, and the only thing it is computed from." %}
{% if criterion_outcomes %}| {% trans "Criterion" %} | {% trans "Before" %} | {% trans "After" %} | {% trans "Result" %} |
|---|---|---|---|
| {{ outcome.criterion.name }} {% if not outcome.blocking %} {% trans "advisory" %} {% endif %} | {% checkmark outcome.before_passed %} | {% checkmark outcome.after_passed %} | {% if outcome.flip %} {% if outcome.blocks %} {% trans "regression" %} {% else %} {{ outcome.flip }} {% endif %} {% else %} {# Never rendered as a pass. A criterion nobody #} {# evaluated is not a criterion that passed. #} {% trans "not measured" %} {% endif %} |
{% trans "No criteria have been evaluated. A change with nothing asserted cannot be verified, only asserted to have happened." %}
{% endif %}{% trans "Rules from the validation policies that apply to this change, run in its workspace. A run counts only against the snapshots the change is pinned to now." %}
{% if validation_gate %}| #{{ run.pk }} | {% badge run.get_status_display bg_color=run.get_status_color %} | {% if run.score is None %}{% trans "no score" %}{% else %}{{ run.score }}{% endif %} | {{ run.created|date:"Y-m-d H:i" }} |
{% trans "No validation runs yet." %}
{% endif %} {% if can_validate %} {% endif %}{% trans "Found by asking Forward with read-only calls, never from a licence table." %}
{% if capabilities %}| {{ label }} | {{ text }} |
|---|
{% trans "Advisory only. The verdict does not depend on this." %}
{{ predict_panel.message }}
{% if predict_panel.stale %}{% trans "The proposal changed after this prediction, so it describes an earlier proposal." %}
{% endif %} {% if predict_snapshot_id %}{% trans "Predicted snapshot" %}: {{ predict_snapshot_id }}
{{ predict_panel.scope }}
{% endif %} {% if perms.forward_netbox.change_forwardchange %} {% if predict_pending %} {% elif predict_offered and can_predict %} {% trans "Ask Forward to predict" %} {% elif not predict_offered %}{% trans "Predict is off for this source. Turn on Ask Forward to predict change-control changes on the source to offer it." %}
{% endif %} {% endif %}{% trans "CLI commands to try on each device. They are kept in NetBox for this change only and are not written to the change log, the journal or the support bundle." %}
{% if proposal_editable %} {% else %}{% trans "The proposal can no longer be edited." %}
{% endif %}{{ scoped.forward_device_key }}
{% else %}
{% trans "no Forward identity" %}
{% endif %}
{% if perms.forward_netbox.change_forwardchange and not object.workspace_network_id %}
{% endif %}
{% trans "No devices in scope." %}
{% endif %} {% if perms.forward_netbox.change_forwardchange and not object.workspace_network_id %} {% if scoped_devices %} {% endif %} {% endif %}| {% trans "Workspace" %} |
{% if object.workspace_network_id %}
{{ object.workspace_network_id }}
({{ object.workspace_origin }})
{% else %}
{% trans "none yet" %}
{% endif %}
|
|---|---|
| {% trans "Baseline snapshot" %} | {{ object.before_snapshot_id|placeholder }} |
| {% trans "After snapshot" %} | {{ object.after_snapshot_id|placeholder }} |
| {{ review.reviewer|placeholder }} | {{ review.phase }} | {% if review.approved %} {% trans "approved" %} {% else %} {% trans "rejected" %} {% endif %} | {{ review.comment }} |
{% trans "No reviews yet." %}
{% endif %} {% if perms.forward_netbox.approve_forwardchange %} {% endif %}{% trans "No comments yet." %}
{% endfor %} {% if can_comment %} {% endif %}| {{ transition.target }} |
{% if transition.allowed %}
{% trans "ready" %}
{% else %}
|
|---|
{% trans "This change is finished; there is nowhere further to go." %}
{% endif %}