Findings and Open Questions: CRM → Entities
Findings
| id | severity | statement | affects | evidence | kind |
|---|---|---|---|---|---|
FND-CRM-ENT-001 | medium | The original console registry names absent paths and omits editor, affiliation, configuration and browser-proof sources. This examination corrects the registry scope. The earlier scope cannot support reliable change detection. | MOD-CRM-ENT, CAP-CRM-ENT-009, CAP-CRM-ENT-017, CAP-CRM-ENT-018 | Structured evidence | inconsistency |
FND-CRM-ENT-002 | low | The seed journeys report automation as not started for 165 of 167 entries, although browser specifications exist for their journey identifiers. Bindings use the specifications rather than the seed automation flags. | JNY-CRM-ENT-001, JNY-CRM-ENT-002, JNY-CRM-ENT-003, JNY-CRM-ENT-004, JNY-CRM-ENT-005 | Structured evidence | inconsistency |
FND-CRM-ENT-003 | medium | The seed inventory reflects an earlier service revision. Current milestone decisions change omitted-affiliation handling, dated relationships, contact-point sharing, computed fields, spouse links, patch versions, lock actions, seasonal addresses and organization history. Capability sources identify the current contract instead of adopting the seed statements unchanged. | CAP-CRM-ENT-001, CAP-CRM-ENT-003, CAP-CRM-ENT-004, CAP-CRM-ENT-005, CAP-CRM-ENT-006, CAP-CRM-ENT-009, CAP-CRM-ENT-015, CAP-CRM-ENT-016, CAP-CRM-ENT-017 | Structured evidence | inconsistency |
FND-CRM-ENT-004 | high | The recorded complete-payload replacement contract differs from the implemented replacement behavior. Replacement clears omitted editable scalar values and owned collections, subject to the explicit affiliation and custom-value exceptions. the recorded contract question asks Andrew to resolve the contract. | Affected business rule, CAP-CRM-ENT-004, Affected business rule | Structured evidence | inconsistency |
FND-CRM-ENT-005 | low | The milestone wording conflates contact types with organizations-only address and phone types. The service rejects organizations-only contact-point types on a contact. Contact types have no applicability flag. | Affected business rule | Structured evidence | inconsistency |
FND-CRM-ENT-006 | medium | Endpoint deletion supports Platform owner-deletion policy behind a switch that defaults to off. Without activation, deletion does not apply that policy to associated custom records. | Affected business rule, CAP-CRM-ENT-014 | Structured evidence | debt |
FND-CRM-ENT-007 | medium | Scheduled affiliation-date reconciliation defaults to disabled. Saves and requested reconciliation runs update date-sensitive compliance and contact-point links; the automatic-role step runs independently. The milestone’s scheduled behavior requires deployment activation. | Affected business rule, CAP-CRM-ENT-010 | Structured evidence | debt |
FND-CRM-ENT-008 | medium | Primary selection during a save and scheduled start-day reconciliation assign automatic roles differently. The save excludes a nonprimary affiliation, while reconciliation can assign roles to a due nonprimary affiliation. Product intent for this difference remains unresolved. | Affected business rule, Affected business rule, CAP-CRM-ENT-011 | Structured evidence | inconsistency |
FND-CRM-ENT-009 | low | The older affiliation design describes role restrictions as picker filtering. The later milestone decision and persistence validation enforce the restriction when saving. | Affected business rule | Structured evidence | inconsistency |
FND-CRM-ENT-010 | medium | The approved warning before removing a shared organization address has no bound proof. The scoped service does not return the affected-person count, and the planned organization editor remains outside this milestone. | Affected business rule, CAP-CRM-ENT-006 | Structured evidence | defect |
FND-CRM-ENT-011 | medium | Contact-role deletion checks holders and compliance rules. The notification-role array does not supply a reference constraint, so a role used only for notification can be deleted despite the plan’s protection requirement. | Affected business rule | Structured evidence | defect |
FND-CRM-ENT-012 | low | The browser specification asserts that deactivation retains the affiliation-type dataset column and adds an inactive label. Execution of a query saved before deactivation remains unproved by that binding and belongs to Platform. | Affected business rule, CAP-CRM-ENT-017 | Structured evidence | debt |
FND-CRM-ENT-013 | low | The catalogue publishes six configuration bulk permissions without corresponding route requirements. Their publication is evidence of declared keys, not evidence of supported bulk operations. | CAP-CRM-ENT-017, CAP-CRM-ENT-018 | Structured evidence | debt |
FND-CRM-ENT-014 | low | Classification records can carry locks without dedicated lock-release routes. A full lock on those types therefore has no supported API unlock action. | Affected business rule | Structured evidence | debt |
FND-CRM-ENT-015 | low | The pinned routes contain 53 distinct literal operation identifiers and 91 identifiers after factory expansion. The E2E directory contains 25 specification files and one helper. These totals differ from the brief’s stated denominators. | MOD-CRM-ENT | Structured evidence | inconsistency |
FND-CRM-ENT-016 | low | Classification routes are declared with Entities but execute through the configuration-types function. Resolved by the recorded contract question (decided 2026-10-22: B): Entities owns them; the function boundary is an implementation detail for Design to record. | CAP-CRM-ENT-017, CAP-CRM-ENT-018 | Structured evidence | undocumented |
FND-CRM-ENT-017 | low | The catalogue comment says CRM application access is not evaluated. The E2E specification asserts dispatcher refusal when application-access enforcement is enabled. | Affected business rule | Structured evidence | inconsistency |
FND-CRM-ENT-018 | low | Unknown communication-type identifiers remain stored as submitted. The persistence source explicitly records the missing validation as debt. | Affected business rule | Structured evidence | debt |
FND-CRM-ENT-019 | low | Code comments name D-20 and D-32, but the scoped CRM milestone records do not contain those decisions. The affected rules retain code evidence without treating those comments as confirmed product records. | Affected business rule, Affected business rule, Affected business rule, Affected business rule | Structured evidence | undocumented |
FND-CRM-ENT-020 | low | The scoped decisions E-01 and E-05 provide a defect identifier and option letter without the option’s meaning. They cannot establish a rule from the records available here. | MOD-CRM-ENT | Structured evidence | undocumented |
FND-CRM-ENT-021 | low | Contact metadata marks civic-district values read-only, while the write schema derives fields from the table. No scoped test establishes whether writes are refused. This is a schema-based inference and needs direct API proof. | CAP-CRM-ENT-001 | Structured evidence | undocumented |
FND-CRM-ENT-022 | medium | The cited refresh journey expects discarded unsaved work rather than restored-session recovery. The editor preserves a restored draft’s base version, but a dedicated browser scenario must prove the session-refresh contract. | Affected business rule | Structured evidence | debt |
FND-CRM-ENT-023 | medium | The service caps six name components at 200 characters. Credentials, salutation and maiden name lack the same service limit. The broad milestone wording needs a decision about those fields. | Affected business rule | Structured evidence | inconsistency |
FND-CRM-ENT-024 | medium | Compliance-template failure compensation restores organization-type content through another update. The version advances, and a concurrent edit can prevent compensation. The refusal message’s claim that nothing changed is too broad. | Affected business rule | Structured evidence | inconsistency |
FND-CRM-ENT-025 | medium | Organization-type deletion commits before compliance-template archival. A later archival failure is logged without restoring the deleted type, leaving a possible template with no live owner. | Affected business rule | Structured evidence | debt |
FND-CRM-ENT-026 | medium | Some browser specifications use API fallbacks or soft assertions while recording screen defects. A binding proves the existence of its assertions; it does not prove the screen path succeeds or that the test passed at these commits. | MOD-CRM-ENT, JNY-CRM-ENT-002, JNY-CRM-ENT-004 | Structured evidence | debt |
FND-CRM-ENT-027 | low | Compliance count bounds lack whole-number, nonnegative and ordering checks. Cleaning drops a minimum-only rule when its minimum is zero. These constraints are implementation observations awaiting product policy. | Affected business rule | Structured evidence | undocumented |
FND-CRM-ENT-028 | medium | M2-D12 confirms automatic roles on a returning affiliation, but the acceptance scenario has no existing binding. The rule now cites the decision instead of an unsupported inference. | Affected business rule | Structured evidence | debt |
FND-CRM-ENT-029 | medium | Organization creation delegates duplicate blocking to Data Quality. The published override contract requires its sensitive permission and a reason. No organization-specific bound scenario in scope proves the complete refusal and audit behavior. | Affected business rule | Structured evidence | debt |
| FND-CRM-ENT-030 | low | The examination report had no recognized form in the checker when the examination ran; the checker now validates reports/EXAMINATION-<date>.md (applied at landing on 2026-10-22). Resolved. | MOD-CRM-ENT | Structured evidence | debt | | FND-CRM-ENT-031 | medium | The scheduled affiliation-date reconciliation is switched on in development (since 2026-10-21) and off in production, and owner-deletion rules are likewise on in development only. The approved rule, two earlier findings and several code comments describe both as off everywhere, so development behaviour no longer predicts production behaviour. | BR-CAP-CRM-ENT-010-08, BR-CAP-CRM-ENT-014-07, WF-CRM-ENT-006, WF-CRM-ENT-009, ADR-CRM-ENT-014 | Structured evidence | inconsistency | | FND-CRM-ENT-032 | medium | Out-of-compliance attention items are published only when a deploy flag turns attention publishing on, and no environment sets it, so the approved attention behaviour does not reach Platform anywhere today. | BR-CAP-CRM-ENT-012-14, WF-CRM-ENT-004, ADR-CRM-ENT-014 | Structured evidence | debt | | FND-CRM-ENT-033 | medium | The attention item gives the organization's last-modified time as the moment noncompliance began; no stored value records that moment, so an edit after the transition moves it. | BR-CAP-CRM-ENT-012-14, DOM-CRM-ENT-002 | Structured evidence | inconsistency | | FND-CRM-ENT-034 | medium | Entities refuses a save that changes nothing when its version is stale, as the approved planning rule says, while the Platform record-write standard says such a save must not be refused, because it is commonly the retry of a committed edit. | BR-CAP-CRM-ENT-004-02, ADR-CRM-ENT-004, WF-CRM-ENT-002 | Structured evidence | inconsistency | | FND-CRM-ENT-035 | high | Ties are ended and removed through the contact's general save (an explicit affiliations list, the Organization command and the console's departure answer), while the Platform record-write standard requires ending and removing a relationship to be explicit operations with their own permission and audit, and a general save never to end one. | BR-CAP-CRM-ENT-009-03, BR-CAP-CRM-ENT-009-11, BR-CAP-CRM-ENT-009-12, ADR-CRM-ENT-002, WF-CRM-ENT-002 | Structured evidence | inconsistency | | FND-CRM-ENT-036 | medium | Organization creation has no retry recognition: a repeated create with the same client id is refused as a taken id and one without an id creates a second organization, unlike contacts and unlike the record-write standard's create rule. | CAP-CRM-ENT-002, WF-CRM-ENT-003 | Structured evidence | defect | | FND-CRM-ENT-037 | low | On a live console, Organization 360 hides the approved design's actions that have no backend yet (Edit Organization, Add Contact, Assign Role, hierarchy actions and others), whereas the UI change approval rule asks for such controls to stay visible and inert with a clear message. | SCR-CRM-ENT-007 | Structured evidence | inconsistency | | FND-CRM-ENT-038 | medium | The product-area registry still registers a Configuration Types module over the configuration-types source path, although the recorded decision keeps every classification catalogue in Entities and that source module only hosts Entities' routes. | MOD-CRM-ENT, SVC-CRM-ENT-configuration-types, ADR-CRM-ENT-001 | Structured evidence | inconsistency | | FND-CRM-ENT-039 | low | A dry run of the date reconciliation executes the real pass inside a transaction it rolls back. A compliance recalculation in it that would notify writes its request object to Platform storage before the rollback, leaving an orphan object, and the run holds the row and advisory locks a real run would. This is inferred from the code and not proved by a test. | BR-CAP-CRM-ENT-010-07, WF-CRM-ENT-006 | Structured evidence | undocumented | | FND-CRM-ENT-040 | low | No CRM architecture record states, operation by operation, whether Entities operations are published to Submissions; the Service Contracts record every operation as not published with a reason, which the submission-compatible operations standard asks the domain's own record to carry. | SVC-CRM-ENT-entities, SVC-CRM-ENT-configuration-types, ADR-CRM-ENT-015 | Structured evidence | undocumented | | FND-CRM-ENT-041 | low | The console resolves disconnected addresses and phone numbers by rewriting the contact's collection through its general patch; the service's dedicated keep, relink and remove actions, with their own refusals, are used by no screen. | BR-CAP-CRM-ENT-006-08, WF-CRM-ENT-010, SCR-CRM-ENT-003 | Structured evidence | inconsistency | | FND-CRM-ENT-042 | medium | Organization 360 offers no entry to the organization's version history, though the history operations exist and a journey step inspects an organization's history on that screen. | JNY-CRM-ENT-003, CAP-CRM-ENT-016, SCR-CRM-ENT-007 | Structured evidence | defect |
| FND-CRM-ENT-043 | medium | An absent notification-role selection includes all currently affiliated contacts, including those without a role, but an explicitly empty selection includes none. The console can save an empty selection. The approved rule says no selected roles includes all current affiliates, so the product must choose a consistent empty-selection meaning. | BR-CAP-CRM-ENT-012-08 | Structured evidence | inconsistency | | FND-CRM-ENT-044 | medium | The date pass bounds role and default-link settlement before compliance scanning. Exhausting that bound does not prevent the date watermark advancing when compliance scanning finishes. Pending default links can therefore wait until a later workspace day rather than the next same-day pass. This is an inference from control flow and has no bound backlog test. | BR-CAP-CRM-ENT-010-05, BR-CAP-CRM-ENT-010-06, WF-CRM-ENT-006 | Structured evidence | defect | | FND-CRM-ENT-045 | medium | Organization-type replacement advances the version even when the content is unchanged. Its compensation also advances the version, but classification records have no record-revision capture. The general record-write standard requires no-op preservation; a consistent classification policy and regression proof remain open. | CAP-CRM-ENT-018, WF-CRM-ENT-008 | Structured evidence | inconsistency | | FND-CRM-ENT-046 | low | The draft extended dedicated lock-action permission and audit guarantees to ordinary role saves. The pinned implementation and approved rule explicitly permit ordinary contact-role delete-lock changes. Resolved: the examination corrects the design; this is not a planning disagreement. | BR-CAP-CRM-ENT-015-04, STATE-CRM-ENT-007 | Structured evidence | inconsistency | | FND-CRM-ENT-047 | low | A compliance run marked failed is terminal for the runner. Redriving its dead-lettered message does not restart it; recovery requires another reprocess request. The product should define how operators distinguish skipped terminal deliveries from recovered work. | WF-CRM-ENT-005, STATE-CRM-ENT-004 | Structured evidence | debt | | FND-CRM-ENT-048 | medium | A transition can create several deduplicated compliance submissions when recipients exceed one batch. Submission does not guarantee delivery: configuration checks or delivery failure can prevent sending. The approved once-per-transition notice wording needs to distinguish recipient batches, accepted submissions and delivered messages. | BR-CAP-CRM-ENT-012-07, BR-CAP-CRM-ENT-012-08, BR-CAP-CRM-ENT-012-09, ADR-CRM-ENT-008 | Structured evidence | inconsistency |
| FND-CRM-ENT-071 | medium | Concurrent number allocation and spouse linking need independent failure and isolation checks beyond the proposed create-retry race. | CAP-CRM-ENT-001, ATS-CRM-ENT-001 | Structured evidence | coverage-gap | | FND-CRM-ENT-072 | medium | Authorization and lifecycle proof still needs complete request-level cases for blocked creation and each creation grant. | CAP-CRM-ENT-002, ATS-CRM-ENT-002 | Structured evidence | coverage-gap | | FND-CRM-ENT-073 | medium | Concurrent record discovery and delayed search delivery need specified observable outcomes for stale snapshots and handler failure. | CAP-CRM-ENT-003, ATS-CRM-ENT-003 | Structured evidence | coverage-gap | | FND-CRM-ENT-074 | medium | Boundary-length and lifecycle recovery proof still needs explicit cases beyond successful corrections and version conflicts. | CAP-CRM-ENT-004, ATS-CRM-ENT-004 | Structured evidence | coverage-gap | | FND-CRM-ENT-053 | medium | Independent update and read grants and competing email claims need executable cases without relying on general record tests. | CAP-CRM-ENT-005, ATS-CRM-ENT-005 | Structured evidence | coverage-gap | | FND-CRM-ENT-054 | medium | Source-removal failure, every declared mutation grant and link-selection boundaries need direct detailed cases. | CAP-CRM-ENT-006, ATS-CRM-ENT-006, BR-CAP-CRM-ENT-006-13 | Structured evidence | coverage-gap | | FND-CRM-ENT-055 | medium | Preference-state transitions, workspace isolation, capacity boundaries and competing preference edits need dedicated detailed cases. | CAP-CRM-ENT-007, ATS-CRM-ENT-007 | Structured evidence | coverage-gap | | FND-CRM-ENT-056 | medium | Customer-value size boundaries, competing map edits and storage invariants need direct detailed cases. | CAP-CRM-ENT-008, ATS-CRM-ENT-008 | Structured evidence | coverage-gap | | FND-CRM-ENT-057 | medium | Every relationship transition and authority matrix needs an executable case, including competing aggregate relationship edits. | CAP-CRM-ENT-009, ATS-CRM-ENT-009 | Structured evidence | coverage-gap | | FND-CRM-ENT-058 | medium | Failure, bounded backlog and overlapping date workers need proof that separates compliance settlement from pending role and link work. | CAP-CRM-ENT-010, ATS-CRM-ENT-010 | Structured evidence | coverage-gap | | FND-CRM-ENT-059 | medium | Role ownership boundaries, locked deferred work and every read or update grant need independent cases. | CAP-CRM-ENT-011, ATS-CRM-ENT-011 | Structured evidence | coverage-gap | | FND-CRM-ENT-060 | medium | Notice-recipient batching, policy-state transitions and terminal scan recovery need direct proof across the documented service seams. | CAP-CRM-ENT-012, ATS-CRM-ENT-012 | Structured evidence | coverage-gap | | FND-CRM-ENT-061 | medium | Every archive transition needs direct executable proof for both record kinds and every archive authority. | CAP-CRM-ENT-013, ATS-CRM-ENT-013 | Structured evidence | coverage-gap | | FND-CRM-ENT-062 | medium | Deletion races and dependency cardinality boundaries need dedicated proof in addition to ordinary lock and dependency refusals. | CAP-CRM-ENT-014, ATS-CRM-ENT-014 | Structured evidence | coverage-gap | | FND-CRM-ENT-063 | medium | Every lock transition, exact reason boundary and simultaneous lock or save needs a directly bound regression case. | CAP-CRM-ENT-015, ATS-CRM-ENT-015 | Structured evidence | coverage-gap | | FND-CRM-ENT-064 | medium | History page boundaries, deleted-subject access and missing-attribution rollback need direct proof of each observable outcome. | CAP-CRM-ENT-016, ATS-CRM-ENT-016 | Structured evidence | coverage-gap | | FND-CRM-ENT-065 | medium | Catalogue transitions, exact mapping limits and competing configuration edits need dedicated detailed cases. | CAP-CRM-ENT-017, ATS-CRM-ENT-017 | Structured evidence | coverage-gap | | FND-CRM-ENT-066 | medium | Catalogue transitions, error preservation and competing reference deletion or writes need dedicated detailed cases. | CAP-CRM-ENT-018, ATS-CRM-ENT-018 | Structured evidence | coverage-gap | | FND-CRM-ENT-067 | medium | Section isolation, definition-slot boundaries and invalid-assignment rollback need direct proof independent of resolution success. | CAP-CRM-ENT-019, ATS-CRM-ENT-019 | Structured evidence | coverage-gap | | FND-CRM-ENT-068 | medium | Registered engineering and browser suites without a scenario binding remain visible; their assertions need a separate semantic mapping before they count as capability or feature proof. | TST-CRM-ENT-001, TST-CRM-ENT-002, TST-CRM-ENT-003, TST-CRM-ENT-004, TST-CRM-ENT-005, TST-CRM-ENT-006, TST-CRM-ENT-007, TST-CRM-ENT-008, TST-CRM-ENT-009, TST-CRM-ENT-010, TST-CRM-ENT-011, TST-CRM-ENT-012, TST-CRM-ENT-013, TST-CRM-ENT-014, TST-CRM-ENT-015, TST-CRM-ENT-016, TST-CRM-ENT-017, TST-CRM-ENT-018, TST-CRM-ENT-019, TST-CRM-ENT-020, TST-CRM-ENT-021, TST-CRM-ENT-022, TST-CRM-ENT-023, TST-CRM-ENT-024, TST-CRM-ENT-025, TST-CRM-ENT-026, TST-CRM-ENT-027, TST-CRM-ENT-028, TST-CRM-ENT-029, TST-CRM-ENT-030, TST-CRM-ENT-031, TST-CRM-ENT-032, TST-CRM-ENT-033, TST-CRM-ENT-034, TST-CRM-ENT-035, TST-CRM-ENT-036, TST-CRM-ENT-037, TST-CRM-ENT-038, TST-CRM-ENT-039, TST-CRM-ENT-040, TST-CRM-ENT-041, TST-CRM-ENT-042, TST-CRM-ENT-043, TST-CRM-ENT-044, TST-CRM-ENT-045, TST-CRM-ENT-046, TST-CRM-ENT-047, TST-CRM-ENT-048, TST-CRM-ENT-049, TST-CRM-ENT-050, TST-CRM-ENT-051, TST-CRM-ENT-052, TST-CRM-ENT-053, TST-CRM-ENT-054, TST-CRM-ENT-055, TST-CRM-ENT-056, TST-CRM-ENT-057, TST-CRM-ENT-058, TST-CRM-ENT-059, TST-CRM-ENT-060, TST-CRM-ENT-061, TST-CRM-ENT-062, TST-CRM-ENT-064, TST-CRM-ENT-065, TST-CRM-ENT-068, TST-CRM-ENT-073, TST-CRM-ENT-074, TST-CRM-ENT-077, TST-CRM-ENT-085, TST-CRM-ENT-086, TST-CRM-ENT-087, TST-CRM-ENT-088, TST-CRM-ENT-090, TST-CRM-ENT-099, TST-CRM-ENT-103, TST-CRM-ENT-105, TST-CRM-ENT-106, TST-CRM-ENT-107, TST-CRM-ENT-108, TST-CRM-ENT-109, TST-CRM-ENT-110, TST-CRM-ENT-111, TST-CRM-ENT-112, TST-CRM-ENT-113, TST-CRM-ENT-114, TST-CRM-ENT-115, TST-CRM-ENT-116, TST-CRM-ENT-117, TST-CRM-ENT-118, TST-CRM-ENT-119, TST-CRM-ENT-120, TST-CRM-ENT-121, TST-CRM-ENT-122, TST-CRM-ENT-123, TST-CRM-ENT-124, TST-CRM-ENT-125, TST-CRM-ENT-126, TST-CRM-ENT-127, TST-CRM-ENT-128, TST-CRM-ENT-129, TST-CRM-ENT-130, TST-CRM-ENT-131, TST-CRM-ENT-132, TST-CRM-ENT-133, TST-CRM-ENT-134, TST-CRM-ENT-135, TST-CRM-ENT-136, TST-CRM-ENT-137, TST-CRM-ENT-138, TST-CRM-ENT-139, TST-CRM-ENT-140, TST-CRM-ENT-141, TST-CRM-ENT-142, TST-CRM-ENT-143, TST-CRM-ENT-144, TST-CRM-ENT-145, TST-CRM-ENT-146, TST-CRM-ENT-147, TST-CRM-ENT-149, TST-CRM-ENT-150, TST-CRM-ENT-151, TST-CRM-ENT-152, TST-CRM-ENT-153, TST-CRM-ENT-154, TST-CRM-ENT-155, TST-CRM-ENT-156, TST-CRM-ENT-157, TST-CRM-ENT-158, TST-CRM-ENT-159, TST-CRM-ENT-160, TST-CRM-ENT-161, TST-CRM-ENT-162, TST-CRM-ENT-163, TST-CRM-ENT-164, TST-CRM-ENT-165, TST-CRM-ENT-166, TST-CRM-ENT-167, TST-CRM-ENT-168, TST-CRM-ENT-169, TST-CRM-ENT-170, TST-CRM-ENT-171, TST-CRM-ENT-172, TST-CRM-ENT-173, TST-CRM-ENT-174, TST-CRM-ENT-175, TST-CRM-ENT-176, TST-CRM-ENT-177, TST-CRM-ENT-178, TST-CRM-ENT-179, TST-CRM-ENT-180, TST-CRM-ENT-181, TST-CRM-ENT-182, TST-CRM-ENT-183, TST-CRM-ENT-184, TST-CRM-ENT-185, TST-CRM-ENT-186, TST-CRM-ENT-187, TST-CRM-ENT-188, TST-CRM-ENT-189, TST-CRM-ENT-190, TST-CRM-ENT-191, TST-CRM-ENT-192, TST-CRM-ENT-193, TST-CRM-ENT-194, TST-CRM-ENT-195, TST-CRM-ENT-196, TST-CRM-ENT-197, TST-CRM-ENT-198, TST-CRM-ENT-199, TST-CRM-ENT-200, TST-CRM-ENT-202, TST-CRM-ENT-204, TST-CRM-ENT-205, TST-CRM-ENT-207, TST-CRM-ENT-210, TST-CRM-ENT-211, TST-CRM-ENT-212, TST-CRM-ENT-213, TST-CRM-ENT-214, TST-CRM-ENT-217, TST-CRM-ENT-218, TST-CRM-ENT-219, TST-CRM-ENT-220, TST-CRM-ENT-221, TST-CRM-ENT-222, TST-CRM-ENT-223, TST-CRM-ENT-224, TST-CRM-ENT-226, TST-CRM-ENT-227, TST-CRM-ENT-228, TST-CRM-ENT-229, TST-CRM-ENT-230, TST-CRM-ENT-232, TST-CRM-ENT-234, TST-CRM-ENT-236, TST-CRM-ENT-237, TST-CRM-ENT-238, TST-CRM-ENT-239, TST-CRM-ENT-240, TST-CRM-ENT-241, TST-CRM-ENT-244, TST-CRM-ENT-247, TST-CRM-ENT-249, TST-CRM-ENT-251, TST-CRM-ENT-252, TST-CRM-ENT-253, TST-CRM-ENT-254, TST-CRM-ENT-255, TST-CRM-ENT-257, TST-CRM-ENT-258, TST-CRM-ENT-259, TST-CRM-ENT-261, TST-CRM-ENT-262, TST-CRM-ENT-263, TST-CRM-ENT-265, TST-CRM-ENT-269, TST-CRM-ENT-271, TST-CRM-ENT-273, TST-CRM-ENT-274, TST-CRM-ENT-275, TST-CRM-ENT-276, TST-CRM-ENT-277, TST-CRM-ENT-278, TST-CRM-ENT-279, TST-CRM-ENT-280, TST-CRM-ENT-281, TST-CRM-ENT-282, TST-CRM-ENT-283, TST-CRM-ENT-284, TST-CRM-ENT-285, TST-CRM-ENT-286, TST-CRM-ENT-287, TST-CRM-ENT-288, TST-CRM-ENT-289, TST-CRM-ENT-290, TST-CRM-ENT-291, TST-CRM-ENT-292, TST-CRM-ENT-293, TST-CRM-ENT-294, TST-CRM-ENT-295, TST-CRM-ENT-296, TST-CRM-ENT-297, TST-CRM-ENT-298, TST-CRM-ENT-299, TST-CRM-ENT-300, TST-CRM-ENT-301, TST-CRM-ENT-302, TST-CRM-ENT-303, TST-CRM-ENT-304, TST-CRM-ENT-305, TST-CRM-ENT-306, TST-CRM-ENT-307, TST-CRM-ENT-308, TST-CRM-ENT-309, TST-CRM-ENT-310, TST-CRM-ENT-311, TST-CRM-ENT-312, TST-CRM-ENT-313, TST-CRM-ENT-314, TST-CRM-ENT-315, TST-CRM-ENT-316, TST-CRM-ENT-317, TST-CRM-ENT-318, TST-CRM-ENT-319, TST-CRM-ENT-320, TST-CRM-ENT-321, TST-CRM-ENT-322, TST-CRM-ENT-323, TST-CRM-ENT-324, TST-CRM-ENT-325, TST-CRM-ENT-326, TST-CRM-ENT-327, TST-CRM-ENT-328, TST-CRM-ENT-329, TST-CRM-ENT-330, TST-CRM-ENT-331, TST-CRM-ENT-332, TST-CRM-ENT-333, TST-CRM-ENT-334, TST-CRM-ENT-335, TST-CRM-ENT-336, TST-CRM-ENT-337, TST-CRM-ENT-338, TST-CRM-ENT-339, TST-CRM-ENT-340, TST-CRM-ENT-341, TST-CRM-ENT-342, TST-CRM-ENT-343, TST-CRM-ENT-344, TST-CRM-ENT-345, TST-CRM-ENT-346, TST-CRM-ENT-347, TST-CRM-ENT-348, TST-CRM-ENT-349, TST-CRM-ENT-350, TST-CRM-ENT-351, TST-CRM-ENT-352, TST-CRM-ENT-353, TST-CRM-ENT-354, TST-CRM-ENT-355, TST-CRM-ENT-356, TST-CRM-ENT-357, TST-CRM-ENT-358, TST-CRM-ENT-359, TST-CRM-ENT-360, TST-CRM-ENT-361, TST-CRM-ENT-362, TST-CRM-ENT-363, TST-CRM-ENT-364, TST-CRM-ENT-365, TST-CRM-ENT-366, TST-CRM-ENT-367, TST-CRM-ENT-368, TST-CRM-ENT-369, TST-CRM-ENT-370, TST-CRM-ENT-371, TST-CRM-ENT-372, TST-CRM-ENT-373, TST-CRM-ENT-374, TST-CRM-ENT-375, TST-CRM-ENT-376, TST-CRM-ENT-377, TST-CRM-ENT-378, TST-CRM-ENT-379, TST-CRM-ENT-380, TST-CRM-ENT-381, TST-CRM-ENT-382, TST-CRM-ENT-383, TST-CRM-ENT-384, TST-CRM-ENT-385, TST-CRM-ENT-386, TST-CRM-ENT-387, TST-CRM-ENT-388, TST-CRM-ENT-389, TST-CRM-ENT-390, TST-CRM-ENT-391, TST-CRM-ENT-392, TST-CRM-ENT-393, TST-CRM-ENT-394, TST-CRM-ENT-395, TST-CRM-ENT-396, TST-CRM-ENT-397, TST-CRM-ENT-398, TST-CRM-ENT-399, TST-CRM-ENT-400, TST-CRM-ENT-401, TST-CRM-ENT-402, TST-CRM-ENT-403, TST-CRM-ENT-404, TST-CRM-ENT-405, TST-CRM-ENT-406, TST-CRM-ENT-407, TST-CRM-ENT-408, TST-CRM-ENT-409, TST-CRM-ENT-410, TST-CRM-ENT-411, TST-CRM-ENT-412, TST-CRM-ENT-413, TST-CRM-ENT-414, TST-CRM-ENT-415, TST-CRM-ENT-416, TST-CRM-ENT-417, TST-CRM-ENT-418, TST-CRM-ENT-419, TST-CRM-ENT-420, TST-CRM-ENT-421, TST-CRM-ENT-422, TST-CRM-ENT-423, TST-CRM-ENT-424, TST-CRM-ENT-425, TST-CRM-ENT-426, TST-CRM-ENT-427, TST-CRM-ENT-428, TST-CRM-ENT-429, TST-CRM-ENT-430, TST-CRM-ENT-431, TST-CRM-ENT-432, TST-CRM-ENT-433, TST-CRM-ENT-434, TST-CRM-ENT-435, TST-CRM-ENT-436, TST-CRM-ENT-437, TST-CRM-ENT-438, TST-CRM-ENT-439, TST-CRM-ENT-440, TST-CRM-ENT-441, TST-CRM-ENT-442, TST-CRM-ENT-443, TST-CRM-ENT-444, TST-CRM-ENT-445, TST-CRM-ENT-446, TST-CRM-ENT-447, TST-CRM-ENT-448, TST-CRM-ENT-449, TST-CRM-ENT-451, TST-CRM-ENT-455, TST-CRM-ENT-456, TST-CRM-ENT-457, TST-CRM-ENT-459, TST-CRM-ENT-462, TST-CRM-ENT-463, TST-CRM-ENT-464, TST-CRM-ENT-465, TST-CRM-ENT-468, TST-CRM-ENT-471, TST-CRM-ENT-472, TST-CRM-ENT-473, TST-CRM-ENT-474, TST-CRM-ENT-475, TST-CRM-ENT-477, TST-CRM-ENT-478, TST-CRM-ENT-479, TST-CRM-ENT-481, TST-CRM-ENT-482, TST-CRM-ENT-483, TST-CRM-ENT-486, TST-CRM-ENT-487, TST-CRM-ENT-488, TST-CRM-ENT-489, TST-CRM-ENT-490, TST-CRM-ENT-491, TST-CRM-ENT-492, TST-CRM-ENT-493, TST-CRM-ENT-494, TST-CRM-ENT-495, TST-CRM-ENT-496, TST-CRM-ENT-497, TST-CRM-ENT-498, TST-CRM-ENT-499, TST-CRM-ENT-500, TST-CRM-ENT-501, TST-CRM-ENT-502, TST-CRM-ENT-503, TST-CRM-ENT-504, TST-CRM-ENT-505, TST-CRM-ENT-506, TST-CRM-ENT-507, TST-CRM-ENT-508, TST-CRM-ENT-509, TST-CRM-ENT-510, TST-CRM-ENT-511, TST-CRM-ENT-512, TST-CRM-ENT-513, TST-CRM-ENT-514, TST-CRM-ENT-515, TST-CRM-ENT-516, TST-CRM-ENT-517, TST-CRM-ENT-518, TST-CRM-ENT-519, TST-CRM-ENT-520, TST-CRM-ENT-521, TST-CRM-ENT-522, TST-CRM-ENT-523, TST-CRM-ENT-524, TST-CRM-ENT-525, TST-CRM-ENT-526, TST-CRM-ENT-527, TST-CRM-ENT-528, TST-CRM-ENT-529, TST-CRM-ENT-530, TST-CRM-ENT-531, TST-CRM-ENT-532, TST-CRM-ENT-533, TST-CRM-ENT-534, TST-CRM-ENT-535, TST-CRM-ENT-536, TST-CRM-ENT-537, TST-CRM-ENT-538, TST-CRM-ENT-539, TST-CRM-ENT-540, TST-CRM-ENT-541, TST-CRM-ENT-542, TST-CRM-ENT-543, TST-CRM-ENT-544, TST-CRM-ENT-545, TST-CRM-ENT-546, TST-CRM-ENT-547, TST-CRM-ENT-548, TST-CRM-ENT-549, TST-CRM-ENT-550, TST-CRM-ENT-551, TST-CRM-ENT-552, TST-CRM-ENT-553, TST-CRM-ENT-554, TST-CRM-ENT-555, TST-CRM-ENT-556, TST-CRM-ENT-557, TST-CRM-ENT-558, TST-CRM-ENT-559, TST-CRM-ENT-560, TST-CRM-ENT-561, TST-CRM-ENT-562, TST-CRM-ENT-563, TST-CRM-ENT-564, TST-CRM-ENT-565, TST-CRM-ENT-566, TST-CRM-ENT-567, TST-CRM-ENT-568, TST-CRM-ENT-569, TST-CRM-ENT-570, TST-CRM-ENT-571, TST-CRM-ENT-572, TST-CRM-ENT-573, TST-CRM-ENT-574, TST-CRM-ENT-575, TST-CRM-ENT-576, TST-CRM-ENT-577, TST-CRM-ENT-578, TST-CRM-ENT-579, TST-CRM-ENT-580, TST-CRM-ENT-581, TST-CRM-ENT-582, TST-CRM-ENT-583, TST-CRM-ENT-584, TST-CRM-ENT-585, TST-CRM-ENT-586, TST-CRM-ENT-587, TST-CRM-ENT-588, TST-CRM-ENT-589, TST-CRM-ENT-590, TST-CRM-ENT-591, TST-CRM-ENT-592, TST-CRM-ENT-593, TST-CRM-ENT-594, TST-CRM-ENT-595, TST-CRM-ENT-596, TST-CRM-ENT-597, TST-CRM-ENT-598, TST-CRM-ENT-599, TST-CRM-ENT-600, TST-CRM-ENT-601, TST-CRM-ENT-602, TST-CRM-ENT-603, TST-CRM-ENT-604, TST-CRM-ENT-605, TST-CRM-ENT-606, TST-CRM-ENT-607, TST-CRM-ENT-608, TST-CRM-ENT-609, TST-CRM-ENT-610, TST-CRM-ENT-611, TST-CRM-ENT-612, TST-CRM-ENT-613, TST-CRM-ENT-614, TST-CRM-ENT-615, TST-CRM-ENT-616, TST-CRM-ENT-617, TST-CRM-ENT-618, TST-CRM-ENT-619, TST-CRM-ENT-620, TST-CRM-ENT-621, TST-CRM-ENT-622, TST-CRM-ENT-623, TST-CRM-ENT-624, TST-CRM-ENT-625, TST-CRM-ENT-626, TST-CRM-ENT-627, TST-CRM-ENT-628, TST-CRM-ENT-629, TST-CRM-ENT-630, TST-CRM-ENT-631, TST-CRM-ENT-632, TST-CRM-ENT-633, TST-CRM-ENT-634, TST-CRM-ENT-649, TST-CRM-ENT-660, TST-CRM-ENT-661, TST-CRM-ENT-662, TST-CRM-ENT-663, TST-CRM-ENT-664, TST-CRM-ENT-666, TST-CRM-ENT-668, TST-CRM-ENT-669, TST-CRM-ENT-670, TST-CRM-ENT-671, TST-CRM-ENT-673, TST-CRM-ENT-674, TST-CRM-ENT-675, TST-CRM-ENT-677, TST-CRM-ENT-678, TST-CRM-ENT-679, TST-CRM-ENT-680, TST-CRM-ENT-681, TST-CRM-ENT-682, TST-CRM-ENT-683, TST-CRM-ENT-684, TST-CRM-ENT-685, TST-CRM-ENT-691, TST-CRM-ENT-692, TST-CRM-ENT-693, TST-CRM-ENT-694, TST-CRM-ENT-699, TST-CRM-ENT-706, TST-CRM-ENT-707, TST-CRM-ENT-709, TST-CRM-ENT-710, TST-CRM-ENT-711, TST-CRM-ENT-712, TST-CRM-ENT-714, TST-CRM-ENT-715, TST-CRM-ENT-718, TST-CRM-ENT-721, TST-CRM-ENT-723, TST-CRM-ENT-724, TST-CRM-ENT-726, TST-CRM-ENT-731, TST-CRM-ENT-734, TST-CRM-ENT-735, TST-CRM-ENT-736, TST-CRM-ENT-737, TST-CRM-ENT-738, TST-CRM-ENT-739, TST-CRM-ENT-740, TST-CRM-ENT-741, TST-CRM-ENT-742, TST-CRM-ENT-746, TST-CRM-ENT-747, TST-CRM-ENT-748, TST-CRM-ENT-749, TST-CRM-ENT-754, TST-CRM-ENT-755, TST-CRM-ENT-756 | Structured evidence | coverage-gap | | FND-CRM-ENT-069 | medium | The existing archive journey combines organization restoration with a console history step that the current organization screen cannot provide. Its browser binding proves only the steps it actually performs. | ATS-CRM-ENT-013-10, AS-JNY-CRM-ENT-003-03 | Structured evidence | inconsistency | | FND-CRM-ENT-070 | medium | The organization correction interaction is specified during this back-fill; its concurrent hierarchy fixture still has no executable binding. | ATS-CRM-ENT-004-24 | Structured evidence | coverage-gap | | FND-CRM-ENT-075 | low | The authoring contract requires an evidence heading in detailed test specifications, while the current checker rejects that heading. A separate tooling change must reconcile them; this pass retains structured evidence and uses a source-evidence explanation. | Capability test specifications | Structured evidence | coverage-gap | | FND-CRM-ENT-076 | medium | The unchanged-save suite checks contact revision absence and stale refusal, but its organization cases check only versions and modification timestamps. Organization history absence and stale refusal remain unbound parts of the feature scenario. | FAS-CRM-ENT-07-05, TST-CRM-ENT-753 | Structured evidence | coverage-gap |
| FND-CRM-ENT-049 | medium | CRM declares its service information as internal use while storing identifiable people and personal revision values; the examined declaration does not classify those stores at their highest information class. | SVC-CRM-ENT-entities, CAP-CRM-ENT-001, CAP-CRM-ENT-016 | TC-DAT-001; structured control evidence | control-gap | | FND-CRM-ENT-050 | medium | Record revisions retain every past value until workspace purge, with no age-based endpoint; deleting a person therefore does not end retention of the personal revision information. | CAP-CRM-ENT-014, CAP-CRM-ENT-016, WF-CRM-ENT-009, SVC-CRM-ENT-entities | TC-DAT-003, TC-DAT-004; structured control evidence | control-gap | | FND-CRM-ENT-051 | medium | Organization creation does not recognize a repeated request as the earlier committed result; a repeated supplied identifier conflicts, while a request without one can create another organization. | CAP-CRM-ENT-002, WF-CRM-ENT-003, SVC-CRM-ENT-entities | TC-PI-002; structured control evidence | control-gap | | FND-CRM-ENT-052 | medium | Classification writes carry ordinary lock values without a separate lock action or retained lock-change audit; a full lock can prevent further ordinary changes without a supported release action. | CAP-CRM-ENT-018, SVC-CRM-ENT-configuration-types | TC-AZ-001, TC-LOG-001, TC-LOG-002, TC-PI-005; structured control evidence | control-gap |
Open Questions
| id | question | why_it_matters | options | recommendation | affects |
|---|---|---|---|---|---|
OQ-CRM-ENT-001 | Which replacement contract should contacts, organizations and classification records follow? | Partial replacement can erase omitted information; the complete-payload requirement differs from implementation. | Require a complete payload; retain destructive omission and amend the contract; preserve omitted values. | The product should require complete replacement payloads, subject to Andrew’s decision. Decided 2026-10-22 by Andrew: A | CAP-CRM-ENT-004, CAP-CRM-ENT-018 |
OQ-CRM-ENT-002 | Which module owns classification types and the contact-role catalogue? | Route hosting and the proposed product boundary differ; each rule needs one owner. | Retain Entities ownership; move classification ownership to the planned Configuration Types module. | The product should retain affiliation types and roles with affiliations; Andrew should decide the remaining classification boundary before design. Decided 2026-10-22 by Andrew: B | CAP-CRM-ENT-017, CAP-CRM-ENT-018 |
OQ-CRM-ENT-003 | Should a rule have its own product-intent field? | A milestone can confirm an outcome without confirming every implementation detail in its capability. | Add rule-level intent; interpret each origin separately; split capabilities by intent. | The product should expose rule-level intent so approval of an outcome cannot imply approval of all observed details. Decided 2026-10-22 by Andrew: B | CAP-CRM-ENT-001, CAP-CRM-ENT-009, CAP-CRM-ENT-012 |
OQ-CRM-ENT-004 | Does the corrected console scope cover future Entities change detection? | The original paths omit sources that implement hosted behavior. This examination corrects the authorized registry row. | Use the corrected scope; extend it if future screens introduce additional dependencies. | The product should use the corrected registry scope for the next delta examination. The original path-correction request is resolved. Decided 2026-10-22 by Andrew: A | MOD-CRM-ENT |
OQ-CRM-ENT-005 | Should ending and removing a tie stay part of the contact's general save, or become explicit operations as the Platform record-write standard requires? | The approved planning rules, the console and integrations all end ties through a general save today; the standard says a general save must never end a relationship. The two cannot both hold. | A: keep save-based ending and removal, and record Entities as an exception to the standard. B: add explicit end and remove operations with their own permissions and audit, and make a general save refuse to end or remove a tie. C: add the explicit operations now and refuse ending through a general save after a stated deprecation period. | The product should choose C: it meets the standard without breaking the console's editor and integrations at once. | CAP-CRM-ENT-009, ADR-CRM-ENT-002, WF-CRM-ENT-002 |
OQ-CRM-ENT-006 | Should a save that changes nothing be refused when its version is stale? | The planning rule refuses it; the Platform standard accepts it so that a retried committed edit is not reported as a conflict. | A: keep refusing, and record Entities as an exception. B: accept a stale no-op save as the standard says, and amend the planning rule. | The product should choose B, aligning with the Platform standard; a missing version is still refused. | CAP-CRM-ENT-004, ADR-CRM-ENT-004 |
OQ-CRM-ENT-007 | When should production turn on the scheduled affiliation-date reconciliation, and what must be true first? | With it off, roles and compliance that change only because a date passed stay stale in production until someone saves the person, runs the reconciliation by hand or reprocesses compliance; with it on, every workspace's compliance and notices can change overnight. | A: turn it on at the next CRM release. B: turn it on per environment after a dry run of every production workspace is reviewed. C: keep it off and rely on saves, manual runs and reprocesses. | The product should choose B, with the dry-run orphan-object finding resolved first. | CAP-CRM-ENT-010, WF-CRM-ENT-006, ADR-CRM-ENT-014 |
Decisions
Answers Andrew gave to the open questions, in the walkthrough of 2026-10-22. Each answer is applied to the artifacts it names; a rule it covers carries the decision in its origin.
| id | decided_at | decided_by | answer | applied_to |
|---|---|---|---|---|
OQ-CRM-ENT-001 | 2026-10-22 | Andrew | A: require complete payloads for whole-record saves of contacts, organizations and classification records, as Activities already do (reads state empty properties as null; an omitted property is refused; null clears). Affiliation and custom-field exceptions stay. | Structured decision update record |
OQ-CRM-ENT-002 | 2026-10-22 | Andrew | B: everything stays in Entities; no Configuration Types module. Entities owns contact, organization, address and phone number types, affiliation types and the contact-role catalogue and their rules. | Structured decision update record |
OQ-CRM-ENT-003 | 2026-10-22 | Andrew | B: a rule's product intent is derived from its origin: an origin that names a product decision (a milestone decision id or an answered open question) makes the rule confirmed; otherwise the rule inherits its capability's intent. No rule-level field. | Structured decision update record |
OQ-CRM-ENT-004 | 2026-10-22 | Andrew | A: the corrected console scope in the MOD-CRM-ENT registry row stands for the next delta pass. Resolved. | Structured decision update record |
Approvals
| layer | approved_by | approved_at | note |
|---|---|---|---|
| planning | Andrew | 2026-10-22 | "Approve the planning layer" after the walkthrough, the four decisions and the concept rework (master a2f29a0). Product intent values are unchanged: confirmed where a decision covers a rule, proposed elsewhere. |