TenantAtlas/specs/429-exchange-teams-source-surface-catalog-adapter-strategy/tasks.md
ahmido 0e2cea30bb spec: add Exchange Teams source-surface catalog adapter strategy (#496)
Automated giteaflow PR from branch 429-exchange-teams-source-surface-catalog-adapter-strategy.

Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de>
Reviewed-on: #496
2026-07-04 20:59:58 +00:00

14 KiB

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

  • Lane assignment is named as docs/spec/catalog validation only.
  • New or changed tests are not added unless optional static JSON validation is introduced.
  • Shared helpers, factories, seeds, fixtures, and context defaults remain unchanged.
  • Planned validation commands cover the no-runtime catalog 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 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.

  • T001 Capture current branch, HEAD, and git status --short in specs/429-exchange-teams-source-surface-catalog-adapter-strategy/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 Spec 428 is a prepared fail-safe/no-op package and record why it is non-blocking for this catalog-only spec.
  • T004 Confirm the active implementation diff is limited to specs/429-exchange-teams-source-surface-catalog-adapter-strategy/.
  • 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.
  • 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.

  • T007 Create specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/.
  • T008 Create specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/exchange-source-surface-catalog.md.
  • T009 Create specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/teams-source-surface-catalog.md.
  • T010 Create specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/exchange-teams-target-type-matrix.md.
  • T011 Create specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/cohort-plan.md.
  • 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.

  • 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.
  • 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.
  • 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.
  • 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.

  • T017 [US1] Catalog mail flow and transport families in specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/exchange-source-surface-catalog.md.
  • T018 [US1] Catalog domains and connector families in specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/exchange-source-surface-catalog.md.
  • 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.
  • 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.
  • 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.
  • 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.

  • T023 [US1] Catalog app governance families in specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/teams-source-surface-catalog.md.
  • T024 [US1] Catalog meetings/events families in specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/teams-source-surface-catalog.md.
  • T025 [US1] Catalog messaging/channels families in specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/teams-source-surface-catalog.md.
  • 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.
  • T027 [US1] Catalog external/guest access families in specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/teams-source-surface-catalog.md.
  • 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.
  • 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.

  • 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.
  • T031 [US2] Validate documentation-only source surface, adapter pattern, status, risk, and complexity values against FR-429-009 through FR-429-013.
  • 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.
  • 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.
  • T034 [US2] Define deferred, unsupported, and unknown backlogs in specs/429-exchange-teams-source-surface-catalog-adapter-strategy/catalog/cohort-plan.md.
  • 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.

  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.

  • 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.
  • 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.
  • T045 Confirm no TenantConfigurationResource, TenantConfigurationResourceEvidence, OperationRun, coverage-level, compare/render, certification, restore, report, Review Pack, PDF, customer output, or tenant_id change was added.
  • 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.
  • 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.

  • T048 Run git diff --check.
  • T049 Run git diff --name-only and confirm changed files are limited to specs/429-exchange-teams-source-surface-catalog-adapter-strategy/.
  • T050 Run git status --short and record final dirty state in specs/429-exchange-teams-source-surface-catalog-adapter-strategy/implementation-report.md.
  • 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.
  • 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.
  • 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.
  • 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.

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.