Obligation 07: The coverage finding records the missing scenario.
Obligation 08: The coverage finding records the missing scenario.
Obligation 09: 1 scenario cite this obligation.
Obligation 10: 2 scenarios cite this obligation.
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.
Type lifecycle and deletion policy remain effective at their consuming operations. 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
Transitioncovered
Validationcovered
Permissioncovered
Edgegap: FND-PFM-MTD-079
Failuregap: FND-PFM-MTD-079
Boundarygap: FND-PFM-MTD-079
Concurrencycovered
Invariantgap: FND-PFM-MTD-079
Interactioncovered
Test Scenarios
9 scenarios proving CAP-PFM-MTD-017; 8 bound to an existing test.
An active object, a draft and registered Contacts exist.
Steps
[
{
"do": "Create types to each and a same-type contact relationship.",
"provenance": "test",
"source": "services-platform:modules/associations/tests/e2e/associations.e2e.spec.js#answers 400 to a type of a draft custom object, naming it as not active"
}
]
Expected
Supported endpoints work, drafts and missing types fail and same-type relationships are accepted.
Data
An active object, a draft and registered Contacts exist.
API and console relationship editors are available.
Steps
[
{
"do": "Define a native-target cascade, missing label and duplicate identity.",
"provenance": "test",
"source": "react-console:acceptance/custom-objects/playwright/journeys/PLAT-M6-S02.spec.ts#PLAT-M6-S02: a relationship type with a missing label, a cascade onto contacts or a duplicate id is refused and nothing is saved"
}
]
Expected
Each invalid definition fails with an explanation and nothing is saved.
Data
API and console relationship editors are available.
[
{
"do": "Change its cardinality, endpoint, dating or primary support and attempt stale relabelling.",
"provenance": "test",
"source": "services-platform:modules/associations/tests/integration/services/persistence/association-types.integration.spec.js#refuses a change of cardinality, the shape of a type being immutable, and leaves the row as it was"
}
]
Expected
Immutable, occupied and stale changes fail; valid versioned relabelling succeeds.
[
{
"do": "Remove both and try a new link under the retired type.",
"provenance": "test",
"source": "services-platform:modules/associations/tests/integration/services/persistence/association-types.integration.spec.js#deactivates a type an association names instead of deleting it"
}
]
Expected
The unused type is deleted, the used type deactivates and new links are refused.
[
{
"do": "Retire them, change the owner settings and retry retirement and revival.",
"provenance": "test",
"source": "services-platform:modules/associations/tests/integration/services/persistence/association-types.integration.spec.js#refuses deactivating the type of one object, naming it by its label and what to change first"
}
]
Expected
Dependencies identify every affected object; removing ownership allows retirement and revival succeeds.
[
{
"do": "Create, relabel, deactivate and delete types and inspect the trail.",
"provenance": "test",
"source": "services-platform:modules/associations/tests/integration/services/persistence/association-types.integration.spec.js#records a delete and a deactivation in the security trail, each by its action"
}
]
[
{
"do": "Look for relationship-type configuration.",
"provenance": "test",
"source": "react-console:acceptance/custom-objects/playwright/journeys/PLAT-M6-S12.spec.ts#PLAT-M6-S12: a standard user links, ends and removes but has no Relationship Types screen, and a read-only colleague sees no actions"
}
]
An active custom object has a restricting relationship type and a compatible endpoint.
Steps
[
{
"do": "Create a link, try removing its protected endpoint, retire the used type after clearing any owner dependency and attempt another link.",
"provenance": "proposed",
"source": [
"services-platform:modules/associations/tests/integration/services/persistence/association-types.integration.spec.js#refuses deactivating the type of one object, naming it by its label and what to change first",
"services-platform:modules/associations/tests/integration/services/persistence/associations.integration.spec.js#refuses a record associated with itself",
"services-platform:modules/associations/tests/integration/db/apply-endpoint-deletion.integration.spec.js#answers what endpointDeletionOutcome says for an open association on the to side under restrict"
]
}
]
Expected
Compare the deletion refusal, retained connection and new-link refusal.
Data
An active custom object has a restricting relationship type and a compatible endpoint.
Source
services-platform:modules/associations/tests/integration/services/persistence/association-types.integration.spec.js#refuses deactivating the type of one object, naming it by its label and what to change first,services-platform:modules/associations/tests/integration/services/persistence/associations.integration.spec.js#refuses a record associated with itself,services-platform:modules/associations/tests/integration/db/apply-endpoint-deletion.integration.spec.js#answers what endpointDeletionOutcome says for an open association on the to side under restrict