## Summary - integrate the current `platform-dev` branch into `dev` - bring the latest platform work from the integration branch into the main development branch - include the recent findings lifecycle backfill removal slice together with the already accumulated `platform-dev` changes ## Scope - source branch: `platform-dev` - target branch: `dev` - branch role: integration PR, not a single-feature PR ## Validation - branch state reviewed before PR creation - `platform-dev` is ahead of `dev` with the expected integration history - this PR intentionally carries the accumulated `platform-dev` commits into `dev` ## Notes - this is the correct merge direction for the current workflow, where feature branches land in `platform-dev` first and `platform-dev` is then merged into `dev` - after merging, `platform-dev` can be recreated fresh from `dev` as usual Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #295
5.5 KiB
Data Model — Remove Findings Lifecycle Backfill Runtime Surfaces
Spec: spec.md
This feature is subtractive. It introduces no new persisted truth and no migration. The data-model impact is the removal of one obsolete runtime family and the reaffirmation of the canonical findings workflow as the only supported path.
Existing Canonical Entities Reused
Finding (findings)
Purpose: Tenant-owned findings workflow truth.
Key fields (existing):
idworkspace_idtenant_idstatustriaged_atfirst_seen_atlast_seen_attimes_seensla_daysdue_at
Feature use:
- Remains the canonical workflow truth for triage, assignment, progress, resolve, risk acceptance, ownership, SLA, due-date, and reviewable behavior.
- Continues to require both
workspace_idandtenant_idas non-null ownership anchors. - Is in scope only for regression protection, not for lifecycle redesign.
OperationRun (operation_runs)
Purpose: Existing canonical execution truth for supported long-running operations.
Key fields (existing):
idworkspace_idtenant_idtypestatusoutcomecontext
Feature use:
- After cleanup, no supported system, tenant, CLI, or deploy/runtime path may create a new
OperationRunwithtype = findings.lifecycle.backfill. - Historical rows may remain stored as legacy data, but the feature does not preserve special retry, cancel, label, or alias handling for them.
AuditLog (audit_logs)
Purpose: Existing audit truth for prior lifecycle-backfill starts, blocked starts, and completions.
Feature use:
- No new audit action family is introduced.
- Historical rows may remain stored without new cleanup migration or compatibility layer.
- Canonical findings workflow audit behavior remains unchanged and is protected through regression testing.
OperationalControlActivation (operational_control_activations)
Purpose: Existing runtime-safety truth for live operational controls.
Feature use:
- The cleanup should not add or preserve a
findings.lifecycle.backfillcontrol key. - Existing backfill-specific blocked-start branches and tests should be removed because the active control catalog already rejects the key.
Removed Runtime Families
FindingsLifecycleBackfillSurface (derived, non-persisted)
Purpose: Describes each currently productized entry point that must disappear in the cleanup.
Runtime fields:
surface_id— unique identifier such assystem.ops.runbooks,tenant.findings.list,console.tenantpilot.findings.backfill-lifecycle, orconsole.tenantpilot.run-deploy-runbooksentry_type—runbook,header_action,command,deploy_hook,operation_label,capability_trace, ortest_traceoperator_label— current visible product label such asRebuild Findings LifecycleorBackfill findings lifecycleowner_path— current source file that makes the surface realstart_seam— shared service or registry seam that currently powers the entry point
Feature use:
- Drives removal planning so the cleanup deletes the source of truth for each surface instead of only hiding one page affordance.
FindingsLifecycleBackfillExecutionCluster (derived, non-persisted)
Purpose: The dedicated runtime chain that currently starts, queues, and finalizes lifecycle backfill.
Current members:
FindingsLifecycleBackfillRunbookServiceTenantpilotBackfillFindingLifecycleTenantpilotRunDeployRunbooksBackfillFindingLifecycleJobBackfillFindingLifecycleWorkspaceJobBackfillFindingLifecycleTenantIntoWorkspaceRunJob
Lifecycle rule:
- The cluster is deleted in the same slice. No dormant flag, replacement command, or service shim is retained.
FindingsLifecycleBackfillTrace (derived, non-persisted)
Purpose: Registry, catalog, seed, test, and doc references that still advertise lifecycle backfill as supported behavior.
Trace fields:
trace_type—capability,seeder,operation_type,operation_alias,triage_support,control_branch,test,guard, ordocidentifier— exact key such asplatform.runbooks.findings.lifecycle_backfillorfindings.lifecycle.backfillowner_path— file that currently carries the traceremoval_reason— why the trace must disappear with the runtime surface
Feature use:
- Ensures cleanup removes registry and test ballast in the same slice instead of leaving the repo to advertise deleted behavior indirectly.
Data Ownership Notes
- No new tables, settings, or persisted aliases are introduced.
- No migration, historical data rewrite, or archival compatibility layer is planned.
- Historical
OperationRunandAuditLogrows are tolerated legacy data and do not justify preserving the removed runtime path. - Findings remain tenant-owned and continue to require both
workspace_idandtenant_idas canonical ownership anchors. - Operational-control truth remains bounded to currently supported controls only; this slice should not keep a removed backfill control key alive through hidden test fixtures or service branches.
Removal Invariants
- No supported path may create a new
OperationRunwithtype = findings.lifecycle.backfill. - No supported page, command catalog, or deploy/runtime hook may advertise lifecycle backfill as an available operator action.
- No compatibility shim, no-op command shell, or fallback alias may remain for the removed path.
- Canonical findings workflow behavior remains unchanged and continues to operate on the existing
Findingtruth.