Find out why a run went wrong prototype
Table of Contents
| Item | Where |
|---|---|
| Prototype | the prototype |
| Gemini review | none |
| Group | Reporting prototypes |
1. Summary
This prototype argues the sharpest question of the five: whether errors are a
place you go, a panel beside the run, or a ledger across runs. It carries three
structural variants switched with ?variant, and it answers to
Find out why a run went wrong.
It is throwaway. The rows are mock, copied from a real run whose market data was removed.
2. Detail
2.1. The question
An error is not an entity a person manages. It is a fact about a run, and the person reading it arrived from somewhere: a failure they were told about, a number they do not believe, or a party-wide question about what is broken. Which of those the screen is built for decides its shape.
2.2. The three variants
Switch with the bottom bar, or with ?variant.
| Variant | Name | The structural argument |
|---|---|---|
A |
A tab on the run | Errors are one tab of the run, beside the outputs and the timeline, with the count on the tab. You go there deliberately. |
B |
A panel beside the run | The run stays visible and the errors sit beside it, filterable, so a failure is read against the run it belongs to. |
C |
A ledger across runs | The errors are the screen, all runs together, grouped by scope and subject, with the run as a column. For "what is broken across my party right now". |
2.3. The rows
The page renders twenty-one rows from one run: nineteen errors and two warnings,
across one Curve, sixteen Trade, three Analytics and one Configuration
row. The scopes are exactly the vocabulary the server holds: Trade,
Analytics, Curve, Configuration, Report. The severities are exactly
error and warning.
2.4. The row that makes this prototype worth having
One trade failed in both PRICING and SA_CCR. The engine wrote the same
scope, the same subject, the same trade UUID and the same message twice, and only
detail tells the two apart. The page draws both rows, side by side and
visibly, with a pair marker and a plain sentence that the two differ only in
detail. A screen that collapses them loses a fact.
2.5. What the errors are not
Immutable and read as a group. There is no edit, no delete and no acknowledge,
and the page draws none of them. The run names who asked and when; an error
carries event_time and no actor.
2.6. What is fake
The rows, the run and the party are mock. Nothing reads a server, no operation serves a run's errors to a browser today, and the application has no reporting UI. The error model itself is real: the scopes, the severities, the subject and subject id pair, and the immutability are what the server enforces.
2.7. Where the code lives
doc/prototypes/reporting/find-out-why-a-run-went-wrong/. Three files, plain
HTML, CSS and JavaScript, no framework and no build step.
2.8. The verdict
None yet. This page is on the branch that proposes it and waits for review. The
requirement it settles whatever else changes is that two rows differing only in
detail must both be visible.
2.9. What it does not settle
Whether a person can reach a trade or an analytic from its error. The subject is a discriminator and a value, not a foreign key, so a link to the trade is a screen concern the server does not yet answer.
3. See also
- Reporting prototypes — the group, and the axis this prototype turns on.
- Reporting journeys — the five journeys these answer to.