## Summary - add a dedicated public trust, privacy, and security surface for DACH evaluation - expand homepage trust discoverability and localized trust handoff copy - add and update smoke coverage plus Spec Kit artifacts for feature 405 ## Validation - corepack pnpm --dir apps/website build - WEBSITE_PORT=4322 corepack pnpm exec playwright test tests/smoke/public-routes.spec.ts tests/smoke/interaction.spec.ts Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #400
5.9 KiB
5.9 KiB
Data Model: DACH Trust, Datenschutz & Security Website Surface
This feature introduces no persisted runtime entities. The model below describes the editorial and route-level content structures the website implementation must express.
Entity: Trust Page Content
- Purpose: The canonical public trust surface for a locale.
- Fields:
locale:deorenroute: public route path such as/trustor/en/trustpageTitle: localized metadata titlemetaDescription: localized metadata descriptionheroTitleheroSummaryprimaryHandoff: real route ormailto:destination for trust/security follow-uptopics: ordered list of trust topicsclaimStatusLegend: allowed status vocabulary exposed on the page
- Relationships:
- has many
TrustTopic - has many
TrustCallToAction
- has many
- Validation rules:
- must exist in both supported locales
- must expose a real primary handoff or omit the CTA
- must not contain placeholder links or forbidden trust claims
Entity: Trust Topic
- Purpose: A single trust subject displayed on the public trust page.
- Fields:
slug: stable editorial identifier such ashosting-postureorprovider-permissionstitlesummarydetailPoints: ordered explanatory bullets or paragraphsclaimStatus: one of the allowed public statusesverificationNote: optional editorial note when a hard claim is actually documentedrequestPath: optional real route ormailto:for further informationaudience: buyer, technical reviewer, procurement/privacy reviewer, or sharedorder
- Relationships:
- may include many
DataCategory - may include many
DocumentReadinessItem - may include one
PermissionPosture
- may include many
- Validation rules:
claimStatusmust be one of the six allowed valuesrequestPathis required when the visible CTA promises a request action- any hard factual claim requires a
verificationNote - topics must stay public-safe and must not require runtime product data
Entity: Claim Status
- Purpose: Bounded editorial vocabulary that separates current fact from request-based or planned trust material.
- Allowed values:
documentedon-requestin-preparationplannednot-claimednot-applicable
- Validation rules:
- no other public status labels are allowed unless the wording is a clear locale equivalent
documentedcannot be used for a hard claim without a traceable verification note
- Editorial state transitions:
planned->in-preparationin-preparation->on-requestin-preparation->documented- any status ->
not-claimedwhen the claim is intentionally removed - any status ->
not-applicablewhen the topic no longer belongs on the public page
Entity: Data Category
- Purpose: Public explanation of a type of data Tenantial may handle for governance or support reasons.
- Fields:
slugtitledescriptionpurposedataBoundary: governance metadata, provider metadata, evidence, review artifact, audit context, or support/diagnostic contextrawPayloadHandling: minimized, contextual, or request-only explanationavoidanceNote: optional note for data the product does not aim to store unnecessarily
- Validation rules:
- descriptions must explain why the category exists, not just name it
- categories must avoid absolute “no personal data” or “no customer data” claims unless verified
Entity: Permission Posture
- Purpose: Public explanation of why provider access is needed and how read/write access differ.
- Fields:
provider: for this feature, Microsoft 365 / Microsoft GraphcapabilityArea: inventory, evidence, review preparation, drift detection, recovery preparation, or similaraccessClass:read-oriented,write-oriented, ormixedwhyNeededleastPrivilegeNoteauditabilityNotedetailDocLink: optional future route if detailed public docs later exist
- Validation rules:
- exact permission names are optional
- if exact permission names are published later, they require a verification source and last-reviewed context
- the text must preserve provider-specific detail as provider-owned, not platform-core truth
Entity: Document Readiness Item
- Purpose: Public statement about the availability of AVV/DPA, TOM, subprocessors, or related trust materials.
- Fields:
documentTypeclaimStatusavailabilitySummaryrequestPath: optionalverificationNote: optional
- Validation rules:
- no fake file URL or download action may be attached
on-requestrequires a real request destinationdocumentedrequires a real artifact or documented public proof path
Entity: Trust Call To Action
- Purpose: A real public action that moves the evaluator from public trust copy to a valid next step.
- Fields:
labelhrefkind:internal-routeormailtopurpose: contact, request documents, ask security/privacy question, or book walkthroughlocale
- Validation rules:
hrefmust not be#or empty- if
kindisinternal-route, the route must exist in the public site - if
kindismailto, the mailbox must be real and verified
Relationship Summary
Trust Page Contentowns the ordered trust surface for one locale.- Each
Trust Topicdescribes one trust subject and may carry aClaim Status,Document Readiness Item,Permission Posture, orData Categorylist. Trust Call To Actionentries connect the trust page and homepage teaser to real destinations only.
Implementation Notes
- This is an editorial content model, not a database or backend model.
- The likely source of truth remains
apps/website/src/data_files/site-copy.tsplus page composition insideTrustPage.astroandHomePage.astro. - No persisted entity, runtime enum, or platform abstraction is justified by this feature.