Skip to content

feat: show closed findings and the reasons given for them - #108

Merged
Coysh merged 3 commits into
mainfrom
feat/finding-history
Oct 21, 2026
Merged

Coysh merged 3 commits into
mainfrom
feat/finding-history

Conversation

@Coysh

@Coysh Coysh commented Oct 21, 2026

Copy link
Copy Markdown
Contributor

Acknowledging a finding requires a reason, and that reason was only visible while the finding stayed open. After it resolved the card went away, and the audit log showed finding.acknowledged with no hint of which finding or why.

Audit log. The row component shared by a site's Audit tab and the fleet Activity log now names the finding under its acknowledged, reopened and resolved events, and shows the reason on an acknowledgement. Output is escaped. The title is now stored in those three events' detail, so entries written earlier fall back to the rule key. Nothing already written changes, and the hash chain still verifies (there is a test for it).

Security tab. "Recently resolved" now shows severity, plus who acknowledged the finding, when, and why. When there are more than five, "Show all" links to ?history=all on the same page: every resolved finding, newest first, 25 to a page. The acknowledgement columns already survive resolution, so there is no migration.

A finding is one row per rule, so the tab's history is the latest closure of each rule; an earlier closure of a rule that has since reopened is in the audit log only. The changelog says so.

Version 1.9.0, with the worked examples in docs/getting-started.md, docs/upgrade.md and docs/rollback.md moved to match. The stylesheet is rebuilt.

Verified: full suite (1484 passed, including the Invariants suite and TenantIsolationTest), pint, phpstan. New tests in tests/Feature/FindingHistoryTest.php cover the reason on the Security tab, the five-row tail and "Show all", pagination across pages, escaping on both screens, the Activity log, the pre-title fallback, chain verification, and that another organisation's or sibling site's findings and events never appear.

Coysh added 3 commits October 21, 2026 07:46
Acknowledging a finding requires a reason, and the reason was displayed
only while the finding stayed open. Once it resolved, the card went with
it, and the audit log printed finding.acknowledged with nothing to say
which finding or why.

The audit-action row, shared by the site Audit tab and the fleet
Activity log, now names the finding under its acknowledged, reopened and
resolved events and shows the reason on an acknowledgement. The title is
added to those three events' recorded detail, so entries written before
this fall back to the rule key; nothing already written is touched and
the chain still verifies.

On a site's Security tab, "Recently resolved" now shows severity and who
acknowledged the finding, when, and why, and ?history=all pages through
every resolved finding. The acknowledgement columns already survive
resolution, so there is no migration.

Version 1.9.0 in the changelog and the documented examples.
# Conflicts:
#	CHANGELOG.md
#	docs/getting-started.md
#	docs/upgrade.md
#	public/build/manifest.json
#	resources/views/sites/security.blade.php
Rebuilt from a clean clone after composer install and npm ci, repeated
until the stylesheet rebuilt to itself, which is what the Compiled assets
check compares against.
@Coysh
Coysh merged commit b1528ab into main Oct 21, 2026
3 checks passed
@Coysh
Coysh deleted the feat/finding-history branch October 21, 2026 11:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant