Skip to content

feat(security): Dependencies tab, ranked by what runs in production - #2045

Merged
Makisuo merged 37 commits into
feat/depscan-4-scannerfrom
feat/depscan-5-dependencies-tab
Nov 1, 2026
Merged

Makisuo merged 37 commits into
feat/depscan-4-scannerfrom
feat/depscan-5-dependencies-tab

fix(web): the reason field checks the reason as triage sends it, trimmed

d38dbf9
Select commit
Loading
Failed to load commit list.
Maple Review Bot / Maple / review succeeded Nov 1, 2026 in 18s

Confidence 8/10 · No issues found

🟢 Confidence 8/10 · likely safe to merge. Held at 8 because 2 fixes have not been re-checked against the whole diff yet.
no findings · tests covered · risk medium · 2 fixes not yet re-checked against the whole diff

The last two fixes land: the sheet dates "Last seen" by the commit, not the triage-rewritten updatedAt, and the reason field checks the reason trimmed as triage sends it. Both are pinned by scene tests. The McpQueryError issues are unrelated to this change and untouched: registry.ts only registers the new page.

  • findingSheet reads "Last seen" from lastSeenSha, never updatedAt
  • reasonField validates model.reason.value.trim() like triage writes it
  • Scene tests pin both: triaged updatedAt is absent, a 501-char reason is written trimmed

Fixed since the last review

  • ✅ F15 · Last seen in the sheet shows updatedAt, which triage rewrites
  • ✅ F16 · reasonField errors on a reason that triage trims and writes

Production impact

Open errors in the changed files (2)
Issue Service Occurrences File
@maple/mcp/errors/McpQueryError (6 issues) maple-chat 1.3k apps/web/src/page/registry.ts
@maple/mcp/errors/McpQueryError (4 issues) maple-ai 349 apps/web/src/page/registry.ts

After this merges, Maple checks whether they stop.

Telemetry this change adds and removes (3)
  • ➕ span name DependencyScanService.queueProductionScans · packages/backend/src/services/dependency-scan/DependencyScanService.ts:274
  • ➕ span name DependencyScanService.readProduction · packages/backend/src/services/dependency-scan/DependencyScanService.ts:320
  • ➕ span name GithubAppClient.getBlobText · packages/backend/src/services/integrations/vcs/vendor/github/GithubAppClient.ts:2186
What was checked
  • DependencyFinding carries lastSeenSha and firstSeenSha (packages/domain/src/dependency-scan.ts:97), so the row reads a scan's own commit
  • reasonErrorOf trims for the empty check and caps the untrimmed length (derive.ts:150), matching triage's trimmed send (update.ts:135)
  • commit is a module-level const used only at render time (view-sheet.ts:104), so declaring it after details cannot throw

d38dbf9 · Reply "won't fix" to dismiss a finding, or mention @maple-review-bot to ask about one.