{% extends "base.html" %} {# The human title the page's own

already computes (line ~34, non-pending branch) — the same fallback chain, reused rather than recomputed, so the tab and the heading can never disagree (#241). Before an objective exists (pending, or an analysis that failed before writing one), the slug is still the only human name there is. #} {% block title %}{{ slug if pending else (s.understood.objective if s.understood.objective else s.slug) }} — Requivo{% endblock %} {% block content %}

← All requests

{# The bundled sample announces itself before anything it contains (#226). Above the pending split on purpose: both branches are reachable for it and both need the claim, and a template that asks the same question in two places will eventually answer it two ways. `is_example` is set at the top level by `session_page` for exactly that. #} {% if is_example %}
{{ example_badge }} — this is the sample that ships with Requivo, not a session you created. A real, messy client email was reasoned once by a real run, and what you see below is replayed from the bundled payload: reading the understanding, the questions and what rests on what costs no API key and makes no network call.
Refining it or generating a document does need a key — those reach the provider like any other session, because this is an ordinary session in your workspace, not a read-only exhibit.
{% endif %} {% if pending %}

{{ slug }}

Awaiting analysis

{% if analysis_failed %} {# The whole point of #207: the request below is saved, and the button below that still works. #} {# A failed analysis can still have spent tokens (#253) — the model never advanced past revision 0, but the call was billed, and the retry page has to say so rather than implying the failure was free. A no-op include on every ordinary "create only" visit, which passes no `usage` at all. #} {% include "_usage.html" %} {% endif %}

The request

{{ request_text }}
{% if provider.available %}
{% include "_csrf.html" %} {# Same call, same promise — see the note beside the create form in `home.html` (#236). This page had no spinner at all, so with JavaScript on there was nothing between the click and the result. #}
Usually under a minute — reading the request and building a first understanding. Reading the request…
{% else %}
{{ provider.reason }} You can analyse this request from Claude Code or the CLI — they read the same session.
{% endif %} {% else %}

{{ s.understood.objective if s.understood.objective else s.slug }}

{# State at a glance, beside the title, so the page answers "where is this?" before it is scrolled. Every value here is already computed and already stated in full further down — this is a summary of the page, never a second source for it. #} {% set open_count = s.questions|length + s.more_questions|length %}
{% if s.readiness.ready %}Ready {% else %}Not ready{% endif %} {% if open_count %}{{ open_count }} open question{{ '' if open_count == 1 else 's' }}{% endif %} {% if s.primary_artifact and s.primary_artifact.stale %}Needs updating{% endif %} {{ s.slug }}

The request

{{ s.request_text }}
{% include "sessions/_session.html" %} {% endif %} {% endblock %}