Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Acceptance ¶
type Acceptance struct {
Metric string `json:"metric"`
Current string `json:"current"`
Direction string `json:"direction"`
Window string `json:"window"`
Report string `json:"report"`
Tool string `json:"tool"`
Args string `json:"args"`
}
Acceptance is the falsifiable half of the brief. Without it "fix with your agent" is a wish.
type Brief ¶
type Brief struct {
Fingerprint string `json:"fingerprint"`
Finding insight.Finding `json:"finding"`
ComputedBy string `json:"computed_by"`
Evidence []Evidence `json:"evidence"`
Where []Where `json:"where,omitempty"`
Do []string `json:"do"`
Acceptance Acceptance `json:"acceptance"`
Note string `json:"note,omitempty"`
Prompt string `json:"prompt"`
Ask string `json:"ask"`
}
Brief is the whole artifact. Prompt is the paste-anywhere rendering of every other field — derived, never independently written, so the copy block cannot say something the structured fields do not. Ask is the short form for a deeplink, where 8k of URL is the ceiling.
func ComputeAll ¶
ComputeAll builds a brief for every finding in ONE pass. The dashboard renders all of them (the sheet has to open instantly — a spinner on the verdict's second action would make the most important control on the page feel broken), and computing them one at a time would re-run the funnel and the whole web overview once per card on every page load.
type Evidence ¶
type Evidence struct {
Label string `json:"label"`
Value string `json:"value"`
N int `json:"n,omitempty"` // the base behind a rate; 0 when the value is a raw count
Report string `json:"report"`
Tool string `json:"tool"`
Args string `json:"args"`
}
Evidence is one computed fact plus the two ways to re-derive it. Report is a real path on this instance (the dashboard renders it as a link — clicking it IS the audit), Tool/Args are the same question through MCP.
type Item ¶
type Item struct {
Fingerprint string `json:"fingerprint"`
Severity string `json:"severity"`
Title string `json:"title"`
}
Item is one line of the picker: enough to choose a finding, not enough to act on it.
type Result ¶
type Result struct {
Available []Item `json:"available"`
Brief *Brief `json:"brief"`
Note string `json:"note,omitempty"`
}
Result always lists what IS available, so a caller that asked for a finding that has since stopped being true gets a real next step instead of an empty object.