Category coverage identifies the kind of proof present. Detailed transition, permission and invariant obligations and unbound proposals remain in the coverage finding until their individual cases are accounted for.
Presentation availability and retained-record access follow their separate lifecycle obligations. The structured interaction rows identify the related capabilities exercised and any remaining gap. Cross-capability workflow seams remain subject to the detailed coverage audit.
Coverage
Rulecovered
Transitiongap: FND-PFM-MTD-070
Validationcovered
Permissioncovered
Edgegap: FND-PFM-MTD-070
Failuregap: FND-PFM-MTD-070
Boundarycovered
Concurrencycovered
Invariantcovered
Interactioncovered
Test Scenarios
12 scenarios proving CAP-PFM-MTD-008; 11 bound to an existing test.
01Opaque presentation documents have bounded sizeboundaryapinegativetest
[
{
"do": "Store an object document, retrieve it and submit oversized or nonobject content.",
"provenance": "test",
"source": "services-platform:modules/layouts/tests/integration/services/persistence/console-page-layouts.integration.spec.js#refuses a layout larger than the stated maximum, telling the person the limit and the size"
}
]
Expected
Valid JSON returns unchanged and invalid shape or size is refused.
[
{
"do": "Replace and patch it naming a different purpose.",
"provenance": "test",
"source": "services-platform:modules/layouts/tests/integration/services/persistence/console-page-layouts.integration.spec.js#refuses a replacement that names another purpose, naming both the stored one and the request’s"
}
]
Expected
Both operations fail and identify the conflicting purposes.
[
{
"do": "Read as the reader, attempt reader writes and administer as the authorized role.",
"provenance": "test",
"source": "services-platform:modules/layouts/tests/e2e/console-page-layouts-api.e2e.spec.js#answers 403 to a caller who may read contacts but not administer their layouts"
}
]
Expected
Reading succeeds, unauthorized writes fail and purpose administration is permitted.
Two purposes have definitions and a caller reaches one.
Steps
[
{
"do": "Read and mutate the other definition and request all or purpose-filtered lists.",
"provenance": "test",
"source": "services-platform:modules/layouts/tests/e2e/console-page-layouts-api.e2e.spec.js#answers 404 for a definition of a purpose the caller may not read, rather than confirming it exists"
}
]
Expected
The hidden definition is not found, omitted from general lists and absent from the filtered page.
Data
Two purposes have definitions and a caller reaches one.
[
{
"do": "Create under an unknown purpose and under an unrelated purpose wildcard.",
"provenance": "test",
"source": "services-platform:modules/layouts/tests/e2e/console-page-layouts-api.e2e.spec.js#answers 400 for a purpose this build does not register, naming it"
}
]
Expected
The unknown purpose is invalid and the wildcard does not authorize the other create.
Draft, active and archived objects and record readers exist.
Steps
[
{
"do": "Create and read forms, attempt reader changes and request missing or archived object forms.",
"provenance": "test",
"source": "services-platform:modules/layouts/tests/e2e/custom-object-forms.e2e.spec.js#answers 404 for a stored form once its custom object is archived"
}
]
Expected
Live-object definitions can be stored and read with suitable keys; unauthorized changes and unavailable-object requests fail.
Data
Draft, active and archived objects and record readers exist.
A definition is newer than the submitted version and others have write or delete locks.
Steps
[
{
"do": "Replace stale and update-locked definitions and delete a locked definition.",
"provenance": "test",
"source": "services-platform:modules/layouts/tests/integration/services/persistence/console-page-layouts.integration.spec.js#refuses the version the caller did not read, as a StaleObject"
}
]
Expected
Every prohibited mutation is refused.
Data
A definition is newer than the submitted version and others have write or delete locks.
Definition fixtures span kinds, purposes and workspaces.
Steps
[
{
"do": "Assign missing, foreign-workspace, wrong-purpose and wrong-kind definitions.",
"provenance": "test",
"source": "services-platform:modules/layouts/tests/integration/db/layout-assignments.table.integration.spec.js#refuses an assignment naming a definition of the wrong kind, because each slot’s column references one table"
}
]
Expected
Database references refuse each incompatible assignment.
Data
Definition fixtures span kinds, purposes and workspaces.
[
{
"do": "Assign different forms, then assign one form to both slots.",
"provenance": "test",
"source": "services-platform:modules/layouts/tests/integration/db/layout-assignments.table.integration.spec.js#holds a different console form for creating a record and for editing one, each under its own column"
}
]
[
{
"do": "Delete it, race assignment with deletion and repeat after clearing references.",
"provenance": "test",
"source": "services-platform:modules/layouts/tests/integration/services/persistence/console-page-layouts.integration.spec.js#names every referring row, in a stable order, when more than one assigns it"
}
]
Expected
The initial refusal lists uses, the race leaves no dangling assignment and an unassigned definition can be deleted.
[
{
"do": "Supply an invalid cursor.",
"provenance": "test",
"source": "services-platform:modules/layouts/tests/e2e/console-page-layouts-api.e2e.spec.js#answers 400 for a ?cursor= it did not issue"
}
]
An active custom object has a stored form and record.
Steps
[
{
"do": "Read both, archive the object, request the form and open the record by its retained link.",
"provenance": "proposed",
"source": [
"services-platform:modules/layouts/tests/e2e/custom-object-forms.e2e.spec.js#answers 404 for a stored form once its custom object is archived",
"services-platform:modules/layouts/tests/integration/services/persistence/purpose-capabilities.integration.spec.js#refuses a console form",
"services-platform:modules/custom-objects/tests/integration/services/persistence/custom-objects.integration.spec.js#restores an archived object as a draft, keeping its object id",
"services-platform:modules/custom-objects/tests/e2e/custom-object-records.e2e.spec.js#refuses every write of it with 409 and changes nothing"
]
}
]
Expected
Compare the two read surfaces and attempt a record edit.
Data
An active custom object has a stored form and record.
Source
services-platform:modules/layouts/tests/e2e/custom-object-forms.e2e.spec.js#answers 404 for a stored form once its custom object is archived,services-platform:modules/layouts/tests/integration/services/persistence/purpose-capabilities.integration.spec.js#refuses a console form,services-platform:modules/custom-objects/tests/integration/services/persistence/custom-objects.integration.spec.js#restores an archived object as a draft, keeping its object id,services-platform:modules/custom-objects/tests/e2e/custom-object-records.e2e.spec.js#refuses every write of it with 409 and changes nothing