Hermes 284313f908
Some checks are pending
Bidi Control Character Guard / bidi-control-guard (push) Waiting to run
Circular Dependency Check / Check for new circular dependencies (push) Waiting to run
Citus Migration Smoke / Combined migrations on single-node Citus (push) Waiting to run
E2E Fresh Install Tests / fresh-install-e2e (push) Waiting to run
ext-v2 guardrails / Run ext-v2 guard and ESLint (push) Waiting to run
Integration Tests / Check for relevant changes (push) Waiting to run
Integration Tests / ${{ (github.event_name == 'schedule' || github.event.inputs.suite == 'full') && 'Full integration suite' || 'Tier-1 integration subset' }} (push) Blocked by required conditions
Mobile checks / Mobile lint + typecheck (push) Waiting to run
Mobile checks / Mobile unit tests (push) Waiting to run
Mobile checks / Mobile dependency audit (report) (push) Waiting to run
Mobile checks / Mobile reproducibility checks (push) Waiting to run
Secrets guard (env backups) / Ensure no tracked env backup files (push) Waiting to run
Temporal Readiness / fast-readiness (push) Waiting to run
Temporal Readiness / docker-parity (push) Waiting to run
TypeScript Type Check / Nx affected typecheck (push) Waiting to run
Unit Tests / Skipped-test budget (push) Waiting to run
Unit Tests / Nx affected unit tests (push) Waiting to run
Unit Tests / Server unit coverage (informational) (push) Waiting to run
Validate Tenant Management Schema / Check for relevant changes (push) Waiting to run
Validate Tenant Management Schema / Validate Tenant Management Schema (push) Blocked by required conditions
EE Workflows Build Guard / ee-workflows-build-guard (push) Waiting to run
Initial import of AlgaPSA codebase from PSA server
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz

Source: /opt/alga-psa on psa.joliet.tech
2026-06-22 16:12:17 -05:00

1884 lines
55 KiB
JSON

[
{
"id": "F001",
"description": "Planning artifacts: create a follow-on ALGA plan for the EE-only migration instead of rewriting the original Teams v1 plan.",
"implemented": true,
"prdRefs": [
"Summary",
"Rollout / Migration"
]
},
{
"id": "F002",
"description": "Planning artifacts: the migration PRD explicitly references `2026-03-07-microsoft-teams-integration-v1` as historical context and dependency context.",
"implemented": true,
"prdRefs": [
"Summary",
"Rollout / Migration"
]
},
{
"id": "F003",
"description": "Planning artifacts: the migration scratchpad records the CE code locations that currently own Teams behavior.",
"implemented": true,
"prdRefs": [
"Summary",
"Rollout / Migration"
]
},
{
"id": "F004",
"description": "Planning artifacts: the migration scratchpad records the Entra EE boundary pattern as the implementation precedent.",
"implemented": true,
"prdRefs": [
"Summary",
"Rollout / Migration"
]
},
{
"id": "F005",
"description": "Planning artifacts: the migration plan treats Teams as unreleased and allows current dev/test Teams data to be discarded.",
"implemented": true,
"prdRefs": [
"Summary",
"Rollout / Migration"
]
},
{
"id": "F006",
"description": "Planning artifacts: the migration plan treats shared Microsoft profiles as retained shared infrastructure rather than part of the EE extraction.",
"implemented": true,
"prdRefs": [
"Summary",
"Rollout / Migration"
]
},
{
"id": "F007",
"description": "Planning artifacts: the migration plan defines `teams-integration-ui` as the sole new rollout flag assumed for this work.",
"implemented": true,
"prdRefs": [
"Summary",
"Rollout / Migration"
]
},
{
"id": "F008",
"description": "Planning artifacts: the migration plan defines a fresh-install target state for CE and a separate fresh-install target state for EE.",
"implemented": true,
"prdRefs": [
"Summary",
"Rollout / Migration"
]
},
{
"id": "F009",
"description": "Planning artifacts: the migration plan distinguishes migration work from already-complete shared Microsoft profile work.",
"implemented": true,
"prdRefs": [
"Summary",
"Rollout / Migration"
]
},
{
"id": "F010",
"description": "Planning artifacts: the migration plan requires feature and test IDs that remain stable as the migration checklist evolves.",
"implemented": true,
"prdRefs": [
"Summary",
"Rollout / Migration"
]
},
{
"id": "F011",
"description": "Availability model: define a single Teams availability helper that combines enterprise edition checks with the tenant-level `teams-integration-ui` flag.",
"implemented": true,
"prdRefs": [
"Requirements",
"Rollout / Migration"
]
},
{
"id": "F012",
"description": "Availability model: the shared Teams availability helper accepts tenant context for server-side runtime checks.",
"implemented": true,
"prdRefs": [
"Requirements",
"Rollout / Migration"
]
},
{
"id": "F013",
"description": "Availability model: the shared Teams availability helper accepts optional user context for flag evaluations that support user-aware targeting.",
"implemented": true,
"prdRefs": [
"Requirements",
"Rollout / Migration"
]
},
{
"id": "F014",
"description": "Availability model: Teams admin UI visibility is driven by the shared availability helper rather than ad hoc local checks.",
"implemented": true,
"prdRefs": [
"Requirements",
"Rollout / Migration"
]
},
{
"id": "F015",
"description": "Availability model: Teams runtime route access is driven by the shared availability helper rather than ad hoc local checks.",
"implemented": true,
"prdRefs": [
"Requirements",
"Rollout / Migration"
]
},
{
"id": "F016",
"description": "Availability model: Teams server action access is driven by the shared availability helper rather than ad hoc local checks.",
"implemented": true,
"prdRefs": [
"Requirements",
"Rollout / Migration"
]
},
{
"id": "F017",
"description": "Availability model: Teams notification delivery checks the shared availability helper before attempting runtime work.",
"implemented": true,
"prdRefs": [
"Requirements",
"Rollout / Migration"
]
},
{
"id": "F018",
"description": "Availability model: CE always resolves Teams availability to disabled regardless of tenant flag state.",
"implemented": true,
"prdRefs": [
"Requirements",
"Rollout / Migration"
]
},
{
"id": "F019",
"description": "Availability model: EE with the feature flag disabled resolves Teams availability to disabled without exposing active behavior.",
"implemented": true,
"prdRefs": [
"Requirements",
"Rollout / Migration"
]
},
{
"id": "F020",
"description": "Availability model: EE with the feature flag enabled and valid tenant context resolves Teams availability to enabled.",
"implemented": true,
"prdRefs": [
"Requirements",
"Rollout / Migration"
]
},
{
"id": "F021",
"description": "Availability model: unavailable states distinguish `ce_unavailable`, `flag_disabled`, and `tenant_not_configured` rather than collapsing everything into one generic failure.",
"implemented": true,
"prdRefs": [
"Requirements",
"Rollout / Migration"
]
},
{
"id": "F022",
"description": "Availability model: Teams settings wrappers can render a disabled-state shell when EE is present but the tenant flag is off.",
"implemented": true,
"prdRefs": [
"Requirements",
"Rollout / Migration"
]
},
{
"id": "F023",
"description": "Availability model: Teams runtime wrappers can return a stable EE-unavailable response when running in CE.",
"implemented": true,
"prdRefs": [
"Requirements",
"Rollout / Migration"
]
},
{
"id": "F024",
"description": "Availability model: Teams runtime wrappers can return a stable disabled response when running in EE with the tenant flag off.",
"implemented": true,
"prdRefs": [
"Requirements",
"Rollout / Migration"
]
},
{
"id": "F025",
"description": "Availability model: Teams availability helpers are imported from a shared non-`use server` module so they are safe in both action and UI code.",
"implemented": true,
"prdRefs": [
"Requirements",
"Rollout / Migration"
]
},
{
"id": "F026",
"description": "Availability model: the migration introduces no second Teams rollout flag for separate runtime/UI behavior.",
"implemented": true,
"prdRefs": [
"Requirements",
"Rollout / Migration"
]
},
{
"id": "F027",
"description": "Availability model: the migration does not repurpose unrelated existing flags such as `teams-v2` for Teams integration ownership gating.",
"implemented": true,
"prdRefs": [
"Requirements",
"Rollout / Migration"
]
},
{
"id": "F028",
"description": "Availability model: the plan records the canonical unavailable copy for CE and disabled-flag states so wrappers are consistent.",
"implemented": true,
"prdRefs": [
"Requirements",
"Rollout / Migration"
]
},
{
"id": "F029",
"description": "Availability model: flag evaluation defaults to disabled when feature-flag infrastructure is unavailable.",
"implemented": true,
"prdRefs": [
"Requirements",
"Rollout / Migration"
]
},
{
"id": "F030",
"description": "Availability model: all new EE Teams entrypoints are required to call the shared availability helper before touching tenant Teams state.",
"implemented": true,
"prdRefs": [
"Requirements",
"Rollout / Migration"
]
},
{
"id": "F031",
"description": "Settings IA: remove the Teams integration surface from the shared `Providers` category.",
"implemented": true,
"prdRefs": [
"UX / UI Notes",
"Requirements"
]
},
{
"id": "F032",
"description": "Settings IA: keep `MicrosoftIntegrationSettings` in the shared `Providers` category because Microsoft profiles remain shared infrastructure.",
"implemented": true,
"prdRefs": [
"UX / UI Notes",
"Requirements"
]
},
{
"id": "F033",
"description": "Settings IA: add the Teams integration surface to the `Communication` category.",
"implemented": true,
"prdRefs": [
"UX / UI Notes",
"Requirements"
]
},
{
"id": "F034",
"description": "Settings IA: keep existing Inbound Email configuration in `Communication` while adding Teams alongside it.",
"implemented": true,
"prdRefs": [
"UX / UI Notes",
"Requirements"
]
},
{
"id": "F035",
"description": "Settings IA: the shared settings page composes the Teams card through an EE-safe wrapper rather than importing the concrete shared Teams component directly.",
"implemented": true,
"prdRefs": [
"UX / UI Notes",
"Requirements"
]
},
{
"id": "F036",
"description": "Settings IA: the Teams settings wrapper only renders a Teams card when edition and flag checks pass.",
"implemented": true,
"prdRefs": [
"UX / UI Notes",
"Requirements"
]
},
{
"id": "F037",
"description": "Settings IA: the Teams settings wrapper renders nothing in CE so Teams is not discoverable in the settings UI.",
"implemented": true,
"prdRefs": [
"UX / UI Notes",
"Requirements"
]
},
{
"id": "F038",
"description": "Settings IA: the Teams settings wrapper renders nothing in EE when the tenant flag is disabled unless an explicit disabled-state shell is intentionally chosen.",
"implemented": true,
"prdRefs": [
"UX / UI Notes",
"Requirements"
]
},
{
"id": "F039",
"description": "Settings IA: the `Communication` tab description is updated so Teams fits the communication/inbox/collaboration grouping rather than provider credentials.",
"implemented": true,
"prdRefs": [
"UX / UI Notes",
"Requirements"
]
},
{
"id": "F040",
"description": "Settings IA: the `Providers` tab description no longer implies that Teams setup belongs there.",
"implemented": true,
"prdRefs": [
"UX / UI Notes",
"Requirements"
]
},
{
"id": "F041",
"description": "Settings IA: the settings integration index no longer exports a CE-shaped Teams settings component.",
"implemented": true,
"prdRefs": [
"UX / UI Notes",
"Requirements"
]
},
{
"id": "F042",
"description": "Settings IA: Teams settings entry points are renamed or wrapped so their ownership clearly indicates EE-only behavior.",
"implemented": true,
"prdRefs": [
"UX / UI Notes",
"Requirements"
]
},
{
"id": "F043",
"description": "Settings IA: the Teams settings UI continues to reference shared Microsoft profiles instead of duplicating Microsoft credential entry.",
"implemented": true,
"prdRefs": [
"UX / UI Notes",
"Requirements"
]
},
{
"id": "F044",
"description": "Settings IA: Teams profile-selection UX remains tenant-admin-only.",
"implemented": true,
"prdRefs": [
"UX / UI Notes",
"Requirements"
]
},
{
"id": "F045",
"description": "Settings IA: no user-scoped Teams profile selector is introduced during the migration.",
"implemented": true,
"prdRefs": [
"UX / UI Notes",
"Requirements"
]
},
{
"id": "F046",
"description": "Settings IA: the Teams settings entry preserves the existing Teams setup concepts such as profile selection, capability status, and package/install state.",
"implemented": true,
"prdRefs": [
"UX / UI Notes",
"Requirements"
]
},
{
"id": "F047",
"description": "Settings IA: Teams settings visibility does not depend on whether a tenant already has Teams data in the database.",
"implemented": true,
"prdRefs": [
"UX / UI Notes",
"Requirements"
]
},
{
"id": "F048",
"description": "Settings IA: the shared settings page no longer imports `TeamsIntegrationSettings` from a CE package path.",
"implemented": true,
"prdRefs": [
"UX / UI Notes",
"Requirements"
]
},
{
"id": "F049",
"description": "Settings IA: EE settings composition uses a wrapper or entry module consistent with the existing Entra pattern.",
"implemented": true,
"prdRefs": [
"UX / UI Notes",
"Requirements"
]
},
{
"id": "F050",
"description": "Settings IA: any Teams-related settings copy that says “Providers” is updated to say “Communication”.",
"implemented": true,
"prdRefs": [
"UX / UI Notes",
"Requirements"
]
},
{
"id": "F051",
"description": "Settings IA: Teams settings tests assert the new category placement instead of the historical provider placement.",
"implemented": true,
"prdRefs": [
"UX / UI Notes",
"Requirements"
]
},
{
"id": "F052",
"description": "Settings IA: Teams-specific settings help text remains scoped to MSP users and does not broaden product scope during the migration.",
"implemented": true,
"prdRefs": [
"UX / UI Notes",
"Requirements"
]
},
{
"id": "F053",
"description": "Settings IA: the migration does not move Microsoft profile management into EE.",
"implemented": true,
"prdRefs": [
"UX / UI Notes",
"Requirements"
]
},
{
"id": "F054",
"description": "Settings IA: the migration does not add a second Teams settings surface in another settings area.",
"implemented": true,
"prdRefs": [
"UX / UI Notes",
"Requirements"
]
},
{
"id": "F055",
"description": "Route boundary: the Teams personal-tab page is converted from a shared active implementation into an EE-owned implementation or EE delegator.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F056",
"description": "Route boundary: the Teams tab page exports only wrapper code in shared CE paths when a public route boundary must remain present.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F057",
"description": "Route boundary: the Teams tab page returns an EE-unavailable result or `notFound` style response in CE.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F058",
"description": "Route boundary: the Teams tab page returns a disabled-state response when running in EE with the tenant flag off.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F059",
"description": "Route boundary: the Teams tab page delegates into EE code when running in EE with the tenant flag enabled.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F060",
"description": "Route boundary: Teams bot message routes are converted from shared active implementations into EE-owned implementations or EE delegators.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F061",
"description": "Route boundary: Teams bot routes return an EE-unavailable response in CE.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F062",
"description": "Route boundary: Teams bot routes return a disabled response in EE when the tenant flag is off.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F063",
"description": "Route boundary: Teams bot routes delegate into EE implementations when Teams is enabled.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F064",
"description": "Route boundary: Teams message-extension query routes are converted from shared active implementations into EE-owned implementations or EE delegators.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F065",
"description": "Route boundary: Teams message-extension action routes are converted from shared active implementations into EE-owned implementations or EE delegators.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F066",
"description": "Route boundary: Teams message-extension routes return CE-unavailable responses when invoked from CE.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F067",
"description": "Route boundary: Teams message-extension routes return disabled responses when invoked from EE with the tenant flag off.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F068",
"description": "Route boundary: Teams message-extension routes delegate into EE implementations when Teams is enabled.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F069",
"description": "Route boundary: Teams auth callback routes for tab, bot, and message extension are converted from shared active implementations into EE-owned implementations or EE delegators.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F070",
"description": "Route boundary: Teams auth callback routes return EE-unavailable responses in CE.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F071",
"description": "Route boundary: Teams auth callback routes return disabled responses in EE with the tenant flag off.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F072",
"description": "Route boundary: Teams auth callback routes delegate into EE implementations when Teams is enabled.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F073",
"description": "Route boundary: Teams package generation and install-status routes are converted from shared active implementations into EE-owned implementations or EE delegators.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F074",
"description": "Route boundary: Teams package/install routes return EE-unavailable responses in CE.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F075",
"description": "Route boundary: Teams package/install routes return disabled responses in EE with the tenant flag off.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F076",
"description": "Route boundary: Teams package/install routes delegate into EE implementations when Teams is enabled.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F077",
"description": "Route boundary: OPTIONS handling for any CE stubbed Teams API routes remains valid even when the EE implementation is unavailable.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F078",
"description": "Route boundary: shared route wrappers cache EE dynamic imports safely so repeated requests do not reload modules unnecessarily.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F079",
"description": "Route boundary: shared route wrappers log EE import failures in a bounded way without exposing stack traces to users.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F080",
"description": "Route boundary: shared route wrappers do not import EE modules eagerly in CE builds.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F081",
"description": "Route boundary: the migration documents which Teams routes remain addressable as CE stubs and which become hard 404s.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F082",
"description": "Route boundary: no remaining shared route directly executes Teams business logic after the migration.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F083",
"description": "EE ownership: concrete Teams tab rendering logic lives under an EE-owned path after the migration.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F084",
"description": "EE ownership: concrete Teams bot command handling lives under an EE-owned path after the migration.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F085",
"description": "EE ownership: concrete Teams message-extension search handling lives under an EE-owned path after the migration.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F086",
"description": "EE ownership: concrete Teams message-extension action handling lives under an EE-owned path after the migration.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F087",
"description": "EE ownership: concrete Teams adaptive-card and dialog submit handling lives under an EE-owned path after the migration.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F088",
"description": "EE ownership: concrete Teams package manifest generation lives under an EE-owned path after the migration.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F089",
"description": "EE ownership: concrete Teams install-status and package metadata logic lives under an EE-owned path after the migration.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F090",
"description": "EE ownership: concrete Teams quick-action registry logic lives under an EE-owned path after the migration.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F091",
"description": "EE ownership: concrete Teams notification delivery logic lives under an EE-owned path after the migration.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F092",
"description": "EE ownership: concrete Teams deep-link composition used only by Teams runtime surfaces lives under an EE-owned path after the migration.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F093",
"description": "EE ownership: concrete Teams tenant-context resolution used only by Teams runtime surfaces lives under an EE-owned path after the migration.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F094",
"description": "EE ownership: concrete Teams auth callback helpers used only by Teams runtime surfaces live under EE-owned paths after the migration.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F095",
"description": "EE ownership: concrete Teams settings UI lives under an EE-owned path after the migration.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F096",
"description": "EE ownership: concrete Teams setup state persistence helpers live under an EE-owned path after the migration.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F097",
"description": "EE ownership: EE Teams components continue to consume shared Microsoft profile services through stable shared interfaces.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F098",
"description": "EE ownership: EE Teams components continue to consume shared PSA notification/link infrastructure through stable shared interfaces.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F099",
"description": "EE ownership: EE Teams components continue to consume shared auth/session primitives through stable shared interfaces.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F100",
"description": "EE ownership: EE Teams modules are named and placed so future engineers can identify them as enterprise-only without inspecting internals.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F101",
"description": "EE ownership: enterprise-only import aliases or package entrypoints are used consistently for Teams runtime modules.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F102",
"description": "EE ownership: the migration does not create duplicate EE implementations for Microsoft profile management that already lives in shared code.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F103",
"description": "EE ownership: the migration does not create a second Teams integration model separate from the existing Teams tenant integration concept.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F104",
"description": "EE ownership: the migration keeps Teams as one EE integration spanning tab, bot, message extension, and notifications rather than fragmenting it into separate EE subsystems.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F105",
"description": "EE ownership: the migration keeps shared Microsoft profiles as the only supported credential source for Teams.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F106",
"description": "EE ownership: the migration does not add channel/chat notification routing or other new product scope while moving code to EE.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F107",
"description": "Server actions: shared Teams server-action modules stop exporting concrete Teams behavior directly from CE-owned paths.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F108",
"description": "Server actions: shared Teams server-action entrypoints become EE-unavailable stubs or EE delegators where external imports require a stable path.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F109",
"description": "Server actions: Teams package actions return EE-unavailable results in CE.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F110",
"description": "Server actions: Teams package actions return disabled results in EE when the tenant flag is off.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F111",
"description": "Server actions: Teams package actions delegate into EE implementations when Teams is enabled.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F112",
"description": "Server actions: Teams settings actions return EE-unavailable results in CE.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F113",
"description": "Server actions: Teams settings actions return disabled results in EE when the tenant flag is off.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F114",
"description": "Server actions: Teams settings actions delegate into EE implementations when Teams is enabled.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F115",
"description": "Server actions: Teams quick-action submit actions return EE-unavailable results in CE.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F116",
"description": "Server actions: Teams quick-action submit actions return disabled results in EE when the tenant flag is off.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F117",
"description": "Server actions: Teams quick-action submit actions delegate into EE implementations when Teams is enabled.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F118",
"description": "Server actions: Teams action modules call the shared Teams availability helper before reading Teams tenant state.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F119",
"description": "Server actions: Teams action result types remain stable across CE stubs and EE implementations so UI callers do not need edition-specific type handling.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F120",
"description": "Server actions: runtime constants and helpers needed by both UI and action code live outside `use server` files.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F121",
"description": "Server actions: CE action wrappers do not pull enterprise-only modules into client bundles.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F122",
"description": "Server actions: shared action indexes no longer make Teams look like a CE-managed provider integration.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F123",
"description": "Server actions: any shared consumer-binding helpers remain shared and are not moved into EE just because Teams uses them.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F124",
"description": "Server actions: Teams-specific provider-resolution helpers used only for Teams runtime behavior are moved out of shared auth action surfaces.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F125",
"description": "Server actions: Teams action wrappers preserve existing result-shape semantics for success, failure, unavailable, and disabled cases.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F126",
"description": "Server actions: teams package generation still depends on shared Microsoft profile selection state rather than duplicating profile data.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F127",
"description": "Server actions: teams settings persistence still enforces tenant-admin permissions after moving to EE.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F128",
"description": "Server actions: teams action wrappers remain safe to import from settings pages, notification code, and server components without edition leakage.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F129",
"description": "Server actions: shared CE code no longer uses Teams action modules as a source of reusable runtime constants.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F130",
"description": "Server actions: the migration explicitly tests the `use server` export shape of migrated Teams action modules.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F131",
"description": "Server actions: no remaining shared server-action module owns Teams business logic after the migration.",
"implemented": true,
"prdRefs": [
"Requirements",
"Data / API / Integrations"
]
},
{
"id": "F132",
"description": "Auth boundary: Teams-specific Microsoft provider resolution used by Teams runtime entrypoints is moved behind EE ownership or EE-safe wrappers.",
"implemented": true,
"prdRefs": [
"Data / API / Integrations",
"Security / Permissions"
]
},
{
"id": "F133",
"description": "Auth boundary: shared MSP SSO and non-Teams Microsoft auth paths continue to function without depending on EE Teams modules.",
"implemented": true,
"prdRefs": [
"Data / API / Integrations",
"Security / Permissions"
]
},
{
"id": "F134",
"description": "Auth boundary: Teams runtime auth checks still enforce MSP-user-only semantics after moving to EE.",
"implemented": true,
"prdRefs": [
"Data / API / Integrations",
"Security / Permissions"
]
},
{
"id": "F135",
"description": "Auth boundary: Teams runtime auth checks still enforce tenant matching after moving to EE.",
"implemented": true,
"prdRefs": [
"Data / API / Integrations",
"Security / Permissions"
]
},
{
"id": "F136",
"description": "Auth boundary: Teams runtime auth checks still enforce selected Teams Microsoft profile semantics after moving to EE.",
"implemented": true,
"prdRefs": [
"Data / API / Integrations",
"Security / Permissions"
]
},
{
"id": "F137",
"description": "Auth boundary: shared auth indexes no longer expose Teams-specific helpers as if they are CE-owned runtime features.",
"implemented": true,
"prdRefs": [
"Data / API / Integrations",
"Security / Permissions"
]
},
{
"id": "F138",
"description": "Auth boundary: Teams reauth URL helpers used only for Teams surfaces are moved behind EE ownership or EE-safe wrappers.",
"implemented": true,
"prdRefs": [
"Data / API / Integrations",
"Security / Permissions"
]
},
{
"id": "F139",
"description": "Auth boundary: CE does not attempt Teams auth callback flows after the migration.",
"implemented": true,
"prdRefs": [
"Data / API / Integrations",
"Security / Permissions"
]
},
{
"id": "F140",
"description": "Auth boundary: EE flag-off state does not attempt Teams auth callback flows after the migration.",
"implemented": true,
"prdRefs": [
"Data / API / Integrations",
"Security / Permissions"
]
},
{
"id": "F141",
"description": "Notification boundary: shared internal notification generation remains the source of truth for payloads and record links.",
"implemented": true,
"prdRefs": [
"Data / API / Integrations",
"Security / Permissions"
]
},
{
"id": "F142",
"description": "Notification boundary: Teams notification delivery is moved behind EE ownership or EE-safe wrappers.",
"implemented": true,
"prdRefs": [
"Data / API / Integrations",
"Security / Permissions"
]
},
{
"id": "F143",
"description": "Notification boundary: CE notification broadcasting never attempts Teams delivery after the migration.",
"implemented": true,
"prdRefs": [
"Data / API / Integrations",
"Security / Permissions"
]
},
{
"id": "F144",
"description": "Notification boundary: EE flag-off notification broadcasting never attempts Teams delivery after the migration.",
"implemented": true,
"prdRefs": [
"Data / API / Integrations",
"Security / Permissions"
]
},
{
"id": "F145",
"description": "Notification boundary: EE flag-on notification broadcasting can reach Teams delivery through EE-owned code.",
"implemented": true,
"prdRefs": [
"Data / API / Integrations",
"Security / Permissions"
]
},
{
"id": "F146",
"description": "Notification boundary: shared notification broadening does not import concrete Teams delivery modules directly.",
"implemented": true,
"prdRefs": [
"Data / API / Integrations",
"Security / Permissions"
]
},
{
"id": "F147",
"description": "Notification boundary: Teams-specific notification templates or feed payload helpers used only for Teams delivery are EE-owned.",
"implemented": true,
"prdRefs": [
"Data / API / Integrations",
"Security / Permissions"
]
},
{
"id": "F148",
"description": "Notification boundary: Teams deep-link builders used only for Teams feed delivery are EE-owned or wrapped safely.",
"implemented": true,
"prdRefs": [
"Data / API / Integrations",
"Security / Permissions"
]
},
{
"id": "F149",
"description": "Notification boundary: non-Teams notification channels remain unaffected by the Teams EE extraction.",
"implemented": true,
"prdRefs": [
"Data / API / Integrations",
"Security / Permissions"
]
},
{
"id": "F150",
"description": "Notification boundary: the migration preserves the simplification cascade that Teams notifications are just another delivery channel for existing notification payloads.",
"implemented": true,
"prdRefs": [
"Data / API / Integrations",
"Security / Permissions"
]
},
{
"id": "F151",
"description": "Notification boundary: the migration does not add channel-targeted notification routing while moving delivery to EE.",
"implemented": true,
"prdRefs": [
"Data / API / Integrations",
"Security / Permissions"
]
},
{
"id": "F152",
"description": "Notification boundary: failures to load EE Teams notification delivery do not break the broader notification broadcast path.",
"implemented": true,
"prdRefs": [
"Data / API / Integrations",
"Security / Permissions"
]
},
{
"id": "F153",
"description": "Notification boundary: CE builds do not include Teams notification runtime by accident through shared notification imports.",
"implemented": true,
"prdRefs": [
"Data / API / Integrations",
"Security / Permissions"
]
},
{
"id": "F154",
"description": "Schema ownership: shared migration history no longer contains active ownership of Teams integration tables.",
"implemented": true,
"prdRefs": [
"Rollout / Migration",
"Data / API / Integrations"
]
},
{
"id": "F155",
"description": "Schema ownership: shared migration history no longer contains active ownership of Teams package metadata columns or tables.",
"implemented": true,
"prdRefs": [
"Rollout / Migration",
"Data / API / Integrations"
]
},
{
"id": "F156",
"description": "Schema ownership: EE migration history creates the Teams integration tables required for Teams tenant setup.",
"implemented": true,
"prdRefs": [
"Rollout / Migration",
"Data / API / Integrations"
]
},
{
"id": "F157",
"description": "Schema ownership: EE migration history creates the Teams package metadata storage required for Teams manifest/install status.",
"implemented": true,
"prdRefs": [
"Rollout / Migration",
"Data / API / Integrations"
]
},
{
"id": "F158",
"description": "Schema ownership: shared migration history continues to create Microsoft profile tables.",
"implemented": true,
"prdRefs": [
"Rollout / Migration",
"Data / API / Integrations"
]
},
{
"id": "F159",
"description": "Schema ownership: shared migration history continues to create Microsoft profile consumer-binding tables.",
"implemented": true,
"prdRefs": [
"Rollout / Migration",
"Data / API / Integrations"
]
},
{
"id": "F160",
"description": "Schema ownership: fresh CE installs do not create Teams-specific schema.",
"implemented": true,
"prdRefs": [
"Rollout / Migration",
"Data / API / Integrations"
]
},
{
"id": "F161",
"description": "Schema ownership: fresh EE installs do create Teams-specific schema.",
"implemented": true,
"prdRefs": [
"Rollout / Migration",
"Data / API / Integrations"
]
},
{
"id": "F162",
"description": "Schema ownership: CE migration validation asserts the absence of Teams tables.",
"implemented": true,
"prdRefs": [
"Rollout / Migration",
"Data / API / Integrations"
]
},
{
"id": "F163",
"description": "Schema ownership: EE migration validation asserts the presence of Teams tables.",
"implemented": true,
"prdRefs": [
"Rollout / Migration",
"Data / API / Integrations"
]
},
{
"id": "F164",
"description": "Schema ownership: Teams table creation remains tenant-scoped and aligned with the existing Teams integration data model after moving to EE.",
"implemented": true,
"prdRefs": [
"Rollout / Migration",
"Data / API / Integrations"
]
},
{
"id": "F165",
"description": "Schema ownership: Teams package metadata persistence remains tenant-scoped after moving to EE.",
"implemented": true,
"prdRefs": [
"Rollout / Migration",
"Data / API / Integrations"
]
},
{
"id": "F166",
"description": "Schema ownership: the migration plan does not include a production backfill for current dev/test Teams rows.",
"implemented": true,
"prdRefs": [
"Rollout / Migration",
"Data / API / Integrations"
]
},
{
"id": "F167",
"description": "Schema ownership: any current shared Teams tables can be dropped or ignored in local/dev reset flows without preservation guarantees.",
"implemented": true,
"prdRefs": [
"Rollout / Migration",
"Data / API / Integrations"
]
},
{
"id": "F168",
"description": "Schema ownership: the migration notes expected handling for developers whose local databases still have pre-migration shared Teams tables.",
"implemented": true,
"prdRefs": [
"Rollout / Migration",
"Data / API / Integrations"
]
},
{
"id": "F169",
"description": "Schema ownership: the migration does not move shared Microsoft profile secrets or bindings into EE.",
"implemented": true,
"prdRefs": [
"Rollout / Migration",
"Data / API / Integrations"
]
},
{
"id": "F170",
"description": "Schema ownership: the migration does not create duplicate copies of Microsoft profile tables inside EE.",
"implemented": true,
"prdRefs": [
"Rollout / Migration",
"Data / API / Integrations"
]
},
{
"id": "F171",
"description": "Schema ownership: Teams schema tests run against migrated databases rather than source-string-only assertions.",
"implemented": true,
"prdRefs": [
"Rollout / Migration",
"Data / API / Integrations"
]
},
{
"id": "F172",
"description": "Schema ownership: the plan records whether shared migration files are deleted, tombstoned, or replaced with no-op compatibility markers.",
"implemented": true,
"prdRefs": [
"Rollout / Migration",
"Data / API / Integrations"
]
},
{
"id": "F173",
"description": "Schema ownership: the final schema boundary leaves no ambiguity about whether Teams is CE or EE at the database layer.",
"implemented": true,
"prdRefs": [
"Rollout / Migration",
"Data / API / Integrations"
]
},
{
"id": "F174",
"description": "Cleanup: the shared integrations component index no longer exports an active Teams settings component.",
"implemented": true,
"prdRefs": [
"Requirements",
"Acceptance Criteria (Definition of Done)"
]
},
{
"id": "F175",
"description": "Cleanup: the shared integrations settings page no longer imports Teams from a CE-owned component path.",
"implemented": true,
"prdRefs": [
"Requirements",
"Acceptance Criteria (Definition of Done)"
]
},
{
"id": "F176",
"description": "Cleanup: shared route trees no longer contain active Teams business logic in page or API handlers.",
"implemented": true,
"prdRefs": [
"Requirements",
"Acceptance Criteria (Definition of Done)"
]
},
{
"id": "F177",
"description": "Cleanup: shared notifications runtime no longer imports concrete Teams delivery code.",
"implemented": true,
"prdRefs": [
"Requirements",
"Acceptance Criteria (Definition of Done)"
]
},
{
"id": "F178",
"description": "Cleanup: shared auth indexes no longer expose concrete Teams-only runtime modules when a wrapper would suffice.",
"implemented": true,
"prdRefs": [
"Requirements",
"Acceptance Criteria (Definition of Done)"
]
},
{
"id": "F179",
"description": "Cleanup: Teams-specific helpers that are only meaningful for Teams runtime are moved out of generic shared utility files where appropriate.",
"implemented": true,
"prdRefs": [
"Requirements",
"Acceptance Criteria (Definition of Done)"
]
},
{
"id": "F180",
"description": "Cleanup: comments and file names are updated so Teams enterprise ownership is obvious to future maintainers.",
"implemented": true,
"prdRefs": [
"Requirements",
"Acceptance Criteria (Definition of Done)"
]
},
{
"id": "F181",
"description": "Cleanup: no settings copy still tells admins to configure Teams from the Providers tab.",
"implemented": true,
"prdRefs": [
"Requirements",
"Acceptance Criteria (Definition of Done)"
]
},
{
"id": "F182",
"description": "Cleanup: no test names still describe Teams as a Providers-category integration unless they are historical references.",
"implemented": true,
"prdRefs": [
"Requirements",
"Acceptance Criteria (Definition of Done)"
]
},
{
"id": "F183",
"description": "Cleanup: no docs introduced by this migration claim that Teams is available in CE.",
"implemented": true,
"prdRefs": [
"Requirements",
"Acceptance Criteria (Definition of Done)"
]
},
{
"id": "F184",
"description": "Cleanup: no shared package barrel accidentally re-exports enterprise Teams code.",
"implemented": true,
"prdRefs": [
"Requirements",
"Acceptance Criteria (Definition of Done)"
]
},
{
"id": "F185",
"description": "Cleanup: no EE module imports shared Teams code that is itself trying to import back into EE recursively.",
"implemented": true,
"prdRefs": [
"Requirements",
"Acceptance Criteria (Definition of Done)"
]
},
{
"id": "F186",
"description": "Cleanup: stale temporary wrappers created during migration are removed before the work is considered complete.",
"implemented": true,
"prdRefs": [
"Requirements",
"Acceptance Criteria (Definition of Done)"
]
},
{
"id": "F187",
"description": "Compatibility: shared Microsoft profile CRUD still works in CE after the Teams extraction.",
"implemented": true,
"prdRefs": [
"Requirements",
"Acceptance Criteria (Definition of Done)"
]
},
{
"id": "F188",
"description": "Compatibility: shared Microsoft profile CRUD still works in EE after the Teams extraction.",
"implemented": true,
"prdRefs": [
"Requirements",
"Acceptance Criteria (Definition of Done)"
]
},
{
"id": "F189",
"description": "Compatibility: shared default-profile compatibility behavior for email/calendar/MSP SSO remains intact after the Teams extraction.",
"implemented": true,
"prdRefs": [
"Requirements",
"Acceptance Criteria (Definition of Done)"
]
},
{
"id": "F190",
"description": "Compatibility: Teams remains able to bind to a selected Microsoft profile through the shared consumer-binding model after the extraction.",
"implemented": true,
"prdRefs": [
"Requirements",
"Acceptance Criteria (Definition of Done)"
]
},
{
"id": "F191",
"description": "Compatibility: the migration does not change tenant-admin permission requirements for managing Microsoft profiles.",
"implemented": true,
"prdRefs": [
"Requirements",
"Acceptance Criteria (Definition of Done)"
]
},
{
"id": "F192",
"description": "Compatibility: the migration does not change tenant-admin permission requirements for managing Teams setup; it only changes ownership and placement.",
"implemented": true,
"prdRefs": [
"Requirements",
"Acceptance Criteria (Definition of Done)"
]
},
{
"id": "F193",
"description": "Compatibility: CE tenants without Teams remain unaffected in behavior and schema after the extraction.",
"implemented": true,
"prdRefs": [
"Requirements",
"Acceptance Criteria (Definition of Done)"
]
},
{
"id": "F194",
"description": "Compatibility: EE tenants with the feature flag off remain unaffected in behavior while Teams code remains unavailable.",
"implemented": true,
"prdRefs": [
"Requirements",
"Acceptance Criteria (Definition of Done)"
]
},
{
"id": "F195",
"description": "Compatibility: EE tenants with the feature flag on can still use the same Teams v1 surface set after the extraction.",
"implemented": true,
"prdRefs": [
"Requirements",
"Acceptance Criteria (Definition of Done)"
]
},
{
"id": "F196",
"description": "Compatibility: the migration preserves the single-integration mental model for Teams across tab, bot, message extension, and notifications.",
"implemented": true,
"prdRefs": [
"Requirements",
"Acceptance Criteria (Definition of Done)"
]
},
{
"id": "F197",
"description": "Compatibility: the migration does not broaden Teams support to client users, channel-first workflows, or channel-targeted notifications.",
"implemented": true,
"prdRefs": [
"Requirements",
"Acceptance Criteria (Definition of Done)"
]
},
{
"id": "F198",
"description": "Test infrastructure: add or update fixture helpers that can simulate CE, EE flag-off, and EE flag-on states for Teams settings and routes.",
"implemented": true,
"prdRefs": [
"Requirements",
"Acceptance Criteria (Definition of Done)"
]
},
{
"id": "F199",
"description": "Test infrastructure: add or update fixture helpers that can simulate Teams availability checks without requiring live PostHog access.",
"implemented": true,
"prdRefs": [
"Requirements",
"Acceptance Criteria (Definition of Done)"
]
},
{
"id": "F200",
"description": "Test infrastructure: add or update fixture helpers that can simulate fresh CE versus fresh EE migration states.",
"implemented": true,
"prdRefs": [
"Requirements",
"Acceptance Criteria (Definition of Done)"
]
},
{
"id": "F201",
"description": "Test infrastructure: add or update fixture helpers that can simulate Teams-disabled wrapper results consistently across settings, actions, and routes.",
"implemented": true,
"prdRefs": [
"Requirements",
"Acceptance Criteria (Definition of Done)"
]
},
{
"id": "F202",
"description": "Test infrastructure: contract tests are added or updated for settings placement in Communication vs Providers.",
"implemented": true,
"prdRefs": [
"Requirements",
"Acceptance Criteria (Definition of Done)"
]
},
{
"id": "F203",
"description": "Test infrastructure: contract tests are added or updated for route delegation into EE implementations.",
"implemented": true,
"prdRefs": [
"Requirements",
"Acceptance Criteria (Definition of Done)"
]
},
{
"id": "F204",
"description": "Test infrastructure: contract tests are added or updated for CE unavailable responses.",
"implemented": true,
"prdRefs": [
"Requirements",
"Acceptance Criteria (Definition of Done)"
]
},
{
"id": "F205",
"description": "Test infrastructure: contract tests are added or updated for flag-disabled responses.",
"implemented": true,
"prdRefs": [
"Requirements",
"Acceptance Criteria (Definition of Done)"
]
},
{
"id": "F206",
"description": "Test infrastructure: contract tests are added or updated for shared Microsoft profile compatibility after extraction.",
"implemented": true,
"prdRefs": [
"Requirements",
"Acceptance Criteria (Definition of Done)"
]
},
{
"id": "F207",
"description": "Test infrastructure: contract tests are added or updated for schema ownership boundaries between shared and EE migrations.",
"implemented": true,
"prdRefs": [
"Requirements",
"Acceptance Criteria (Definition of Done)"
]
},
{
"id": "F208",
"description": "Test infrastructure: scratchpad runbooks list the focused commands needed to validate settings, routes, actions, and migrations for this extraction.",
"implemented": true,
"prdRefs": [
"Requirements",
"Acceptance Criteria (Definition of Done)"
]
},
{
"id": "F209",
"description": "Acceptance: the migration is not complete until Teams is invisible in CE, visible only in EE Communication when flagged on, and database ownership clearly matches that split.",
"implemented": true,
"prdRefs": [
"Requirements",
"Acceptance Criteria (Definition of Done)"
]
}
]