You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Tracking issue.ADR 0051 rules that the per-solution workflow (deploy-<solution>.yml) is the unit of data-plane apply, and retires the monolithic deploy-data-plane.yml. Of the monolith's ~14 surfaces, only 5 have a per-solution workflow today. The other 12 have no automated apply path at all.
This issue tracks backfilling those 12. It is the issue the operator docs link to when they state, plainly, that a surface has no automated apply path yet and that the interim path is the local scripts/Deploy-*.ps1 reconciler.
Nothing is being lost here, and that is the point. These 12 surfaces never had a working apply path — they had a step inside a workflow that has never once executed (90 runs, 0 successes, 0 jobs scheduled, invalid since the scaffold commit). Retiring the monolith does not remove an apply path; it removes the false appearance of one. This issue tracks building the real thing.
Covered today (5 — no action)
Workflow
Surface
deploy-labels.yml
Sensitivity labels
deploy-label-policies.yml
Label policies
deploy-auto-label-policies.yml
Auto-labeling policies
deploy-dlp.yml
DLP policies
deploy-irm.yml
IRM policies
To backfill (12)
Each row is its own item, filed via @idea-intake, built one at a time. This issue is the umbrella; it is not itself an implementation item.
deploy-administrative-units.yml — administrative units
deploy-role-groups.yml — Purview role groups (scripts/Deploy-PurviewRoleGroups.ps1)
Each must conform to the ADR 0051 §Decision contract:
One workflow, one surface — owns exactly one Deploy-*.ps1 reconciler; applies no surface it does not name.
push: path trigger — auto-applies on merge, bound to the data-plane/** path and the reconciler it owns.
Small workflow_dispatch input surface — the repo's self-imposed working ceiling is <= 10 inputs, deliberately far below GitHub's documented 25-property cap. (The existing five land at 2-4.)
permissions: {} deny-by-default, with least-privilege scopes granted per job, not once at the top of the file.
A concurrency: group, so two applies of the same surface cannot interleave.
Two-pass deterministic skip enumeration and an automated drift-back PR where the surface supports export.
The surface's docs/solutions/** guide is updated: the "no automated apply path yet" language is removed and replaced by a pointer to the new workflow.
This tracking issue's checkbox is ticked.
Out of scope
Deleting deploy-data-plane.yml and the operator-doc sweep — that is the ADR-gated item that links here, tracked separately.
A deploy-all.yml orchestrator. ADR 0051 explicitly defers this: if ever wanted it is new greenfield workflow_call work, not a rehabilitation of the monolith.
Doing all 12 in one PR. One surface per item, one item at a time, per the repo's delivery discipline.
surface-watch.yml (invalid YAML) and drift-detection.yml (failing weekly) — separate items.
Sequencing: this backfill does not block the retirement item. The docs are honest about the gap in the meantime — that honesty is the deliberate interim state ADR 0051 accepts with eyes open.
Prioritization suggestion: the surfaces whose reconcilers are most exercised in the lab (role-groups, audit-retention, retention/DLM) are the natural first three; unified-catalog is the most likely to churn given ADR 0047 is still in flight.
Summary
Tracking issue. ADR 0051 rules that the per-solution workflow (
deploy-<solution>.yml) is the unit of data-plane apply, and retires the monolithicdeploy-data-plane.yml. Of the monolith's ~14 surfaces, only 5 have a per-solution workflow today. The other 12 have no automated apply path at all.This issue tracks backfilling those 12. It is the issue the operator docs link to when they state, plainly, that a surface has no automated apply path yet and that the interim path is the local
scripts/Deploy-*.ps1reconciler.Nothing is being lost here, and that is the point. These 12 surfaces never had a working apply path — they had a step inside a workflow that has never once executed (90 runs, 0 successes, 0 jobs scheduled, invalid since the scaffold commit). Retiring the monolith does not remove an apply path; it removes the false appearance of one. This issue tracks building the real thing.
Covered today (5 — no action)
deploy-labels.ymldeploy-label-policies.ymldeploy-auto-label-policies.ymldeploy-dlp.ymldeploy-irm.ymlTo backfill (12)
Each row is its own item, filed via
@idea-intake, built one at a time. This issue is the umbrella; it is not itself an implementation item.deploy-administrative-units.yml— administrative unitsdeploy-role-groups.yml— Purview role groups (scripts/Deploy-PurviewRoleGroups.ps1)deploy-audit-retention.yml— audit retention policiesdeploy-retention.yml— retention / data lifecycle managementdeploy-records.yml— records management / file plandeploy-irm-entity-lists.yml— IRM entity listsdeploy-collections.yml— Data Map collectionsdeploy-glossary.yml— glossarydeploy-classifications.yml— custom classificationsdeploy-data-sources.yml— data sourcesdeploy-scans.yml— scansdeploy-unified-catalog.yml— unified catalogAcceptance criteria (per backfilled workflow)
Each must conform to the ADR 0051 §Decision contract:
Deploy-*.ps1reconciler; applies no surface it does not name.push:path trigger — auto-applies on merge, bound to thedata-plane/**path and the reconciler it owns.workflow_dispatchinput surface — the repo's self-imposed working ceiling is <= 10 inputs, deliberately far below GitHub's documented 25-property cap. (The existing five land at 2-4.)permissions: {}deny-by-default, with least-privilege scopes granted per job, not once at the top of the file.concurrency:group, so two applies of the same surface cannot interleave.docs/solutions/**guide is updated: the "no automated apply path yet" language is removed and replaced by a pointer to the new workflow.Out of scope
deploy-data-plane.ymland the operator-doc sweep — that is the ADR-gated item that links here, tracked separately.deploy-all.ymlorchestrator. ADR 0051 explicitly defers this: if ever wanted it is new greenfieldworkflow_callwork, not a rehabilitation of the monolith.surface-watch.yml(invalid YAML) anddrift-detection.yml(failing weekly) — separate items.Squad Personas
Primary: Automation Engineer (
squad:automation-engineer)Supporting: Lead / Architect (
squad:lead-architect), Scribe (squad:scribe)Notes
docs/project-plan.md§5 Progress checklist has no matching row, so the §6 dependency-matrix and §8 ADR gates do not apply. The governing ADR (0051) is merged and Accepted (1f63f15, PR docs(adr): add ADR 0051 — per-solution workflow is the unit of data-plane apply #79), so the ADR gate is satisfied.References