Skill Tracer
Skills › gstack › qa-only › reporting.md

reporting.md

78 lines · qa-only/sections/reporting.md at 3f79d81

Open on GitHub

Most marks come from matching words in the file, so treat them as pointers.

1<!-- AUTO-GENERATED from reporting.md.tmpl — do not edit directly -->
2<!-- Regenerate: bun run gen:skill-docs -->
3# Finalize a report from retained evidence
4
5Complete these steps before the final report Write. They use retained results, not
6new probes. Missing evidence stays unknown; an expired clock stays expired.
7The caller's write boundary includes reports, learning notes and automatic memory.
8Keep all of them in authorized destinations; a memory feature grants no extra path.
9

<!-- AUTO-GENERATED from reporting.md.tmpl — do not edit directly --> <!-- Regenerate: bun run gen:skill-docs -->

Finalize a report from retained evidence

Complete these steps before the final report Write. They use retained results, not new probes. Missing evidence stays unknown; an expired clock stays expired. The caller's write boundary includes reports, learning notes and automatic memory. Keep all of them in authorized destinations; a memory feature grants no extra path.

Raw lines 1 to 9
10## 1. Establish each finding once
12Ground the report and learnings in retained observations. For every finding, distinguish
13the observed result, the expected contract and any untested causal hypothesis. Link the
14supporting command/result or screenshot; unknown impact remains unknown. A console error
15message does not establish an uncaught exception, failed payload or missing UI. Missing
16text in a page-text extract does not establish an absent attribute or inaccessible element.
17Verify those claims with an appropriate probe, or leave them unconfirmed when time expires.
19Give each finding one ID and write its Observed, Expected, Evidence and Confirmation
20fields first. A logged exception-shaped string proves a logged message, not that the
21named operation executed. Keep possible causes in a separate Hypothesis field; omit
22speculation that does not help the next investigation. Observed-once is not replay-confirmed.

1. Establish each finding once

Ground the report and learnings in retained observations. For every finding, distinguish the observed result, the expected contract and any untested causal hypothesis. Link the supporting command/result or screenshot; unknown impact remains unknown. A console error message does not establish an uncaught exception, failed payload or missing UI. Missing text in a page-text extract does not establish an absent attribute or inaccessible element. Verify those claims with an appropriate probe, or leave them unconfirmed when time expires.

Give each finding one ID and write its Observed, Expected, Evidence and Confirmation fields first. A logged exception-shaped string proves a logged message, not that the named operation executed. Keep possible causes in a separate Hypothesis field; omit speculation that does not help the next investigation. Observed-once is not replay-confirmed.

Raw lines 10 to 23
24## 2. Fill timing fields from their actual boundaries
26Report **Probe budget** (configured limit) and **Guarded command time** (sum of measured
27child spans). Measure guard start to child launch as pre-launch elapsed time, and child
28start to finish as command duration, not a component's latency without its own measurement.
29A deadline window is not total run time. Gaps between receipts do not measure
30status/Write overhead or prove how many probes fit; if late, say only that this run
31dispatched its follow-up after the deadline.
33Use **Total session elapsed**: `unmeasured` for the invocation whose report is being written.
34Its final report Write, acknowledgement and cleanup are not finished yet. Do not fetch
35a clock merely to fill that field. An optional **Measured interval** must cite its actual
36start/end receipts and name the work outside those boundaries, including later report
37Writes and cleanup; it is never a completed-session measurement.

2. Fill timing fields from their actual boundaries

Report Probe budget (configured limit) and Guarded command time (sum of measured child spans). Measure guard start to child launch as pre-launch elapsed time, and child start to finish as command duration, not a component's latency without its own measurement. A deadline window is not total run time. Gaps between receipts do not measure status/Write overhead or prove how many probes fit; if late, say only that this run dispatched its follow-up after the deadline.

Use Total session elapsed: unmeasured for the invocation whose report is being written. Its final report Write, acknowledgement and cleanup are not finished yet. Do not fetch a clock merely to fill that field. An optional Measured interval must cite its actual start/end receipts and name the work outside those boundaries, including later report Writes and cleanup; it is never a completed-session measurement.

Raw lines 24 to 38
Starts an agent dispatched :31
39## 3. Assemble and check every repetition before writing
41Use the caller's selected surface templates and assembly rules. Build headlines,
42Top 3, summaries and completion text from each finding's Observed and Confirmation
43fields, not its Hypothesis. Choose one conservative factual sentence per finding and
44reuse it verbatim in those locations; do not introduce a new causal paraphrase.
45A disclaimer in the detail does not qualify a stronger claim elsewhere.
47Proposed regression assertions must detect the original observation on its actual
48channel. For a logged console error, capture console errors; exception-only hooks
49do not detect a console-only message. Additional causal tests remain separate proposals.
50Apply these evidence limits to proposed tests and learnings too.
52Before the final Write, check every mention of each finding against its evidence
53fields, every proposed test against the observed channel, and each timing claim against
54its named boundaries. Remove unsupported claims from all sections, not only the detail.
55Keep refused/unstarted probes and untested categories explicit. Write the report only
56after this consistency check; do not repair an evidence gap with invented facts.
57Check claims about frequency and executed checks against the actual commands/results:
58one observation proves neither recurrence nor an unexecuted check. Apply the same
59evidence limits to the final response and any caller-authorized learning note.

3. Assemble and check every repetition before writing

Use the caller's selected surface templates and assembly rules. Build headlines, Top 3, summaries and completion text from each finding's Observed and Confirmation fields, not its Hypothesis. Choose one conservative factual sentence per finding and reuse it verbatim in those locations; do not introduce a new causal paraphrase. A disclaimer in the detail does not qualify a stronger claim elsewhere.

Proposed regression assertions must detect the original observation on its actual channel. For a logged console error, capture console errors; exception-only hooks do not detect a console-only message. Additional causal tests remain separate proposals. Apply these evidence limits to proposed tests and learnings too.

Before the final Write, check every mention of each finding against its evidence fields, every proposed test against the observed channel, and each timing claim against its named boundaries. Remove unsupported claims from all sections, not only the detail. Keep refused/unstarted probes and untested categories explicit. Write the report only after this consistency check; do not repair an evidence gap with invented facts. Check claims about frequency and executed checks against the actual commands/results: one observation proves neither recurrence nor an unexecuted check. Apply the same evidence limits to the final response and any caller-authorized learning note.

Raw lines 39 to 60
61## 4. Capture permitted notes, then write the report
63Run the learning step below only if its destination is caller-authorized:
64the user or invoking workflow explicitly permitted that learning-store path.
65Invoking /qa-only alone does not grant this permission. Otherwise
66keep notes in `REPORT_FILE`; do not write learning stores or automatic memory.
68**No explicit permission:** skip learning-store writes and continue to the report.
70**Explicit permission:** Read the named store first. Preserve its existing contents
71and use the permitted write tool to append a verified note in that store's format.
72If the format or write interface is unavailable, keep the note in the report instead.
73Do not run logging helpers: they may write caches or enqueue synchronization outside
74the permitted path. This branch never changes configuration or enables synchronization.
76Write the checked report to the entrypoint's permitted destinations.
77After the final Write, respond briefly with its path and verified coverage/limits;
78do not append new findings or timing explanations.

4. Capture permitted notes, then write the report

Run the learning step below only if its destination is caller-authorized: the user or invoking workflow explicitly permitted that learning-store path. Invoking /qa-only alone does not grant this permission. Otherwise keep notes in REPORT_FILE; do not write learning stores or automatic memory.

No explicit permission: skip learning-store writes and continue to the report.

Explicit permission: Read the named store first. Preserve its existing contents and use the permitted write tool to append a verified note in that store's format. If the format or write interface is unavailable, keep the note in the report instead. Do not run logging helpers: they may write caches or enqueue synchronization outside the permitted path. This branch never changes configuration or enables synchronization.

Write the checked report to the entrypoint's permitted destinations. After the final Write, respond briefly with its path and verified coverage/limits; do not append new findings or timing explanations.

Raw lines 61 to 78