Click to copy
<role>Front-end engineer who builds reconciliation views for fund controllers. You produce one HTML file that opens from disk, shows the tie-out exactly as it ran, and lets a reviewer challenge any number on it.</role>
<task>
Build a single self-contained HTML file that shows today's tie-out for {{FUND_NAME}} on {{TIEOUT_DATE}}, populated only from what prompts 02 to 11 produced in this session. This is the view, not a summary. Every panel below is filled from a named prompt.
1. STATUS BANNER. Print the prompt 08 status word for word: RECONCILED or NOT RECONCILED. Beside it print the coverage verdict, one of:
CLEAN, prompt 08 RECONCILED, every position, cash line and accrual reconciled, no UNEXPLAINED item open, no ASSUMPTION on the face of the numbers.
PARTIAL EVIDENCE, prompt 08 RECONCILED but something was never tested: a STALE or UNPRICED line, a missing statement, an UNEXPLAINED break, or an accrual resting on an ASSUMPTION.
FAILED, prompt 08 NOT RECONCILED.
NOT TESTED, prompt 08 did not run in this session.
A NOT TESTED or PARTIAL EVIDENCE run must never render like a clean one. Different color, different word, and the reason printed next to it.
2. HEADLINE. Net assets, NAV per unit, and the day-over-day change with the three largest drivers (prompt 09, drivers from prompt 07). Alongside it, the count of positions, cash lines and accruals carried into the baseline (prompt 02).
3. COVERAGE. What was actually reconciled against what was carried in:
positions matched to the custodian (prompt 03) over positions in the baseline (prompt 02)
cash lines matched (prompt 03) over cash lines in the baseline (prompt 02)
accruals re-priced (prompt 04) over accruals in the baseline (prompt 02)
statements received (prompt 03) over statements expected from the custodian, prime broker and administrator named in prompt 01
Show each as a count, a share, and a residual, then name the residual line by line: every STALE line, every UNPRICED line, every missing statement, every accrual carrying an ASSUMPTION. An unreconciled item is never rendered in the clean color, and a residual is never rendered as zero unless a prompt reported it as zero.
4. BREAK REGISTER. The prompt 06 register, one row per break, sorted by absolute NAV impact, largest first: break, class (quantity, price, cash, timing, unexplained), my side and their side (prompt 03), difference in base currency, difference in basis points of NAV, direction, timing or true, traced cause, owner, confidence. Direction means a plus or a minus in front of every impact figure, stating whether the break raises NAV or lowers it. Never show an absolute value on its own.
5. ACCRUAL AND FEE DRIFT. For each accrual: prior accrual, recomputed accrual, difference and reason (prompt 04). Then the fee and expense drift lines ranked by basis points, with the total drift in base currency and in basis points (prompt 05).
6. ROLL FORWARD BRIDGE. Prior net assets, each driver with its sign, today's net assets, and whether the roll-forward tied to the prompt 02 baseline within {{TOLERANCE}} (prompt 07). If it did not tie, the gap shows as a break, not as a rounding.
7. TWO METHOD CHECK. Method A net assets, Method B net assets, the difference in base currency and in basis points, and the disagreeing lines if any (prompt 08).
8. ESCALATIONS. Counterparty, break, the ask, the deadline (prompt 10). Timing breaks appear as monitored, not as escalated.
9. MONTH END TIE. Administrator NAV, engine NAV, reconciling items, residual difference in basis points, and anything the engine missed (prompt 11). On a daily run prompt 11 does not fire, so this panel reads "not produced, prompt 11 not run". Not zero, not blank.
10. NOT COVERED. A block above the footer listing in plain words what this run did not test: prompts that did not run, statements not received, positions not priced, accruals assumed, breaks left UNEXPLAINED, and anything a reviewer has to check by hand. If it is empty, say "nothing outstanding", and only say that when the coverage panel agrees.
11. PROVENANCE. Every figure on the page carries the prompt that produced it, printed beside it as P02 through P11. Below the panels, a source table: figure, value, producing prompt. A reviewer must be able to pick any number on the page and know which prompt to attack.
</task>
<constraints>
- Populate from MY run only. Never a placeholder, never sample data, never an illustrative figure, never a number carried in from an example. If a figure was not produced by an earlier prompt in this session, render the literal words "not produced" with the prompt that would have produced it. Do not infer it, do not derive it, do not leave the cell blank.
- The page displays, it does not calculate. Every total shown is a total a prompt already produced. If a figure would need new arithmetic, it is "not produced".
- Anything a prompt labeled ASSUMPTION keeps the ASSUMPTION marker on the face of the view, next to the number, not in a footnote.
- One file. Inline CSS in a single style block, any JavaScript inline and optional. No CDN, no external fonts, no images fetched over the network, no analytics, no fetch, no backend. It opens from disk with a double click, offline, and every figure stays readable with JavaScript switched off.
- System font stack. Content width around 1100 pixels so it reads on a 13 inch laptop. Wide tables scroll inside their own container; the page itself never scrolls sideways.
- Light and dark. Define colors as CSS variables on the root element and override them under a prefers-color-scheme dark media query. Status is never carried by color alone; every status also prints its word.
- Print and screenshot friendly. A print media query that keeps the status banner, the coverage panel and the break register legible on paper, avoids splitting a table row across pages, and keeps every status readable without background color.
- Title tag and page heading: {{FUND_NAME}} tie-out, {{TIEOUT_DATE}}. Footer carries the tolerance used, the base currency, the data source chosen in prompt 01, and the line "Daily control. The administrator strikes the official NAV. No prompt signs this, a named human signs."
- No hyphens or em dashes as punctuation in the visible copy. Commas and full stops.
- Run this in Claude Opus 5, in the same session that ran prompts 02 to 11, so every figure comes from this run and not from a recollection of one.
- The page cannot save, download, email or send itself, and must not say that it can. I save the file myself.
</constraints>
<review_gate>
Before the file, print a source check: each of the eleven panels, the prompt it reads from, and whether that prompt actually ran in this session. Then confirm in one line each: no figure on the page was invented or carried from an example, the status banner matches prompt 08 word for word, the coverage panel names every item that was not reconciled, and the NOT COVERED block lists every prompt that did not run. If prompt 08 did not run, the banner reads NOT TESTED and the page does not present a clean result. Then confirm the file itself is well formed before you output it: every CSS value is a valid value with no garbled token, and every figure on the page stays readable with JavaScript switched off.
Then output the complete HTML in ONE code block, ready for me to save as nav-tieout-{{TIEOUT_DATE}}.html and open in a browser. After the block, list every figure you rendered as "not produced" and the prompt that would have produced it.
</review_gate>
Then "Next step:".