# Tasks: Spec 428 - Exchange/Teams Content-Backed Evidence Promotion **Input**: Design documents from `specs/428-exchange-teams-content-backed-evidence-promotion/` **Prerequisites**: `spec.md`, `plan.md`, `checklists/requirements.md` **Implementation Mode**: fail-safe/no-op. Do not edit application runtime code. ## Test Governance Checklist - [ ] Lane assignment is named as no-runtime/no-op with optional fast-feedback existing regressions only. - [ ] New or changed tests are not added unless implementation is amended into runtime scope. - [ ] Shared helpers, factories, seeds, fixtures, and context defaults remain unchanged. - [ ] Planned validation commands cover the no-op closure without pulling in unrelated lane cost. - [ ] Browser proof is explicitly `N/A - no rendered UI surface changed`. - [ ] Human Product Sanity and Product Surface implementation-report close-out are `N/A - no rendered UI surface changed`. - [ ] Any future runtime source-adapter or evidence-capture work is escalated to an amended or separate spec. ## Phase 1: Preflight - [ ] T001 Capture current branch, HEAD, and `git status --short` in `specs/428-exchange-teams-content-backed-evidence-promotion/implementation-report.md`. - [ ] T002 Confirm completed Specs 414, 415, 417, 419, 420, 422, 426, and 427 are read-only context and are not edited. - [ ] T003 Confirm the active implementation diff contains only `specs/428-exchange-teams-content-backed-evidence-promotion/` unless the spec is formally amended. - [ ] T004 Confirm no runtime files under `apps/platform/app/`, `apps/platform/config/`, `apps/platform/database/`, `apps/platform/resources/`, `apps/platform/routes/`, or `apps/platform/tests/` are changed. - [ ] T005 Confirm no UI, route, navigation, Filament provider, browser-rendered product surface, report, Review Pack, PDF, export, restore, certification, or customer-output scope is planned. ## Phase 2: Spec 427 Eligibility Matrix - [ ] T006 Read `specs/427-exchange-teams-verified-source-contract-enablement/implementation-report.md` and copy the final source-contract matrix into the Spec 428 implementation report. - [ ] T007 Map `exchange.transportRule` to repo canonical `transportRule`. - [ ] T008 Map `exchange.acceptedDomain` to repo canonical `acceptedDomain`. - [ ] T009 Map `teams.appPermissionPolicy` to repo canonical `appPermissionPolicy`. - [ ] T010 Map `teams.meetingPolicy` to repo canonical `meetingPolicy`. - [ ] T011 Record `transportRule` final state as `contract_blocked_repo_adapter_missing` and Spec 428 outcome as `not_eligible_noop`. - [ ] T012 Record `acceptedDomain` final state as `contract_blocked_repo_adapter_missing` and Spec 428 outcome as `not_eligible_noop`. - [ ] T013 Record `appPermissionPolicy` final state as `contract_blocked_repo_adapter_missing` and Spec 428 outcome as `not_eligible_noop`. - [ ] T014 Record `meetingPolicy` final state as `contract_blocked_repo_adapter_missing` and Spec 428 outcome as `not_eligible_noop`. - [ ] T015 Record the final eligibility count as zero. ## Phase 3: No-Promotion Guard - [ ] T016 Confirm no source contract, provider adapter, Graph endpoint, provider permission, runtime Microsoft docs fetch, direct HTTP call, or provider SDK bypass is added. - [ ] T017 Confirm no `TenantConfigurationResource` or `TenantConfigurationResourceEvidence` creation/update path is added. - [ ] T018 Confirm no OperationRun, queue job, scheduler entry, OperationRun type, notification, or audit event is added for Exchange/Teams capture. - [ ] T019 Confirm no capture outcome is changed from blocked to empty/success/content-backed. - [ ] T020 Confirm no content-backed, comparable, renderable, certified, restore-ready, customer-ready, full Exchange, full Teams, or full M365 claim is added. - [ ] T021 Confirm no `tenant_id`, legacy adapter, fallback reader, dual write, Coverage v1 bridge, or fake evidence fixture is introduced as product truth. - [ ] T022 Confirm existing Spec 422 compare/render support is treated as completed context only and not expanded by this spec. ## Phase 4: Validation - [ ] T023 Run `git diff --check`. - [ ] T024 Run `git status --short` and confirm only active Spec 428 artifacts changed. - [ ] T025 Optionally run `cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Unit/Support/TenantConfiguration/Spec427ExchangeTeamsSourceContractStateTest.php tests/Unit/Support/TenantConfiguration/Spec420M365CaptureEligibilityTest.php` if Sail is available; if skipped, document why no runtime tests are required for the no-op closure. - [ ] T026 Do not run browser tests; record `N/A - no rendered UI surface changed`. ## Phase 5: Implementation Report - [ ] T027 Create `specs/428-exchange-teams-content-backed-evidence-promotion/implementation-report.md`. - [ ] T028 Record Candidate Selection Gate result: PASS WITH CONDITIONS as fail-safe/no-op only. - [ ] T029 Record Spec Readiness Gate result, Preparation Analyze Gate result, and any residual risk. - [ ] T030 Record dirty state before/after. - [ ] T031 Record files changed. - [ ] T032 Record eligible target type list as empty. - [ ] T033 Record blocked target type list with all four target types. - [ ] T034 Record no OperationRun proof because no capture runs. - [ ] T035 Record no evidence persistence proof because no evidence rows. - [ ] T036 Record no payload hash, normalization, identity, permission failure, or redaction runtime proof because no capture occurred. - [ ] T037 Record no compare/render, no certification, no restore, no customer claim, no `tenant_id`, and no mini-platform confirmation. - [ ] T038 Record Product Surface impact as `N/A - no rendered UI surface changed`. - [ ] T039 Record Livewire v4 compliance unchanged, provider registration unchanged under `apps/platform/bootstrap/providers.php`, global search unchanged, destructive/high-impact actions none, asset strategy none, deployment impact none. - [ ] T040 Record deferred work: source-adapter/source-contract enablement before any future content-backed evidence promotion. ## Stop Conditions Stop before implementation and amend or replace this spec if any of the following becomes true: - any target type reaches `contract_verified_pending_capture`; - runtime evidence capture is requested; - source adapters or Graph contracts are required; - UI/customer/report/restore/certification/compare-render changes are required; - application code or tests need to change for reasons other than documenting the no-op.