Skip to content

Report fields: family_of, commit and release links, basis on evidence, queries_run (#5632 Phase C C8) #6004

Closed

Description

@erikdarlingdata

Claude posting for Erik Darling.
Part of #5632 (Phase C, wave 2).

What it does

Reports gain the fields that make them reusable. family_of names the first report's request id and is checked to exist. Link kinds commit and release join jira, pull_request and bug_report (no migration). Each evidence item carries a required basis (verified or inferred) and is shown as two lists. queries_run is an array of at most 20 items, 2,000 characters each, masked as statement text.

Decisions this slice carries (agreed by Erik on 2026-10-16)

  • D17. "Family id: A. family_of, the first report's request id, checked to exist. Fix record: commit and release link kinds. No migration. Verified and inferred: A. a required basis on each evidence item, shown as two lists. Queries run: a queries_run array (20 items, 2,000 characters each), masked as statement text. Recommend A, the two kinds, A, and the array."

Files to touch

Pointers re-checked on dev at c12233ce3.

  • PerformanceMonitor.Common/Investigations/InvestigationReportLinks.cs:47 (Kinds = jira, pull_request, bug_report), :133 and :172 (the two error messages that list the kinds; update both).
  • PerformanceMonitor.Common/Investigations/InvestigationToolCore.cs:46-52 (the evidence caps tied to V184's check constraint), :107-118 (ValidateEvidence; add the basis requirement here), :133 (InvalidReportMessage).
  • The report submit tool in Darling/PerformanceMonitor.Darling.Service/Mcp/DarlingMcpInvestigationTools.cs and the report reads in Darling/PerformanceMonitor.Darling.Storage/InvestigationRequestStore.cs.
  • investigation_reports (Darling/PerformanceMonitor.Darling.Storage/InvestigationTables.cs:138); the columns family_of and queries_run come from Phase C store: the one migration, grants and retention (#5632 Phase C C1) #5997.
  • Evidence written before this slice has no basis: reads must show it as unlabelled, not refuse it. Only new submissions are refused.
  • Masking: queries_run follows the statement-text masking at mcp.dataDetail.

Depends on

#5997 (the report columns).

Behaviour to pin

  • A family_of that names no request is refused.
  • A commit link is stored and read back.
  • An evidence item without basis is refused.
  • Verified and inferred items are shown as two lists.
  • queries_run is masked at MetadataOnly.
  • A 21st queries_run item, or one over 2,000 characters, is refused.

Tests

Behaviour pins only, one test per behaviour listed above. No census, roster or source-text test (the #5833 ruling in .github/REVIEW-TRAPS.md).

Notes

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions