Integrates latest TenantPilot platform changes from `platform-dev` into `dev`. This PR was created by agent on user request; do not merge automatically. Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #302
7.8 KiB
7.8 KiB
Preparation Review Checklist: External Support Desk / PSA Handoff
Purpose: Validate the prepared support-handoff package against the repo's guardrail, support-truth, provider-boundary, scoped-visibility, and close-out workflow requirements before implementation
Created: 2026-04-29
Feature: spec.md
Applicability And Low-Impact Gate
- CHK001 The package explicitly treats this as an operator-facing extension on two existing support-aware actions, so the low-impact
N/Apath is not used. - CHK002 The spec, plan, tasks, and supporting artifacts carry the same bounded slice: existing
SupportRequesttruth stays authoritative, visibility stays on the current tenant or run support contexts only, handoff remains one-way, one configured target is allowed, and the close-out target remainsGuardrail / Exception / Smoke Coverage.
Native, Shared-Family, And State Ownership
- CHK003 The primary surfaces remain native Filament actions on
TenantDashboardandTenantlessOperationRunViewerinstead of a support-request resource, support queue, helpdesk shell, or standalone external-desk page. - CHK004 Shared support families remain shared: the internal
SR-...support request stays the canonical truth, the latest handoff summary stays attached to the same two support actions, and the package does not invent a parallel support history or ticket-register surface. - CHK005 Page, detail, action-form, and persisted state owners are named once:
support_requestsis the only planned persisted truth, while the tenant and run pages own only current-context presentation and submit-time form state. - CHK006 The likely next operator action and primary inspect/open model stay coherent: the operator uses the existing
Request supportaction, chooses one handoff mode inside that form, and does not branch into a second workflow family.
Shared Pattern Reuse
- CHK007 Cross-cutting interaction classes are explicit, and the shared reuse path is named once through
SupportRequestSubmissionService,SupportRequestContextBuilder,SupportRequestReferenceGenerator,WorkspaceAuditLogger,UiEnforcement, and the existing support-aware action surfaces. - CHK008 The package extends existing shared paths where they are sufficient, and the only allowed deviation is one concrete provider-owned handoff service plus one tiny latest-summary read helper if implementation proves it necessary, not a generic helpdesk registry or page-local HTTP path.
- CHK009 The package does not create a parallel operator UX language;
Request support,Support reference,External ticket,Create external ticket,Link existing ticket, andTenantPilot onlyversusTenantPilot + external support deskstay consistent across tenant, run, notification, and audit wording.
OperationRun Start UX Contract
- CHK019 The package explicitly states that the run surface uses the current
OperationRunonly as support context and does not create, queue, deduplicate, resume, block, complete, or deep-link to a run workflow as part of the handoff slice. - CHK020 Run-specific workflow contracts stay on the existing canonical run page; queued toast/link/browser-event/dedupe behavior is not reintroduced locally for support handoff.
- CHK021 No queued DB notification or terminal-notification path is added because the slice stays synchronous inside the current support-request submit path.
- CHK022 No
OperationRunexception is required in the preparation package; if implementation later adds retries, queueing, or run-orchestration semantics, that must be recorded as out-of-scope drift in the active close-out entry.
Provider Boundary And Vocabulary
- CHK010 Provider-specific semantics stay behind one concrete provider-owned handoff service and one preconfigured target-resolution seam; the planned persisted truth stays neutral on
SupportRequestwith handoff mode, external reference, external URL, and bounded failure summary only. - CHK011 No retained provider-specific shared boundary or second-target abstraction is introduced; multi-provider support, target-management UI, and broader ITSM or helpdesk modeling remain follow-up-spec work only.
Signals, Exceptions, And Test Depth
- CHK012 The triggered repository signal is explicitly handled as
review-mandatory: the package adds a new provider seam and new persisted fields, but it does so on the existing support-request truth without hidden queue, resource, or support-framework drift. - CHK013 One bounded contract exception is explicit in the preparation package: Spec 256 allows exactly one synchronous finalization write on the same
SupportRequestrow after internal creation, limited to external handoff fields only. Any wider mutability, retry orchestration, or support-history spread must still be documented in the active feature close-out entry instead of becoming silent scope growth. - CHK014 The required surface test profile is explicit:
standard-native-filamentfor the tenant dashboard action,monitoring-state-pagefor the run action, and focusedUnitplusFeatureproof for handoff branching, scoped summary reuse, authorization, and audit behavior. - CHK015 The chosen lane mix is the narrowest honest proof for this slice: focused Pest unit plus feature coverage with narrow manual smoke after implementation, and no implicit browser-only, global-search, or new resource coverage obligation is invented.
Audience-Aware Disclosure And Decision Hierarchy
- CHK023 Default-visible content stays decision-first: current support context, one handoff-mode decision, one latest bounded handoff summary, and one submit action remain primary.
- CHK024 The package keeps raw/provider-heavy material out of default-visible truth: no raw payloads, credentials, provider response bodies, assignee or SLA fields, retry status, or cross-scope lookup shortcuts are allowed into the support-request row or default UI copy.
- CHK025 Exactly one dominant next action remains primary:
Submit support request; external create or link is modeled as a form choice, not as a competing primary action or second workflow entry point. - CHK026 Duplicate visible truth is avoided by naming one internal support reference and one latest context-scoped handoff summary instead of introducing a ticket history block, queue summary, or separate support register surface.
- CHK027 Support or raw detail stays hidden or provider-owned, and latest handoff visibility remains bounded to the same entitled tenant or current run context with the existing
404versus403rules.
Review Outcome
- CHK016 Review outcome class:
acceptable-special-case - CHK017 Workflow outcome:
keep - CHK018 The final note location is explicit: the active feature PR close-out entry
Guardrail / Exception / Smoke Coverageshould record target-prerequisite status, any bounded implementation exception, and the final proof or smoke outcome.
Notes
- This checklist validates the preparation package only:
spec.md,plan.md,tasks.md,research.md,data-model.md,quickstart.md, and the conceptual contract. It does not claim application code exists. - The slice remains bounded to the existing support-request truth and the two existing support-aware actions only. No support-request resource, support queue, helpdesk framework, global-search surface, or
OperationRunworkflow is approved by this package. - Preparation note: the package now makes the single-target resolution seam explicit through
apps/platform/config/support_desk.phpand keeps workspace settings UI, per-workspace target management, second-target support, and retry or relink orchestration as later follow-up scope. - Preparation note: Spec 256 explicitly narrows Spec 246 immutability for one synchronous handoff-finalization write only; no broader edit, reopen, merge, or lifecycle workflow is approved by this package.