# Reports — local v0.16

Reports help an owner inspect the work and money already recorded in this fictional business. They do not change jobs, customers, documents or costs. This checkpoint is ready for local testing with invented data; the live SHS system and its original findings are unchanged.

## Open and filter

Open **Reports** in the owner workspace. In a narrow window, choose Reports from **Workspace section**. The initial range runs from the first of the current month to today, using UK calendar dates.

Choose dates, a saved service, an exact customer, a current job stage, a saved tag or an archive state, then **Apply report filters**. Both end dates are included; the maximum is 366 days. Changing a filter clears the old results and export button. **Reset report filters** returns to this month and all jobs. Leaving or reloading Reports resets the view; it does not change saved work.

Services use the job's exact saved label. Customers use exact record IDs, so identical names or contact details remain separate. Current job classifications select the work even when the selected dates are earlier. Archived jobs are included by default. A merged alias does not silently redirect a filter to its retained customer.

## Read the two sets of figures

**Activity in the selected period** shows created jobs, explicitly dated completions, issued invoice value, recorded receipts, saved person time, internal labour cost and received material cost.

**Current positions** shows open jobs, current unexpired draft/shared quote estimates and current invoice balances. These use the same job filters but are independent of the dates. For example, the tested October records show £150 issued and £40 receipts; September shows £0 issued and £10 receipts. The current balance stays £100 for both periods.

An issued invoice is not the same as money received. Payment requests or allocations do not add money. Recorded receipts have not been reconciled to a bank. Recording-error reversals restate their original paid-on period, and their dates and excluded amounts remain visible. A void invoice, archived time or archived material cost appears separately under **Corrections, exclusions and unknown dates**. A missing date stays unknown.

Overview, Operations and Reports now use the same current-open-quote rule. Only current draft/shared quotes on open unarchived jobs count, through their inclusive UK expiry day. Blank expiry is allowed; malformed nonblank expiry is excluded and disclosed as unknown in Reports. The earlier £160/£120 fixture now shows £120 in all three views. Overview's **Inspect in Reports** opens the detailed report. Overview receipts remain all dates; report receipts use the selected period.

## Inspect the records

Click a figure or **Inspect service/customer/person**. Choose **Metric to inspect** to see another measure for that same group. The drill-down totals every matching row and displays 50 at a time. Use **Open job** or the document link to inspect the underlying saved work.

Financial records show both the current customer association and the original identity sealed into the document. A customer transfer does not rewrite invoice history or count it twice. The broader v0.14 limits still apply: flat aliases, one transfer per job, reviewed reasons and access revocation; reporting adds no new merge or undo behaviour.

**Team activity** uses saved entries and their exact scheduling-resource IDs. It shows the original recorded name and the current resource name, even if that resource is archived. Two people working one hour contribute two person-hours. Reviewed field time counts once through its converted entries. Raw timers and private field notes do not become estimated labour, and invoice value is not divided between people. Jobs worked can overlap between people.

## Cohort and tags

**Cohort & tags** starts with jobs created in the selected period. Each following step is a subset of those jobs: a shared quote; sharing and acceptance of the same revision; a linked issued invoice; and a positive retained receipt on that invoice. Each job counts once per step. Percentages use the original created-job population.

The report observes evidence available when it is generated, including evidence saved after the chosen period. Direct invoices, skipped stages and missing dates are disclosed without inventing a job or date to fill a gap. Stage and tag counts describe the same created-job population's current classifications. Tags overlap and cannot be added as separate populations. Select a stage or tag to apply that filter.

## Export and recover

**Export report summary** downloads the currently selected service, customer or team groups; on Cohort & tags or Definitions it downloads business totals. **Export these records** downloads only the chosen metric and group. If the underlying snapshot has changed, apply the filters again before exporting.

The CSV records the business, filters, UK period, generation time, units, metric definitions and snapshot ID. Money is integer pence and time is integer person-minutes. Original/current IDs and names are included; contact details, private notes, credentials, images and document bodies are excluded. Text that could be interpreted as a spreadsheet formula is escaped. An empty export carries an explicit empty context row. These private extracts are not backups.

Limits are explicit: 20,000 rows per input table, 1,000 matching jobs, 12,000 supporting metric rows and 5,000 CSV rows. An oversized report or file fails with an explanation; it never silently drops rows. Narrow the job filters as well as dates where needed.

There is no new database schema or recovery format. Format 11 and pinned formats 1–10 remain supported. Its existing `prototype_version: 0.14.0` archive marker identifies the pinned format-11 schema; the application release is 0.16.0. A four-business disappearance/restore check reproduced report objects and CSV bytes exactly at the same observation time, retained original identities and rejected old sessions. Follow [backup and recovery](BACKUP-AND-RECOVERY.md), including stopped backups and fresh restore targets.

## Evidence and remaining work

The v0.16 full run passed 611 backend tests, 94 client tests, 79 structural render checks and the build. The following v0.15 read-only reporting evidence remains preserved. Structural renders are not browser tests. Actual desktop/narrow-panel checks covered filters, period/current distinctions, service/customer/team drill-downs, original identities, cohort counts, navigation/reload and an empty separate business. Three actual browser downloads were retrieved and parsed: grouped summary, one receipt and the empty-business report. The test businesses' database backup bytes were unchanged before and after this read-only walkthrough.

The [v0.16 connected journey](CONNECTED-WORKFLOW-WALKTHROUGH.md) adds actual UI proof of converted field time counted once, a direct invoice without invented quote acceptance, a manual partial receipt and a downloaded report CSV. Mixed manual/field corrections, unknown dates, stale exports, oversized requests and denied roles retain automated evidence; their wider browser journeys remain. Physical phones, touch, screen readers, installed PWA/offline use, large live datasets and another machine remain unverified. There is no accounting profit, tax/VAT, payroll, website traffic, lifetime value, forecast or staff-performance claim. Specialist contracts, integrations, subscribers/domains and full product release remain open.

See [precise definitions](REPORTING-DEFINITIONS.md), [metric registry](reporting-metrics.json), [source decisions](reporting-source-map.json), [checkpoint evidence](reporting-milestone-checks.json) and the [full 45-capability register](FULL-PARITY-REGISTER.md). All 14 original SHS findings remain OPEN.
