Obligation 07: The coverage finding records the missing scenario.
Obligation 08: The coverage finding records the missing scenario.
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.
Reference movement remains explainable without weakening history access. 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
Validationgap: FND-PFM-MTD-076
Permissioncovered
Edgegap: FND-PFM-MTD-076
Failuregap: FND-PFM-MTD-076
Boundarygap: FND-PFM-MTD-076
Concurrencygap: FND-PFM-MTD-076
Invariantgap: FND-PFM-MTD-076
Interactioncovered
Test Scenarios
7 scenarios proving CAP-PFM-MTD-014; 6 bound to an existing test.
01The timeline identifies committed changes and authorsrulebrowsertest
A boat has creation, edit, relationship and lifecycle changes.
Steps
[
{
"do": "Read its timeline and open the console history.",
"provenance": "test",
"source": "services-platform:modules/custom-objects/tests/integration/services/history/custom-object-record-history.integration.spec.js#answers the association, the update and the creation, newest first"
}
]
Expected
Changes appear newest first with their authors and revision descriptions.
Data
A boat has creation, edit, relationship and lifecycle changes.
A revision changes grouped properties, list values and ownership.
Steps
[
{
"do": "Read the revision detail.",
"provenance": "test",
"source": "services-platform:modules/custom-objects/tests/integration/services/history/custom-object-record-history.integration.spec.js#names each changed property by its label, with its values before and after as the drawer shows them"
}
]
Expected
Sections follow form grouping, values use labels and before-and-after information, and ownership uses the reverse relationship label.
Data
A revision changes grouped properties, list values and ownership.
Readers lack history, reach another object or inspect a deleted boat.
Steps
[
{
"do": "Request history under each grant.",
"provenance": "test",
"source": "services-platform:modules/custom-objects/tests/integration/services/history/custom-object-record-history.integration.spec.js#refuses a caller who may read boats but not their history"
}
]
Expected
Missing history permission fails, wrong-object reach is hidden and deleted-record history remains readable with history permission.
Data
Readers lack history, reach another object or inspect a deleted boat.
[
{
"do": "Read timeline, revision detail and actors.",
"provenance": "test",
"source": "services-platform:modules/custom-objects/tests/integration/services/history/custom-object-record-history.integration.spec.js#answers the timeline of a record of an archived object"
}
]
[
{
"do": "Merge it into the survivor and read the custom-record revision.",
"provenance": "test",
"source": "services-platform:modules/custom-objects/tests/integration/db/custom-object-records-merge.integration.spec.js#attributes the change to the merge: its source, its actor and its merge id"
}
]
Expected
The reference moves and history retains the former value with the survivor afterwards.
[
{
"do": "Change the link and inspect their captured revisions.",
"provenance": "test",
"source": "services-platform:modules/custom-objects/tests/integration/services/persistence/record-revisions.integration.spec.js#writes the association on the contact, a native from record, under its own record type"
}
]
Expected
The starting endpoint and applicable custom endpoint histories record the change; CRM drawer integration remains deferred.
A custom record names a duplicate contact and has an attributed revision.
Steps
[
{
"do": "Merge the contact, read the record and revision with history permission and repeat the history request without that permission.",
"provenance": "proposed",
"source": [
"services-platform:modules/custom-objects/tests/integration/db/custom-object-records-merge.integration.spec.js#attributes the change to the merge: its source, its actor and its merge id",
"services-platform:modules/custom-objects/tests/integration/services/history/custom-object-record-history.integration.spec.js#refuses a caller who may read boats but not their history",
"services-platform:modules/custom-objects/tests/integration/db/custom-object-records-merge.integration.spec.js#names the surviving contact in every property that named a merged one"
]
}
]
Expected
Compare the survivor value, prior reference and history refusal.
Data
A custom record names a duplicate contact and has an attributed revision.
Source
services-platform:modules/custom-objects/tests/integration/db/custom-object-records-merge.integration.spec.js#attributes the change to the merge: its source, its actor and its merge id,services-platform:modules/custom-objects/tests/integration/services/history/custom-object-record-history.integration.spec.js#refuses a caller who may read boats but not their history,services-platform:modules/custom-objects/tests/integration/db/custom-object-records-merge.integration.spec.js#names the surviving contact in every property that named a merged one