Report sections and findings
Declare the sections and typed findings of your report, fill them from evidence, and understand when a report is complete.
The report is what a buyer pays for. In a workflow you declare its sections and typed findings, then fill each finding from a step's value. This page covers declaring sections, filling them, how findings map to evidence, and the rules that make a report complete. It is for creators designing a workflow's output.
How a report is put together#
Three parts of the builder work together:
| Part | Where | What it holds |
|---|---|---|
| Section declarations | Settings → Report sections | Each section's title, whether it is required, and its findings: code, label and type. |
| Report section steps | Canvas (library: Report section) | Which section the step fills (Fills the report section) and which value fills each finding. |
| Report output | The fixed Report output step | Sections in the report: the report section steps included in the report. "The report goes only to the run report. No other destinations exist." |
Adding Report section from the library creates all three at once: a section called "Section 1" (the first one you add is required) with one finding, a step that fills it from the most recent data or transform step, and its entry in the report output. Rename the section and its findings in Settings.
Declare sections and findings#
In Settings → Report sections:
- Section title: up to 100 characters. Buyers see it as the section heading.
- Required for a complete result: a required section must be complete for the report to be complete. See Complete reports.
- Each finding has a Code (an identifier such as
total-supply), a Label (up to 100 characters, what buyers see) and a Type. - Add finding adds a finding to that section; the bin button removes one.
- New section title and Add output section add a section without a step. You then need a report section step to fill it.
A workflow has 1 to 12 sections, and each section has 1 to 16 findings.
| Finding type | A value matches when it is |
|---|---|
| Text | Text. |
| True or false | A boolean. |
| Whole number | A whole number, or digits as text. |
| Exact decimal | An exact decimal number, or its text. |
| Address | An EVM address or a Solana address. |
Changing a finding's code in Settings updates the steps that fill it.
Fill a section#
Select a report section step. In Step settings:
- Fills the report section: the declared section this step fills. Each section can be filled by one step only.
- For each Finding N: choose the Finding (listed as "Label · Type") and its Value: an input, a step's output field or result, or a fixed value.
- Add finding fills another declared finding of the section.
- Under Depends on, tick every step whose values the findings use.
"Findings cite the evidence of the steps their values came from; values taken straight from inputs are labelled as not observed."
Finding statuses#
Each finding in a report has one status:
| Status | Shown to buyers as | When |
|---|---|---|
| Observed | The value, with links to its evidence | The value came from a data step, directly or through conditions, transforms, AI analysis or sandboxed code, and matches the finding's type. |
| From input | The value with "(from input, not observed)" | The value came only from the buyer's input or a fixed value. It cites no evidence. |
| Unknown | The reason the value is missing | The value was unavailable (for example "Step metadata did not produce a value.") or did not match the type ("The value is not a decimal."). |
| Not run | The reason the section did not run | The section's step did not run, for example because a condition skipped it. |
Unknown values establish nothing. Every report states: "Skipped steps and unknown values establish nothing, including the absence of a risk or control."
How findings map to evidence#
Every read a data step makes is stored as an evidence item with a content-derived id. A finding lists the ids of the evidence behind its value:
- a value from a data step cites that step's evidence;
- a transform or condition passes on the evidence of the values it used;
- an AI analysis result cites the evidence its accepted claims cited.
In the report, each finding links to those evidence items, and each item says what it proves, the observation, its source and method, and the block or slot it was read at. See Evidence.
Complete reports#
A report's status is decided after every step has run:
| Report status | When |
|---|---|
| Complete | No data, AI or sandboxed step failed, every section that ran is complete, every required section is complete, and every condition decided its branch. |
| Partial | At least one section was produced, but a step failed, a required section is not complete, a section is partial, or a condition could not decide. |
| Failed | A run-wide failure occurred (for example the read limit, the time limit or a permission refusal), or no section was produced. |
A paid run charges the buyer only when its report meets the workflow result contract:
- The run did not fail, and the report is bound to the exact version and the buyer's input.
- The version declares at least one required section, and every required section is complete.
- Every finding in the required sections is observed or from input, and observed findings cite complete evidence.
- At least one finding in the report is backed by tool evidence.
- No evidence changed canonicality, and the run recorded no permission, integrity or disabled-capability failure.
Otherwise the whole reservation returns to the buyer. The same contract decides whether a test can be submitted for review, published or shown as a saved example.
Report layout#
A report opens in the standard report view with Overview, Findings, Evidence, Sources, Execution and Export tabs. A workflow built in the builder uses the generic layout, titled "Workflow Report": each section is shown as a labelled list of its findings, followed by the limitations. The six report archetypes (token-protocol, wallet-flow, contract-security, market-liquidity, governance-treasury and monitoring-events), with their headline metrics, tables and charts, are declared by the first-party research workflows; the builder has no setting for them. See How reports work.
Every workflow report also lists its limitations, starting with any limits the tools stated for this run, followed by the general ones:
- "Conditions and built-in transforms are exact comparisons over captured values."
- "Tool evidence comes from the configured providers through read-only calls. It is not an independent attestation, audit, security score or investment recommendation."
- "Skipped steps and unknown values establish nothing, including the absence of a risk or control."
- "Each tool pins its own snapshot; facts from different steps may come from different blocks unless their evidence shows the same snapshot."
- "Provider cost is not priced for this run."
Sample output#
Settings → Sample output (under the advanced groups) lets you type an example value for each declared finding. Each value must match its finding's type, or validation reports "The sample value for (finding) must be (type)." The builder describes sample output as shown on the listing; the listing page currently shows your saved example instead (see Publish a listing).