Changes for page Data Model (From Specification Chat)
Last modified by Robert Schaub on 2025/12/24 20:35
From version 2.2
edited by Robert Schaub
on 2025/11/27 12:08
on 2025/11/27 12:08
Change comment:
There is no comment for this version
To version 1.1
edited by Robert Schaub
on 2025/11/27 12:02
on 2025/11/27 12:02
Change comment:
There is no comment for this version
Summary
-
Page properties (2 modified, 0 added, 0 removed)
Details
- Page properties
-
- Parent
-
... ... @@ -1,1 +1,1 @@ 1 -FactHarbor. Playground.WebHome1 +FactHarbor.Specification.Data Model.WebHome - Content
-
... ... @@ -41,10 +41,10 @@ 41 41 (scenarios live at the *claim* level, not per individual phrasing). 42 42 * Verdicts and Scenario–Evidence links are always attached to **versions**: 43 43 * {{code}}SCENARIO_VERSION{{/code}} + 44 - {{code}}EVIDENCE_VERSION{{/code}} → 45 - {{code}}SCENARIO_EVIDENCE_LINK_VERSION{{/code}} 44 + {{code}}EVIDENCE_VERSION{{/code}} → 45 + {{code}}SCENARIO_EVIDENCE_LINK_VERSION{{/code}} 46 46 * {{code}}SCENARIO_VERSION{{/code}} → 47 - {{code}}VERDICT_VERSION{{/code}} 47 + {{code}}VERDICT_VERSION{{/code}} 48 48 49 49 This ensures that when a Scenario or Evidence changes, old verdicts and links 50 50 remain intact as historical records and can be revisited. ... ... @@ -59,95 +59,124 @@ 59 59 60 60 {{mermaid}} 61 61 erDiagram 62 + 62 62 CLAIM_CLUSTER { 63 - string ClusterID PK 64 - string EmbeddingVectorRef 65 - string Theme 64 + string claimClusterId 65 + string theme 66 + string embeddingVectorRef 67 + string language 68 + datetime createdAt 66 66 } 67 67 68 68 CLAIM { 69 - string ClaimID PK70 - string ClusterI DFK71 - string Status72 - datetime CreatedAt72 + string claimId 73 + string claimClusterIdFk 74 + string status 75 + datetime createdAt 73 73 } 74 74 75 75 CLAIM_VERSION { 76 - string ClaimVersionID PK 77 - string ClaimID FK 78 - string Text 79 - string ClaimType 80 - string Domain 81 - datetime CreatedAt 79 + string claimVersionId 80 + string claimIdFk 81 + string text 82 + string language 83 + string claimType 84 + string domain 85 + string authorType 86 + datetime createdAt 82 82 } 83 83 84 84 SCENARIO { 85 - string ScenarioID PK 86 - string ClaimID FK 87 - string Name 88 - datetime CreatedAt 90 + string scenarioId 91 + string claimIdFk 92 + string key 93 + string title 94 + boolean isDeprecated 89 89 } 90 90 91 91 SCENARIO_VERSION { 92 - string ScenarioVersionID PK 93 - string ScenarioID FK 94 - string Definitions 95 - string Assumptions 96 - string Boundaries 97 - datetime CreatedAt 98 + string scenarioVersionId 99 + string scenarioIdFk 100 + string versionTag 101 + string definitionsJson 102 + string assumptionsJson 103 + string boundariesJson 104 + string notes 105 + datetime createdAt 98 98 } 99 99 100 100 EVIDENCE { 101 - string EvidenceID PK 102 - string SourceType 103 - string URL 104 - float ReliabilityScore 109 + string evidenceId 110 + string canonicalSourceId 111 + string mainUrl 112 + string evidenceType 113 + string language 105 105 } 106 106 107 107 EVIDENCE_VERSION { 108 - string EvidenceVersionID PK 109 - string EvidenceID FK 110 - string Summary 111 - float ReliabilityScore 112 - datetime CreatedAt 117 + string evidenceVersionId 118 + string evidenceIdFk 119 + string snapshotLocation 120 + string extractionSummary 121 + string reliabilityModel 122 + datetime collectedAt 123 + datetime createdAt 113 113 } 114 114 115 115 SCENARIO_EVIDENCE_LINK { 116 - string LinkID PK 117 - string ScenarioVersionID FK 118 - string EvidenceVersionID FK 119 - float Relevance 120 - string Direction 127 + string scenarioEvidenceLinkId 128 + string scenarioIdFk 129 + string evidenceIdFk 121 121 } 122 122 132 + SCENARIO_EVIDENCE_LINK_VERSION { 133 + string scenarioEvidenceLinkVersionId 134 + string scenarioEvidenceLinkIdFk 135 + string scenarioVersionIdFk 136 + string evidenceVersionIdFk 137 + float relevance 138 + string direction %% SUPPORTS / CONTRADICTS / MIXED / CONTEXT 139 + string rationale 140 + datetime createdAt 141 + } 142 + 123 123 VERDICT { 124 - string VerdictID PK 125 - string ScenarioID FK 144 + string verdictId 145 + string scenarioIdFk 146 + string verdictType %% e.g. likelihood, classification 126 126 } 127 127 128 128 VERDICT_VERSION { 129 - string VerdictVersionID PK 130 - string VerdictID FK 131 - float Verdict 132 - float Confidence 133 - string Reasoning 134 - datetime CreatedAt 150 + string verdictVersionId 151 + string verdictIdFk 152 + string scenarioVersionIdFk 153 + float probability 154 + float confidence 155 + string reasoningSummary 156 + string uncertaintyFactorsJson 157 + datetime createdAt 135 135 } 136 136 160 + %% Relationships 161 + 137 137 CLAIM_CLUSTER ||--o{ CLAIM : contains 138 - CLAIM ||--o{ CLAIM_VERSION : versions 163 + CLAIM ||--o{ CLAIM_VERSION : has_versions 164 + CLAIM ||--o{ SCENARIO : has_scenarios 165 + SCENARIO ||--o{ SCENARIO_VERSION : has_versions 139 139 140 - CLAIM ||--o{ SCENARIO : has 141 - SCENARIO ||--o{ SCENARIO_VERSION : versions 167 + EVIDENCE ||--o{ EVIDENCE_VERSION : has_versions 142 142 143 - EVIDENCE ||--o{ EVIDENCE_VERSION : versions 169 + SCENARIO ||--o{ SCENARIO_EVIDENCE_LINK : may_link 170 + EVIDENCE ||--o{ SCENARIO_EVIDENCE_LINK : may_link 144 144 145 - SCENARIO_VERSION ||--o{ SCENARIO_EVIDENCE_LINK : links 146 - EVIDENCE_VERSION ||--o{ SCENARIO_EVIDENCE_LINK : linked 172 + SCENARIO_EVIDENCE_LINK ||--o{ SCENARIO_EVIDENCE_LINK_VERSION : has_versions 147 147 148 - SCENARIO ||--o{ VERDICT:assessed149 - VER DICT||--o{VERDICT_VERSION :versions174 + SCENARIO_VERSION ||--o{ SCENARIO_EVIDENCE_LINK_VERSION : uses_evidence 175 + EVIDENCE_VERSION ||--o{ SCENARIO_EVIDENCE_LINK_VERSION : is_used_in 150 150 177 + SCENARIO ||--o{ VERDICT : has_verdicts 178 + VERDICT ||--o{ VERDICT_VERSION : has_versions 179 + SCENARIO_VERSION ||--o{ VERDICT_VERSION : assessed_in 151 151 {{/mermaid}} 152 152 153 153 **Important points:** ... ... @@ -172,145 +172,83 @@ 172 172 173 173 {{mermaid}} 174 174 erDiagram 175 - %% Core clusters shown for context 176 - CLAIM_CLUSTER { 177 - string ClusterID PK 178 - string EmbeddingVectorRef 179 - string Theme 180 - } 181 181 182 - CLAIM { 183 - string ClaimID PK 184 - string ClusterID FK 185 - string Status 186 - datetime CreatedAt 205 + USER { 206 + string userId 207 + string displayName 208 + string email 209 + string userType %% "human" or "technical" 210 + datetime createdAt 187 187 } 188 188 189 - CLAIM_VERSION { 190 - string ClaimVersionID PK 191 - string ClaimID FK 192 - string Text 193 - string ClaimType 194 - string Domain 195 - datetime CreatedAt 213 + TECHNICAL_USER { 214 + string technicalUserId 215 + string userIdFk 216 + string description 217 + string systemIdentifier 196 196 } 197 197 198 - SCENARIO {199 - string ScenarioID PK200 - string C laimID FK201 - string Name202 - datetimeCreatedAt220 + ROLE { 221 + string roleId 222 + string code %% e.g. READER, CONTRIBUTOR, REVIEWER, TRUSTED_CONTRIBUTOR, MODERATOR, SYSTEM_ADMIN, FEDERATION_OPERATOR, FEDERATION_ADMIN 223 + string description 224 + boolean isFederationRole 203 203 } 204 204 205 - SCENARIO_VERSION { 206 - string ScenarioVersionID PK 207 - string ScenarioID FK 208 - string Definitions 209 - string Assumptions 210 - string Boundaries 211 - datetime CreatedAt 227 + USER_ROLE_MEMBERSHIP { 228 + string membershipId 229 + string userIdFk 230 + string roleIdFk 231 + datetime grantedAt 232 + string grantedByUserIdFk 212 212 } 213 213 214 - EVIDENCE { 215 - string EvidenceID PK 216 - string SourceType 217 - string URL 218 - float ReliabilityScore 235 + REVIEW_ACTION { 236 + string reviewActionId 237 + string subjectType %% e.g. CLAIM_VERSION, SCENARIO_VERSION... 238 + string subjectVersionId 239 + string actionType %% APPROVE, REJECT, FLAG, COMMENT, REQUEST_CHANGES... 240 + string outcome %% ACCEPTED, REJECTED, ESCALATED... 241 + string comment 242 + string createdByUserIdFk 243 + datetime createdAt 219 219 } 220 220 221 - EVIDENCE_VERSION { 222 - string EvidenceVersionID PK 223 - string EvidenceID FK 224 - string Summary 225 - float ReliabilityScore 226 - datetime CreatedAt 227 - } 246 + %% Versioned data entities (references from the core model) 228 228 229 - VERDICT { 230 - string VerdictID PK 231 - string ScenarioID FK 248 + CLAIM_VERSION { 249 + string claimVersionId 232 232 } 233 233 234 - VERDICT_VERSION { 235 - string VerdictVersionID PK 236 - string VerdictID FK 237 - float Verdict 238 - float Confidence 239 - string Reasoning 240 - datetime CreatedAt 252 + SCENARIO_VERSION { 253 + string scenarioVersionId 241 241 } 242 242 243 - %% Users and roles 244 - USER { 245 - string UserID PK 246 - string Handle 247 - string Email 256 + EVIDENCE_VERSION { 257 + string evidenceVersionId 248 248 } 249 249 250 - TECHNICAL_USER { 251 - string UserID PK 252 - string SystemName 260 + SCENARIO_EVIDENCE_LINK_VERSION { 261 + string scenarioEvidenceLinkVersionId 253 253 } 254 254 255 - CONTRIBUTING_USER { 256 - string UserID PK 257 - string DisplayName 264 + VERDICT_VERSION { 265 + string verdictVersionId 258 258 } 259 259 260 - TRUSTED_CONTRIBUTOR { 261 - string UserID PK 262 - string TrustLevel 263 - } 268 + %% Relationships 264 264 265 - REVIEWER { 266 - string UserID PK 267 - string Domain 268 - } 270 + USER ||--o{ TECHNICAL_USER : may_be 271 + USER ||--o{ USER_ROLE_MEMBERSHIP : has_role 272 + ROLE ||--o{ USER_ROLE_MEMBERSHIP : assigned_to 269 269 270 - EXPERT { 271 - string UserID PK 272 - string ExpertiseArea 273 - } 274 - 275 - FEDERATION_NODE { 276 - string NodeID PK 277 - string Region 278 - } 279 - 280 - FEDERATION_ADMIN { 281 - string UserID PK 282 - string Permissions 283 - } 284 - 285 - REVIEW_ACTION { 286 - string ReviewActionID PK 287 - string UserID FK 288 - string TargetEntityType 289 - string TargetEntityVersionID 290 - string ActionType 291 - string Comment 292 - datetime Timestamp 293 - } 294 - 295 - %% Inheritance / specialization (modelled as relationships) 296 - USER ||--o{ TECHNICAL_USER : "is a" 297 - USER ||--o{ CONTRIBUTING_USER : "is a" 298 - 299 - CONTRIBUTING_USER ||--o{ TRUSTED_CONTRIBUTOR : "subset" 300 - CONTRIBUTING_USER ||--o{ REVIEWER : "subset" 301 - CONTRIBUTING_USER ||--o{ EXPERT : "subset" 302 - 303 - TECHNICAL_USER ||--o{ FEDERATION_NODE : "operates" 304 - TECHNICAL_USER ||--o{ FEDERATION_ADMIN : "administers" 305 - 306 - %% Review actions on versioned entities 307 307 USER ||--o{ REVIEW_ACTION : performs 308 308 309 - REVIEW_ACTION}o--||CLAIM_VERSION : reviews310 - REVIEW_ACTION }o--||SCENARIO_VERSION : reviews311 - REVIEW_ACTION}o--|| EVIDENCE_VERSION : reviews312 - REVIE W_ACTION}o--||VERDICT_VERSION : reviews313 - 276 + CLAIM_VERSION ||--o{ REVIEW_ACTION : is_reviewed_in 277 + SCENARIO_VERSION ||--o{ REVIEW_ACTION : is_reviewed_in 278 + EVIDENCE_VERSION ||--o{ REVIEW_ACTION : is_reviewed_in 279 + SCENARIO_EVIDENCE_LINK_VERSION ||--o{ REVIEW_ACTION : is_reviewed_in 280 + VERDICT_VERSION ||--o{ REVIEW_ACTION : is_reviewed_in 314 314 {{/mermaid}} 315 315 316 316 Notes: ... ... @@ -342,7 +342,7 @@ 342 342 * It may inherit some links from earlier scenarios, or start empty depending 343 343 on the change classification (cosmetic vs. conceptual). 344 344 * All verdicts for that scenario are recalculated and stored as new 345 - {{code}}VERDICT_VERSION{{/code}} entries. 312 + {{code}}VERDICT_VERSION{{/code}} entries. 346 346 347 347 * REVIEW_ACTIONs are always attached to the **exact version** that was seen by 348 348 the reviewer. This preserves a faithful audit trail if data later changes.