# Tasks: Spec 429 - Exchange/Teams Source Surface Catalog & Adapter Strategy **Input**: Design documents from `specs/429-exchange-teams-source-surface-catalog-adapter-strategy/` **Prerequisites**: `spec.md`, `plan.md`, `checklists/requirements.md` **Implementation Mode**: catalog/strategy only. Do not edit application runtime code. ## Test Governance Checklist - [x] Lane assignment is named as docs/spec/catalog validation only. - [x] New or changed tests are not added unless optional static JSON validation is introduced. - [x] Shared helpers, factories, seeds, fixtures, and context defaults remain unchanged. - [x] Planned validation commands cover the no-runtime catalog closure without pulling in unrelated lane cost. - [x] Browser proof is explicitly `N/A - no rendered UI surface changed`. - [x] Human Product Sanity and Product Surface implementation-report close-out are `N/A - no rendered UI surface changed`. - [x] Any future runtime adapter, capture, evidence, or UI work is escalated to Spec 430 or later. ## Phase 1: Preflight **Goal**: Prove the work starts from safe repo state and completed specs stay read-only. - [x] T001 Capture current branch, HEAD, and `git status --short` in `specs/429-exchange-teams-source-surface-catalog-adapter-strategy/implementation-report.md`. - [x] T002 Confirm completed Specs 414, 415, 417, 419, 420, 422, 426, and 427 are read-only context and are not edited. - [x] T003 Confirm Spec 428 is a prepared fail-safe/no-op package and record why it is non-blocking for this catalog-only spec. - [x] T004 Confirm the active implementation diff is limited to `specs/429-exchange-teams-source-surface-catalog-adapter-strategy/`. - [x] T005 Confirm no files under `apps/platform/app/`, `apps/platform/config/`, `apps/platform/database/`, `apps/platform/resources/`, `apps/platform/routes/`, or `apps/platform/tests/` are changed. - [x] T006 Confirm no runtime adapter, provider call, evidence, OperationRun, UI, report, Review Pack/PDF output, restore/apply, certification, customer claim, or `tenant_id` work is planned. ## Phase 2: Catalog Artifact Setup **Goal**: Create the static catalog artifact surface for the documentation-only implementation. - [x] T007 Create `specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/`. - [x] T008 Create `specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/exchange-source-surface-catalog.md`. - [x] T009 Create `specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/teams-source-surface-catalog.md`. - [x] T010 Create `specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/exchange-teams-target-type-matrix.md`. - [x] T011 Create `specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/cohort-plan.md`. - [x] T012 Create `specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/adapter-strategy.md`. ## Phase 3: Source Reference Collection **Goal**: Ground catalog decisions in official Microsoft documentation and current repo truth. - [x] T013 [P] Record official Exchange Online PowerShell, app-only auth, cmdlet module, and Exchange Online Admin API references in `specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/exchange-source-surface-catalog.md`. - [x] T014 [P] Record official Teams PowerShell, Teams policy, external/guest access, and Microsoft Graph Teams overview references in `specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/teams-source-surface-catalog.md`. - [x] T015 [P] Record repo source evidence from `apps/platform/app/Services/TenantConfiguration/ResourceTypeRegistry.php`, `SupportedScopeResolver.php`, `CoverageSourceContractResolver.php`, and completed Specs 419, 420, 422, 426, 427, and 428 in `specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/exchange-teams-target-type-matrix.md`. - [x] T016 [P] Record source authority rules and forbidden source-authority rules in `specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/adapter-strategy.md`. ## Phase 4: Exchange Source Surface Catalog **Goal**: Catalog Exchange administration/configuration families without implementing adapters. - [x] T017 [US1] Catalog mail flow and transport families in `specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/exchange-source-surface-catalog.md`. - [x] T018 [US1] Catalog domains and connector families in `specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/exchange-source-surface-catalog.md`. - [x] T019 [US1] Catalog organization, sharing, relationship, role assignment, mailbox plan, address book, and admin audit families in `specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/exchange-source-surface-catalog.md`. - [x] T020 [US1] Catalog protection/hygiene families and classify Defender/Purview boundaries in `specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/exchange-source-surface-catalog.md`. - [x] T021 [US1] Catalog recipient/mailbox boundary families and document per-mailbox explosion risk in `specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/exchange-source-surface-catalog.md`. - [x] T022 [US1] For each Exchange family, record source surface class, adapter pattern, expected object shape, identity risk, permission risk, response-shape risk, redaction risk, customer/MSP value, and blocker reason in `specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/exchange-teams-target-type-matrix.md`. ## Phase 5: Teams Source Surface Catalog **Goal**: Catalog Teams policy/configuration families without implementing adapters. - [x] T023 [US1] Catalog app governance families in `specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/teams-source-surface-catalog.md`. - [x] T024 [US1] Catalog meetings/events families in `specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/teams-source-surface-catalog.md`. - [x] T025 [US1] Catalog messaging/channels families in `specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/teams-source-surface-catalog.md`. - [x] T026 [US1] Catalog calling/voice families and license/complexity risks in `specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/teams-source-surface-catalog.md`. - [x] T027 [US1] Catalog external/guest access families in `specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/teams-source-surface-catalog.md`. - [x] T028 [US1] Catalog files/storage/integration boundaries and classify SharePoint/OneDrive overlap in `specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/teams-source-surface-catalog.md`. - [x] T029 [US1] For each Teams family, record source surface class, adapter pattern, expected object shape, identity risk, permission risk, response-shape risk, redaction risk, customer/MSP value, and blocker reason in `specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/exchange-teams-target-type-matrix.md`. ## Phase 6: Target Type Matrix And Cohorts **Goal**: Make later implementation bounded and reviewable. - [x] T030 [US2] Ensure every row in `specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/exchange-teams-target-type-matrix.md` includes all fields required by FR-429-008. - [x] T031 [US2] Validate documentation-only source surface, adapter pattern, status, risk, and complexity values against FR-429-009 through FR-429-013. - [x] T032 [US2] Select Cohort 1 in `specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/cohort-plan.md` with both Exchange and Teams represented and roughly 12-20 candidates unless a narrower exception is documented. - [x] T033 [US2] Define Cohort 2 in `specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/cohort-plan.md` with reasons each type is not Cohort 1. - [x] T034 [US2] Define deferred, unsupported, and unknown backlogs in `specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/cohort-plan.md`. - [x] T035 [US2] Add target type summary and Cohort 1 matrices to `specs/429-exchange-teams-source-surface-catalog-adapter-strategy/implementation-report.md`. ## Phase 7: Adapter Strategy **Goal**: Turn catalog findings into an actionable Spec 430 implementation path. - [x] T036 [US3] Document Graph-native contract path, Graph v1/beta handling, permissions, pagination, identity fields, response shape, redaction, and `GraphClientInterface` compatibility in `specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/adapter-strategy.md`. - [x] T037 [US3] Document Exchange Online Admin API path, preview/focused-scope limitation, permissions/RBAC, POST-only behavior, response shape, and non-replacement boundary in `specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/adapter-strategy.md`. - [x] T038 [US3] Document Exchange PowerShell adapter path, app-only/certificate auth feasibility, tenant consent, execution environment, module dependencies, throttling, error normalization, response serialization, redaction, and fake command-runner testability in `specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/adapter-strategy.md`. - [x] T039 [US3] Document Teams PowerShell adapter path, policy/cmdlet boundaries, permission risks, execution environment, response serialization, redaction, and fake command-runner testability in `specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/adapter-strategy.md`. - [x] T040 [US3] Document Security & Compliance/Purview, Defender, SharePoint/OneDrive, unsupported/manual, and unknown follow-up paths in `specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/adapter-strategy.md`. - [x] T041 [US3] Define the first Spec 430 implementation slice, non-goals, stop conditions, and validation strategy in `specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/adapter-strategy.md`. - [x] T042 [US3] Add adapter strategy matrix to `specs/429-exchange-teams-source-surface-catalog-adapter-strategy/implementation-report.md`. ## Phase 8: No Runtime / No Claim Proof **Goal**: Prove the catalog did not become runtime support or product readiness. - [x] T043 Confirm no application services, provider clients, migrations, models, jobs, commands, policies, routes, views, Filament/Livewire UI, tests, or runtime config consumed by the app changed. - [x] T044 Confirm no runtime provider call, PowerShell execution, application-side documentation lookup, application-side direct HTTP request, provider SDK bypass, or Microsoft source-fetch code was added. - [x] T045 Confirm no `TenantConfigurationResource`, `TenantConfigurationResourceEvidence`, OperationRun, coverage-level, compare/render, certification, restore, report, Review Pack, PDF, customer output, or `tenant_id` change was added. - [x] T046 Confirm no claim was added for Exchange evidence readiness, Teams evidence readiness, content-backed Exchange/Teams, comparable/renderable Exchange/Teams, certification, full M365 readiness, customer-ready proof, or restore readiness. - [x] T047 Add no-promotion and no-runtime matrices to `specs/429-exchange-teams-source-surface-catalog-adapter-strategy/implementation-report.md`. ## Phase 9: Validation And Checklist **Goal**: Close the docs/catalog implementation with reviewable proof. - [x] T048 Run `git diff --check`. - [x] T049 Run `git diff --name-only` and confirm changed files are limited to `specs/429-exchange-teams-source-surface-catalog-adapter-strategy/`. - [x] T050 Run `git status --short` and record final dirty state in `specs/429-exchange-teams-source-surface-catalog-adapter-strategy/implementation-report.md`. - [x] T051 If `catalog/exchange-teams-target-types.json` is added, run `python3 -m json.tool specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/exchange-teams-target-types.json > /dev/null`. N/A - no JSON catalog was added. - [x] T052 Review and, if needed, update `specs/429-exchange-teams-source-surface-catalog-adapter-strategy/checklists/requirements.md` after catalog artifacts and the implementation report are complete; record if no checklist changes are needed. - [x] T053 Record browser status as `N/A - no rendered UI surface changed` in `specs/429-exchange-teams-source-surface-catalog-adapter-strategy/implementation-report.md`. - [x] T054 Record Livewire v4 unchanged, provider registration unchanged under `apps/platform/bootstrap/providers.php`, global search unchanged, destructive/high-impact actions none, asset strategy none, deployment impact none, visible complexity neutral, and no completed-spec rewrite proof in `specs/429-exchange-teams-source-surface-catalog-adapter-strategy/implementation-report.md`. ## Dependencies & Execution Order - Phase 1 must complete before any catalog artifact work. - Phase 2 creates files required by Phases 3-7. - Phase 3 source collection must precede final catalog classifications. - Exchange and Teams catalog work in Phases 4 and 5 can run in parallel after Phase 3. - Phase 6 depends on enough catalog rows to select Cohort 1 and Cohort 2. - Phase 7 depends on target classifications and cohort decisions. - Phases 8 and 9 close after catalog and adapter strategy are complete. ## Parallel Opportunities - T013-T016 can run in parallel after catalog files exist. - Exchange family tasks T017-T021 can run in parallel if merge coordination is explicit. - Teams family tasks T023-T028 can run in parallel if merge coordination is explicit. - No application-code task is parallelizable because no application-code task is allowed. ## Stop Conditions Stop and amend or replace this spec if any of the following becomes true: - runtime adapters, provider clients, provider calls, or PowerShell execution are required; - application code, migrations, routes, views, tests, jobs, commands, policies, or runtime config need to change; - evidence rows, OperationRuns, coverage-level promotion, compare/render, certification, restore, reports, Review Pack/PDF output, or customer claims are required; - catalog terms need to become runtime enums/statuses/registries; - `tenant_id`, legacy compatibility, fallback readers, dual writes, or Coverage v1 bridges appear; - official source research cannot support a safe Cohort 1 decision. ## Recommended MVP Scope Complete Phases 1-9 as a single docs/catalog package. Do not split before Cohort 1 and adapter strategy exist, because the value of Spec 429 is the combined map that makes Spec 430 safe.