Skip to content

Commit 5666412

Browse files
akshay-vizCopilot
andcommitted
docs(model-apps): record that form-embedded pages are not dependency-tracked
The teardown comment claimed attempting the delete "covers every surface the platform tracks". True, but it invited the wrong conclusion, because that set excludes forms. Measured: a form was built with a page in the MscrmControls.UxAgentControl PCF's RefId across all three form factors, saved AND published, then read back to confirm the control persisted rather than being silently stripped. The page still reported ZERO dependents and DELETE returned 204. The form's own RetrieveRequiredComponents names the PCF (component type 66) and never the page, because RefId is an opaque static SingleLine.Text value the platform cannot know is a reference. So platform arbitration is authoritative for sitemaps and blind to forms. The gap is not closable by asking the platform, and a cross-app sitemap scan would not have closed it either - the reference is not in a sitemap. No behaviour change. This step only deletes pages this build authored, while tearing down the app that owns them, so it never deletes on another owner's behalf. Recording the gap so nobody reads the previous wording as a stronger guarantee than it is. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 731c1111-d9b6-4fd7-b9d3-347f762ca7f5
1 parent ca1b76d commit 5666412

1 file changed

Lines changed: 13 additions & 4 deletions

File tree

plugins/model-apps/scripts/lib/sdk-teardown.js

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -178,10 +178,19 @@ const KIND_HANDLERS = {
178178
// removed AND published, or when the app+sitemap are deleted outright (which is what the step
179179
// before this one just did).
180180
//
181-
// So the delete IS the check. Attempting it and reading the platform's answer is strictly better
182-
// than a pre-flight scan: it is authoritative (the platform's own dependency graph, not our model
183-
// of it), it covers every surface the platform tracks rather than just sitemap XML, and it has no
184-
// TOCTOU window — a pre-check can go stale between the check and the delete, this cannot.
181+
// So the delete IS the check. Attempting it and reading the platform's answer beats a pre-flight
182+
// scan: it is authoritative (the platform's own dependency graph, not our model of it), and it has
183+
// no TOCTOU window — a pre-check can go stale between the check and the delete, this cannot.
184+
//
185+
// KNOWN GAP, measured rather than assumed: that graph covers SITEMAP references only. A page
186+
// embedded in a FORM through the `MscrmControls.UxAgentControl` PCF is NOT tracked — a form was
187+
// built with a page in its `RefId`, saved and published, and the page still reported ZERO
188+
// dependents and deleted with a 204. The form's own required-components list names the PCF
189+
// (component type 66) and never the page, because `RefId` is an opaque
190+
// `static="true" type="SingleLine.Text"` value the platform cannot know is a reference.
191+
// We accept that gap here because this step only ever deletes pages THIS build authored and is
192+
// tearing down the app that owns them; it is not closable by asking the platform, and a formxml
193+
// scan is the only thing that would close it.
185194
genpage: {
186195
// A page another app still references is a SKIP, not a failure — see isDependencyBlocked.
187196
tolerateDependencyBlock: true,

0 commit comments

Comments
 (0)