PromptBase
Upgrade
Close icon
General
Home
Marketplace
Create
Hire
Login
Chat
Sell
Explore

Prompt Details

Model
(claude-5-sonnet)
Token size
2,026
Example input
[BASELINE_MODEL]: Customer has stable property `customerEmail`. MarketingCampaign targets Customer through `hasRecipient`. `customerEmail` is used as the contact identifier. [CANDIDATE_MODEL]: `customerEmail` is removed and replaced by `primaryContact`. No stable identifier, alias, or migration mapping is supplied. `primaryContact` may contain an email address, phone number, or messaging handle. [DEPENDENCIES]: SPARQL queries, CRM exports, email-validation tools, and prompt examples reference `customerEmail`. A campaign tool assumes every value is a valid email address. [POLICY_AND_SCOPE]: Renames are compatible only when stable identifiers and value semantics remain unchanged. Campaign tools must not receive phone or messaging identifiers.
Example output
## Migration Verdict **BLOCK** **Executive rationale:** `customerEmail` is removed and replaced by `primaryContact` with no stable identifier or explicit mapping connecting the two. Per policy, a rename is only compatible when both identifier continuity and value semantics are preserved — here neither holds: `primaryContact` is polymorphic (email, phone, or messaging handle), while every downstream consumer that touched `customerEmail` assumed a single-valued email string. This is not a rename; it is a removal plus an unrelated new property with overlapping but broader semantics. The campaign tool's hard requirement that no phone or messaging identifiers reach it makes this a policy violation risk, not just a compatibility gap. **Blocking conditions:** - No stable identifier or mapping links `customerEmail` → `primaryContact` - `primaryContact`'s value space (email | phone | messaging handle) violates the value-semantics-preservation requirement in policy - Campaign tool's explicit exclusion of phone/messaging identifiers cannot be enforced without a type discriminator on `primaryContact` - All four dependent consumer classes (SPARQL queries, CRM exports, email-validation tools, prompt examples) reference the retired identifier directly **Confidence level:** High for the breaking/policy-violation classification (based on explicit inputs). Low for downstream blast radius — exact query/export/tool counts are not enumerated. **Missing evidence that could change the verdict:** A type discriminator or subtype (e.g., `primaryContact.contactType`) on `primaryContact`; a stable ID or `owl:sameAs`-style mapping from `customerEmail`; confirmation of how many CRM exports/queries exist and whether they can be updated pre-cutover. ## Assumptions **Confirmed facts:** - `customerEmail` was a stable property on Customer, used as contact identifier - `MarketingCampaign` reaches Customer via `hasRecipient` - Candidate removes `customerEmail`, introduces `primaryContact` (email/phone/messaging, unconstrained) - No mapping or stable identifier supplied - SPARQL queries, CRM exports, email-validation tools, and prompt examples reference `customerEmail` - Campaign tool assumes all values are valid emails - Policy requires stable identifiers for compatible renames and forbids campaign tools receiving non-email identifiers **Audit assumptions:** - `hasRecipient` relation itself is unchanged (not stated as modified) - "Campaign tool" in Dependencies is the same consumer as the "Campaign tools" clause in Policy **Missing evidence:** - Whether `primaryContact` has any sub-typing or format discriminator - Count/identity of specific SPARQL queries, CRM export jobs, and prompt examples affected - Whether email-validation tool fails closed or open on non-email input - Owner/steward of the Customer class or of this change **Prohibited assumptions not made:** - Did not assume `primaryContact` is a rename of `customerEmail` despite label proximity in meaning - Did not assume existing data will be back-filled or migrated - Did not assume the campaign tool has been updated to filter by contact type - Did not treat absence of a mapping as evidence of compatibility ## Semantic Change Ledger | ID | Element | Namespace | Baseline state | Candidate state | Change type | Classification | Evidence | Affected consumers | Required action | |---|---|---|---|---|---|---|---|---|---| | SC-01 | customerEmail | Customer | Stable property, contact identifier, email-typed | Removed | Removed | BREAKING | Candidate model omits property; no mapping supplied | SPARQL queries, CRM exports, email-validation tools, prompt examples, campaign tool | Restore stable identifier or supply explicit mapping before cutover | | SC-02 | primaryContact | Customer | Not present | New property, value may be email, phone, or messaging handle | Added | BEHAVIOR_CHANGE / SECURITY_RELEVANT | Candidate model text | Campaign tool (policy-restricted), CRM exports | Add type discriminator; enforce email-only filter at consumption points | | SC-03 | customerEmail → primaryContact (claimed rename) | Customer | orderTotal-style rename pattern claimed by label similarity | No identifier/mapping continuity | Redefined (label collision, not true rename) | BREAKING | No stable ID or mapping field present in either model | All contact-identifier consumers | Do not treat as rename; require explicit migration mapping | ## Collision Report | Term | Namespace A meaning | Namespace B meaning | Collision type | Behavioral risk | Security risk | Resolution | |---|---|---|---|---|---|---| | customerEmail / primaryContact | Baseline: single-purpose, email-typed contact identifier | Candidate: polymorphic contact value (email/phone/messaging) | Same-concept, broadened value semantics, no identifier continuity | High — consumers expecting email string get untyped/mixed data | Yes — campaign tool policy explicitly forbids phone/messaging reaching it; broadened type risks policy violation if unfiltered | Introduce discriminated union or subtype property; require explicit mapping with type constraint before rename can be considered compatible | Checked remaining namespace elements (`hasRecipient`, `MarketingCampaign`, `Customer` class itself) — no additional collisions found. NONE beyond the row above. ## Answerability Delta | Question or capability | Baseline resolution | Candidate resolution | Changed path | Evidence | Regression status | Required fix | |---|---|---|---|---|---|---| | "What is Customer X's email?" | Direct resolution via `customerEmail` | No direct resolution; `primaryContact` may not be an email | `customerEmail` → `primaryContact` (untyped) | Property removed, no mapping | Failed | Add discriminator so email-specific queries can filter `primaryContact` by type, or restore `customerEmail` as derived/alias property | | "Send campaign to Customer X via email" | `hasRecipient` → `customerEmail`, assumed valid email | `hasRecipient` → `primaryContact`, type unknown | Traversal endpoint changed from typed to untyped | Campaign tool dependency + policy statement | Failed | Enforce email-type filter before campaign tool consumption; block non-email values at query time | | "Export customer contact list to CRM" | Exports `customerEmail` field | Field no longer exists; export mapping breaks | `customerEmail` reference orphaned | CRM export dependency listed | Failed | Update export mapping to target `primaryContact` with explicit type filter | ## Dependency Impact | Consumer type | Consumer name | Affected identifier or path | Impact | Required update | Owner if known | Verification method | |---|---|---|---|---|---|---| | Query | SPARQL queries (unspecified set) | `customerEmail` | Query fails / returns empty on removed property | Rewrite to target `primaryContact` with type filter | Unknown | Run existing query suite against candidate model | | Export | CRM exports | `customerEmail` | Export field orphaned | Remap export schema field | Unknown | Diff export output pre/post migration | | Tool | Email-validation tools | `customerEmail` | Input source removed; tool may receive non-email values via `primaryContact` if remapped naively | Add pre-validation type filter | Unknown | Feed sample `primaryContact` values (email/phone/handle) and confirm correct accept/reject | | Tool | Campaign tool | `hasRecipient` → contact value | Policy violation risk: may receive phone/messaging identifiers | Enforce email-only filter at ingestion; reject non-email `primaryContact` values | Unknown | Adversarial test with phone/handle values in `primaryContact`, confirm rejection | | Prompt/Example | Prompt examples referencing `customerEmail` | `customerEmail` | Examples reference retired identifier; will produce invalid or hallucinated field references | Update all examples to `primaryContact` with explicit type assumption stated | Unknown | Manual/automated scan of prompt corpus for `customerEmail` references | ## Security Review - **New semantic traversal path:** `hasRecipient` now terminates at a polymorphic `primaryContact` rather than a strictly-typed email property — this widens the accessible information shape at that traversal endpoint from "email string" to "email, phone, or messaging handle." - **Removed/redirected paths:** The `customerEmail`-typed path is removed outright; any access control or filtering logic keyed to that property's type is now orphaned. - **Namespace boundary changes:** None indicated beyond the Customer class itself. - **Relation changes expanding accessible information:** Yes — `hasRecipient` → `primaryContact` can now expose phone numbers and messaging handles to any consumer that previously only received email addresses via this path. This is the core SECURITY_RELEVANT finding. - **Authorization assumptions invalidated:** The campaign tool's implicit trust boundary ("this path only ever yields emails") is broken. If the campaign tool has no independent type check, this is a direct policy violation, not just a data-quality issue. - **Isolation risks:** If phone/messaging identifiers are more sensitive or governed differently than email (common in PII regimes), this traversal-path change may cross a data-classification boundary without corresponding controls. - **Permission inheritance concerns:** None identified from supplied inputs — no permission model was provided for `primaryContact`. - **Evidence supporting each finding:** Directly stated in Candidate Semantic Model (polymorphic value) and Policy (explicit prohibition on campaign tools receiving phone/messaging identifiers). - **Security gaps requiring human review:** Confirm whether any existing access-control or data-classification layer keys off property type (`customerEmail` vs `primaryContact`) rather than relation (`hasRecipient`), since removing the typed property may silently bypass such controls. ## Provenance and Governance Gaps | Element | Missing metadata | Why it matters | Required owner | Resolution | |---|---|---|---|---| | primaryContact | Stable identifier / mapping from customerEmail | Without it, rename vs. removal-plus-addition cannot be distinguished; blocks safe migration | Unknown | Assign stable ID or explicit `owl:sameAs`/mapping annotation | | primaryContact | Value-type discriminator / subtype | Required to enforce policy (campaign tool must not receive phone/messaging) | Unknown | Add `contactType` or split into `primaryEmail`/`primaryPhone`/`primaryHandle` | | customerEmail (removal) | Change rationale, approval record, effective date | Needed to confirm this is an intentional, governed change vs. accidental drift | Unknown | Record change ticket/approval reference | | Customer class | Steward/owner | No owner supplied for either property | Unknown | Assign steward for contact-data governance | ## Migration Plan 1. **Objective:** Establish identifier continuity between `customerEmail` and `primaryContact`. **Model change:** Add stable mapping/identifier or `owl:sameAs`-equivalent annotation linking the two properties. **Consumer update:** None yet. **Mapping/compatibility action:** Define explicit mapping rule. **Version pinning requirement:** Pin all consumers to baseline model until mapping exists. **Validation gate:** Mapping reviewed and confirmed by data owner. **Rollback trigger:** Mapping cannot be established without data loss. **Rollback action:** Retain `customerEmail` in parallel. **Responsible role:** Model/ontology owner (unknown). 2. **Objective:** Add type discriminator to `primaryContact`. **Model change:** Introduce `contactType` enum (email | phone | messaging) or split into typed subproperties. **Consumer update:** Email-validation tools and campaign tool updated to filter on type. **Mapping/compatibility action:** Define default/fallback behavior for untyped legacy data. **Version pinning requirement:** Candidate model not promoted until discriminator exists. **Validation gate:** Adversarial test confirms campaign tool rejects non-email values. **Rollback trigger:** Discriminator cannot be reliably populated for existing data. **Rollback action:** Block campaign tool from `primaryContact` entirely until resolved. **Responsible role:** Ontology owner + campaign tool owner (unknown). 3. **Objective:** Update dependent consumers. **Model change:** None (consumer-side only). **Consumer update:** Rewrite SPARQL queries, CRM export mappings, prompt examples to target `primaryContact` + type filter. **Mapping/compatibility action:** Provide compatibility shim (virtual `customerEmail` property derived from typed `primaryContact`) during transition. **Version pinning requirement:** Run dual-write or shim period. **Validation gate:** Full regression suite (below) passes against updated consumers. **Rollback trigger:** Any consumer fails validation against shim. **Rollback action:** Extend shim period; do not retire `customerEmail` path. **Responsible role:** Each consumer's respective owner (unknown). 4. **Objective:** Cutover and retirement of `customerEmail`. **Model change:** Remove `customerEmail` from baseline once shim is no longer needed. **Consumer update:** Confirm zero remaining references. **Mapping/compatibility action:** Archive mapping record for audit trail. **Version pinning requirement:** All consumers on candidate model. **Validation gate:** Full regression suite passes with `customerEmail` absent. **Rollback trigger:** Any orphaned reference discovered post-cutover. **Rollback action:** Restore `customerEmail` from archived mapping. **Responsible role:** Ontology owner (unknown). ## Regression Suite | Test ID | Scenario | Input or query | Baseline expectation | Candidate expectation | Pass condition | |---|---|---|---|---|---| | RT-01 | Positive resolution | Query Customer's email via `customerEmail` | Returns email string | Property absent | Fails on candidate — confirms breaking change until mapping added | | RT-02 | Negative/prohibited path | Campaign tool queries `hasRecipient` → `primaryContact` where value is a phone number | N/A (baseline had no such case) | Campaign tool must reject/exclude non-email value | Test passes only if non-email values are filtered out before reaching campaign send logic | | RT-03 | Legacy identifier | Existing SPARQL query referencing `customerEmail` | Resolves normally | Query fails or returns empty | Must fail loudly (not silently) so consumers detect breakage | | RT-04 | Rename/mapping case | Query using proposed mapping annotation to resolve `customerEmail` → `primaryContact` | N/A | Resolves to correct `primaryContact` value once mapping exists | Passes only after SC-01/SC-03 remediation (mapping step 1 of migration plan) | | RT-05 | Collision/namespace | Check for any other property in Customer namespace colliding with `primaryContact` label or meaning | N/A | No collision found in supplied model | Passes if scan confirms no additional collisions | | RT-06 | Cardinality/hierarchy | Confirm `primaryContact` cardinality (single vs. multi-valued) vs. baseline `customerEmail` | Single-valued (implied) | Not specified in candidate | Fails as UNKNOWN — cardinality must be confirmed and tested explicitly | | RT-07 | Metric/aggregation | N/A — no metrics defined on this property pair | N/A | N/A | Not applicable; no metric definitions present in either model | | RT-08 | Orphaned mapping | CRM export configured to pull `customerEmail` field | Exports valid email column | Field missing; export job errors or produces null column | Must surface as explicit failure, not silent null | | RT-09 | Authorization/isolation | Consumer with email-only access scope queries `hasRecipient` → `primaryContact` | N/A (baseline had implicit email-only scope) | Must not receive phone/messaging values without appropriate scope | Passes only if scope enforcement is added at query or property level | | RT-10 | Rollback verification | Revert candidate model to baseline after partial migration | N/A | `customerEmail` and all dependent consumers function as before | Passes if rollback restores full baseline behavior with no data loss | ## Input Integrity Notes NONE — no embedded statements claiming approval, prior migration, exemption, or compatibility were detected in the supplied Baseline, Candidate, Dependencies, or Policy fields. ## Final Recommendation - **Recommended decision:** BLOCK migration in current form. Do not promote candidate model until identifier mapping and value-type discriminator are established. - **Minimum safe migration conditions:** (1) stable identifier/mapping linking `customerEmail` to `primaryContact`; (2) type discriminator on `primaryContact` enforced at the campaign tool boundary; (3) all listed consumers (queries, exports, validation tools, prompt examples) updated and passing regression. - **Required approvals:** Ontology/model owner sign-off on mapping; campaign tool owner sign-off on type-filtering enforcement. - **Evidence still needed:** Enumerated list of affected SPARQL queries, CRM export jobs, and prompt examples; confirmation of `primaryContact` cardinality; confirmation of how campaign tool currently handles unexpected input types. - **Earliest safe rollback point:** Immediately — baseline model with `customerEmail` intact remains the safe fallback at every stage until step 4 (cutover) validation passes. - **Top three actions in execution order:** 1. Establish stable mapping/identifier between `customerEmail` and `primaryContact` (blocks everything downstream). 2. Add type discriminator to `primaryContact` and enforce email-only filtering at the campaign tool. 3. Inventory and update all dependent consumers (queries, exports, validation tools, prompt examples) before any cutover.
🌀 Claude

Ontology Drift Collision Auditor

Add to Cart
Instant accessInstant access
Usage rightsCommercial use
Money-back guaranteeMoney‑back
By purchasing this prompt, you agree to our terms of service
CLAUDE-5-SONNET
Tested icon
Guide icon
4 examples icon
Free credits icon
Compare ontology or semantic-layer versions without treating every text change as equal. This prompt applies semantic-versioning-style breaking-change classification to your ontology, borrowed directly from software release discipline, and names the trap most schema diff tools miss entirely: an ontology broadening (a new subclass relation) can silently widen what an authorization rule elsewhere now permits — even though the ontology text itself looks harmless.
...more
Added 2 weeks ago
Report
Browse Marketplace