Skip to main content

ZAYAZ Governance Template System — Comprehensive Developer Guide

The ZAYAZ Governance Template System is the governed template ecosystem used to help organisations create their own policies, procedures, codes, disclosures, and due-diligence frameworks.

It is used across:

  • ZAYAZ ESG Platform
  • EcoWorld Academy
  • EcoWorld Public Sites
  • Customer-generated governance content (white-label)

This guide defines how template assets are structured, constitutionally resolved, validated, tagged, categorised, registered, rendered, and integrated across the platform.

A template definition is a ZAYAZ-governed source artefact. A customer-generated document instantiated from that template is a separate customer governance artefact with its own identity, lifecycle, approvals, and version history.


1. Governed Template Classes

The template system SHALL support the following first-class template kinds:

template.kindProfileResolved schema identifier
policyPolicy Template Profilezayaz.template.policy.v1
procedureProcedure Template Profilezayaz.template.procedure.v1
code-of-ethicsCode of Ethics Template Profilezayaz.template.code-of-ethics.v1
code-of-conductCode of Conduct Template Profilezayaz.template.code-of-conduct.v1
incident-disclosureIncident Disclosure Template Profilezayaz.template.incident-disclosure.v1
fines-disclosureFines Disclosure Template Profilezayaz.template.fines-disclosure.v1
due-diligence-frameworkDue Diligence Framework Profilezayaz.template.due-diligence-framework.v1

Template kinds SHALL be treated as governed semantic classes, not merely folders or UI categories.


2. Folder Structure

content/
templates/
policies/
env/
policy-env-*.mdx
social/
policy-social-*.mdx
gov/
policy-gov-*.mdx
cross/
policy-cross-*.mdx

procedures/
env/
social/
gov/
cross/

code-of-ethics/

code-of-conduct/

incident-disclosures/

fines-disclosures/

due-diligence-frameworks/

config/
system/
template-schema-registry.json
template-registry.json
slug-map.json
framework-tags.json
framework-groups.json

schemas/
templates/
template.base.v1.schema.json
policy.v1.schema.json
procedure.v1.schema.json
code-of-ethics.v1.schema.json
code-of-conduct.v1.schema.json
incident-disclosure.v1.schema.json
fines-disclosure.v1.schema.json
due-diligence-framework.v1.schema.json

tools/
viroway-tools/
src/viroway_tools/docs_lint/

The folder MAY assist discovery and consistency checking, but the folder path SHALL NOT determine constitutional interpretation. Constitutional interpretation SHALL be resolved from the Constitutional Header.

2.1 Canonical Reference Templates

The repository SHALL maintain one schema-conformant reference MDX fixture for each registered template kind. Reference fixtures are developer and validation assets: they demonstrate the canonical frontmatter contract, profile namespace, placeholder-resolution model, and expected body structure. They are not customer-specific governance documents.

content/templates/policies/reference/policy-reference-v1.mdx
content/templates/procedures/reference/procedure-reference-v1.mdx
content/templates/code-of-ethics/reference/code-of-ethics-reference-v1.mdx
content/templates/code-of-conduct/reference/code-of-conduct-reference-v1.mdx
content/templates/incident-disclosures/reference/incident-disclosure-reference-v1.mdx
content/templates/fines-disclosures/reference/fines-disclosure-reference-v1.mdx
content/templates/due-diligence-frameworks/reference/due-diligence-framework-reference-v1.mdx

Each reference fixture SHALL validate against the root schema, the common template base profile, and exactly one child profile. Every {{placeholder_key}} used in the body SHALL be declared in frontmatter, and profile fields that reference placeholder keys SHALL resolve to declared placeholders.


3. Constitutional Schema Resolution

3.1 Root Schema

Every governed template SHALL begin schema resolution from the root constitutional schema:

YAML

schema: https://schemas.zayaz.io/zayaz.schema.json

The schema field identifies the root constitutional schema. Template-specific schema identifiers SHALL NOT replace it in frontmatter.

3.2 Two-Stage Template Resolution

The root schema first resolves the broad constitutional class:

YAML

asset_type: template

This selects the common template profile:

zayaz.template.base.v1

The base profile then interprets:

YAML

template:
kind: policy

and the governed Template Schema Registry selects the additional child profile.

3.3 Canonical Resolution Chain

schema

https://schemas.zayaz.io/zayaz.schema.json

asset_type = template

zayaz.template.base.v1

template.kind

policy

zayaz.template.policy.v1

Policy Template Profile

The same mechanism applies to every registered template kind.

3.4 Governed Template Schema Registry

Schema routing SHALL be governed by:

config/system/template-schema-registry.json

The registry defines:

  • the root schema URI;
  • the common base schema;
  • each registered template.kind;
  • logical schema identifiers;
  • canonical schema URIs;
  • repository paths;
  • profile metadata namespaces;
  • VW-DL ruleset prefixes;
  • lifecycle status.

Resolver logic SHALL read this registry rather than hard-code seven independent branches.

3.5 Resolution Failure

VW-DL SHALL report an ERROR where:

  • asset_type: template is declared but the common base schema cannot be resolved;
  • template is missing;
  • template.kind is missing or unregistered;
  • more than one profile resolves;
  • a registered profile is inactive or its schema cannot be resolved;
  • the asset fails the base or child profile schema.

Folder/path inference MAY be diagnostic, but SHALL NOT silently replace Constitutional Metadata.


4. Template File Format (MDX)

Every template is one .mdx file containing a Constitutional Header and template body.

4.1 Canonical Policy Frontmatter

YAML

---
id: policy-env-climate-change
semantic_id: policies.environment.climate.change.policy
title: Climate Change Policy - Template
aliases: []
slug: /policies/environment/climate-change-policy
source_file: /templates/policies/env/policy-env-climate-change-v1.mdx

version: 1.0.0
schema: https://schemas.zayaz.io/zayaz.schema.json
asset_type: template
status: active
owner:
- sustainability-content@viroway.com
security_classification: internal
business_domain: governance

template:
id: tpl_policy_env_climate_change
kind: policy
populated_by:
- FOGE
customization:
mode: guided
allow_body_edit: true
allow_section_reorder: true
allow_section_removal: true
track_deviations: true
retain_source_link: true
material_change_review_required: true

language: en
domain: env
category: climate_change

framework_tags:
- CSRD
- ESRS_E1
- ESRS_2
- UNFCCC_PARIS
- SBTI
- TCFD
- ISO_14064

nace_hints: []
jurisdiction_hints:
- EU
- GLOBAL

placeholders:
- key: company_name
label: Company Name
description: Legal name of the company or group.
value_type: organization
required: true
resolution:
strategy: highest_trust
sources:
- kind: data_path
ref: company_profile.legal_name
priority: 10
authoritative: true
verification: preferred
- kind: user_input
priority: 100
on_missing: prompt_user
on_conflict: prompt_user
confirmation_policy: conflicting_sources
edit_policy:
mode: confirm_override
track_changes: true
retain_source_provenance: true
ui:
widget: entity_picker
group: organisation
order: 10
rendering:
format: plain
locale_aware: true
empty_behavior: block

policy_profile:
scope_model: organization
commitment_model:
- principles
- commitments
- targets
- responsibilities
governance:
approval_required: true
review:
model: annual
capabilities:
targets: true
kpis: true
exceptions: true
local_variants: true

ai_profile:
enabled: true
role: policy_env_climate_change
style: formal_clear_plain_language
reading_level: B2
length_hint_words: 1500

omr_module_ids:
- zara
- computation-hub
cmids: []
ontology_type: []
ontology_version: 1
related: []
depends_on: []
interfaces_with: []
consumes: []
produces: []
governed_by: []
frameworks: []
graph:
node: true
enrichable: true
confidence: unverified
jira:
epic: ZYZ-632
---

4.2 Stable Template Identity

template.id is the stable identity of the template family and SHALL NOT encode the template version.

Correct:

YAML

version: 1.0.0
template:
id: tpl_policy_env_climate_change

A later release remains the same template identity:

YAML

version: 2.0.0
template:
id: tpl_policy_env_climate_change

Template version is carried only by top-level SemVer. VW-DL SHALL reject version suffixes such as _v1 in new template.id values.

4.3 Body Content

Template bodies MAY contain Markdown, MDX components, governed placeholders, optional guidance, framework/jurisdiction-specific clauses, and user-editable content.

Every {{placeholder_key}} referenced in body content SHALL resolve to a declared placeholder definition or an explicitly registered system placeholder.


5. Profile-Specific Metadata Namespaces

Every child profile SHALL own a dedicated top-level metadata namespace. This keeps common Constitutional Metadata stable while allowing each template class to evolve independently.

template.kindRequired namespaceLogical schema
policypolicy_profilezayaz.template.policy.v1
procedureprocedure_profilezayaz.template.procedure.v1
code-of-ethicscode_of_ethics_profilezayaz.template.code-of-ethics.v1
code-of-conductcode_of_conduct_profilezayaz.template.code-of-conduct.v1
incident-disclosureincident_disclosure_profilezayaz.template.incident-disclosure.v1
fines-disclosurefines_disclosure_profilezayaz.template.fines-disclosure.v1
due-diligence-frameworkdue_diligence_profilezayaz.template.due-diligence-framework.v1

5.1 Policy Template Profile

policy_profile governs scope model, commitment model, approval/governance metadata, review model, and capabilities such as targets, KPIs, exceptions, and local variants.

Suggested VW-DL rule family: TPL-POL-*.

5.2 Procedure Template Profile

procedure_profile governs procedure type, execution model, trigger model, evidence generation, role placeholder references, decision points, exceptions, escalation, and approvals.

Suggested VW-DL rule family: TPL-PRC-*.

5.3 Code of Ethics Template Profile

code_of_ethics_profile governs audience scope, principle domains, conflicts-of-interest expectations, speak-up/non-retaliation behavior, and acknowledgement requirements.

Suggested VW-DL rule family: TPL-ETH-*.

5.4 Code of Conduct Template Profile

code_of_conduct_profile governs audience scope, conduct domains, enforcement model, reporting/investigation expectations, and acknowledgement requirements.

Suggested VW-DL rule family: TPL-COC-*.

5.5 Incident Disclosure Template Profile

incident_disclosure_profile governs incident domains, severity model, notification channels, chronology, affected parties, remediation, evidence, and regulatory deadline rule references.

Suggested VW-DL rule family: TPL-INC-*.

5.6 Fines Disclosure Template Profile

fines_disclosure_profile governs sanction types, issuing authority, legal basis, jurisdiction, monetary amounts/currency, appeal support, materiality assessment, remediation, multiple sanctions, and public disclosure support.

Suggested VW-DL rule family: TPL-FIN-*.

5.7 Due Diligence Framework Profile

due_diligence_profile governs due-diligence domains, organisational/value-chain coverage, value-chain depth, risk-prioritisation method, stakeholder engagement, grievance mechanisms, remedy, monitoring, and evidence/assurance.

Suggested VW-DL rule family: TPL-DD-*.

Body-section requirements remain VW-DL semantic rules rather than being duplicated as frontmatter prose fields.


6. Naming Conventions

6.1 Policy Templates

policy-<domain>-<topic>-v<major>.mdx

Examples:

policy-env-climate-change-v1.mdx
policy-social-human-rights-v1.mdx

Canonical template ID pattern:

tpl_policy_<domain>_<topic>

6.2 Other Template Kinds

Each template profile SHALL define and validate its own filename grammar and stable, version-independent template-ID grammar. Recommended prefixes are:

procedure-*
code-of-ethics-*
code-of-conduct-*
incident-disclosure-*
fines-disclosure-*
due-diligence-*

Filename/folder conventions SHALL remain secondary consistency checks. template.kind remains the constitutional routing authority.


7. Framework Tag System

Framework tags are stored in:

config/system/framework-tags.json

The registry provides canonical framework identifiers used across templates, including:

  • ESRS;
  • GRI;
  • UN SDGs;
  • OECD standards;
  • ISO standards;
  • SBTi, RE100 and CDP;
  • IFC, ILO and UNGP;
  • EU Taxonomy and CSRD;
  • certifications;
  • privacy and information-security frameworks.

Example:

"ESRS_E1": {
"label": "ESRS E1 - Climate Change",
"family": "ESRS",
"type": "standard",
"dimension": "environment",
"scope": "EU"
}

Framework tags support filtering, recommendation, analytics, regulatory mapping, applicability logic, and AI contextualisation.


8. Framework Groups

Framework groups are stored in:

config/system/framework-groups.json

They are logical groupings used for:

  • UI filtering;
  • AI contextual prompting;
  • impact modelling;
  • materiality analysis;
  • template recommendations.

Examples include:

  • CLIMATE_CORE
  • WATER_CORE
  • BIODIVERSITY_CORE
  • CIRCULAR_ECONOMY_CORE
  • HUMAN_RIGHTS_CORE
  • DATA_PRIVACY_CORE
  • GOVERNANCE_BOARD_CORE
  • ACCOUNTING_AUDIT_CORE
  • INNOVATION_DIGITAL_SUSTAINABILITY_CORE

9. Template Schema Registry and Template Registry

9.1 Template Schema Registry

The governed resolver registry is:

config/system/template-schema-registry.json

It is the authority for mapping asset_type: template and template.kind to the base and child schema profiles.

9.2 Template Registry

The template-instance catalogue remains:

config/system/template-registry.json

It SHOULD project, at minimum:

  • stable template ID;
  • template kind;
  • source filepath;
  • slug;
  • domain and category;
  • SemVer version;
  • status;
  • framework tags;
  • resolved profile schema identifier.

The template registry is a projection of governed MDX source metadata. It SHALL NOT become an independent source of truth.


10. Slug Map

The slug map is stored in:

config/system/slug-map.json

It supports:

  • slug-to-template resolution;
  • template-to-slug resolution;
  • front-end routing;
  • publication surfaces;
  • compatibility with existing policy-template pages.

Slug-map entries SHALL resolve to registered template identities.


11. Validation and VW-DL Integration

11.1 Target Validation Architecture

Parse Constitutional Header

Validate root schema reference

Resolve asset_type = template

Validate zayaz.template.base.v1

Resolve template.kind through template-schema-registry.json

Validate child profile schema and required profile namespace

Validate registries, tags, slugs and identifiers

Validate placeholder resolution contracts and body usage

Run profile-specific TPL-* semantic rules

Emit structured findings

11.2 Common Template Rules

VW-DL SHOULD validate at minimum:

  • template.id is unique and version-independent;
  • template.kind is registered;
  • schema resolution is unique and deterministic;
  • the required profile namespace exists;
  • framework tags, OMR module IDs and governed registry references resolve;
  • source path and slug projections are consistent;
  • placeholder keys are unique;
  • body placeholders are declared;
  • declared placeholders are used or explicitly marked for indirect use;
  • placeholder source references and rule references resolve where governed registries exist;
  • profile placeholder-key references resolve to declared placeholders;
  • prohibited or unknown fields fail under the resolved child schema.

11.3 Profile-Specific Rules

TPL-POL-*  Policy
TPL-PRC-* Procedure
TPL-ETH-* Code of Ethics
TPL-COC-* Code of Conduct
TPL-INC-* Incident Disclosure
TPL-FIN-* Fines Disclosure
TPL-DD-* Due Diligence Framework

11.4 Existing TypeScript Validator

The existing scripts/validate-templates.ts validator MAY remain only until VW-DL reaches functional parity. Its useful checks SHOULD be absorbed into VW-DL, after which the parallel validator SHOULD be deprecated.

11.5 CLI

viroway docs lint \
--config config/docs-lint.yaml \
--root content \
--format json \
--output artifacts/docs-lint-report.json \
--fail-on ERROR

12. Canonical Field Policy

The template ecosystem has not yet been used by customers, so the v1 contract SHALL start cleanly with canonical field names rather than carrying compatibility aliases.

Canonical names include:

asset_type
template.id
template.kind
template.populated_by
framework_tags
nace_hints
jurisdiction_hints
ai_profile

The following legacy-style names SHALL NOT be introduced into new v1 template definitions:

docType
templateId
templateVersion
populatedBy
frameworkTags
naceHints
jurisdictionHints
aiProfile

No migration alias is required for the initial v1 contract. If future compatibility becomes necessary, aliases SHALL be introduced explicitly through governed schema evolution rather than silently accepted by implementation code.


13. Developer Workflow

13.1 Create or Update a Template

  1. Place the .mdx file in the appropriate template folder.
  2. Declare the root constitutional schema.
  3. Declare template.id and registered template.kind.
  4. Populate common Constitutional Metadata.
  5. Populate metadata required by the resolved template profile.
  6. Declare placeholders used in the body.
  7. Run VW-DL.
  8. Regenerate registry/slug projections where still required by existing tooling.
  9. Commit only when blocking findings are resolved.

13.2 Resolution Must Be Metadata-Driven

Developers SHALL NOT add new validation branches based solely on folder paths where a constitutional routing field exists.

The preferred pattern is:

Constitutional Header
→ root schema
→ semantic routing metadata
→ profile schema
→ profile rules

14. Template Instantiation and Customer Artefacts

A ZAYAZ template definition and an organisation's instantiated governance document SHALL remain distinct objects.

ZAYAZ Template Definition
identity: template.id
version: template SemVer
authority: Viroway/ZAYAZ governance
status: registered template lifecycle
↓ instantiate
Customer Governance Artefact
identity: tenant/customer document identity
version: independent customer document version
authority: customer approval authority
status: draft / approved / effective / superseded / archived

Updating a ZAYAZ template SHALL NOT silently change an already approved customer artefact.

A customer MAY be notified that a newer template version exists and MAY elect or be required by policy to review/migrate its document.


15. Placeholder Resolution Contract

Placeholders are not merely text-replacement variables. They are tenant-scale population contracts that allow the same governed template to work for organisations with very different data maturity, integrations, verification levels, jurisdictions, and review requirements.

15.1 Canonical Placeholder

YAML

placeholders:
- key: company_name
label: Company Name
description: Legal name of the company or group.
value_type: organization
required: true

resolution:
strategy: highest_trust
sources:
- kind: data_path
ref: company_profile.legal_name
priority: 10
authoritative: true
verification: preferred

- kind: user_input
priority: 100

on_missing: prompt_user
on_conflict: prompt_user
confirmation_policy: conflicting_sources

applicability:
rule_refs: []
required_rule_refs: []
on_not_applicable: omit

validation:
min_length: 1
max_length: 240

edit_policy:
mode: confirm_override
track_changes: true
retain_source_provenance: true

evidence:
required: false
verification_required: false

ai_assist:
enabled: false

sensitivity: internal

ui:
widget: entity_picker
group: organisation
order: 10

rendering:
format: plain
locale_aware: true
empty_behavior: block

15.2 Supported Source Kinds

The base schema supports source candidates including:

  • data_path — tenant/company profile or other governed data path;
  • metric — metric or KPI identity;
  • registry — governed registry value;
  • api — registered integration/API binding;
  • computed — computed or derived value;
  • context — runtime/template context;
  • user_input — explicit client input;
  • ai_suggestion — AI-proposed value subject to configured confirmation;
  • constant — governed literal value.

A placeholder MAY declare several sources in priority order. Resolution strategy controls how candidates are selected.

15.3 Resolution Strategies

Supported v1 strategies are:

  • first_valid;
  • highest_trust;
  • latest_valid;
  • merge;
  • manual_confirm.

A large integrated tenant can therefore use verified profile/API/metric values automatically while a smaller customer can fall back to guided user input from the same template definition.

15.4 Missing and Conflicting Values

Each placeholder SHALL declare deterministic behavior for missing and conflicting data. Supported actions include prompting the user, requesting an AI suggestion, using a deterministic default, omitting non-applicable content, selecting a trusted/latest source, merging compatible values, or blocking generation.

15.5 Conditional Applicability

applicability.rule_refs and required_rule_refs connect placeholders to governed applicability rules without embedding executable logic in YAML. This supports jurisdiction, framework, NACE, entity-size, value-chain, or other contextual differences while keeping the template stable.

15.6 Editability and Provenance

edit_policy governs whether a client may directly modify an automatically populated value, whether confirmation/approval is required, and whether source provenance is retained. Customer edits SHOULD remain distinguishable from source template values and automatically resolved data.

15.7 Validation, Evidence and AI Assistance

Placeholders MAY declare datatype validation, registry constraints, units, evidence requirements, verification requirements, and AI-assistance behavior. AI-generated values SHALL remain traceable and SHALL follow the configured confirmation policy.

15.8 UI and Rendering

UI hints are advisory presentation metadata; they do not change constitutional meaning. Rendering metadata controls deterministic formatting without embedding presentation code into the template definition.

15.9 VW-DL Placeholder Invariants

VW-DL SHALL ultimately enforce semantic invariants that JSON Schema alone cannot reliably guarantee, including:

  • placeholder keys unique within a template;
  • every body placeholder resolves;
  • profile placeholder references resolve;
  • governed source/registry/rule references resolve;
  • use_default has a declared default;
  • ai_suggest is compatible with ai_assist policy;
  • locked placeholders do not depend solely on user input;
  • required placeholders cannot silently disappear when applicable;
  • evidence/verification requirements are internally coherent.

16. Regulatory and Framework Integration

Template profiles MAY use framework and jurisdiction metadata to support:

  • applicability-aware recommendations;
  • ESRS and CSRD mapping;
  • CSDDD due-diligence support;
  • regulatory disclosure requirements;
  • gap analysis;
  • COSE regulatory-change propagation;
  • SEEL stakeholder requirements;
  • FOGE-assisted population and authoring;
  • evidence and assurance workflows.

A template's framework metadata SHALL describe applicability or mapping. It SHALL NOT by itself imply that the instantiated customer document is legally sufficient or compliant.


17. Future Extensions

The architecture SHOULD support:

  1. Reusable template modules — governed clauses for monitoring, targets, governance, KPIs, remedies, escalation, evidence, and disclosure.
  2. Template diffing — compare customer-customised artefacts against source template versions.
  3. Live regulatory impact — COSE identifies template clauses potentially affected by legal or standards changes.
  4. Template intelligence dashboards — coverage by framework, jurisdiction, domain, template kind, and organisation usage.
  5. Profile-schema evolution — versioned, backwards-aware template profile schemas resolved through the constitutional schema architecture.
  6. Automated migration proposals — safe transformation proposals for legacy template metadata and superseded template versions.

18. Normative Requirements Summary

  1. Every governed template SHALL reference https://schemas.zayaz.io/zayaz.schema.json as its root schema.
  2. Every governed template SHALL declare asset_type: template and conform to zayaz.template.base.v1.
  3. Every governed template SHALL declare a stable, version-independent template.id.
  4. Every governed template SHALL declare a registered template.kind.
  5. template.kind SHALL resolve exactly one child profile through config/system/template-schema-registry.json.
  6. Every child profile SHALL require its dedicated profile metadata namespace.
  7. Folder paths SHALL NOT be authoritative for profile selection.
  8. Top-level version SHALL be the sole authoritative SemVer for the template definition.
  9. Canonical snake_case field names SHALL be used from v1; compatibility aliases SHALL not be introduced without governed evolution.
  10. Placeholders SHALL use the governed resolution contract and SHALL define deterministic missing/conflict behavior.
  11. Placeholder source, applicability, evidence, editability and AI-assistance metadata SHALL remain declarative and auditable.
  12. Template registries and slug maps SHALL be projections of governed source metadata.
  13. VW-DL SHALL validate common invariants, schema resolution, placeholder integrity and profile-specific semantic rules.
  14. Customer-instantiated governance artefacts SHALL maintain identities, approvals and lifecycle independently from their source templates.
  15. New template kinds SHALL be introduced through governed schema/profile registration, not path-based exceptions or hard-coded resolver branches.

Summary

The ZAYAZ Governance Template System uses the Constitutional Header as the control plane for template interpretation.

Root Constitutional Schema

asset_type = template

zayaz.template.base.v1

template.kind

Registered Child Template Profile Schema

Profile-Specific Validation

Registry / Slug / Framework / Placeholder Validation

Governed Template Definition

This architecture allows policies, procedures, codes, incident disclosures, fines disclosures, and due-diligence frameworks to share one constitutional foundation while retaining the structural rules required by each artefact class.


Governed client templates SHALL reference semantic evidence requirements rather than CMIDs or tenant identifiers.

Canonical frontmatter:

YAML

 evidence_requirements:
- id: current_ghg_inventory
evidence_type: ghg_inventory
label: Current GHG inventory
required: true
context:
entity: current_client
reporting_period: current_document_period
resolution:
on_missing: request_evidence
on_multiple: show_evidence_set
assurance:
verification: preferred
provenance_required: true
client_override:
allowed: true
require_reason: true

Canonical MDX:

<AuditEvidenceLink evidence="current_ghg_inventory" />

evidence is a document-local requirement ID. VW-DL SHALL verify that it resolves to a declared evidence_requirements[].id. The declared evidence_type SHALL resolve to core_evidence.evidence_type.evidence_key. CMID/source mappings belong in core_evidence.evidence_source_binding; dimensions belong in core_evidence.evidence_dimension. Literal E-C-O Numbers and direct CMID mappings SHALL NOT be embedded in governed client template definitions.


APPENDIX A - Database Tables

core_evidence.evidence_dimension.sql

core_evidence.evidence_dimension.sqlGitHub ↗
-- ZAYAZ Evidence Registry - evidence_dimension
-- PostgreSQL / Aurora PostgreSQL
--
-- Architectural intent:
-- * Defines business/observation context required to resolve an evidence semantic to the
-- correct observation(s), document(s), event(s) or other evidence records inside an
-- already-authorized tenant/client data scope.
-- * Typical dimensions include reporting_period, facility, jurisdiction, supplier,
-- product, counterparty, asset, project, transaction, account, contract and, where
-- meaningful inside the tenant, organizational/entity sub-scope.
-- * Tenant/client identity (including E-C-O Number) is an authorization boundary ABOVE
-- evidence resolution. It is normally obtained from authenticated session context or
-- an auditor's authorized client selection and is not represented as an evidence filter.
-- * entity remains a valid dimension only when the evidence itself has an entity or
-- organizational sub-scope within the already-authorized tenant.
-- * Security-boundary dimensions cannot be client/user-overridden.
-- * This normalized table is the authority for evidence dimensions.

BEGIN;

CREATE SCHEMA IF NOT EXISTS core_evidence AUTHORIZATION zayaz_admin;

DO $$
BEGIN
IF to_regclass('core_evidence.evidence_type') IS NULL THEN
RAISE EXCEPTION
'core_evidence.evidence_type must exist before creating evidence_dimension';
END IF;
END;
$$;

CREATE TABLE IF NOT EXISTS core_evidence.evidence_dimension (
evidence_dimension_id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
evidence_type_id uuid NOT NULL,

dimension_key text NOT NULL,
canonical_name text NOT NULL,
description text,

dimension_class text NOT NULL DEFAULT 'custom',
requirement text NOT NULL DEFAULT 'optional',
cardinality text NOT NULL DEFAULT 'one',

-- How the resolver obtains the dimension value at runtime.
resolver_kind text NOT NULL DEFAULT 'runtime_context',
resolver_ref text,
match_operator text NOT NULL DEFAULT 'exact',
resolution_order integer NOT NULL DEFAULT 100,

-- Governance and safety controls.
allow_override boolean NOT NULL DEFAULT false,
security_boundary boolean NOT NULL DEFAULT false,

-- Extensible rules for conditional dimensions, validation and applicability.
applicability jsonb NOT NULL DEFAULT '{}'::jsonb,
validation_rule jsonb NOT NULL DEFAULT '{}'::jsonb,
resolution_config jsonb NOT NULL DEFAULT '{}'::jsonb,

status text NOT NULL DEFAULT 'active',
version text NOT NULL DEFAULT '1.0.0',
metadata jsonb NOT NULL DEFAULT '{}'::jsonb,

created_at timestamptz NOT NULL DEFAULT now(),
updated_at timestamptz NOT NULL DEFAULT now(),

CONSTRAINT fk_evidence_dimension_type
FOREIGN KEY (evidence_type_id)
REFERENCES core_evidence.evidence_type (evidence_type_id)
ON UPDATE CASCADE
ON DELETE RESTRICT,

CONSTRAINT uq_evidence_dimension_key
UNIQUE (evidence_type_id, dimension_key),

CONSTRAINT chk_evidence_dimension_key_format
CHECK (dimension_key ~ '^[a-z][a-z0-9_]*$'),

CONSTRAINT chk_evidence_dimension_class
CHECK (dimension_class IN (
'entity',
'time',
'organizational',
'geographic',
'facility',
'supplier',
'product',
'counterparty',
'asset',
'project',
'transaction',
'account',
'contract',
'jurisdiction',
'scenario',
'workforce',
'learning',
'custom'
)),

CONSTRAINT chk_evidence_dimension_requirement
CHECK (requirement IN ('required','optional','conditional')),

CONSTRAINT chk_evidence_dimension_cardinality
CHECK (cardinality IN ('one','many')),

CONSTRAINT chk_evidence_dimension_resolver_kind
CHECK (resolver_kind IN (
'document_context',
'session_context',
'runtime_context',
'user_selection',
'derived',
'constant',
'external_context'
)),

CONSTRAINT chk_evidence_dimension_match_operator
CHECK (match_operator IN (
'exact',
'contains',
'overlaps',
'within',
'ancestor',
'descendant',
'any'
)),

CONSTRAINT chk_evidence_dimension_resolution_order
CHECK (resolution_order >= 0),

CONSTRAINT chk_evidence_dimension_security_override
CHECK (NOT security_boundary OR NOT allow_override),

CONSTRAINT chk_evidence_dimension_security_resolver
CHECK (
NOT security_boundary
OR resolver_kind IN ('session_context','runtime_context')
),

CONSTRAINT chk_evidence_dimension_status
CHECK (status IN ('draft','active','deprecated','retired')),

CONSTRAINT chk_evidence_dimension_version
CHECK (version ~ '^[0-9]+\.[0-9]+\.[0-9]+$')
);

COMMENT ON TABLE core_evidence.evidence_dimension IS
'Normalized runtime dimensions used by the Evidence Context Resolver to identify the correct client/entity-specific evidence records for a canonical evidence type.';

COMMENT ON COLUMN core_evidence.evidence_dimension.dimension_key IS
'Stable dimension key such as reporting_period, organizational_unit, workforce_category, course, training_topic, facility, supplier, product or jurisdiction.';
COMMENT ON COLUMN core_evidence.evidence_dimension.dimension_class IS
'Broad semantic class used by resolver logic and Admin UI grouping; custom preserves domain extensibility.';
COMMENT ON COLUMN core_evidence.evidence_dimension.resolver_kind IS
'Trusted source from which the business/observation dimension value is obtained. Tenant identity is an authorization concern above evidence resolution, not a normal evidence dimension.';
COMMENT ON COLUMN core_evidence.evidence_dimension.resolver_ref IS
'Stable resolver selector such as current_document_period, current_facility, selected_supplier or workforce_category.';
COMMENT ON COLUMN core_evidence.evidence_dimension.match_operator IS
'How the requested context is matched against candidate evidence records.';
COMMENT ON COLUMN core_evidence.evidence_dimension.security_boundary IS
'True when the business dimension is security-sensitive and must not be user-overridden. Tenant isolation itself is enforced above evidence resolution.';
COMMENT ON COLUMN core_evidence.evidence_dimension.applicability IS
'Conditional applicability predicates; useful when a dimension is required only for specific frameworks, source kinds, jurisdictions or evidence contexts.';
COMMENT ON COLUMN core_evidence.evidence_dimension.validation_rule IS
'Governed validation contract for resolved dimension values.';

CREATE INDEX IF NOT EXISTS idx_evidence_dimension_type
ON core_evidence.evidence_dimension (evidence_type_id, status, resolution_order);

CREATE INDEX IF NOT EXISTS idx_evidence_dimension_key
ON core_evidence.evidence_dimension (dimension_key);

CREATE INDEX IF NOT EXISTS idx_evidence_dimension_class
ON core_evidence.evidence_dimension (dimension_class);

CREATE INDEX IF NOT EXISTS idx_evidence_dimension_resolver
ON core_evidence.evidence_dimension (resolver_kind, resolver_ref);

CREATE INDEX IF NOT EXISTS idx_evidence_dimension_security_boundary
ON core_evidence.evidence_dimension (security_boundary)
WHERE security_boundary = true;

CREATE INDEX IF NOT EXISTS idx_evidence_dimension_applicability_gin
ON core_evidence.evidence_dimension USING gin (applicability);

CREATE INDEX IF NOT EXISTS idx_evidence_dimension_validation_rule_gin
ON core_evidence.evidence_dimension USING gin (validation_rule);

CREATE INDEX IF NOT EXISTS idx_evidence_dimension_resolution_config_gin
ON core_evidence.evidence_dimension USING gin (resolution_config);

CREATE INDEX IF NOT EXISTS idx_evidence_dimension_metadata_gin
ON core_evidence.evidence_dimension USING gin (metadata);

CREATE OR REPLACE FUNCTION core_evidence.set_updated_at()
RETURNS trigger
LANGUAGE plpgsql
AS $$
BEGIN
NEW.updated_at = now();
RETURN NEW;
END;
$$;

DROP TRIGGER IF EXISTS trg_evidence_dimension_set_updated_at
ON core_evidence.evidence_dimension;

CREATE TRIGGER trg_evidence_dimension_set_updated_at
BEFORE UPDATE ON core_evidence.evidence_dimension
FOR EACH ROW
EXECUTE FUNCTION core_evidence.set_updated_at();

-- Register this table in ZAYAZ metadata when the table registry is available.
DO $$
BEGIN
IF to_regclass('core_metadata.table_registry') IS NOT NULL THEN
EXECUTE $sql$
INSERT INTO core_metadata.table_registry (
schema_name,
table_name,
table_description,
business_owner,
technical_owner,
data_steward,
domain,
system_of_record,
criticality,
classification,
status
)
VALUES (
'core_evidence',
'evidence_dimension',
'Runtime context dimensions used to resolve semantic evidence requirements to the correct entity/client-specific evidence records.',
'Governance / Assurance',
'Platform Engineering',
'Evidence Registry Steward',
'cross_domain',
true,
'high',
'internal',
'active'
)
ON CONFLICT (schema_name, table_name) DO NOTHING
$sql$;
END IF;
END;
$$;

-- Conditional least-privilege grants.
DO $$
BEGIN
IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'zayaz_app') THEN
GRANT USAGE ON SCHEMA core_evidence TO zayaz_app;
GRANT SELECT, INSERT, UPDATE, DELETE
ON core_evidence.evidence_dimension TO zayaz_app;
END IF;

IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'zayaz_readonly') THEN
GRANT USAGE ON SCHEMA core_evidence TO zayaz_readonly;
GRANT SELECT ON core_evidence.evidence_dimension TO zayaz_readonly;
END IF;

IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'zayaz_analytics') THEN
GRANT USAGE ON SCHEMA core_evidence TO zayaz_analytics;
GRANT SELECT ON core_evidence.evidence_dimension TO zayaz_analytics;
END IF;

IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'zayaz_verifier_api') THEN
GRANT USAGE ON SCHEMA core_evidence TO zayaz_verifier_api;
GRANT SELECT ON core_evidence.evidence_dimension TO zayaz_verifier_api;
END IF;
END;
$$;

COMMIT;

-- Tenancy / E-C-O Number note:
--
-- Do NOT add a tenant identity dimension merely to isolate client data. The effective
-- client/tenant must already be authorized before the Evidence Context Resolver runs.
-- For an auditor, the selected client must first pass the auditor authorization boundary.
--
-- Recommended reporting-period dimension example:
--
-- INSERT INTO core_evidence.evidence_dimension (
-- evidence_type_id,
-- dimension_key,
-- canonical_name,
-- description,
-- dimension_class,
-- requirement,
-- resolver_kind,
-- resolver_ref,
-- match_operator,
-- resolution_order
-- )
-- SELECT evidence_type_id,
-- 'reporting_period',
-- 'Reporting Period',
-- 'Reporting period used to select evidence observations within the authorized tenant scope.',
-- 'time',
-- 'required',
-- 'document_context',
-- 'current_document_period',
-- 'exact',
-- 10
-- FROM core_evidence.evidence_type
-- WHERE evidence_key = 'scope_1_emissions';
--
-- Recommended facility dimension example:
--
-- INSERT INTO core_evidence.evidence_dimension (
-- evidence_type_id,
-- dimension_key,
-- canonical_name,
-- description,
-- dimension_class,
-- requirement,
-- resolver_kind,
-- resolver_ref,
-- match_operator,
-- allow_override,
-- resolution_order
-- )
-- SELECT evidence_type_id,
-- 'facility',
-- 'Facility',
-- 'Optional facility sub-scope within the already-authorized tenant.',
-- 'facility',
-- 'optional',
-- 'document_context',
-- 'current_facility',
-- 'exact',
-- true,
-- 20
-- FROM core_evidence.evidence_type
-- WHERE evidence_key = 'scope_1_emissions';
--
-- Verification query:
-- SELECT et.evidence_key, d.*
-- FROM core_evidence.evidence_dimension d
-- JOIN core_evidence.evidence_type et USING (evidence_type_id)
-- ORDER BY et.evidence_key, d.resolution_order, d.dimension_key;

core_evidence.evidence_type.sql

core_evidence.evidence_type.sqlGitHub ↗
-- ZAYAZ Evidence Registry - evidence_type bootstrap and seed vocabulary
-- PostgreSQL / Aurora PostgreSQL
--
-- Architectural intent:
-- * core_evidence is the authoritative operational namespace for evidence semantics.
-- * evidence_key is the stable semantic identifier used by templates and APIs.
-- * CMID/source mappings are intentionally NOT stored in this table; they belong in
-- future evidence source-binding tables managed through the Evidence Admin UI.
-- * mapping_status starts as 'unmapped' so the vocabulary can be used before CMID
-- mapping is complete.
-- * Seed reruns never overwrite Admin UI changes (ON CONFLICT DO NOTHING).

BEGIN;

CREATE SCHEMA IF NOT EXISTS core_evidence AUTHORIZATION zayaz_admin;

COMMENT ON SCHEMA core_evidence IS
'ZAYAZ canonical evidence vocabulary, source mappings, resolution rules, dimensions, provenance and evidence-governance metadata.';

CREATE TABLE IF NOT EXISTS core_evidence.evidence_type (
evidence_type_id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
evidence_key text NOT NULL,
canonical_name text NOT NULL,
description text,

evidence_class text NOT NULL DEFAULT 'unclassified',
domain text NOT NULL DEFAULT 'cross_domain',
category text NOT NULL,

default_resolution_mode text NOT NULL DEFAULT 'unmapped',
mapping_status text NOT NULL DEFAULT 'unmapped',

aliases text[] NOT NULL DEFAULT '{}'::text[],

is_system_defined boolean NOT NULL DEFAULT true,
status text NOT NULL DEFAULT 'active',
version text NOT NULL DEFAULT '1.0.0',

business_owner text,
technical_owner text,
data_steward text,

metadata jsonb NOT NULL DEFAULT '{}'::jsonb,

created_at timestamptz NOT NULL DEFAULT now(),
updated_at timestamptz NOT NULL DEFAULT now(),

CONSTRAINT uq_evidence_type_key UNIQUE (evidence_key),
CONSTRAINT chk_evidence_type_key_format
CHECK (evidence_key ~ '^[a-z][a-z0-9_]*$'),
CONSTRAINT chk_evidence_type_class
CHECK (evidence_class IN (
'unclassified','metric','metric_set','document','record','attestation',
'event','calculation','composite'
)),
CONSTRAINT chk_evidence_type_resolution_mode
CHECK (default_resolution_mode IN (
'unmapped','single','all_of','any_of','one_of','preferred','aggregate','composite'
)),
CONSTRAINT chk_evidence_type_mapping_status
CHECK (mapping_status IN ('unmapped','partial','mapped','validated','deprecated')),
CONSTRAINT chk_evidence_type_status
CHECK (status IN ('draft','active','deprecated','retired')),
CONSTRAINT chk_evidence_type_version
CHECK (version ~ '^[0-9]+\.[0-9]+\.[0-9]+$')
);

COMMENT ON TABLE core_evidence.evidence_type IS
'Canonical, domain-neutral ZAYAZ evidence vocabulary used by templates, Evidence Resolver, Admin UI and VW-DL.';
COMMENT ON COLUMN core_evidence.evidence_type.evidence_key IS
'Stable semantic key referenced from templates, e.g. scope_1_emissions. Never embed tenant identity or CMIDs here.';
COMMENT ON COLUMN core_evidence.evidence_type.evidence_class IS
'Semantic shape of the evidence concept; independent of the physical source mapping.';
COMMENT ON COLUMN core_evidence.evidence_type.default_resolution_mode IS
'Default source-composition behavior once bindings exist. Starts unmapped until curated.';
COMMENT ON COLUMN core_evidence.evidence_type.mapping_status IS
'Lifecycle of mapping from evidence semantics to CMIDs, documents, records, attestations or other source types.';
COMMENT ON COLUMN core_evidence.evidence_type.metadata IS
'Extensible governed metadata; avoid placing source bindings here.';

CREATE INDEX IF NOT EXISTS idx_evidence_type_domain
ON core_evidence.evidence_type (domain);
CREATE INDEX IF NOT EXISTS idx_evidence_type_category
ON core_evidence.evidence_type (category);
CREATE INDEX IF NOT EXISTS idx_evidence_type_class
ON core_evidence.evidence_type (evidence_class);
CREATE INDEX IF NOT EXISTS idx_evidence_type_status
ON core_evidence.evidence_type (status);
CREATE INDEX IF NOT EXISTS idx_evidence_type_mapping_status
ON core_evidence.evidence_type (mapping_status);
CREATE INDEX IF NOT EXISTS idx_evidence_type_metadata_gin
ON core_evidence.evidence_type USING gin (metadata);

-- Keep updated_at accurate for Admin UI edits.
CREATE OR REPLACE FUNCTION core_evidence.set_updated_at()
RETURNS trigger
LANGUAGE plpgsql
AS $$
BEGIN
NEW.updated_at = now();
RETURN NEW;
END;
$$;

DROP TRIGGER IF EXISTS trg_evidence_type_set_updated_at
ON core_evidence.evidence_type;
CREATE TRIGGER trg_evidence_type_set_updated_at
BEFORE UPDATE ON core_evidence.evidence_type
FOR EACH ROW
EXECUTE FUNCTION core_evidence.set_updated_at();

-- Seed vocabulary derived from the current template library plus the seven governed
-- reference template profiles. Source mappings intentionally remain unmapped.
INSERT INTO core_evidence.evidence_type (
evidence_key,
canonical_name,
description,
evidence_class,
domain,
category,
default_resolution_mode,
mapping_status,
is_system_defined,
status,
version,
metadata
)
VALUES
('organization_identity', 'Organization Identity', 'Canonical evidence type for organization identity.', 'composite', 'cross_domain', 'common_governance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('document_approval_record', 'Document Approval Record', 'Canonical evidence type for document approval record.', 'record', 'cross_domain', 'common_governance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('approval_authority', 'Approval Authority', 'Canonical evidence type for approval authority.', 'composite', 'cross_domain', 'common_governance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('document_owner_assignment', 'Document Owner Assignment', 'Canonical evidence type for document owner assignment.', 'composite', 'cross_domain', 'common_governance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('effective_date', 'Effective Date', 'Canonical evidence type for effective date.', 'composite', 'cross_domain', 'common_governance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('document_review_record', 'Document Review Record', 'Canonical evidence type for document review record.', 'record', 'cross_domain', 'common_governance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('document_exception_record', 'Document Exception Record', 'Canonical evidence type for document exception record.', 'record', 'cross_domain', 'common_governance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('local_variant_record', 'Local Variant Record', 'Canonical evidence type for local variant record.', 'record', 'cross_domain', 'common_governance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('management_review_record', 'Management Review Record', 'Canonical evidence type for management review record.', 'record', 'cross_domain', 'common_governance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('board_oversight_record', 'Board Oversight Record', 'Canonical evidence type for board oversight record.', 'record', 'cross_domain', 'common_governance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('employee_acknowledgement', 'Employee Acknowledgement', 'Canonical evidence type for employee acknowledgement.', 'record', 'cross_domain', 'common_governance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('training_completion', 'Training Completion', 'Canonical evidence type for training completion.', 'record', 'cross_domain', 'common_governance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('training_coverage_percentage', 'Training Coverage Percentage', 'Percentage of an eligible or in-scope population that completed qualifying training during the applicable period.', 'calculation', 'cross_domain', 'learning_compliance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"academy-evidence-v1","academy_source_candidate":true,"mapping_review_required":true}'::jsonb),
('esg_training_coverage', 'ESG Training Coverage', 'Percentage of an eligible or in-scope population that completed qualifying ESG training during the applicable period.', 'calculation', 'cross_domain', 'learning_compliance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"academy-evidence-v1","academy_source_candidate":true,"mapping_review_required":true}'::jsonb),
('anti_corruption_training_coverage', 'Anti-Corruption Training Coverage', 'Percentage of the relevant workforce or functions-at-risk that completed qualifying anti-corruption or anti-bribery training during the applicable period.', 'calculation', 'governance', 'corporate_governance_ethics_compliance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"academy-evidence-v1","academy_source_candidate":true,"mapping_review_required":true,"regulatory_use_candidate":true}'::jsonb),
('training_competency_assessment', 'Training Competency Assessment', 'Evidence of assessed learner competency, including governed quiz, assessment, pass/fail, score, or equivalent learning outcome records.', 'record', 'cross_domain', 'learning_compliance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"academy-evidence-v1","academy_source_candidate":true,"mapping_review_required":true}'::jsonb),
('training_certification', 'Training Certification', 'Issued training certificate, diploma, or equivalent verifiable attestation evidencing completion of qualifying learning.', 'attestation', 'cross_domain', 'learning_compliance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"academy-evidence-v1","academy_source_candidate":true,"mapping_review_required":true}'::jsonb),
('stakeholder_engagement_record', 'Stakeholder Engagement Record', 'Canonical evidence type for stakeholder engagement record.', 'record', 'cross_domain', 'common_governance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('third_party_assurance_statement', 'Third Party Assurance Statement', 'Canonical evidence type for third party assurance statement.', 'attestation', 'cross_domain', 'common_governance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('audit_report', 'Audit Report', 'Canonical evidence type for audit report.', 'document', 'cross_domain', 'common_governance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('regulatory_requirement_mapping', 'Regulatory Requirement Mapping', 'Canonical evidence type for regulatory requirement mapping.', 'composite', 'cross_domain', 'common_governance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('remediation_action_plan', 'Remediation Action Plan', 'Canonical evidence type for remediation action plan.', 'document', 'cross_domain', 'common_governance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('ghg_inventory', 'GHG Inventory', 'Canonical evidence type for ghg inventory.', 'record', 'environmental', 'climate_carbon_energy', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('scope_1_emissions', 'Scope 1 Emissions', 'Canonical evidence type for scope 1 emissions.', 'metric', 'environmental', 'climate_carbon_energy', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('scope_2_emissions_location_based', 'Scope 2 Emissions Location Based', 'Canonical evidence type for scope 2 emissions location based.', 'metric', 'environmental', 'climate_carbon_energy', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('scope_2_emissions_market_based', 'Scope 2 Emissions Market Based', 'Canonical evidence type for scope 2 emissions market based.', 'metric', 'environmental', 'climate_carbon_energy', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('scope_3_emissions', 'Scope 3 Emissions', 'Canonical evidence type for scope 3 emissions.', 'metric', 'environmental', 'climate_carbon_energy', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('ghg_emissions_intensity', 'GHG Emissions Intensity', 'Canonical evidence type for ghg emissions intensity.', 'metric', 'environmental', 'climate_carbon_energy', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('ghg_baseline', 'GHG Baseline', 'Canonical evidence type for ghg baseline.', 'composite', 'environmental', 'climate_carbon_energy', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('ghg_reduction_target', 'GHG Reduction Target', 'Canonical evidence type for ghg reduction target.', 'composite', 'environmental', 'climate_carbon_energy', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('net_zero_target', 'Net Zero Target', 'Canonical evidence type for net zero target.', 'composite', 'environmental', 'climate_carbon_energy', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('climate_target_progress', 'Climate Target Progress', 'Canonical evidence type for climate target progress.', 'metric', 'environmental', 'climate_carbon_energy', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('total_energy_consumption', 'Total Energy Consumption', 'Canonical evidence type for total energy consumption.', 'metric', 'environmental', 'climate_carbon_energy', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('renewable_energy_consumption', 'Renewable Energy Consumption', 'Canonical evidence type for renewable energy consumption.', 'metric', 'environmental', 'climate_carbon_energy', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('renewable_energy_share', 'Renewable Energy Share', 'Canonical evidence type for renewable energy share.', 'metric', 'environmental', 'climate_carbon_energy', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('energy_intensity', 'Energy Intensity', 'Canonical evidence type for energy intensity.', 'metric', 'environmental', 'climate_carbon_energy', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('energy_efficiency_improvement', 'Energy Efficiency Improvement', 'Canonical evidence type for energy efficiency improvement.', 'composite', 'environmental', 'climate_carbon_energy', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('climate_physical_risk_assessment', 'Climate Physical Risk Assessment', 'Canonical evidence type for climate physical risk assessment.', 'record', 'environmental', 'climate_carbon_energy', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('climate_transition_risk_assessment', 'Climate Transition Risk Assessment', 'Canonical evidence type for climate transition risk assessment.', 'record', 'environmental', 'climate_carbon_energy', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('climate_scenario_analysis', 'Climate Scenario Analysis', 'Canonical evidence type for climate scenario analysis.', 'record', 'environmental', 'climate_carbon_energy', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('climate_adaptation_plan', 'Climate Adaptation Plan', 'Canonical evidence type for climate adaptation plan.', 'document', 'environmental', 'climate_carbon_energy', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('climate_mitigation_plan', 'Climate Mitigation Plan', 'Canonical evidence type for climate mitigation plan.', 'document', 'environmental', 'climate_carbon_energy', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('carbon_offset_usage', 'Carbon Offset Usage', 'Canonical evidence type for carbon offset usage.', 'composite', 'environmental', 'climate_carbon_energy', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('product_carbon_footprint', 'Product Carbon Footprint', 'Canonical evidence type for product carbon footprint.', 'composite', 'environmental', 'climate_carbon_energy', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('lifecycle_assessment', 'Lifecycle Assessment', 'Canonical evidence type for lifecycle assessment.', 'record', 'environmental', 'climate_carbon_energy', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('clean_technology_investment', 'Clean Technology Investment', 'Canonical evidence type for clean technology investment.', 'composite', 'environmental', 'climate_carbon_energy', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('climate_finance_exposure', 'Climate Finance Exposure', 'Canonical evidence type for climate finance exposure.', 'composite', 'environmental', 'climate_carbon_energy', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('green_building_certification', 'Green Building Certification', 'Canonical evidence type for green building certification.', 'document', 'environmental', 'climate_carbon_energy', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('green_building_performance', 'Green Building Performance', 'Canonical evidence type for green building performance.', 'metric', 'environmental', 'climate_carbon_energy', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('waste_generated', 'Waste Generated', 'Canonical evidence type for waste generated.', 'metric', 'environmental', 'waste_circularity_materials', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('waste_recycled', 'Waste Recycled', 'Canonical evidence type for waste recycled.', 'metric', 'environmental', 'waste_circularity_materials', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('waste_diverted_from_disposal', 'Waste Diverted From Disposal', 'Canonical evidence type for waste diverted from disposal.', 'composite', 'environmental', 'waste_circularity_materials', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('waste_disposed', 'Waste Disposed', 'Canonical evidence type for waste disposed.', 'metric', 'environmental', 'waste_circularity_materials', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('hazardous_waste', 'Hazardous Waste', 'Canonical evidence type for hazardous waste.', 'composite', 'environmental', 'waste_circularity_materials', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('electronic_waste', 'Electronic Waste', 'Canonical evidence type for electronic waste.', 'composite', 'environmental', 'waste_circularity_materials', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('waste_to_energy_feedstock', 'Waste To Energy Feedstock', 'Canonical evidence type for waste to energy feedstock.', 'composite', 'environmental', 'waste_circularity_materials', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('waste_to_energy_output', 'Waste To Energy Output', 'Canonical evidence type for waste to energy output.', 'metric', 'environmental', 'waste_circularity_materials', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('circular_material_input', 'Circular Material Input', 'Canonical evidence type for circular material input.', 'metric', 'environmental', 'waste_circularity_materials', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('recycled_content', 'Recycled Content', 'Canonical evidence type for recycled content.', 'metric', 'environmental', 'waste_circularity_materials', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('material_reuse', 'Material Reuse', 'Canonical evidence type for material reuse.', 'composite', 'environmental', 'waste_circularity_materials', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('packaging_material_use', 'Packaging Material Use', 'Canonical evidence type for packaging material use.', 'metric', 'environmental', 'waste_circularity_materials', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('packaging_recyclability', 'Packaging Recyclability', 'Canonical evidence type for packaging recyclability.', 'composite', 'environmental', 'waste_circularity_materials', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('resource_productivity', 'Resource Productivity', 'Canonical evidence type for resource productivity.', 'metric', 'environmental', 'waste_circularity_materials', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('raw_material_consumption', 'Raw Material Consumption', 'Canonical evidence type for raw material consumption.', 'metric', 'environmental', 'waste_circularity_materials', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('raw_material_traceability', 'Raw Material Traceability', 'Canonical evidence type for raw material traceability.', 'composite', 'environmental', 'waste_circularity_materials', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('responsible_sourcing_assessment', 'Responsible Sourcing Assessment', 'Canonical evidence type for responsible sourcing assessment.', 'record', 'environmental', 'waste_circularity_materials', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('water_withdrawal', 'Water Withdrawal', 'Canonical evidence type for water withdrawal.', 'metric', 'environmental', 'water_pollution_biodiversity_nature', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('water_consumption', 'Water Consumption', 'Canonical evidence type for water consumption.', 'metric', 'environmental', 'water_pollution_biodiversity_nature', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('water_discharge', 'Water Discharge', 'Canonical evidence type for water discharge.', 'metric', 'environmental', 'water_pollution_biodiversity_nature', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('water_recycled_reused', 'Water Recycled Reused', 'Canonical evidence type for water recycled reused.', 'composite', 'environmental', 'water_pollution_biodiversity_nature', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('water_stress_exposure', 'Water Stress Exposure', 'Canonical evidence type for water stress exposure.', 'composite', 'environmental', 'water_pollution_biodiversity_nature', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('air_pollutant_emissions', 'Air Pollutant Emissions', 'Canonical evidence type for air pollutant emissions.', 'metric', 'environmental', 'water_pollution_biodiversity_nature', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('water_pollutant_discharge', 'Water Pollutant Discharge', 'Canonical evidence type for water pollutant discharge.', 'metric', 'environmental', 'water_pollution_biodiversity_nature', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('toxic_emissions', 'Toxic Emissions', 'Canonical evidence type for toxic emissions.', 'metric', 'environmental', 'water_pollution_biodiversity_nature', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('hazardous_substance_use', 'Hazardous Substance Use', 'Canonical evidence type for hazardous substance use.', 'metric', 'environmental', 'water_pollution_biodiversity_nature', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('environmental_incident', 'Environmental Incident', 'Canonical evidence type for environmental incident.', 'event', 'environmental', 'water_pollution_biodiversity_nature', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('environmental_compliance_breach', 'Environmental Compliance Breach', 'Canonical evidence type for environmental compliance breach.', 'event', 'environmental', 'water_pollution_biodiversity_nature', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('biodiversity_sensitive_site', 'Biodiversity Sensitive Site', 'Canonical evidence type for biodiversity sensitive site.', 'composite', 'environmental', 'water_pollution_biodiversity_nature', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('biodiversity_impact_assessment', 'Biodiversity Impact Assessment', 'Canonical evidence type for biodiversity impact assessment.', 'record', 'environmental', 'water_pollution_biodiversity_nature', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('land_use_change', 'Land Use Change', 'Canonical evidence type for land use change.', 'composite', 'environmental', 'water_pollution_biodiversity_nature', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('habitat_restoration', 'Habitat Restoration', 'Canonical evidence type for habitat restoration.', 'composite', 'environmental', 'water_pollution_biodiversity_nature', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('nature_based_solution_outcome', 'Nature Based Solution Outcome', 'Canonical evidence type for nature based solution outcome.', 'composite', 'environmental', 'water_pollution_biodiversity_nature', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('natural_resource_consumption', 'Natural Resource Consumption', 'Canonical evidence type for natural resource consumption.', 'metric', 'environmental', 'water_pollution_biodiversity_nature', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('supplier_environmental_performance', 'Supplier Environmental Performance', 'Canonical evidence type for supplier environmental performance.', 'metric', 'environmental', 'water_pollution_biodiversity_nature', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('workforce_headcount', 'Workforce Headcount', 'Canonical evidence type for workforce headcount.', 'metric', 'social', 'workforce_workplace', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('employee_turnover', 'Employee Turnover', 'Canonical evidence type for employee turnover.', 'metric', 'social', 'workforce_workplace', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('workforce_diversity', 'Workforce Diversity', 'Canonical evidence type for workforce diversity.', 'metric', 'social', 'workforce_workplace', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('gender_pay_gap', 'Gender Pay Gap', 'Canonical evidence type for gender pay gap.', 'composite', 'social', 'workforce_workplace', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('pay_equity', 'Pay Equity', 'Canonical evidence type for pay equity.', 'metric', 'social', 'workforce_workplace', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('living_wage_coverage', 'Living Wage Coverage', 'Canonical evidence type for living wage coverage.', 'metric', 'social', 'workforce_workplace', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('collective_bargaining_coverage', 'Collective Bargaining Coverage', 'Canonical evidence type for collective bargaining coverage.', 'metric', 'social', 'workforce_workplace', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('labor_dispute_record', 'Labor Dispute Record', 'Canonical evidence type for labor dispute record.', 'record', 'social', 'workforce_workplace', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('occupational_injury_rate', 'Occupational Injury Rate', 'Canonical evidence type for occupational injury rate.', 'metric', 'social', 'workforce_workplace', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('lost_time_injury_rate', 'Lost Time Injury Rate', 'Canonical evidence type for lost time injury rate.', 'metric', 'social', 'workforce_workplace', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('work_related_fatalities', 'Work Related Fatalities', 'Canonical evidence type for work related fatalities.', 'metric', 'social', 'workforce_workplace', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('near_miss_record', 'Near Miss Record', 'Canonical evidence type for near miss record.', 'record', 'social', 'workforce_workplace', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('health_safety_training', 'Health Safety Training', 'Canonical evidence type for health safety training.', 'record', 'social', 'workforce_workplace', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('employee_training_hours', 'Employee Training Hours', 'Canonical evidence type for employee training hours.', 'metric', 'social', 'workforce_workplace', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('skills_development', 'Skills Development', 'Canonical evidence type for skills development.', 'composite', 'social', 'workforce_workplace', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('employee_engagement', 'Employee Engagement', 'Canonical evidence type for employee engagement.', 'composite', 'social', 'workforce_workplace', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('discrimination_harassment_case', 'Discrimination Harassment Case', 'Canonical evidence type for discrimination harassment case.', 'composite', 'social', 'workforce_workplace', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('employee_grievance_case', 'Employee Grievance Case', 'Canonical evidence type for employee grievance case.', 'composite', 'social', 'workforce_workplace', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('employee_grievance_resolution', 'Employee Grievance Resolution', 'Canonical evidence type for employee grievance resolution.', 'record', 'social', 'workforce_workplace', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('workforce_transition_impact', 'Workforce Transition Impact', 'Canonical evidence type for workforce transition impact.', 'metric', 'social', 'workforce_workplace', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('reskilling_program', 'Reskilling Program', 'Canonical evidence type for reskilling program.', 'composite', 'social', 'workforce_workplace', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('human_rights_due_diligence_assessment', 'Human Rights Due Diligence Assessment', 'Canonical evidence type for human rights due diligence assessment.', 'record', 'social', 'human_rights_community_supply_chain', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('human_rights_incident', 'Human Rights Incident', 'Canonical evidence type for human rights incident.', 'event', 'social', 'human_rights_community_supply_chain', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('child_labor_risk', 'Child Labor Risk', 'Canonical evidence type for child labor risk.', 'composite', 'social', 'human_rights_community_supply_chain', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('forced_labor_risk', 'Forced Labor Risk', 'Canonical evidence type for forced labor risk.', 'composite', 'social', 'human_rights_community_supply_chain', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('modern_slavery_screening', 'Modern Slavery Screening', 'Canonical evidence type for modern slavery screening.', 'record', 'social', 'human_rights_community_supply_chain', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('supplier_social_assessment', 'Supplier Social Assessment', 'Canonical evidence type for supplier social assessment.', 'record', 'social', 'human_rights_community_supply_chain', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('supplier_audit', 'Supplier Audit', 'Canonical evidence type for supplier audit.', 'composite', 'social', 'human_rights_community_supply_chain', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('supplier_code_compliance', 'Supplier Code Compliance', 'Canonical evidence type for supplier code compliance.', 'composite', 'social', 'human_rights_community_supply_chain', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('supplier_corrective_action', 'Supplier Corrective Action', 'Canonical evidence type for supplier corrective action.', 'record', 'social', 'human_rights_community_supply_chain', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('supply_chain_traceability', 'Supply Chain Traceability', 'Canonical evidence type for supply chain traceability.', 'composite', 'social', 'human_rights_community_supply_chain', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('community_impact_assessment', 'Community Impact Assessment', 'Canonical evidence type for community impact assessment.', 'record', 'social', 'human_rights_community_supply_chain', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('community_investment', 'Community Investment', 'Canonical evidence type for community investment.', 'composite', 'social', 'human_rights_community_supply_chain', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('local_hiring', 'Local Hiring', 'Canonical evidence type for local hiring.', 'composite', 'social', 'human_rights_community_supply_chain', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('local_procurement_spend', 'Local Procurement Spend', 'Canonical evidence type for local procurement spend.', 'metric', 'social', 'human_rights_community_supply_chain', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('indigenous_rights_assessment', 'Indigenous Rights Assessment', 'Canonical evidence type for indigenous rights assessment.', 'record', 'social', 'human_rights_community_supply_chain', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('free_prior_informed_consent', 'Free Prior Informed Consent', 'Canonical evidence type for free prior informed consent.', 'composite', 'social', 'human_rights_community_supply_chain', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('community_grievance', 'Community Grievance', 'Canonical evidence type for community grievance.', 'composite', 'social', 'human_rights_community_supply_chain', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('stakeholder_consultation', 'Stakeholder Consultation', 'Canonical evidence type for stakeholder consultation.', 'record', 'social', 'human_rights_community_supply_chain', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('access_affordability_measure', 'Access Affordability Measure', 'Canonical evidence type for access affordability measure.', 'composite', 'social', 'human_rights_community_supply_chain', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('inclusive_product_access', 'Inclusive Product Access', 'Canonical evidence type for inclusive product access.', 'composite', 'social', 'human_rights_community_supply_chain', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('just_transition_plan', 'Just Transition Plan', 'Canonical evidence type for just transition plan.', 'document', 'social', 'human_rights_community_supply_chain', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('board_composition', 'Board Composition', 'Canonical evidence type for board composition.', 'composite', 'governance', 'corporate_governance_ethics_compliance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('board_independence', 'Board Independence', 'Canonical evidence type for board independence.', 'composite', 'governance', 'corporate_governance_ethics_compliance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('board_diversity', 'Board Diversity', 'Canonical evidence type for board diversity.', 'metric', 'governance', 'corporate_governance_ethics_compliance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('board_skills_matrix', 'Board Skills Matrix', 'Canonical evidence type for board skills matrix.', 'record', 'governance', 'corporate_governance_ethics_compliance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('board_succession_plan', 'Board Succession Plan', 'Canonical evidence type for board succession plan.', 'document', 'governance', 'corporate_governance_ethics_compliance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('board_meeting_attendance', 'Board Meeting Attendance', 'Canonical evidence type for board meeting attendance.', 'metric', 'governance', 'corporate_governance_ethics_compliance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('committee_charter', 'Committee Charter', 'Canonical evidence type for committee charter.', 'document', 'governance', 'corporate_governance_ethics_compliance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('executive_compensation', 'Executive Compensation', 'Canonical evidence type for executive compensation.', 'composite', 'governance', 'corporate_governance_ethics_compliance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('esg_compensation_linkage', 'ESG Compensation Linkage', 'Canonical evidence type for esg compensation linkage.', 'composite', 'governance', 'corporate_governance_ethics_compliance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('shareholder_rights', 'Shareholder Rights', 'Canonical evidence type for shareholder rights.', 'composite', 'governance', 'corporate_governance_ethics_compliance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('shareholder_vote_record', 'Shareholder Vote Record', 'Canonical evidence type for shareholder vote record.', 'record', 'governance', 'corporate_governance_ethics_compliance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('minority_shareholder_protection', 'Minority Shareholder Protection', 'Canonical evidence type for minority shareholder protection.', 'composite', 'governance', 'corporate_governance_ethics_compliance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('conflict_of_interest_declaration', 'Conflict Of Interest Declaration', 'Canonical evidence type for conflict of interest declaration.', 'record', 'governance', 'corporate_governance_ethics_compliance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('conflict_of_interest_register', 'Conflict Of Interest Register', 'Canonical evidence type for conflict of interest register.', 'record', 'governance', 'corporate_governance_ethics_compliance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('anti_bribery_training', 'Anti Bribery Training', 'Canonical evidence type for anti bribery training.', 'record', 'governance', 'corporate_governance_ethics_compliance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('gifts_hospitality_register', 'Gifts Hospitality Register', 'Canonical evidence type for gifts hospitality register.', 'record', 'governance', 'corporate_governance_ethics_compliance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('corruption_bribery_incident', 'Corruption Bribery Incident', 'Canonical evidence type for corruption bribery incident.', 'event', 'governance', 'corporate_governance_ethics_compliance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('whistleblowing_report', 'Whistleblowing Report', 'Canonical evidence type for whistleblowing report.', 'document', 'governance', 'corporate_governance_ethics_compliance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('whistleblowing_case_resolution', 'Whistleblowing Case Resolution', 'Canonical evidence type for whistleblowing case resolution.', 'record', 'governance', 'corporate_governance_ethics_compliance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('compliance_breach', 'Compliance Breach', 'Canonical evidence type for compliance breach.', 'event', 'governance', 'corporate_governance_ethics_compliance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('regulatory_fine_or_sanction', 'Regulatory Fine Or Sanction', 'Canonical evidence type for regulatory fine or sanction.', 'composite', 'governance', 'corporate_governance_ethics_compliance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('lobbying_activity', 'Lobbying Activity', 'Canonical evidence type for lobbying activity.', 'composite', 'governance', 'corporate_governance_ethics_compliance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('political_contribution', 'Political Contribution', 'Canonical evidence type for political contribution.', 'composite', 'governance', 'corporate_governance_ethics_compliance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('ethics_training', 'Ethics Training', 'Canonical evidence type for ethics training.', 'record', 'governance', 'corporate_governance_ethics_compliance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('code_acknowledgement', 'Code Acknowledgement', 'Canonical evidence type for code acknowledgement.', 'record', 'governance', 'corporate_governance_ethics_compliance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('investigation_record', 'Investigation Record', 'Canonical evidence type for investigation record.', 'record', 'governance', 'corporate_governance_ethics_compliance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('disciplinary_action', 'Disciplinary Action', 'Canonical evidence type for disciplinary action.', 'record', 'governance', 'corporate_governance_ethics_compliance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('risk_register', 'Risk Register', 'Canonical evidence type for risk register.', 'record', 'governance', 'corporate_governance_ethics_compliance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('enterprise_risk_assessment', 'Enterprise Risk Assessment', 'Canonical evidence type for enterprise risk assessment.', 'record', 'governance', 'corporate_governance_ethics_compliance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('risk_mitigation_action', 'Risk Mitigation Action', 'Canonical evidence type for risk mitigation action.', 'record', 'governance', 'corporate_governance_ethics_compliance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('strategic_oversight_record', 'Strategic Oversight Record', 'Canonical evidence type for strategic oversight record.', 'record', 'governance', 'corporate_governance_ethics_compliance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('financial_statement', 'Financial Statement', 'Canonical evidence type for financial statement.', 'document', 'financial', 'accounting_audit_reporting_assurance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('audit_opinion', 'Audit Opinion', 'Canonical evidence type for audit opinion.', 'attestation', 'financial', 'accounting_audit_reporting_assurance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('financial_restatement', 'Financial Restatement', 'Canonical evidence type for financial restatement.', 'document', 'financial', 'accounting_audit_reporting_assurance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('internal_control_assessment', 'Internal Control Assessment', 'Canonical evidence type for internal control assessment.', 'record', 'financial', 'accounting_audit_reporting_assurance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('control_deficiency', 'Control Deficiency', 'Canonical evidence type for control deficiency.', 'composite', 'financial', 'accounting_audit_reporting_assurance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('financial_reconciliation', 'Financial Reconciliation', 'Canonical evidence type for financial reconciliation.', 'record', 'financial', 'accounting_audit_reporting_assurance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('esg_report', 'ESG Report', 'Canonical evidence type for esg report.', 'document', 'financial', 'accounting_audit_reporting_assurance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('sustainability_disclosure', 'Sustainability Disclosure', 'Canonical evidence type for sustainability disclosure.', 'composite', 'financial', 'accounting_audit_reporting_assurance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('materiality_assessment', 'Materiality Assessment', 'Canonical evidence type for materiality assessment.', 'record', 'financial', 'accounting_audit_reporting_assurance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('double_materiality_assessment', 'Double Materiality Assessment', 'Canonical evidence type for double materiality assessment.', 'record', 'financial', 'accounting_audit_reporting_assurance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('disclosure_assurance', 'Disclosure Assurance', 'Canonical evidence type for disclosure assurance.', 'attestation', 'financial', 'accounting_audit_reporting_assurance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('data_quality_assessment', 'Data Quality Assessment', 'Canonical evidence type for data quality assessment.', 'record', 'financial', 'accounting_audit_reporting_assurance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('data_lineage', 'Data Lineage', 'Canonical evidence type for data lineage.', 'composite', 'financial', 'accounting_audit_reporting_assurance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('reported_metric_reconciliation', 'Reported Metric Reconciliation', 'Canonical evidence type for reported metric reconciliation.', 'record', 'financial', 'accounting_audit_reporting_assurance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('management_representation', 'Management Representation', 'Canonical evidence type for management representation.', 'composite', 'financial', 'accounting_audit_reporting_assurance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('external_assurance_evidence', 'External Assurance Evidence', 'Canonical evidence type for external assurance evidence.', 'attestation', 'financial', 'accounting_audit_reporting_assurance', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('ai_model_inventory', 'AI Model Inventory', 'Canonical evidence type for ai model inventory.', 'composite', 'technology', 'data_ai_product_customer', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('ai_governance_assessment', 'AI Governance Assessment', 'Canonical evidence type for ai governance assessment.', 'record', 'technology', 'data_ai_product_customer', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('ai_output_validation', 'AI Output Validation', 'Canonical evidence type for ai output validation.', 'composite', 'technology', 'data_ai_product_customer', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('data_privacy_impact_assessment', 'Data Privacy Impact Assessment', 'Canonical evidence type for data privacy impact assessment.', 'record', 'technology', 'data_ai_product_customer', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('personal_data_inventory', 'Personal Data Inventory', 'Canonical evidence type for personal data inventory.', 'record', 'technology', 'data_ai_product_customer', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('data_breach_incident', 'Data Breach Incident', 'Canonical evidence type for data breach incident.', 'event', 'technology', 'data_ai_product_customer', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('data_subject_request', 'Data Subject Request', 'Canonical evidence type for data subject request.', 'composite', 'technology', 'data_ai_product_customer', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('cybersecurity_incident', 'Cybersecurity Incident', 'Canonical evidence type for cybersecurity incident.', 'event', 'technology', 'data_ai_product_customer', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('security_control_assessment', 'Security Control Assessment', 'Canonical evidence type for security control assessment.', 'record', 'technology', 'data_ai_product_customer', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('product_safety_test', 'Product Safety Test', 'Canonical evidence type for product safety test.', 'composite', 'technology', 'data_ai_product_customer', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('product_quality_test', 'Product Quality Test', 'Canonical evidence type for product quality test.', 'composite', 'technology', 'data_ai_product_customer', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('product_nonconformity', 'Product Nonconformity', 'Canonical evidence type for product nonconformity.', 'composite', 'technology', 'data_ai_product_customer', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('product_recall', 'Product Recall', 'Canonical evidence type for product recall.', 'composite', 'technology', 'data_ai_product_customer', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('customer_complaint', 'Customer Complaint', 'Canonical evidence type for customer complaint.', 'composite', 'technology', 'data_ai_product_customer', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('customer_safety_incident', 'Customer Safety Incident', 'Canonical evidence type for customer safety incident.', 'event', 'technology', 'data_ai_product_customer', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('product_label_review', 'Product Label Review', 'Canonical evidence type for product label review.', 'record', 'technology', 'data_ai_product_customer', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('marketing_claim_substantiation', 'Marketing Claim Substantiation', 'Canonical evidence type for marketing claim substantiation.', 'document', 'technology', 'data_ai_product_customer', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('green_claim_substantiation', 'Green Claim Substantiation', 'Canonical evidence type for green claim substantiation.', 'document', 'technology', 'data_ai_product_customer', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('customer_privacy_complaint', 'Customer Privacy Complaint', 'Canonical evidence type for customer privacy complaint.', 'composite', 'technology', 'data_ai_product_customer', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('innovation_project_assessment', 'Innovation Project Assessment', 'Canonical evidence type for innovation project assessment.', 'record', 'technology', 'data_ai_product_customer', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('sustainable_innovation_outcome', 'Sustainable Innovation Outcome', 'Canonical evidence type for sustainable innovation outcome.', 'composite', 'technology', 'data_ai_product_customer', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('procedure_execution_record', 'Procedure Execution Record', 'Canonical evidence type for procedure execution record.', 'record', 'cross_domain', 'procedure_incident_fines_due_diligence', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('procedure_control_checklist', 'Procedure Control Checklist', 'Canonical evidence type for procedure control checklist.', 'record', 'cross_domain', 'procedure_incident_fines_due_diligence', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('procedure_exception_record', 'Procedure Exception Record', 'Canonical evidence type for procedure exception record.', 'record', 'cross_domain', 'procedure_incident_fines_due_diligence', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('procedure_escalation_record', 'Procedure Escalation Record', 'Canonical evidence type for procedure escalation record.', 'record', 'cross_domain', 'procedure_incident_fines_due_diligence', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('procedure_output_record', 'Procedure Output Record', 'Canonical evidence type for procedure output record.', 'record', 'cross_domain', 'procedure_incident_fines_due_diligence', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('incident_record', 'Incident Record', 'Canonical evidence type for incident record.', 'record', 'cross_domain', 'procedure_incident_fines_due_diligence', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('incident_severity_assessment', 'Incident Severity Assessment', 'Canonical evidence type for incident severity assessment.', 'record', 'cross_domain', 'procedure_incident_fines_due_diligence', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('incident_chronology', 'Incident Chronology', 'Canonical evidence type for incident chronology.', 'composite', 'cross_domain', 'procedure_incident_fines_due_diligence', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('affected_parties_assessment', 'Affected Parties Assessment', 'Canonical evidence type for affected parties assessment.', 'record', 'cross_domain', 'procedure_incident_fines_due_diligence', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('regulatory_notification', 'Regulatory Notification', 'Canonical evidence type for regulatory notification.', 'record', 'cross_domain', 'procedure_incident_fines_due_diligence', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('incident_containment_action', 'Incident Containment Action', 'Canonical evidence type for incident containment action.', 'record', 'cross_domain', 'procedure_incident_fines_due_diligence', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('incident_root_cause_analysis', 'Incident Root Cause Analysis', 'Canonical evidence type for incident root cause analysis.', 'record', 'cross_domain', 'procedure_incident_fines_due_diligence', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('incident_remediation_action', 'Incident Remediation Action', 'Canonical evidence type for incident remediation action.', 'record', 'cross_domain', 'procedure_incident_fines_due_diligence', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('fine_decision', 'Fine Decision', 'Canonical evidence type for fine decision.', 'record', 'cross_domain', 'procedure_incident_fines_due_diligence', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('fine_legal_basis', 'Fine Legal Basis', 'Canonical evidence type for fine legal basis.', 'composite', 'cross_domain', 'procedure_incident_fines_due_diligence', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('fine_amount', 'Fine Amount', 'Canonical evidence type for fine amount.', 'metric', 'cross_domain', 'procedure_incident_fines_due_diligence', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('fine_payment_record', 'Fine Payment Record', 'Canonical evidence type for fine payment record.', 'record', 'cross_domain', 'procedure_incident_fines_due_diligence', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('fine_appeal_status', 'Fine Appeal Status', 'Canonical evidence type for fine appeal status.', 'composite', 'cross_domain', 'procedure_incident_fines_due_diligence', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('fine_materiality_assessment', 'Fine Materiality Assessment', 'Canonical evidence type for fine materiality assessment.', 'record', 'cross_domain', 'procedure_incident_fines_due_diligence', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('fine_remediation', 'Fine Remediation', 'Canonical evidence type for fine remediation.', 'record', 'cross_domain', 'procedure_incident_fines_due_diligence', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('value_chain_map', 'Value Chain Map', 'Canonical evidence type for value chain map.', 'record', 'cross_domain', 'procedure_incident_fines_due_diligence', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('due_diligence_scope', 'Due Diligence Scope', 'Canonical evidence type for due diligence scope.', 'composite', 'cross_domain', 'procedure_incident_fines_due_diligence', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('due_diligence_risk_assessment', 'Due Diligence Risk Assessment', 'Canonical evidence type for due diligence risk assessment.', 'record', 'cross_domain', 'procedure_incident_fines_due_diligence', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('risk_prioritisation', 'Risk Prioritisation', 'Canonical evidence type for risk prioritisation.', 'composite', 'cross_domain', 'procedure_incident_fines_due_diligence', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('prevention_action', 'Prevention Action', 'Canonical evidence type for prevention action.', 'record', 'cross_domain', 'procedure_incident_fines_due_diligence', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('mitigation_action', 'Mitigation Action', 'Canonical evidence type for mitigation action.', 'record', 'cross_domain', 'procedure_incident_fines_due_diligence', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('corrective_action', 'Corrective Action', 'Canonical evidence type for corrective action.', 'record', 'cross_domain', 'procedure_incident_fines_due_diligence', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('remedy_action', 'Remedy Action', 'Canonical evidence type for remedy action.', 'record', 'cross_domain', 'procedure_incident_fines_due_diligence', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('grievance_mechanism', 'Grievance Mechanism', 'Canonical evidence type for grievance mechanism.', 'composite', 'cross_domain', 'procedure_incident_fines_due_diligence', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('due_diligence_monitoring', 'Due Diligence Monitoring', 'Canonical evidence type for due diligence monitoring.', 'composite', 'cross_domain', 'procedure_incident_fines_due_diligence', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb),
('due_diligence_assurance', 'Due Diligence Assurance', 'Canonical evidence type for due diligence assurance.', 'attestation', 'cross_domain', 'procedure_incident_fines_due_diligence', 'unmapped', 'unmapped', true, 'active', '1.0.0', '{"seed":"template-library-v1","mapping_review_required":true}'::jsonb)
ON CONFLICT (evidence_key) DO NOTHING;

-- Register this table in ZAYAZ metadata when the table registry is available.
DO $$
BEGIN
IF to_regclass('core_metadata.table_registry') IS NOT NULL THEN
EXECUTE $sql$
INSERT INTO core_metadata.table_registry (
schema_name,
table_name,
table_description,
business_owner,
technical_owner,
data_steward,
domain,
system_of_record,
criticality,
classification,
status
)
VALUES (
'core_evidence',
'evidence_type',
'Canonical ZAYAZ evidence vocabulary and semantic registry.',
'Governance / Assurance',
'Platform Engineering',
'Evidence Registry Steward',
'cross_domain',
true,
'high',
'internal',
'active'
)
ON CONFLICT (schema_name, table_name) DO NOTHING
$sql$;
END IF;
END;
$$;

-- Conditional least-privilege grants. These execute only if the roles exist.
DO $$
BEGIN
IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'zayaz_app') THEN
GRANT USAGE ON SCHEMA core_evidence TO zayaz_app;
GRANT SELECT, INSERT, UPDATE, DELETE ON core_evidence.evidence_type TO zayaz_app;
END IF;

IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'zayaz_readonly') THEN
GRANT USAGE ON SCHEMA core_evidence TO zayaz_readonly;
GRANT SELECT ON core_evidence.evidence_type TO zayaz_readonly;
END IF;

IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'zayaz_analytics') THEN
GRANT USAGE ON SCHEMA core_evidence TO zayaz_analytics;
GRANT SELECT ON core_evidence.evidence_type TO zayaz_analytics;
END IF;

IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'zayaz_verifier_api') THEN
GRANT USAGE ON SCHEMA core_evidence TO zayaz_verifier_api;
GRANT SELECT ON core_evidence.evidence_type TO zayaz_verifier_api;
END IF;
END;
$$;

COMMIT;

-- Verification queries:
-- SELECT count(*) FROM core_evidence.evidence_type;
-- SELECT domain, category, count(*) FROM core_evidence.evidence_type GROUP BY 1,2 ORDER BY 1,2;
-- SELECT evidence_class, count(*) FROM core_evidence.evidence_type GROUP BY 1 ORDER BY 2 DESC;
-- SELECT mapping_status, count(*) FROM core_evidence.evidence_type GROUP BY 1;

core_evidence.evidence_source_binding.sql

core_evidence.evidence_source_binding.sqlGitHub ↗
-- ZAYAZ Evidence Registry - evidence_source_binding
-- PostgreSQL / Aurora PostgreSQL
--
-- Architectural intent:
-- * Maps one canonical evidence type to one or more physical/logical evidence sources.
-- * Templates reference evidence keys, never CMIDs or tenant-specific records directly.
-- * Metric bindings reference canonical CMIDs in SSSR. Runtime client/entity selection is
-- handled separately through evidence dimensions and the Evidence Context Resolver.
-- * The table is domain-neutral: a source may be a metric, document, record, attestation,
-- artifact, calculation, event, registry entry, external source, or another evidence type.
-- * No physical database row identifiers belong here. source_ref must be a stable identifier.
-- * Admin UI edits are expected; this table is operational state, not a generated snapshot.

BEGIN;

CREATE SCHEMA IF NOT EXISTS core_evidence AUTHORIZATION zayaz_admin;

DO $$
BEGIN
IF to_regclass('core_evidence.evidence_type') IS NULL THEN
RAISE EXCEPTION
'core_evidence.evidence_type must exist before creating evidence_source_binding';
END IF;
END;
$$;

CREATE TABLE IF NOT EXISTS core_evidence.evidence_source_binding (
evidence_source_binding_id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
evidence_type_id uuid NOT NULL,

-- Stable source classification and identifier.
source_kind text NOT NULL,
source_namespace text NOT NULL,
source_ref text NOT NULL,
source_label text,
source_role text,

-- Supports multi-source evidence sets and controlled composition.
binding_group text NOT NULL DEFAULT 'default',
requirement text NOT NULL DEFAULT 'required',
priority integer NOT NULL DEFAULT 100,
weight numeric(18,8),

-- Trust / assurance expectations for this specific source.
is_authoritative boolean NOT NULL DEFAULT false,
verification_requirement text NOT NULL DEFAULT 'none',
minimum_confidence numeric(5,4),

-- Context and resolver behavior that apply only to this binding.
applicability jsonb NOT NULL DEFAULT '{}'::jsonb,
resolution_config jsonb NOT NULL DEFAULT '{}'::jsonb,

-- Effective dating allows mappings to change without changing the evidence semantic key.
effective_from timestamptz,
effective_to timestamptz,

status text NOT NULL DEFAULT 'draft',
version text NOT NULL DEFAULT '1.0.0',
mapping_rationale text,

created_by text,
updated_by text,
approved_by text,
approved_at timestamptz,

metadata jsonb NOT NULL DEFAULT '{}'::jsonb,

created_at timestamptz NOT NULL DEFAULT now(),
updated_at timestamptz NOT NULL DEFAULT now(),

CONSTRAINT fk_evidence_source_binding_type
FOREIGN KEY (evidence_type_id)
REFERENCES core_evidence.evidence_type (evidence_type_id)
ON UPDATE CASCADE
ON DELETE RESTRICT,

CONSTRAINT chk_evidence_source_binding_kind
CHECK (source_kind IN (
'metric',
'evidence',
'document',
'record',
'attestation',
'artifact',
'calculation',
'event',
'registry',
'external_source'
)),

CONSTRAINT chk_evidence_source_binding_namespace
CHECK (source_namespace ~ '^[a-z][a-z0-9_.:-]*$'),

CONSTRAINT chk_evidence_source_binding_ref_not_blank
CHECK (btrim(source_ref) <> ''),

CONSTRAINT chk_evidence_source_binding_group
CHECK (binding_group ~ '^[a-z][a-z0-9_]*$'),

CONSTRAINT chk_evidence_source_binding_requirement
CHECK (requirement IN ('required','optional','supporting','fallback')),

CONSTRAINT chk_evidence_source_binding_priority
CHECK (priority >= 0),

CONSTRAINT chk_evidence_source_binding_weight
CHECK (weight IS NULL OR weight >= 0),

CONSTRAINT chk_evidence_source_binding_verification
CHECK (verification_requirement IN ('none','preferred','required')),

CONSTRAINT chk_evidence_source_binding_confidence
CHECK (minimum_confidence IS NULL OR
(minimum_confidence >= 0 AND minimum_confidence <= 1)),

CONSTRAINT chk_evidence_source_binding_effective_dates
CHECK (effective_to IS NULL OR effective_from IS NULL OR effective_to > effective_from),

CONSTRAINT chk_evidence_source_binding_status
CHECK (status IN ('draft','active','deprecated','retired')),

CONSTRAINT chk_evidence_source_binding_version
CHECK (version ~ '^[0-9]+\.[0-9]+\.[0-9]+$'),

CONSTRAINT chk_evidence_source_binding_approval
CHECK (approved_at IS NULL OR approved_by IS NOT NULL),

-- Canonical CMID syntax from the ZAYAZ CMID specification.
CONSTRAINT chk_evidence_source_binding_metric_ref
CHECK (
source_kind <> 'metric'
OR source_ref ~ '^CMID-ZYZ-[0-9]{6}$'
),

-- Nested evidence sources refer to semantic evidence keys, not CMIDs.
CONSTRAINT chk_evidence_source_binding_evidence_ref
CHECK (
source_kind <> 'evidence'
OR source_ref ~ '^[a-z][a-z0-9_]*$'
)
);

COMMENT ON TABLE core_evidence.evidence_source_binding IS
'Governed mapping from a canonical evidence type to one or more stable evidence sources such as SSSR CMIDs, artifacts, records, attestations or nested evidence types.';

COMMENT ON COLUMN core_evidence.evidence_source_binding.source_kind IS
'Logical class of the mapped source. metric means source_ref is a canonical CMID; evidence means source_ref is another evidence_key.';
COMMENT ON COLUMN core_evidence.evidence_source_binding.source_namespace IS
'Registry/system namespace that owns source_ref, e.g. sssr, core_evidence, zar, core_data, external.';
COMMENT ON COLUMN core_evidence.evidence_source_binding.source_ref IS
'Stable source identifier. Never store tenant-specific physical row numbers here.';
COMMENT ON COLUMN core_evidence.evidence_source_binding.source_role IS
'Semantic role inside the evidence set, e.g. stationary_combustion, audit_opinion, primary_invoice.';
COMMENT ON COLUMN core_evidence.evidence_source_binding.binding_group IS
'Named logical group for sources that participate together in a more complex evidence resolution contract.';
COMMENT ON COLUMN core_evidence.evidence_source_binding.requirement IS
'Whether this source is required, optional, supporting or a fallback within the evidence mapping.';
COMMENT ON COLUMN core_evidence.evidence_source_binding.priority IS
'Lower values are evaluated first when the evidence resolution mode uses ordering or preference.';
COMMENT ON COLUMN core_evidence.evidence_source_binding.weight IS
'Optional numeric weight for aggregate or weighted evidence-resolution strategies.';
COMMENT ON COLUMN core_evidence.evidence_source_binding.applicability IS
'Governed applicability predicates such as framework, jurisdiction, industry, product class or template context.';
COMMENT ON COLUMN core_evidence.evidence_source_binding.resolution_config IS
'Binding-specific resolver configuration; use only for behavior that cannot be represented by normalized columns.';

-- Prevent duplicate active mappings while allowing draft/history rows to coexist.
CREATE UNIQUE INDEX IF NOT EXISTS uq_evidence_source_binding_active
ON core_evidence.evidence_source_binding (
evidence_type_id,
source_kind,
source_namespace,
source_ref,
COALESCE(source_role, ''),
binding_group
)
WHERE status = 'active';

CREATE INDEX IF NOT EXISTS idx_evidence_source_binding_type
ON core_evidence.evidence_source_binding (evidence_type_id, status, priority);

CREATE INDEX IF NOT EXISTS idx_evidence_source_binding_source
ON core_evidence.evidence_source_binding (source_kind, source_namespace, source_ref);

CREATE INDEX IF NOT EXISTS idx_evidence_source_binding_group
ON core_evidence.evidence_source_binding (evidence_type_id, binding_group, priority);

CREATE INDEX IF NOT EXISTS idx_evidence_source_binding_effective
ON core_evidence.evidence_source_binding (effective_from, effective_to)
WHERE status = 'active';

CREATE INDEX IF NOT EXISTS idx_evidence_source_binding_applicability_gin
ON core_evidence.evidence_source_binding USING gin (applicability);

CREATE INDEX IF NOT EXISTS idx_evidence_source_binding_resolution_config_gin
ON core_evidence.evidence_source_binding USING gin (resolution_config);

CREATE INDEX IF NOT EXISTS idx_evidence_source_binding_metadata_gin
ON core_evidence.evidence_source_binding USING gin (metadata);

-- Reuse the shared timestamp trigger function created by evidence_type bootstrap.
CREATE OR REPLACE FUNCTION core_evidence.set_updated_at()
RETURNS trigger
LANGUAGE plpgsql
AS $$
BEGIN
NEW.updated_at = now();
RETURN NEW;
END;
$$;

DROP TRIGGER IF EXISTS trg_evidence_source_binding_set_updated_at
ON core_evidence.evidence_source_binding;

CREATE TRIGGER trg_evidence_source_binding_set_updated_at
BEFORE UPDATE ON core_evidence.evidence_source_binding
FOR EACH ROW
EXECUTE FUNCTION core_evidence.set_updated_at();

-- Validate nested evidence references against the canonical evidence vocabulary and
-- protect against direct self-reference. Longer dependency cycles should be checked by
-- the Evidence Registry validator / VW-DL because they span multiple rows.
CREATE OR REPLACE FUNCTION core_evidence.validate_evidence_source_binding()
RETURNS trigger
LANGUAGE plpgsql
AS $$
DECLARE
owning_evidence_key text;
BEGIN
IF NEW.source_kind = 'evidence' THEN
SELECT evidence_key
INTO owning_evidence_key
FROM core_evidence.evidence_type
WHERE evidence_type_id = NEW.evidence_type_id;

IF NEW.source_ref = owning_evidence_key THEN
RAISE EXCEPTION
'Evidence type % cannot bind directly to itself', NEW.source_ref;
END IF;

IF NOT EXISTS (
SELECT 1
FROM core_evidence.evidence_type
WHERE evidence_key = NEW.source_ref
AND status IN ('draft','active')
) THEN
RAISE EXCEPTION
'Nested evidence source_ref % does not resolve to a draft/active evidence_type',
NEW.source_ref;
END IF;
END IF;

RETURN NEW;
END;
$$;

DROP TRIGGER IF EXISTS trg_validate_evidence_source_binding
ON core_evidence.evidence_source_binding;

CREATE TRIGGER trg_validate_evidence_source_binding
BEFORE INSERT OR UPDATE OF evidence_type_id, source_kind, source_ref
ON core_evidence.evidence_source_binding
FOR EACH ROW
EXECUTE FUNCTION core_evidence.validate_evidence_source_binding();

-- Register this table in ZAYAZ metadata when the table registry is available.
DO $$
BEGIN
IF to_regclass('core_metadata.table_registry') IS NOT NULL THEN
EXECUTE $sql$
INSERT INTO core_metadata.table_registry (
schema_name,
table_name,
table_description,
business_owner,
technical_owner,
data_steward,
domain,
system_of_record,
criticality,
classification,
status
)
VALUES (
'core_evidence',
'evidence_source_binding',
'Governed mappings from semantic evidence types to SSSR CMIDs and other stable evidence sources.',
'Governance / Assurance',
'Platform Engineering',
'Evidence Registry Steward',
'cross_domain',
true,
'high',
'internal',
'active'
)
ON CONFLICT (schema_name, table_name) DO NOTHING
$sql$;
END IF;
END;
$$;

-- Conditional least-privilege grants.
DO $$
BEGIN
IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'zayaz_app') THEN
GRANT USAGE ON SCHEMA core_evidence TO zayaz_app;
GRANT SELECT, INSERT, UPDATE, DELETE
ON core_evidence.evidence_source_binding TO zayaz_app;
END IF;

IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'zayaz_readonly') THEN
GRANT USAGE ON SCHEMA core_evidence TO zayaz_readonly;
GRANT SELECT ON core_evidence.evidence_source_binding TO zayaz_readonly;
END IF;

IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'zayaz_analytics') THEN
GRANT USAGE ON SCHEMA core_evidence TO zayaz_analytics;
GRANT SELECT ON core_evidence.evidence_source_binding TO zayaz_analytics;
END IF;

IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'zayaz_verifier_api') THEN
GRANT USAGE ON SCHEMA core_evidence TO zayaz_verifier_api;
GRANT SELECT ON core_evidence.evidence_source_binding TO zayaz_verifier_api;
END IF;
END;
$$;

COMMIT;

-- Example Admin UI mapping (do not run until the CMID exists in SSSR):
--
-- INSERT INTO core_evidence.evidence_source_binding (
-- evidence_type_id, source_kind, source_namespace, source_ref,
-- source_role, requirement, priority, is_authoritative, status
-- )
-- SELECT evidence_type_id, 'metric', 'sssr', 'CMID-ZYZ-001288',
-- 'stationary_combustion', 'required', 10, true, 'active'
-- FROM core_evidence.evidence_type
-- WHERE evidence_key = 'scope_1_emissions';
--
-- Verification queries:
-- SELECT et.evidence_key, b.*
-- FROM core_evidence.evidence_source_binding b
-- JOIN core_evidence.evidence_type et USING (evidence_type_id)
-- ORDER BY et.evidence_key, b.binding_group, b.priority;

core_evidence.evidence_requirement.sql

core_evidence.evidence_requirement.sqlGitHub ↗
-- ZAYAZ Evidence Registry - evidence_requirement
-- PostgreSQL / Aurora PostgreSQL
--
-- Purpose:
-- * Compiled runtime projection of template frontmatter evidence_requirements[].
-- * Provides a deterministic document-local requirement key -> global evidence_type mapping.
-- * Feeds the Evidence Admin UI requirement queue.
-- * The canonical authoring source is template MDX/frontmatter; this table is synchronized
-- by build/publish tooling and must not become a second template-authoring surface.
-- * No tenant/client identity is stored here.

BEGIN;

CREATE SCHEMA IF NOT EXISTS core_evidence AUTHORIZATION zayaz_admin;

DO $$
BEGIN
IF to_regclass('core_evidence.evidence_type') IS NULL THEN
RAISE EXCEPTION
'core_evidence.evidence_type must exist before creating evidence_requirement';
END IF;
END;
$$;

CREATE TABLE IF NOT EXISTS core_evidence.evidence_requirement (
evidence_requirement_id uuid PRIMARY KEY DEFAULT gen_random_uuid(),

-- Constitutional/template identity.
document_id text NOT NULL,
source_file text,
template_id text,
template_kind text,
template_version text,

-- Document-local stable identifier used by <AuditEvidenceLink evidence="..." />.
requirement_key text NOT NULL,

-- Global semantic evidence concept.
evidence_type_id uuid NOT NULL,

label text,
description text,
required boolean NOT NULL DEFAULT true,

-- Template-local resolution/context/assurance declarations.
context jsonb NOT NULL DEFAULT '{}'::jsonb,
resolution jsonb NOT NULL DEFAULT '{}'::jsonb,
assurance jsonb NOT NULL DEFAULT '{}'::jsonb,
client_override jsonb NOT NULL DEFAULT '{}'::jsonb,
ui jsonb NOT NULL DEFAULT '{}'::jsonb,

-- Frontmatter synchronization/provenance.
source_origin text NOT NULL DEFAULT 'template_frontmatter',
source_hash text,
source_revision text,
synced_at timestamptz NOT NULL DEFAULT now(),

-- Admin workflow. This is triage state, not evidence mapping state.
triage_status text NOT NULL DEFAULT 'pending_review',
triage_notes text,
assigned_to text,
reviewed_by text,
reviewed_at timestamptz,

status text NOT NULL DEFAULT 'active',
metadata jsonb NOT NULL DEFAULT '{}'::jsonb,

created_at timestamptz NOT NULL DEFAULT now(),
updated_at timestamptz NOT NULL DEFAULT now(),

CONSTRAINT fk_evidence_requirement_type
FOREIGN KEY (evidence_type_id)
REFERENCES core_evidence.evidence_type (evidence_type_id)
ON UPDATE CASCADE
ON DELETE RESTRICT,

CONSTRAINT uq_evidence_requirement_document_key
UNIQUE (document_id, requirement_key),

CONSTRAINT chk_evidence_requirement_document_id
CHECK (btrim(document_id) <> ''),

CONSTRAINT chk_evidence_requirement_key
CHECK (requirement_key ~ '^[a-z][a-z0-9_]*$'),

CONSTRAINT chk_evidence_requirement_template_version
CHECK (
template_version IS NULL
OR template_version ~ '^[0-9]+\.[0-9]+\.[0-9]+$'
),

CONSTRAINT chk_evidence_requirement_source_origin
CHECK (source_origin IN (
'template_frontmatter',
'generated_template',
'system',
'import'
)),

CONSTRAINT chk_evidence_requirement_triage_status
CHECK (triage_status IN (
'pending_review',
'in_progress',
'resolved',
'blocked',
'waived'
)),

CONSTRAINT chk_evidence_requirement_review
CHECK (reviewed_at IS NULL OR reviewed_by IS NOT NULL),

CONSTRAINT chk_evidence_requirement_status
CHECK (status IN ('active','deprecated','retired'))
);

COMMENT ON TABLE core_evidence.evidence_requirement IS
'Compiled document-local evidence requirements synchronized from template frontmatter; maps AuditEvidenceLink requirement keys to canonical evidence types and feeds Admin UI triage.';

COMMENT ON COLUMN core_evidence.evidence_requirement.requirement_key IS
'Document-local key referenced by <AuditEvidenceLink evidence="..." />. Unique within document_id, not globally.';
COMMENT ON COLUMN core_evidence.evidence_requirement.evidence_type_id IS
'Global semantic evidence concept resolved through core_evidence.evidence_type.';
COMMENT ON COLUMN core_evidence.evidence_requirement.context IS
'Template-local context declaration such as current_document_period, facility scope or supplier scope. Tenant identity is not stored here.';
COMMENT ON COLUMN core_evidence.evidence_requirement.triage_status IS
'Admin workflow state for reviewing/sorting template requirements. Mapping readiness is derived from the linked evidence_type and its active bindings.';
COMMENT ON COLUMN core_evidence.evidence_requirement.source_hash IS
'Optional hash of the canonical frontmatter requirement block used to detect source drift.';
COMMENT ON COLUMN core_evidence.evidence_requirement.source_revision IS
'Optional Git commit/revision/build identifier from which this requirement was synchronized.';

CREATE INDEX IF NOT EXISTS idx_evidence_requirement_type
ON core_evidence.evidence_requirement (evidence_type_id, status);
CREATE INDEX IF NOT EXISTS idx_evidence_requirement_document
ON core_evidence.evidence_requirement (document_id, status);
CREATE INDEX IF NOT EXISTS idx_evidence_requirement_triage
ON core_evidence.evidence_requirement (triage_status, status);
CREATE INDEX IF NOT EXISTS idx_evidence_requirement_template
ON core_evidence.evidence_requirement (template_kind, template_id);
CREATE INDEX IF NOT EXISTS idx_evidence_requirement_context_gin
ON core_evidence.evidence_requirement USING gin (context);
CREATE INDEX IF NOT EXISTS idx_evidence_requirement_resolution_gin
ON core_evidence.evidence_requirement USING gin (resolution);
CREATE INDEX IF NOT EXISTS idx_evidence_requirement_assurance_gin
ON core_evidence.evidence_requirement USING gin (assurance);
CREATE INDEX IF NOT EXISTS idx_evidence_requirement_metadata_gin
ON core_evidence.evidence_requirement USING gin (metadata);

CREATE OR REPLACE FUNCTION core_evidence.set_updated_at()
RETURNS trigger
LANGUAGE plpgsql
AS $$
BEGIN
NEW.updated_at = now();
RETURN NEW;
END;
$$;

DROP TRIGGER IF EXISTS trg_evidence_requirement_set_updated_at
ON core_evidence.evidence_requirement;
CREATE TRIGGER trg_evidence_requirement_set_updated_at
BEFORE UPDATE ON core_evidence.evidence_requirement
FOR EACH ROW
EXECUTE FUNCTION core_evidence.set_updated_at();

-- Admin UI queue. This view is created only when the source/dimension tables exist.
DO $$
BEGIN
IF to_regclass('core_evidence.evidence_source_binding') IS NOT NULL
AND to_regclass('core_evidence.evidence_dimension') IS NOT NULL THEN
EXECUTE $view$
CREATE OR REPLACE VIEW core_evidence.evidence_requirement_admin_queue AS
SELECT
er.evidence_requirement_id,
er.document_id,
er.source_file,
er.template_id,
er.template_kind,
er.template_version,
er.requirement_key,
er.label,
er.required,
er.triage_status,
er.assigned_to,
er.status AS requirement_status,

et.evidence_key,
et.canonical_name AS evidence_type_name,
et.evidence_class,
et.domain,
et.category,
et.default_resolution_mode,
et.mapping_status AS evidence_mapping_status,
et.status AS evidence_type_status,

COALESCE(src.active_source_count, 0) AS active_source_count,
COALESCE(dim.active_dimension_count, 0) AS active_dimension_count,
COALESCE(dim.required_dimension_count, 0) AS required_dimension_count,

CASE
WHEN er.status <> 'active' THEN 'not_active'
WHEN et.status NOT IN ('active','draft') THEN 'evidence_type_not_active'
WHEN COALESCE(src.active_source_count, 0) = 0 THEN 'needs_source_mapping'
WHEN et.mapping_status IN ('unmapped','partial') THEN 'needs_mapping_review'
WHEN et.mapping_status = 'mapped' THEN 'needs_validation'
WHEN et.mapping_status = 'validated' THEN 'ready'
ELSE 'review'
END AS readiness_status,

er.synced_at,
er.updated_at
FROM core_evidence.evidence_requirement er
JOIN core_evidence.evidence_type et
ON et.evidence_type_id = er.evidence_type_id
LEFT JOIN LATERAL (
SELECT count(*)::integer AS active_source_count
FROM core_evidence.evidence_source_binding esb
WHERE esb.evidence_type_id = er.evidence_type_id
AND esb.status = 'active'
AND (esb.effective_from IS NULL OR esb.effective_from <= now())
AND (esb.effective_to IS NULL OR esb.effective_to > now())
) src ON true
LEFT JOIN LATERAL (
SELECT
count(*)::integer AS active_dimension_count,
count(*) FILTER (WHERE ed.requirement = 'required')::integer AS required_dimension_count
FROM core_evidence.evidence_dimension ed
WHERE ed.evidence_type_id = er.evidence_type_id
AND ed.status = 'active'
) dim ON true
$view$;
END IF;
END;
$$;

-- Metadata registration when available.
DO $$
BEGIN
IF to_regclass('core_metadata.table_registry') IS NOT NULL THEN
EXECUTE $sql$
INSERT INTO core_metadata.table_registry (
schema_name, table_name, table_description,
business_owner, technical_owner, data_steward,
domain, system_of_record, criticality, classification, status
)
VALUES (
'core_evidence',
'evidence_requirement',
'Compiled document-local evidence requirements synchronized from governed template frontmatter.',
'Governance / Assurance',
'Platform Engineering',
'Evidence Registry Steward',
'cross_domain',
true,
'high',
'internal',
'active'
)
ON CONFLICT (schema_name, table_name) DO NOTHING
$sql$;
END IF;
END;
$$;

-- Conditional least-privilege grants.
DO $$
BEGIN
IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'zayaz_app') THEN
GRANT USAGE ON SCHEMA core_evidence TO zayaz_app;
GRANT SELECT, INSERT, UPDATE, DELETE
ON core_evidence.evidence_requirement TO zayaz_app;
IF to_regclass('core_evidence.evidence_requirement_admin_queue') IS NOT NULL THEN
GRANT SELECT ON core_evidence.evidence_requirement_admin_queue TO zayaz_app;
END IF;
END IF;

IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'zayaz_readonly') THEN
GRANT USAGE ON SCHEMA core_evidence TO zayaz_readonly;
GRANT SELECT ON core_evidence.evidence_requirement TO zayaz_readonly;
IF to_regclass('core_evidence.evidence_requirement_admin_queue') IS NOT NULL THEN
GRANT SELECT ON core_evidence.evidence_requirement_admin_queue TO zayaz_readonly;
END IF;
END IF;

IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'zayaz_analytics') THEN
GRANT USAGE ON SCHEMA core_evidence TO zayaz_analytics;
GRANT SELECT ON core_evidence.evidence_requirement TO zayaz_analytics;
IF to_regclass('core_evidence.evidence_requirement_admin_queue') IS NOT NULL THEN
GRANT SELECT ON core_evidence.evidence_requirement_admin_queue TO zayaz_analytics;
END IF;
END IF;

IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'zayaz_verifier_api') THEN
GRANT USAGE ON SCHEMA core_evidence TO zayaz_verifier_api;
GRANT SELECT ON core_evidence.evidence_requirement TO zayaz_verifier_api;
END IF;
END;
$$;

COMMIT;

-- Recommended compiler/synchronizer behavior:
-- 1. Parse evidence_requirements[] from canonical MDX frontmatter.
-- 2. Resolve evidence_type by evidence_key.
-- 3. UPSERT on (document_id, requirement_key).
-- 4. Preserve triage_status/notes/assignment unless the requirement is deleted or materially changed.
-- 5. Mark requirements removed from the source template as deprecated; do not hard-delete history.

It gives us:

Template MDX

evidence_requirements[]
↓ sync/compiler
core_evidence.evidence_requirement

Admin requirement queue

For example:

YAML

evidence_requirements:
- id: current_ghg_inventory
evidence_type: ghg_inventory
required: true

becomes conceptually:

document_id       policy-env-climate-change
requirement_key current_ghg_inventory
evidence_type ghg_inventory
required true

The followng Admin workflow fields are included:

triage_status
triage_notes
assigned_to
reviewed_by
reviewed_at

So new template requirements can automatically appear as:

PENDING REVIEW
NEEDS SOURCE MAPPING
NEEDS MAPPING REVIEW
NEEDS VALIDATION
READY

A view is also included:

core_evidence.evidence_requirement_admin_queue

which joins the requirement with its global evidence type and counts active source mappings/dimensions. The UI therefore doesn't need to infer readiness itself.

One important separation:

triage_status

means:

What is the Admin team doing with this requirement?

while:

readiness_status

is derived and means:

Is the underlying Evidence Registry technically ready to resolve it?

That distinction is useful.


core_evidence.evidence_source_dimension_binding.sql

core_evidence.evidence_source_dimension_binding.sqlGitHub ↗
-- ZAYAZ Evidence Registry - evidence_source_dimension_binding
-- PostgreSQL / Aurora PostgreSQL
--
-- Purpose:
-- * Maps an evidence source to the source-side field/attribute used to satisfy a
-- normalized evidence_dimension.
-- * Enables deterministic observation queries without hard-coded SQL column names
-- in templates or resolver code.
-- * For SSSR-backed table columns, source_dimension_kind='metric' and
-- source_dimension_ref is the CMID of the dimension/filter column.
--
-- IMPORTANT TENANCY BOUNDARY:
-- * The client E-C-O Number is normally NOT an evidence dimension and is NOT mapped here.
-- * Tenant identity is established before evidence resolution from authenticated session/
-- authorization context (or an auditor's authorized selected client).
-- * Only if a business evidence source genuinely has an entity/sub-entity dimension
-- inside the already-authorized tenant scope should an entity dimension be represented.
--
-- Example:
-- Evidence source value: CMID-ZYZ-001288 (stationary combustion emissions)
-- reporting_period dimension -> CMID-ZYZ-002921 (reporting year/period field)
-- facility dimension -> CMID-ZYZ-006322 (facility identifier field)

BEGIN;

CREATE SCHEMA IF NOT EXISTS core_evidence AUTHORIZATION zayaz_admin;

DO $$
BEGIN
IF to_regclass('core_evidence.evidence_source_binding') IS NULL THEN
RAISE EXCEPTION
'core_evidence.evidence_source_binding must exist before creating evidence_source_dimension_binding';
END IF;

IF to_regclass('core_evidence.evidence_dimension') IS NULL THEN
RAISE EXCEPTION
'core_evidence.evidence_dimension must exist before creating evidence_source_dimension_binding';
END IF;
END;
$$;

CREATE TABLE IF NOT EXISTS core_evidence.evidence_source_dimension_binding (
evidence_source_dimension_binding_id uuid PRIMARY KEY DEFAULT gen_random_uuid(),

evidence_source_binding_id uuid NOT NULL,
evidence_dimension_id uuid NOT NULL,

-- How the source itself exposes this dimension.
source_dimension_kind text NOT NULL,
source_dimension_namespace text NOT NULL,
source_dimension_ref text NOT NULL,
source_dimension_label text,

-- How the resolved runtime value is applied to the physical/logical source.
query_role text NOT NULL DEFAULT 'filter',
match_operator text,
requirement text NOT NULL DEFAULT 'required',
resolution_order integer NOT NULL DEFAULT 100,

-- Optional controlled transforms; avoid arbitrary executable code.
value_transform jsonb NOT NULL DEFAULT '{}'::jsonb,
source_value_config jsonb NOT NULL DEFAULT '{}'::jsonb,

effective_from timestamptz,
effective_to timestamptz,

status text NOT NULL DEFAULT 'draft',
version text NOT NULL DEFAULT '1.0.0',

mapping_rationale text,
created_by text,
updated_by text,
approved_by text,
approved_at timestamptz,

metadata jsonb NOT NULL DEFAULT '{}'::jsonb,

created_at timestamptz NOT NULL DEFAULT now(),
updated_at timestamptz NOT NULL DEFAULT now(),

CONSTRAINT fk_evidence_source_dimension_binding_source
FOREIGN KEY (evidence_source_binding_id)
REFERENCES core_evidence.evidence_source_binding (evidence_source_binding_id)
ON UPDATE CASCADE
ON DELETE CASCADE,

CONSTRAINT fk_evidence_source_dimension_binding_dimension
FOREIGN KEY (evidence_dimension_id)
REFERENCES core_evidence.evidence_dimension (evidence_dimension_id)
ON UPDATE CASCADE
ON DELETE RESTRICT,

CONSTRAINT chk_evidence_source_dimension_kind
CHECK (source_dimension_kind IN (
'metric',
'field',
'attribute',
'json_path',
'registry',
'derived',
'constant'
)),

CONSTRAINT chk_evidence_source_dimension_namespace
CHECK (source_dimension_namespace ~ '^[a-z][a-z0-9_.:-]*$'),

CONSTRAINT chk_evidence_source_dimension_ref
CHECK (btrim(source_dimension_ref) <> ''),

CONSTRAINT chk_evidence_source_dimension_metric_ref
CHECK (
source_dimension_kind <> 'metric'
OR source_dimension_ref ~ '^CMID-ZYZ-[0-9]{6}$'
),

CONSTRAINT chk_evidence_source_dimension_query_role
CHECK (query_role IN (
'filter',
'partition',
'selector',
'join',
'grouping'
)),

CONSTRAINT chk_evidence_source_dimension_match_operator
CHECK (
match_operator IS NULL
OR match_operator IN (
'exact',
'contains',
'overlaps',
'within',
'ancestor',
'descendant',
'any'
)
),

CONSTRAINT chk_evidence_source_dimension_requirement
CHECK (requirement IN ('required','optional','conditional')),

CONSTRAINT chk_evidence_source_dimension_resolution_order
CHECK (resolution_order >= 0),

CONSTRAINT chk_evidence_source_dimension_effective_dates
CHECK (
effective_to IS NULL
OR effective_from IS NULL
OR effective_to > effective_from
),

CONSTRAINT chk_evidence_source_dimension_status
CHECK (status IN ('draft','active','deprecated','retired')),

CONSTRAINT chk_evidence_source_dimension_version
CHECK (version ~ '^[0-9]+\.[0-9]+\.[0-9]+$'),

CONSTRAINT chk_evidence_source_dimension_approval
CHECK (approved_at IS NULL OR approved_by IS NOT NULL)
);

COMMENT ON TABLE core_evidence.evidence_source_dimension_binding IS
'Governed mapping from normalized evidence dimensions to source-side fields/attributes used by the deterministic Evidence Context Resolver.';

COMMENT ON COLUMN core_evidence.evidence_source_dimension_binding.source_dimension_kind IS
'metric means source_dimension_ref is a CMID for the source-side dimension/filter column; other kinds support documents, records, JSON and non-SSSR sources.';
COMMENT ON COLUMN core_evidence.evidence_source_dimension_binding.query_role IS
'How the source dimension participates in the query: filter, partition, selector, join or grouping.';
COMMENT ON COLUMN core_evidence.evidence_source_dimension_binding.match_operator IS
'Optional source-specific override. When NULL, the resolver uses evidence_dimension.match_operator.';
COMMENT ON COLUMN core_evidence.evidence_source_dimension_binding.value_transform IS
'Declarative governed transformation of the runtime dimension value before source comparison; must not contain arbitrary executable code.';
COMMENT ON COLUMN core_evidence.evidence_source_dimension_binding.source_value_config IS
'Declarative source-side extraction/normalization configuration for non-trivial sources.';

CREATE UNIQUE INDEX IF NOT EXISTS uq_evidence_source_dimension_binding_active
ON core_evidence.evidence_source_dimension_binding (
evidence_source_binding_id,
evidence_dimension_id,
source_dimension_kind,
source_dimension_namespace,
source_dimension_ref,
query_role
)
WHERE status = 'active';

CREATE INDEX IF NOT EXISTS idx_evidence_source_dimension_source
ON core_evidence.evidence_source_dimension_binding (
evidence_source_binding_id, status, resolution_order
);
CREATE INDEX IF NOT EXISTS idx_evidence_source_dimension_dimension
ON core_evidence.evidence_source_dimension_binding (
evidence_dimension_id, status
);
CREATE INDEX IF NOT EXISTS idx_evidence_source_dimension_ref
ON core_evidence.evidence_source_dimension_binding (
source_dimension_kind, source_dimension_namespace, source_dimension_ref
);
CREATE INDEX IF NOT EXISTS idx_evidence_source_dimension_effective
ON core_evidence.evidence_source_dimension_binding (effective_from, effective_to)
WHERE status = 'active';
CREATE INDEX IF NOT EXISTS idx_evidence_source_dimension_value_transform_gin
ON core_evidence.evidence_source_dimension_binding USING gin (value_transform);
CREATE INDEX IF NOT EXISTS idx_evidence_source_dimension_source_value_config_gin
ON core_evidence.evidence_source_dimension_binding USING gin (source_value_config);
CREATE INDEX IF NOT EXISTS idx_evidence_source_dimension_metadata_gin
ON core_evidence.evidence_source_dimension_binding USING gin (metadata);

CREATE OR REPLACE FUNCTION core_evidence.set_updated_at()
RETURNS trigger
LANGUAGE plpgsql
AS $$
BEGIN
NEW.updated_at = now();
RETURN NEW;
END;
$$;

DROP TRIGGER IF EXISTS trg_evidence_source_dimension_binding_set_updated_at
ON core_evidence.evidence_source_dimension_binding;
CREATE TRIGGER trg_evidence_source_dimension_binding_set_updated_at
BEFORE UPDATE ON core_evidence.evidence_source_dimension_binding
FOR EACH ROW
EXECUTE FUNCTION core_evidence.set_updated_at();

-- Ensure the selected source and dimension belong to the same evidence type.
CREATE OR REPLACE FUNCTION core_evidence.validate_source_dimension_binding()
RETURNS trigger
LANGUAGE plpgsql
AS $$
DECLARE
source_evidence_type_id uuid;
dimension_evidence_type_id uuid;
BEGIN
SELECT evidence_type_id
INTO source_evidence_type_id
FROM core_evidence.evidence_source_binding
WHERE evidence_source_binding_id = NEW.evidence_source_binding_id;

SELECT evidence_type_id
INTO dimension_evidence_type_id
FROM core_evidence.evidence_dimension
WHERE evidence_dimension_id = NEW.evidence_dimension_id;

IF source_evidence_type_id IS NULL THEN
RAISE EXCEPTION
'Evidence source binding % does not exist',
NEW.evidence_source_binding_id;
END IF;

IF dimension_evidence_type_id IS NULL THEN
RAISE EXCEPTION
'Evidence dimension % does not exist',
NEW.evidence_dimension_id;
END IF;

IF source_evidence_type_id <> dimension_evidence_type_id THEN
RAISE EXCEPTION
'Source binding and evidence dimension must belong to the same evidence_type';
END IF;

RETURN NEW;
END;
$$;

DROP TRIGGER IF EXISTS trg_validate_source_dimension_binding
ON core_evidence.evidence_source_dimension_binding;
CREATE TRIGGER trg_validate_source_dimension_binding
BEFORE INSERT OR UPDATE OF evidence_source_binding_id, evidence_dimension_id
ON core_evidence.evidence_source_dimension_binding
FOR EACH ROW
EXECUTE FUNCTION core_evidence.validate_source_dimension_binding();

-- Metadata registration when available.
DO $$
BEGIN
IF to_regclass('core_metadata.table_registry') IS NOT NULL THEN
EXECUTE $sql$
INSERT INTO core_metadata.table_registry (
schema_name, table_name, table_description,
business_owner, technical_owner, data_steward,
domain, system_of_record, criticality, classification, status
)
VALUES (
'core_evidence',
'evidence_source_dimension_binding',
'Governed source-side dimension mappings used for deterministic evidence observation queries.',
'Governance / Assurance',
'Platform Engineering',
'Evidence Registry Steward',
'cross_domain',
true,
'high',
'internal',
'active'
)
ON CONFLICT (schema_name, table_name) DO NOTHING
$sql$;
END IF;
END;
$$;

-- Conditional least-privilege grants.
DO $$
BEGIN
IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'zayaz_app') THEN
GRANT USAGE ON SCHEMA core_evidence TO zayaz_app;
GRANT SELECT, INSERT, UPDATE, DELETE
ON core_evidence.evidence_source_dimension_binding TO zayaz_app;
END IF;

IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'zayaz_readonly') THEN
GRANT USAGE ON SCHEMA core_evidence TO zayaz_readonly;
GRANT SELECT ON core_evidence.evidence_source_dimension_binding TO zayaz_readonly;
END IF;

IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'zayaz_analytics') THEN
GRANT USAGE ON SCHEMA core_evidence TO zayaz_analytics;
GRANT SELECT ON core_evidence.evidence_source_dimension_binding TO zayaz_analytics;
END IF;

IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'zayaz_verifier_api') THEN
GRANT USAGE ON SCHEMA core_evidence TO zayaz_verifier_api;
GRANT SELECT ON core_evidence.evidence_source_dimension_binding TO zayaz_verifier_api;
END IF;
END;
$$;

COMMIT;

-- NOTE:
-- Do not add an eco_number mapping here merely to enforce tenancy.
-- Tenant/client scope must already be established and authorized before this query is built.

What the binding table does:

For each mapped evidence source:

evidence_source_binding
CMID-ZYZ-001288

we can define:

Evidence dimension        Source-side representation
──────────────────────────────────────────────────────
reporting_period → CMID-ZYZ-002921
facility → CMID-ZYZ-006322
jurisdiction → CMID-ZYZ-004113

And this is exactly why using CMIDs for source-side dimension fields is so powerful: the resolver doesn't have to know that one physical database happens to call the field:

reporting_year

while another calls it:

fiscal_period

SSSR resolves that.

The existing source-binding table deliberately says physical row identifiers don't belong in mappings. This table extends that philosophy to the filter/dimension side.

We also have a database trigger that prevents this invalid architecture:

Evidence type A source
+
Evidence type B dimension

The source and normalized dimension must belong to the same evidence type.


Lightweight generated vocabulary snapshot

evidence-type-registry.bootstrap.v1.1.jsonGitHub ↗
{
"_meta": {
"id": "ZYZ-EVIDENCE-TYPE-REGISTRY",
"semantic_id": "zayaz.registry.evidence.types",
"version": "1.1.0",
"status": "generated",
"generated_at": "2026-08-14T12:34:36.329113Z",
"source_of_truth": "PostgreSQL core_evidence.evidence_type",
"generator": "scripts/evidence/generate-evidence-type-registry.ts",
"content_sha256": "216ea414fe5f422a0ebbe351614aba48adcc15c13de62a75f8c061973ca2fb53",
"count": 225,
"purpose": "Lightweight semantic vocabulary snapshot for VW-DL, CI, template validation and offline tooling. Source mappings/dimensions are intentionally excluded."
},
"schema_version": "1.0.0",
"evidence_types": [
{
"evidence_key": "access_affordability_measure",
"canonical_name": "Access Affordability Measure",
"description": "Canonical evidence type for access affordability measure.",
"evidence_class": "composite",
"domain": "social",
"category": "human_rights_community_supply_chain",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "affected_parties_assessment",
"canonical_name": "Affected Parties Assessment",
"description": "Canonical evidence type for affected parties assessment.",
"evidence_class": "record",
"domain": "cross_domain",
"category": "procedure_incident_fines_due_diligence",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "ai_governance_assessment",
"canonical_name": "AI Governance Assessment",
"description": "Canonical evidence type for ai governance assessment.",
"evidence_class": "record",
"domain": "technology",
"category": "data_ai_product_customer",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "ai_model_inventory",
"canonical_name": "AI Model Inventory",
"description": "Canonical evidence type for ai model inventory.",
"evidence_class": "composite",
"domain": "technology",
"category": "data_ai_product_customer",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "ai_output_validation",
"canonical_name": "AI Output Validation",
"description": "Canonical evidence type for ai output validation.",
"evidence_class": "composite",
"domain": "technology",
"category": "data_ai_product_customer",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "air_pollutant_emissions",
"canonical_name": "Air Pollutant Emissions",
"description": "Canonical evidence type for air pollutant emissions.",
"evidence_class": "metric",
"domain": "environmental",
"category": "water_pollution_biodiversity_nature",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "anti_bribery_training",
"canonical_name": "Anti Bribery Training",
"description": "Canonical evidence type for anti bribery training.",
"evidence_class": "record",
"domain": "governance",
"category": "corporate_governance_ethics_compliance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "anti_corruption_training_coverage",
"canonical_name": "Anti-Corruption Training Coverage",
"description": "Percentage of the relevant workforce or functions-at-risk that completed qualifying anti-corruption or anti-bribery training during the applicable period.",
"evidence_class": "calculation",
"domain": "governance",
"category": "corporate_governance_ethics_compliance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "academy-evidence-v1",
"academy_source_candidate": true,
"mapping_review_required": true,
"regulatory_use_candidate": true
}
},
{
"evidence_key": "approval_authority",
"canonical_name": "Approval Authority",
"description": "Canonical evidence type for approval authority.",
"evidence_class": "composite",
"domain": "cross_domain",
"category": "common_governance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "audit_opinion",
"canonical_name": "Audit Opinion",
"description": "Canonical evidence type for audit opinion.",
"evidence_class": "attestation",
"domain": "financial",
"category": "accounting_audit_reporting_assurance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "audit_report",
"canonical_name": "Audit Report",
"description": "Canonical evidence type for audit report.",
"evidence_class": "document",
"domain": "cross_domain",
"category": "common_governance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "biodiversity_impact_assessment",
"canonical_name": "Biodiversity Impact Assessment",
"description": "Canonical evidence type for biodiversity impact assessment.",
"evidence_class": "record",
"domain": "environmental",
"category": "water_pollution_biodiversity_nature",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "biodiversity_sensitive_site",
"canonical_name": "Biodiversity Sensitive Site",
"description": "Canonical evidence type for biodiversity sensitive site.",
"evidence_class": "composite",
"domain": "environmental",
"category": "water_pollution_biodiversity_nature",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "board_composition",
"canonical_name": "Board Composition",
"description": "Canonical evidence type for board composition.",
"evidence_class": "composite",
"domain": "governance",
"category": "corporate_governance_ethics_compliance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "board_diversity",
"canonical_name": "Board Diversity",
"description": "Canonical evidence type for board diversity.",
"evidence_class": "metric",
"domain": "governance",
"category": "corporate_governance_ethics_compliance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "board_independence",
"canonical_name": "Board Independence",
"description": "Canonical evidence type for board independence.",
"evidence_class": "composite",
"domain": "governance",
"category": "corporate_governance_ethics_compliance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "board_meeting_attendance",
"canonical_name": "Board Meeting Attendance",
"description": "Canonical evidence type for board meeting attendance.",
"evidence_class": "metric",
"domain": "governance",
"category": "corporate_governance_ethics_compliance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "board_oversight_record",
"canonical_name": "Board Oversight Record",
"description": "Canonical evidence type for board oversight record.",
"evidence_class": "record",
"domain": "cross_domain",
"category": "common_governance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "board_skills_matrix",
"canonical_name": "Board Skills Matrix",
"description": "Canonical evidence type for board skills matrix.",
"evidence_class": "record",
"domain": "governance",
"category": "corporate_governance_ethics_compliance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "board_succession_plan",
"canonical_name": "Board Succession Plan",
"description": "Canonical evidence type for board succession plan.",
"evidence_class": "document",
"domain": "governance",
"category": "corporate_governance_ethics_compliance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "carbon_offset_usage",
"canonical_name": "Carbon Offset Usage",
"description": "Canonical evidence type for carbon offset usage.",
"evidence_class": "composite",
"domain": "environmental",
"category": "climate_carbon_energy",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "child_labor_risk",
"canonical_name": "Child Labor Risk",
"description": "Canonical evidence type for child labor risk.",
"evidence_class": "composite",
"domain": "social",
"category": "human_rights_community_supply_chain",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "circular_material_input",
"canonical_name": "Circular Material Input",
"description": "Canonical evidence type for circular material input.",
"evidence_class": "metric",
"domain": "environmental",
"category": "waste_circularity_materials",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "clean_technology_investment",
"canonical_name": "Clean Technology Investment",
"description": "Canonical evidence type for clean technology investment.",
"evidence_class": "composite",
"domain": "environmental",
"category": "climate_carbon_energy",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "climate_adaptation_plan",
"canonical_name": "Climate Adaptation Plan",
"description": "Canonical evidence type for climate adaptation plan.",
"evidence_class": "document",
"domain": "environmental",
"category": "climate_carbon_energy",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "climate_finance_exposure",
"canonical_name": "Climate Finance Exposure",
"description": "Canonical evidence type for climate finance exposure.",
"evidence_class": "composite",
"domain": "environmental",
"category": "climate_carbon_energy",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "climate_mitigation_plan",
"canonical_name": "Climate Mitigation Plan",
"description": "Canonical evidence type for climate mitigation plan.",
"evidence_class": "document",
"domain": "environmental",
"category": "climate_carbon_energy",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "climate_physical_risk_assessment",
"canonical_name": "Climate Physical Risk Assessment",
"description": "Canonical evidence type for climate physical risk assessment.",
"evidence_class": "record",
"domain": "environmental",
"category": "climate_carbon_energy",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "climate_scenario_analysis",
"canonical_name": "Climate Scenario Analysis",
"description": "Canonical evidence type for climate scenario analysis.",
"evidence_class": "record",
"domain": "environmental",
"category": "climate_carbon_energy",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "climate_target_progress",
"canonical_name": "Climate Target Progress",
"description": "Canonical evidence type for climate target progress.",
"evidence_class": "metric",
"domain": "environmental",
"category": "climate_carbon_energy",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "climate_transition_risk_assessment",
"canonical_name": "Climate Transition Risk Assessment",
"description": "Canonical evidence type for climate transition risk assessment.",
"evidence_class": "record",
"domain": "environmental",
"category": "climate_carbon_energy",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "code_acknowledgement",
"canonical_name": "Code Acknowledgement",
"description": "Canonical evidence type for code acknowledgement.",
"evidence_class": "record",
"domain": "governance",
"category": "corporate_governance_ethics_compliance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "collective_bargaining_coverage",
"canonical_name": "Collective Bargaining Coverage",
"description": "Canonical evidence type for collective bargaining coverage.",
"evidence_class": "metric",
"domain": "social",
"category": "workforce_workplace",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "committee_charter",
"canonical_name": "Committee Charter",
"description": "Canonical evidence type for committee charter.",
"evidence_class": "document",
"domain": "governance",
"category": "corporate_governance_ethics_compliance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "community_grievance",
"canonical_name": "Community Grievance",
"description": "Canonical evidence type for community grievance.",
"evidence_class": "composite",
"domain": "social",
"category": "human_rights_community_supply_chain",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "community_impact_assessment",
"canonical_name": "Community Impact Assessment",
"description": "Canonical evidence type for community impact assessment.",
"evidence_class": "record",
"domain": "social",
"category": "human_rights_community_supply_chain",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "community_investment",
"canonical_name": "Community Investment",
"description": "Canonical evidence type for community investment.",
"evidence_class": "composite",
"domain": "social",
"category": "human_rights_community_supply_chain",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "compliance_breach",
"canonical_name": "Compliance Breach",
"description": "Canonical evidence type for compliance breach.",
"evidence_class": "event",
"domain": "governance",
"category": "corporate_governance_ethics_compliance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "conflict_of_interest_declaration",
"canonical_name": "Conflict Of Interest Declaration",
"description": "Canonical evidence type for conflict of interest declaration.",
"evidence_class": "record",
"domain": "governance",
"category": "corporate_governance_ethics_compliance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "conflict_of_interest_register",
"canonical_name": "Conflict Of Interest Register",
"description": "Canonical evidence type for conflict of interest register.",
"evidence_class": "record",
"domain": "governance",
"category": "corporate_governance_ethics_compliance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "control_deficiency",
"canonical_name": "Control Deficiency",
"description": "Canonical evidence type for control deficiency.",
"evidence_class": "composite",
"domain": "financial",
"category": "accounting_audit_reporting_assurance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "corrective_action",
"canonical_name": "Corrective Action",
"description": "Canonical evidence type for corrective action.",
"evidence_class": "record",
"domain": "cross_domain",
"category": "procedure_incident_fines_due_diligence",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "corruption_bribery_incident",
"canonical_name": "Corruption Bribery Incident",
"description": "Canonical evidence type for corruption bribery incident.",
"evidence_class": "event",
"domain": "governance",
"category": "corporate_governance_ethics_compliance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "customer_complaint",
"canonical_name": "Customer Complaint",
"description": "Canonical evidence type for customer complaint.",
"evidence_class": "composite",
"domain": "technology",
"category": "data_ai_product_customer",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "customer_privacy_complaint",
"canonical_name": "Customer Privacy Complaint",
"description": "Canonical evidence type for customer privacy complaint.",
"evidence_class": "composite",
"domain": "technology",
"category": "data_ai_product_customer",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "customer_safety_incident",
"canonical_name": "Customer Safety Incident",
"description": "Canonical evidence type for customer safety incident.",
"evidence_class": "event",
"domain": "technology",
"category": "data_ai_product_customer",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "cybersecurity_incident",
"canonical_name": "Cybersecurity Incident",
"description": "Canonical evidence type for cybersecurity incident.",
"evidence_class": "event",
"domain": "technology",
"category": "data_ai_product_customer",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "data_breach_incident",
"canonical_name": "Data Breach Incident",
"description": "Canonical evidence type for data breach incident.",
"evidence_class": "event",
"domain": "technology",
"category": "data_ai_product_customer",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "data_lineage",
"canonical_name": "Data Lineage",
"description": "Canonical evidence type for data lineage.",
"evidence_class": "composite",
"domain": "financial",
"category": "accounting_audit_reporting_assurance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "data_privacy_impact_assessment",
"canonical_name": "Data Privacy Impact Assessment",
"description": "Canonical evidence type for data privacy impact assessment.",
"evidence_class": "record",
"domain": "technology",
"category": "data_ai_product_customer",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "data_quality_assessment",
"canonical_name": "Data Quality Assessment",
"description": "Canonical evidence type for data quality assessment.",
"evidence_class": "record",
"domain": "financial",
"category": "accounting_audit_reporting_assurance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "data_subject_request",
"canonical_name": "Data Subject Request",
"description": "Canonical evidence type for data subject request.",
"evidence_class": "composite",
"domain": "technology",
"category": "data_ai_product_customer",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "disciplinary_action",
"canonical_name": "Disciplinary Action",
"description": "Canonical evidence type for disciplinary action.",
"evidence_class": "record",
"domain": "governance",
"category": "corporate_governance_ethics_compliance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "disclosure_assurance",
"canonical_name": "Disclosure Assurance",
"description": "Canonical evidence type for disclosure assurance.",
"evidence_class": "attestation",
"domain": "financial",
"category": "accounting_audit_reporting_assurance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "discrimination_harassment_case",
"canonical_name": "Discrimination Harassment Case",
"description": "Canonical evidence type for discrimination harassment case.",
"evidence_class": "composite",
"domain": "social",
"category": "workforce_workplace",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "document_approval_record",
"canonical_name": "Document Approval Record",
"description": "Canonical evidence type for document approval record.",
"evidence_class": "record",
"domain": "cross_domain",
"category": "common_governance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "document_exception_record",
"canonical_name": "Document Exception Record",
"description": "Canonical evidence type for document exception record.",
"evidence_class": "record",
"domain": "cross_domain",
"category": "common_governance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "document_owner_assignment",
"canonical_name": "Document Owner Assignment",
"description": "Canonical evidence type for document owner assignment.",
"evidence_class": "composite",
"domain": "cross_domain",
"category": "common_governance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "document_review_record",
"canonical_name": "Document Review Record",
"description": "Canonical evidence type for document review record.",
"evidence_class": "record",
"domain": "cross_domain",
"category": "common_governance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "double_materiality_assessment",
"canonical_name": "Double Materiality Assessment",
"description": "Canonical evidence type for double materiality assessment.",
"evidence_class": "record",
"domain": "financial",
"category": "accounting_audit_reporting_assurance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "due_diligence_assurance",
"canonical_name": "Due Diligence Assurance",
"description": "Canonical evidence type for due diligence assurance.",
"evidence_class": "attestation",
"domain": "cross_domain",
"category": "procedure_incident_fines_due_diligence",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "due_diligence_monitoring",
"canonical_name": "Due Diligence Monitoring",
"description": "Canonical evidence type for due diligence monitoring.",
"evidence_class": "composite",
"domain": "cross_domain",
"category": "procedure_incident_fines_due_diligence",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "due_diligence_risk_assessment",
"canonical_name": "Due Diligence Risk Assessment",
"description": "Canonical evidence type for due diligence risk assessment.",
"evidence_class": "record",
"domain": "cross_domain",
"category": "procedure_incident_fines_due_diligence",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "due_diligence_scope",
"canonical_name": "Due Diligence Scope",
"description": "Canonical evidence type for due diligence scope.",
"evidence_class": "composite",
"domain": "cross_domain",
"category": "procedure_incident_fines_due_diligence",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "effective_date",
"canonical_name": "Effective Date",
"description": "Canonical evidence type for effective date.",
"evidence_class": "composite",
"domain": "cross_domain",
"category": "common_governance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "electronic_waste",
"canonical_name": "Electronic Waste",
"description": "Canonical evidence type for electronic waste.",
"evidence_class": "composite",
"domain": "environmental",
"category": "waste_circularity_materials",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "employee_acknowledgement",
"canonical_name": "Employee Acknowledgement",
"description": "Canonical evidence type for employee acknowledgement.",
"evidence_class": "record",
"domain": "cross_domain",
"category": "common_governance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "employee_engagement",
"canonical_name": "Employee Engagement",
"description": "Canonical evidence type for employee engagement.",
"evidence_class": "composite",
"domain": "social",
"category": "workforce_workplace",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "employee_grievance_case",
"canonical_name": "Employee Grievance Case",
"description": "Canonical evidence type for employee grievance case.",
"evidence_class": "composite",
"domain": "social",
"category": "workforce_workplace",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "employee_grievance_resolution",
"canonical_name": "Employee Grievance Resolution",
"description": "Canonical evidence type for employee grievance resolution.",
"evidence_class": "record",
"domain": "social",
"category": "workforce_workplace",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "employee_training_hours",
"canonical_name": "Employee Training Hours",
"description": "Canonical evidence type for employee training hours.",
"evidence_class": "metric",
"domain": "social",
"category": "workforce_workplace",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "employee_turnover",
"canonical_name": "Employee Turnover",
"description": "Canonical evidence type for employee turnover.",
"evidence_class": "metric",
"domain": "social",
"category": "workforce_workplace",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "energy_efficiency_improvement",
"canonical_name": "Energy Efficiency Improvement",
"description": "Canonical evidence type for energy efficiency improvement.",
"evidence_class": "composite",
"domain": "environmental",
"category": "climate_carbon_energy",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "energy_intensity",
"canonical_name": "Energy Intensity",
"description": "Canonical evidence type for energy intensity.",
"evidence_class": "metric",
"domain": "environmental",
"category": "climate_carbon_energy",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "enterprise_risk_assessment",
"canonical_name": "Enterprise Risk Assessment",
"description": "Canonical evidence type for enterprise risk assessment.",
"evidence_class": "record",
"domain": "governance",
"category": "corporate_governance_ethics_compliance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "environmental_compliance_breach",
"canonical_name": "Environmental Compliance Breach",
"description": "Canonical evidence type for environmental compliance breach.",
"evidence_class": "event",
"domain": "environmental",
"category": "water_pollution_biodiversity_nature",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "environmental_incident",
"canonical_name": "Environmental Incident",
"description": "Canonical evidence type for environmental incident.",
"evidence_class": "event",
"domain": "environmental",
"category": "water_pollution_biodiversity_nature",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "esg_compensation_linkage",
"canonical_name": "ESG Compensation Linkage",
"description": "Canonical evidence type for esg compensation linkage.",
"evidence_class": "composite",
"domain": "governance",
"category": "corporate_governance_ethics_compliance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "esg_report",
"canonical_name": "ESG Report",
"description": "Canonical evidence type for esg report.",
"evidence_class": "document",
"domain": "financial",
"category": "accounting_audit_reporting_assurance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "esg_training_coverage",
"canonical_name": "ESG Training Coverage",
"description": "Percentage of an eligible or in-scope population that completed qualifying ESG training during the applicable period.",
"evidence_class": "calculation",
"domain": "cross_domain",
"category": "learning_compliance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "academy-evidence-v1",
"academy_source_candidate": true,
"mapping_review_required": true
}
},
{
"evidence_key": "ethics_training",
"canonical_name": "Ethics Training",
"description": "Canonical evidence type for ethics training.",
"evidence_class": "record",
"domain": "governance",
"category": "corporate_governance_ethics_compliance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "executive_compensation",
"canonical_name": "Executive Compensation",
"description": "Canonical evidence type for executive compensation.",
"evidence_class": "composite",
"domain": "governance",
"category": "corporate_governance_ethics_compliance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "external_assurance_evidence",
"canonical_name": "External Assurance Evidence",
"description": "Canonical evidence type for external assurance evidence.",
"evidence_class": "attestation",
"domain": "financial",
"category": "accounting_audit_reporting_assurance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "financial_reconciliation",
"canonical_name": "Financial Reconciliation",
"description": "Canonical evidence type for financial reconciliation.",
"evidence_class": "record",
"domain": "financial",
"category": "accounting_audit_reporting_assurance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "financial_restatement",
"canonical_name": "Financial Restatement",
"description": "Canonical evidence type for financial restatement.",
"evidence_class": "document",
"domain": "financial",
"category": "accounting_audit_reporting_assurance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "financial_statement",
"canonical_name": "Financial Statement",
"description": "Canonical evidence type for financial statement.",
"evidence_class": "document",
"domain": "financial",
"category": "accounting_audit_reporting_assurance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "fine_amount",
"canonical_name": "Fine Amount",
"description": "Canonical evidence type for fine amount.",
"evidence_class": "metric",
"domain": "cross_domain",
"category": "procedure_incident_fines_due_diligence",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "fine_appeal_status",
"canonical_name": "Fine Appeal Status",
"description": "Canonical evidence type for fine appeal status.",
"evidence_class": "composite",
"domain": "cross_domain",
"category": "procedure_incident_fines_due_diligence",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "fine_decision",
"canonical_name": "Fine Decision",
"description": "Canonical evidence type for fine decision.",
"evidence_class": "record",
"domain": "cross_domain",
"category": "procedure_incident_fines_due_diligence",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "fine_legal_basis",
"canonical_name": "Fine Legal Basis",
"description": "Canonical evidence type for fine legal basis.",
"evidence_class": "composite",
"domain": "cross_domain",
"category": "procedure_incident_fines_due_diligence",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "fine_materiality_assessment",
"canonical_name": "Fine Materiality Assessment",
"description": "Canonical evidence type for fine materiality assessment.",
"evidence_class": "record",
"domain": "cross_domain",
"category": "procedure_incident_fines_due_diligence",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "fine_payment_record",
"canonical_name": "Fine Payment Record",
"description": "Canonical evidence type for fine payment record.",
"evidence_class": "record",
"domain": "cross_domain",
"category": "procedure_incident_fines_due_diligence",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "fine_remediation",
"canonical_name": "Fine Remediation",
"description": "Canonical evidence type for fine remediation.",
"evidence_class": "record",
"domain": "cross_domain",
"category": "procedure_incident_fines_due_diligence",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "forced_labor_risk",
"canonical_name": "Forced Labor Risk",
"description": "Canonical evidence type for forced labor risk.",
"evidence_class": "composite",
"domain": "social",
"category": "human_rights_community_supply_chain",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "free_prior_informed_consent",
"canonical_name": "Free Prior Informed Consent",
"description": "Canonical evidence type for free prior informed consent.",
"evidence_class": "composite",
"domain": "social",
"category": "human_rights_community_supply_chain",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "gender_pay_gap",
"canonical_name": "Gender Pay Gap",
"description": "Canonical evidence type for gender pay gap.",
"evidence_class": "composite",
"domain": "social",
"category": "workforce_workplace",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "ghg_baseline",
"canonical_name": "GHG Baseline",
"description": "Canonical evidence type for ghg baseline.",
"evidence_class": "composite",
"domain": "environmental",
"category": "climate_carbon_energy",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "ghg_emissions_intensity",
"canonical_name": "GHG Emissions Intensity",
"description": "Canonical evidence type for ghg emissions intensity.",
"evidence_class": "metric",
"domain": "environmental",
"category": "climate_carbon_energy",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "ghg_inventory",
"canonical_name": "GHG Inventory",
"description": "Canonical evidence type for ghg inventory.",
"evidence_class": "record",
"domain": "environmental",
"category": "climate_carbon_energy",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "ghg_reduction_target",
"canonical_name": "GHG Reduction Target",
"description": "Canonical evidence type for ghg reduction target.",
"evidence_class": "composite",
"domain": "environmental",
"category": "climate_carbon_energy",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "gifts_hospitality_register",
"canonical_name": "Gifts Hospitality Register",
"description": "Canonical evidence type for gifts hospitality register.",
"evidence_class": "record",
"domain": "governance",
"category": "corporate_governance_ethics_compliance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "green_building_certification",
"canonical_name": "Green Building Certification",
"description": "Canonical evidence type for green building certification.",
"evidence_class": "document",
"domain": "environmental",
"category": "climate_carbon_energy",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "green_building_performance",
"canonical_name": "Green Building Performance",
"description": "Canonical evidence type for green building performance.",
"evidence_class": "metric",
"domain": "environmental",
"category": "climate_carbon_energy",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "green_claim_substantiation",
"canonical_name": "Green Claim Substantiation",
"description": "Canonical evidence type for green claim substantiation.",
"evidence_class": "document",
"domain": "technology",
"category": "data_ai_product_customer",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "grievance_mechanism",
"canonical_name": "Grievance Mechanism",
"description": "Canonical evidence type for grievance mechanism.",
"evidence_class": "composite",
"domain": "cross_domain",
"category": "procedure_incident_fines_due_diligence",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "habitat_restoration",
"canonical_name": "Habitat Restoration",
"description": "Canonical evidence type for habitat restoration.",
"evidence_class": "composite",
"domain": "environmental",
"category": "water_pollution_biodiversity_nature",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "hazardous_substance_use",
"canonical_name": "Hazardous Substance Use",
"description": "Canonical evidence type for hazardous substance use.",
"evidence_class": "metric",
"domain": "environmental",
"category": "water_pollution_biodiversity_nature",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "hazardous_waste",
"canonical_name": "Hazardous Waste",
"description": "Canonical evidence type for hazardous waste.",
"evidence_class": "composite",
"domain": "environmental",
"category": "waste_circularity_materials",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "health_safety_training",
"canonical_name": "Health Safety Training",
"description": "Canonical evidence type for health safety training.",
"evidence_class": "record",
"domain": "social",
"category": "workforce_workplace",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "human_rights_due_diligence_assessment",
"canonical_name": "Human Rights Due Diligence Assessment",
"description": "Canonical evidence type for human rights due diligence assessment.",
"evidence_class": "record",
"domain": "social",
"category": "human_rights_community_supply_chain",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "human_rights_incident",
"canonical_name": "Human Rights Incident",
"description": "Canonical evidence type for human rights incident.",
"evidence_class": "event",
"domain": "social",
"category": "human_rights_community_supply_chain",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "incident_chronology",
"canonical_name": "Incident Chronology",
"description": "Canonical evidence type for incident chronology.",
"evidence_class": "composite",
"domain": "cross_domain",
"category": "procedure_incident_fines_due_diligence",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "incident_containment_action",
"canonical_name": "Incident Containment Action",
"description": "Canonical evidence type for incident containment action.",
"evidence_class": "record",
"domain": "cross_domain",
"category": "procedure_incident_fines_due_diligence",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "incident_record",
"canonical_name": "Incident Record",
"description": "Canonical evidence type for incident record.",
"evidence_class": "record",
"domain": "cross_domain",
"category": "procedure_incident_fines_due_diligence",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "incident_remediation_action",
"canonical_name": "Incident Remediation Action",
"description": "Canonical evidence type for incident remediation action.",
"evidence_class": "record",
"domain": "cross_domain",
"category": "procedure_incident_fines_due_diligence",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "incident_root_cause_analysis",
"canonical_name": "Incident Root Cause Analysis",
"description": "Canonical evidence type for incident root cause analysis.",
"evidence_class": "record",
"domain": "cross_domain",
"category": "procedure_incident_fines_due_diligence",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "incident_severity_assessment",
"canonical_name": "Incident Severity Assessment",
"description": "Canonical evidence type for incident severity assessment.",
"evidence_class": "record",
"domain": "cross_domain",
"category": "procedure_incident_fines_due_diligence",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "inclusive_product_access",
"canonical_name": "Inclusive Product Access",
"description": "Canonical evidence type for inclusive product access.",
"evidence_class": "composite",
"domain": "social",
"category": "human_rights_community_supply_chain",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "indigenous_rights_assessment",
"canonical_name": "Indigenous Rights Assessment",
"description": "Canonical evidence type for indigenous rights assessment.",
"evidence_class": "record",
"domain": "social",
"category": "human_rights_community_supply_chain",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "innovation_project_assessment",
"canonical_name": "Innovation Project Assessment",
"description": "Canonical evidence type for innovation project assessment.",
"evidence_class": "record",
"domain": "technology",
"category": "data_ai_product_customer",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "internal_control_assessment",
"canonical_name": "Internal Control Assessment",
"description": "Canonical evidence type for internal control assessment.",
"evidence_class": "record",
"domain": "financial",
"category": "accounting_audit_reporting_assurance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "investigation_record",
"canonical_name": "Investigation Record",
"description": "Canonical evidence type for investigation record.",
"evidence_class": "record",
"domain": "governance",
"category": "corporate_governance_ethics_compliance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "just_transition_plan",
"canonical_name": "Just Transition Plan",
"description": "Canonical evidence type for just transition plan.",
"evidence_class": "document",
"domain": "social",
"category": "human_rights_community_supply_chain",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "labor_dispute_record",
"canonical_name": "Labor Dispute Record",
"description": "Canonical evidence type for labor dispute record.",
"evidence_class": "record",
"domain": "social",
"category": "workforce_workplace",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "land_use_change",
"canonical_name": "Land Use Change",
"description": "Canonical evidence type for land use change.",
"evidence_class": "composite",
"domain": "environmental",
"category": "water_pollution_biodiversity_nature",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "lifecycle_assessment",
"canonical_name": "Lifecycle Assessment",
"description": "Canonical evidence type for lifecycle assessment.",
"evidence_class": "record",
"domain": "environmental",
"category": "climate_carbon_energy",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "living_wage_coverage",
"canonical_name": "Living Wage Coverage",
"description": "Canonical evidence type for living wage coverage.",
"evidence_class": "metric",
"domain": "social",
"category": "workforce_workplace",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "lobbying_activity",
"canonical_name": "Lobbying Activity",
"description": "Canonical evidence type for lobbying activity.",
"evidence_class": "composite",
"domain": "governance",
"category": "corporate_governance_ethics_compliance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "local_hiring",
"canonical_name": "Local Hiring",
"description": "Canonical evidence type for local hiring.",
"evidence_class": "composite",
"domain": "social",
"category": "human_rights_community_supply_chain",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "local_procurement_spend",
"canonical_name": "Local Procurement Spend",
"description": "Canonical evidence type for local procurement spend.",
"evidence_class": "metric",
"domain": "social",
"category": "human_rights_community_supply_chain",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "local_variant_record",
"canonical_name": "Local Variant Record",
"description": "Canonical evidence type for local variant record.",
"evidence_class": "record",
"domain": "cross_domain",
"category": "common_governance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "lost_time_injury_rate",
"canonical_name": "Lost Time Injury Rate",
"description": "Canonical evidence type for lost time injury rate.",
"evidence_class": "metric",
"domain": "social",
"category": "workforce_workplace",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "management_representation",
"canonical_name": "Management Representation",
"description": "Canonical evidence type for management representation.",
"evidence_class": "composite",
"domain": "financial",
"category": "accounting_audit_reporting_assurance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "management_review_record",
"canonical_name": "Management Review Record",
"description": "Canonical evidence type for management review record.",
"evidence_class": "record",
"domain": "cross_domain",
"category": "common_governance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "marketing_claim_substantiation",
"canonical_name": "Marketing Claim Substantiation",
"description": "Canonical evidence type for marketing claim substantiation.",
"evidence_class": "document",
"domain": "technology",
"category": "data_ai_product_customer",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "material_reuse",
"canonical_name": "Material Reuse",
"description": "Canonical evidence type for material reuse.",
"evidence_class": "composite",
"domain": "environmental",
"category": "waste_circularity_materials",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "materiality_assessment",
"canonical_name": "Materiality Assessment",
"description": "Canonical evidence type for materiality assessment.",
"evidence_class": "record",
"domain": "financial",
"category": "accounting_audit_reporting_assurance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "minority_shareholder_protection",
"canonical_name": "Minority Shareholder Protection",
"description": "Canonical evidence type for minority shareholder protection.",
"evidence_class": "composite",
"domain": "governance",
"category": "corporate_governance_ethics_compliance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "mitigation_action",
"canonical_name": "Mitigation Action",
"description": "Canonical evidence type for mitigation action.",
"evidence_class": "record",
"domain": "cross_domain",
"category": "procedure_incident_fines_due_diligence",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "modern_slavery_screening",
"canonical_name": "Modern Slavery Screening",
"description": "Canonical evidence type for modern slavery screening.",
"evidence_class": "record",
"domain": "social",
"category": "human_rights_community_supply_chain",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "natural_resource_consumption",
"canonical_name": "Natural Resource Consumption",
"description": "Canonical evidence type for natural resource consumption.",
"evidence_class": "metric",
"domain": "environmental",
"category": "water_pollution_biodiversity_nature",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "nature_based_solution_outcome",
"canonical_name": "Nature Based Solution Outcome",
"description": "Canonical evidence type for nature based solution outcome.",
"evidence_class": "composite",
"domain": "environmental",
"category": "water_pollution_biodiversity_nature",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "near_miss_record",
"canonical_name": "Near Miss Record",
"description": "Canonical evidence type for near miss record.",
"evidence_class": "record",
"domain": "social",
"category": "workforce_workplace",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "net_zero_target",
"canonical_name": "Net Zero Target",
"description": "Canonical evidence type for net zero target.",
"evidence_class": "composite",
"domain": "environmental",
"category": "climate_carbon_energy",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "occupational_injury_rate",
"canonical_name": "Occupational Injury Rate",
"description": "Canonical evidence type for occupational injury rate.",
"evidence_class": "metric",
"domain": "social",
"category": "workforce_workplace",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "organization_identity",
"canonical_name": "Organization Identity",
"description": "Canonical evidence type for organization identity.",
"evidence_class": "composite",
"domain": "cross_domain",
"category": "common_governance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "packaging_material_use",
"canonical_name": "Packaging Material Use",
"description": "Canonical evidence type for packaging material use.",
"evidence_class": "metric",
"domain": "environmental",
"category": "waste_circularity_materials",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "packaging_recyclability",
"canonical_name": "Packaging Recyclability",
"description": "Canonical evidence type for packaging recyclability.",
"evidence_class": "composite",
"domain": "environmental",
"category": "waste_circularity_materials",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "pay_equity",
"canonical_name": "Pay Equity",
"description": "Canonical evidence type for pay equity.",
"evidence_class": "metric",
"domain": "social",
"category": "workforce_workplace",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "personal_data_inventory",
"canonical_name": "Personal Data Inventory",
"description": "Canonical evidence type for personal data inventory.",
"evidence_class": "record",
"domain": "technology",
"category": "data_ai_product_customer",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "political_contribution",
"canonical_name": "Political Contribution",
"description": "Canonical evidence type for political contribution.",
"evidence_class": "composite",
"domain": "governance",
"category": "corporate_governance_ethics_compliance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "prevention_action",
"canonical_name": "Prevention Action",
"description": "Canonical evidence type for prevention action.",
"evidence_class": "record",
"domain": "cross_domain",
"category": "procedure_incident_fines_due_diligence",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "procedure_control_checklist",
"canonical_name": "Procedure Control Checklist",
"description": "Canonical evidence type for procedure control checklist.",
"evidence_class": "record",
"domain": "cross_domain",
"category": "procedure_incident_fines_due_diligence",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "procedure_escalation_record",
"canonical_name": "Procedure Escalation Record",
"description": "Canonical evidence type for procedure escalation record.",
"evidence_class": "record",
"domain": "cross_domain",
"category": "procedure_incident_fines_due_diligence",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "procedure_exception_record",
"canonical_name": "Procedure Exception Record",
"description": "Canonical evidence type for procedure exception record.",
"evidence_class": "record",
"domain": "cross_domain",
"category": "procedure_incident_fines_due_diligence",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "procedure_execution_record",
"canonical_name": "Procedure Execution Record",
"description": "Canonical evidence type for procedure execution record.",
"evidence_class": "record",
"domain": "cross_domain",
"category": "procedure_incident_fines_due_diligence",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "procedure_output_record",
"canonical_name": "Procedure Output Record",
"description": "Canonical evidence type for procedure output record.",
"evidence_class": "record",
"domain": "cross_domain",
"category": "procedure_incident_fines_due_diligence",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "product_carbon_footprint",
"canonical_name": "Product Carbon Footprint",
"description": "Canonical evidence type for product carbon footprint.",
"evidence_class": "composite",
"domain": "environmental",
"category": "climate_carbon_energy",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "product_label_review",
"canonical_name": "Product Label Review",
"description": "Canonical evidence type for product label review.",
"evidence_class": "record",
"domain": "technology",
"category": "data_ai_product_customer",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "product_nonconformity",
"canonical_name": "Product Nonconformity",
"description": "Canonical evidence type for product nonconformity.",
"evidence_class": "composite",
"domain": "technology",
"category": "data_ai_product_customer",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "product_quality_test",
"canonical_name": "Product Quality Test",
"description": "Canonical evidence type for product quality test.",
"evidence_class": "composite",
"domain": "technology",
"category": "data_ai_product_customer",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "product_recall",
"canonical_name": "Product Recall",
"description": "Canonical evidence type for product recall.",
"evidence_class": "composite",
"domain": "technology",
"category": "data_ai_product_customer",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "product_safety_test",
"canonical_name": "Product Safety Test",
"description": "Canonical evidence type for product safety test.",
"evidence_class": "composite",
"domain": "technology",
"category": "data_ai_product_customer",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "raw_material_consumption",
"canonical_name": "Raw Material Consumption",
"description": "Canonical evidence type for raw material consumption.",
"evidence_class": "metric",
"domain": "environmental",
"category": "waste_circularity_materials",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "raw_material_traceability",
"canonical_name": "Raw Material Traceability",
"description": "Canonical evidence type for raw material traceability.",
"evidence_class": "composite",
"domain": "environmental",
"category": "waste_circularity_materials",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "recycled_content",
"canonical_name": "Recycled Content",
"description": "Canonical evidence type for recycled content.",
"evidence_class": "metric",
"domain": "environmental",
"category": "waste_circularity_materials",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "regulatory_fine_or_sanction",
"canonical_name": "Regulatory Fine Or Sanction",
"description": "Canonical evidence type for regulatory fine or sanction.",
"evidence_class": "composite",
"domain": "governance",
"category": "corporate_governance_ethics_compliance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "regulatory_notification",
"canonical_name": "Regulatory Notification",
"description": "Canonical evidence type for regulatory notification.",
"evidence_class": "record",
"domain": "cross_domain",
"category": "procedure_incident_fines_due_diligence",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "regulatory_requirement_mapping",
"canonical_name": "Regulatory Requirement Mapping",
"description": "Canonical evidence type for regulatory requirement mapping.",
"evidence_class": "composite",
"domain": "cross_domain",
"category": "common_governance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "remediation_action_plan",
"canonical_name": "Remediation Action Plan",
"description": "Canonical evidence type for remediation action plan.",
"evidence_class": "document",
"domain": "cross_domain",
"category": "common_governance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "remedy_action",
"canonical_name": "Remedy Action",
"description": "Canonical evidence type for remedy action.",
"evidence_class": "record",
"domain": "cross_domain",
"category": "procedure_incident_fines_due_diligence",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "renewable_energy_consumption",
"canonical_name": "Renewable Energy Consumption",
"description": "Canonical evidence type for renewable energy consumption.",
"evidence_class": "metric",
"domain": "environmental",
"category": "climate_carbon_energy",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "renewable_energy_share",
"canonical_name": "Renewable Energy Share",
"description": "Canonical evidence type for renewable energy share.",
"evidence_class": "metric",
"domain": "environmental",
"category": "climate_carbon_energy",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "reported_metric_reconciliation",
"canonical_name": "Reported Metric Reconciliation",
"description": "Canonical evidence type for reported metric reconciliation.",
"evidence_class": "record",
"domain": "financial",
"category": "accounting_audit_reporting_assurance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "reskilling_program",
"canonical_name": "Reskilling Program",
"description": "Canonical evidence type for reskilling program.",
"evidence_class": "composite",
"domain": "social",
"category": "workforce_workplace",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "resource_productivity",
"canonical_name": "Resource Productivity",
"description": "Canonical evidence type for resource productivity.",
"evidence_class": "metric",
"domain": "environmental",
"category": "waste_circularity_materials",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "responsible_sourcing_assessment",
"canonical_name": "Responsible Sourcing Assessment",
"description": "Canonical evidence type for responsible sourcing assessment.",
"evidence_class": "record",
"domain": "environmental",
"category": "waste_circularity_materials",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "risk_mitigation_action",
"canonical_name": "Risk Mitigation Action",
"description": "Canonical evidence type for risk mitigation action.",
"evidence_class": "record",
"domain": "governance",
"category": "corporate_governance_ethics_compliance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "risk_prioritisation",
"canonical_name": "Risk Prioritisation",
"description": "Canonical evidence type for risk prioritisation.",
"evidence_class": "composite",
"domain": "cross_domain",
"category": "procedure_incident_fines_due_diligence",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "risk_register",
"canonical_name": "Risk Register",
"description": "Canonical evidence type for risk register.",
"evidence_class": "record",
"domain": "governance",
"category": "corporate_governance_ethics_compliance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "scope_1_emissions",
"canonical_name": "Scope 1 Emissions",
"description": "Canonical evidence type for scope 1 emissions.",
"evidence_class": "metric",
"domain": "environmental",
"category": "climate_carbon_energy",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "scope_2_emissions_location_based",
"canonical_name": "Scope 2 Emissions Location Based",
"description": "Canonical evidence type for scope 2 emissions location based.",
"evidence_class": "metric",
"domain": "environmental",
"category": "climate_carbon_energy",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "scope_2_emissions_market_based",
"canonical_name": "Scope 2 Emissions Market Based",
"description": "Canonical evidence type for scope 2 emissions market based.",
"evidence_class": "metric",
"domain": "environmental",
"category": "climate_carbon_energy",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "scope_3_emissions",
"canonical_name": "Scope 3 Emissions",
"description": "Canonical evidence type for scope 3 emissions.",
"evidence_class": "metric",
"domain": "environmental",
"category": "climate_carbon_energy",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "security_control_assessment",
"canonical_name": "Security Control Assessment",
"description": "Canonical evidence type for security control assessment.",
"evidence_class": "record",
"domain": "technology",
"category": "data_ai_product_customer",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "shareholder_rights",
"canonical_name": "Shareholder Rights",
"description": "Canonical evidence type for shareholder rights.",
"evidence_class": "composite",
"domain": "governance",
"category": "corporate_governance_ethics_compliance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "shareholder_vote_record",
"canonical_name": "Shareholder Vote Record",
"description": "Canonical evidence type for shareholder vote record.",
"evidence_class": "record",
"domain": "governance",
"category": "corporate_governance_ethics_compliance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "skills_development",
"canonical_name": "Skills Development",
"description": "Canonical evidence type for skills development.",
"evidence_class": "composite",
"domain": "social",
"category": "workforce_workplace",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "stakeholder_consultation",
"canonical_name": "Stakeholder Consultation",
"description": "Canonical evidence type for stakeholder consultation.",
"evidence_class": "record",
"domain": "social",
"category": "human_rights_community_supply_chain",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "stakeholder_engagement_record",
"canonical_name": "Stakeholder Engagement Record",
"description": "Canonical evidence type for stakeholder engagement record.",
"evidence_class": "record",
"domain": "cross_domain",
"category": "common_governance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "strategic_oversight_record",
"canonical_name": "Strategic Oversight Record",
"description": "Canonical evidence type for strategic oversight record.",
"evidence_class": "record",
"domain": "governance",
"category": "corporate_governance_ethics_compliance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "supplier_audit",
"canonical_name": "Supplier Audit",
"description": "Canonical evidence type for supplier audit.",
"evidence_class": "composite",
"domain": "social",
"category": "human_rights_community_supply_chain",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "supplier_code_compliance",
"canonical_name": "Supplier Code Compliance",
"description": "Canonical evidence type for supplier code compliance.",
"evidence_class": "composite",
"domain": "social",
"category": "human_rights_community_supply_chain",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "supplier_corrective_action",
"canonical_name": "Supplier Corrective Action",
"description": "Canonical evidence type for supplier corrective action.",
"evidence_class": "record",
"domain": "social",
"category": "human_rights_community_supply_chain",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "supplier_environmental_performance",
"canonical_name": "Supplier Environmental Performance",
"description": "Canonical evidence type for supplier environmental performance.",
"evidence_class": "metric",
"domain": "environmental",
"category": "water_pollution_biodiversity_nature",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "supplier_social_assessment",
"canonical_name": "Supplier Social Assessment",
"description": "Canonical evidence type for supplier social assessment.",
"evidence_class": "record",
"domain": "social",
"category": "human_rights_community_supply_chain",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "supply_chain_traceability",
"canonical_name": "Supply Chain Traceability",
"description": "Canonical evidence type for supply chain traceability.",
"evidence_class": "composite",
"domain": "social",
"category": "human_rights_community_supply_chain",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "sustainability_disclosure",
"canonical_name": "Sustainability Disclosure",
"description": "Canonical evidence type for sustainability disclosure.",
"evidence_class": "composite",
"domain": "financial",
"category": "accounting_audit_reporting_assurance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "sustainable_innovation_outcome",
"canonical_name": "Sustainable Innovation Outcome",
"description": "Canonical evidence type for sustainable innovation outcome.",
"evidence_class": "composite",
"domain": "technology",
"category": "data_ai_product_customer",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "third_party_assurance_statement",
"canonical_name": "Third Party Assurance Statement",
"description": "Canonical evidence type for third party assurance statement.",
"evidence_class": "attestation",
"domain": "cross_domain",
"category": "common_governance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "total_energy_consumption",
"canonical_name": "Total Energy Consumption",
"description": "Canonical evidence type for total energy consumption.",
"evidence_class": "metric",
"domain": "environmental",
"category": "climate_carbon_energy",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "toxic_emissions",
"canonical_name": "Toxic Emissions",
"description": "Canonical evidence type for toxic emissions.",
"evidence_class": "metric",
"domain": "environmental",
"category": "water_pollution_biodiversity_nature",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "training_certification",
"canonical_name": "Training Certification",
"description": "Issued training certificate, diploma, or equivalent verifiable attestation evidencing completion of qualifying learning.",
"evidence_class": "attestation",
"domain": "cross_domain",
"category": "learning_compliance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "academy-evidence-v1",
"academy_source_candidate": true,
"mapping_review_required": true
}
},
{
"evidence_key": "training_competency_assessment",
"canonical_name": "Training Competency Assessment",
"description": "Evidence of assessed learner competency, including governed quiz, assessment, pass/fail, score, or equivalent learning outcome records.",
"evidence_class": "record",
"domain": "cross_domain",
"category": "learning_compliance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "academy-evidence-v1",
"academy_source_candidate": true,
"mapping_review_required": true
}
},
{
"evidence_key": "training_completion",
"canonical_name": "Training Completion",
"description": "Canonical evidence type for training completion.",
"evidence_class": "record",
"domain": "cross_domain",
"category": "common_governance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "training_coverage_percentage",
"canonical_name": "Training Coverage Percentage",
"description": "Percentage of an eligible or in-scope population that completed qualifying training during the applicable period.",
"evidence_class": "calculation",
"domain": "cross_domain",
"category": "learning_compliance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "academy-evidence-v1",
"academy_source_candidate": true,
"mapping_review_required": true
}
},
{
"evidence_key": "value_chain_map",
"canonical_name": "Value Chain Map",
"description": "Canonical evidence type for value chain map.",
"evidence_class": "record",
"domain": "cross_domain",
"category": "procedure_incident_fines_due_diligence",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "waste_disposed",
"canonical_name": "Waste Disposed",
"description": "Canonical evidence type for waste disposed.",
"evidence_class": "metric",
"domain": "environmental",
"category": "waste_circularity_materials",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "waste_diverted_from_disposal",
"canonical_name": "Waste Diverted From Disposal",
"description": "Canonical evidence type for waste diverted from disposal.",
"evidence_class": "composite",
"domain": "environmental",
"category": "waste_circularity_materials",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "waste_generated",
"canonical_name": "Waste Generated",
"description": "Canonical evidence type for waste generated.",
"evidence_class": "metric",
"domain": "environmental",
"category": "waste_circularity_materials",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "waste_recycled",
"canonical_name": "Waste Recycled",
"description": "Canonical evidence type for waste recycled.",
"evidence_class": "metric",
"domain": "environmental",
"category": "waste_circularity_materials",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "waste_to_energy_feedstock",
"canonical_name": "Waste To Energy Feedstock",
"description": "Canonical evidence type for waste to energy feedstock.",
"evidence_class": "composite",
"domain": "environmental",
"category": "waste_circularity_materials",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "waste_to_energy_output",
"canonical_name": "Waste To Energy Output",
"description": "Canonical evidence type for waste to energy output.",
"evidence_class": "metric",
"domain": "environmental",
"category": "waste_circularity_materials",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "water_consumption",
"canonical_name": "Water Consumption",
"description": "Canonical evidence type for water consumption.",
"evidence_class": "metric",
"domain": "environmental",
"category": "water_pollution_biodiversity_nature",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "water_discharge",
"canonical_name": "Water Discharge",
"description": "Canonical evidence type for water discharge.",
"evidence_class": "metric",
"domain": "environmental",
"category": "water_pollution_biodiversity_nature",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "water_pollutant_discharge",
"canonical_name": "Water Pollutant Discharge",
"description": "Canonical evidence type for water pollutant discharge.",
"evidence_class": "metric",
"domain": "environmental",
"category": "water_pollution_biodiversity_nature",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "water_recycled_reused",
"canonical_name": "Water Recycled Reused",
"description": "Canonical evidence type for water recycled reused.",
"evidence_class": "composite",
"domain": "environmental",
"category": "water_pollution_biodiversity_nature",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "water_stress_exposure",
"canonical_name": "Water Stress Exposure",
"description": "Canonical evidence type for water stress exposure.",
"evidence_class": "composite",
"domain": "environmental",
"category": "water_pollution_biodiversity_nature",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "water_withdrawal",
"canonical_name": "Water Withdrawal",
"description": "Canonical evidence type for water withdrawal.",
"evidence_class": "metric",
"domain": "environmental",
"category": "water_pollution_biodiversity_nature",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "whistleblowing_case_resolution",
"canonical_name": "Whistleblowing Case Resolution",
"description": "Canonical evidence type for whistleblowing case resolution.",
"evidence_class": "record",
"domain": "governance",
"category": "corporate_governance_ethics_compliance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "whistleblowing_report",
"canonical_name": "Whistleblowing Report",
"description": "Canonical evidence type for whistleblowing report.",
"evidence_class": "document",
"domain": "governance",
"category": "corporate_governance_ethics_compliance",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "work_related_fatalities",
"canonical_name": "Work Related Fatalities",
"description": "Canonical evidence type for work related fatalities.",
"evidence_class": "metric",
"domain": "social",
"category": "workforce_workplace",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "workforce_diversity",
"canonical_name": "Workforce Diversity",
"description": "Canonical evidence type for workforce diversity.",
"evidence_class": "metric",
"domain": "social",
"category": "workforce_workplace",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "workforce_headcount",
"canonical_name": "Workforce Headcount",
"description": "Canonical evidence type for workforce headcount.",
"evidence_class": "metric",
"domain": "social",
"category": "workforce_workplace",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
},
{
"evidence_key": "workforce_transition_impact",
"canonical_name": "Workforce Transition Impact",
"description": "Canonical evidence type for workforce transition impact.",
"evidence_class": "metric",
"domain": "social",
"category": "workforce_workplace",
"default_resolution_mode": "unmapped",
"mapping_status": "unmapped",
"aliases": [],
"is_system_defined": true,
"status": "active",
"version": "1.0.0",
"metadata": {
"seed": "template-library-v1",
"mapping_review_required": true
}
}
]
}

Seed training evidence dimensions

core_evidence.seed_training_evidence_dimensions.sqlGitHub ↗
-- ZAYAZ Evidence Registry - Seed training/Academy evidence dimensions
-- PostgreSQL / Aurora PostgreSQL
--
-- evidence_dimension is per evidence_type, not a global dimension dictionary.
-- These rows establish the six canonical dimension keys needed by the Academy-backed
-- training evidence family. Admins may later adjust requirement/applicability per type.
--
-- Tenant / E-C-O identity is intentionally absent. Tenant authorization happens before
-- evidence resolution and is not an observation dimension.

BEGIN;

DO $$
BEGIN
IF to_regclass('core_evidence.evidence_type') IS NULL
OR to_regclass('core_evidence.evidence_dimension') IS NULL THEN
RAISE EXCEPTION 'core_evidence.evidence_type and evidence_dimension must exist first';
END IF;
END;
$$;

WITH target_types(evidence_key) AS (
VALUES
('training_completion'),
('health_safety_training'),
('employee_training_hours'),
('anti_bribery_training'),
('ethics_training'),
('training_coverage_percentage'),
('esg_training_coverage'),
('anti_corruption_training_coverage'),
('training_competency_assessment'),
('training_certification')
), dim_defs(
dimension_key,
canonical_name,
description,
dimension_class,
resolver_kind,
resolver_ref,
match_operator,
resolution_order
) AS (
VALUES
(
'reporting_period',
'Reporting Period',
'Reporting or measurement period used to select learning evidence within the already-authorized tenant scope.',
'time',
'document_context',
'current_document_period',
'exact',
10
),
(
'organizational_unit',
'Organizational Unit',
'Optional organizational sub-scope such as business unit, department, subsidiary, or function.',
'organizational',
'runtime_context',
'organizational_unit',
'exact',
20
),
(
'workforce_category',
'Workforce Category',
'Optional workforce population segment such as employees, contractors, managers, or functions-at-risk.',
'workforce',
'runtime_context',
'workforce_category',
'exact',
30
),
(
'course',
'Course',
'Qualifying Academy or external course identifier used to select learning evidence.',
'learning',
'runtime_context',
'course',
'exact',
40
),
(
'training_topic',
'Training Topic',
'Semantic learning topic such as ESG, anti-corruption, health and safety, ethics, or cybersecurity.',
'learning',
'runtime_context',
'training_topic',
'exact',
50
),
(
'jurisdiction',
'Jurisdiction',
'Optional jurisdictional sub-scope when training obligations or populations vary by legal jurisdiction.',
'jurisdiction',
'runtime_context',
'jurisdiction',
'exact',
60
)
)
INSERT INTO core_evidence.evidence_dimension (
evidence_type_id,
dimension_key,
canonical_name,
description,
dimension_class,
requirement,
cardinality,
resolver_kind,
resolver_ref,
match_operator,
resolution_order,
allow_override,
security_boundary,
status,
version,
metadata
)
SELECT
et.evidence_type_id,
d.dimension_key,
d.canonical_name,
d.description,
d.dimension_class,
CASE
WHEN d.dimension_key = 'reporting_period'
AND et.evidence_key IN (
'training_coverage_percentage',
'esg_training_coverage',
'anti_corruption_training_coverage'
)
THEN 'required'
WHEN d.dimension_key = 'course'
AND et.evidence_key IN (
'training_competency_assessment',
'training_certification'
)
THEN 'required'
ELSE 'optional'
END AS requirement,
CASE
WHEN d.dimension_key = 'course' THEN 'many'
ELSE 'one'
END AS cardinality,
d.resolver_kind,
d.resolver_ref,
d.match_operator,
d.resolution_order,
true,
false,
'active',
'1.0.0',
'{"seed":"academy-training-dimensions-v1"}'::jsonb
FROM target_types tt
JOIN core_evidence.evidence_type et
ON et.evidence_key = tt.evidence_key
CROSS JOIN dim_defs d
ON CONFLICT (evidence_type_id, dimension_key) DO NOTHING;

COMMIT;

-- Verification:
-- SELECT
-- et.evidence_key,
-- ed.dimension_key,
-- ed.dimension_class,
-- ed.requirement,
-- ed.cardinality,
-- ed.resolver_kind,
-- ed.resolver_ref
-- FROM core_evidence.evidence_dimension ed
-- JOIN core_evidence.evidence_type et USING (evidence_type_id)
-- WHERE et.evidence_key LIKE '%training%'
-- OR et.evidence_key IN ('anti_bribery_training','ethics_training')
-- ORDER BY et.evidence_key, ed.resolution_order;

ZAYAZ Evidence integration readiness audit

academy.evidence_readiness_audit.sqlGitHub ↗
-- EcoWorld Academy -> ZAYAZ Evidence integration readiness audit
-- PostgreSQL / Aurora PostgreSQL
--
-- Read-only diagnostic. It does not change Academy or ZAYAZ data.
-- It inventories Academy columns and shows whether each column has an SSSR signal / CMID.
--
-- Canonical CMID derivation follows the ZAYAZ rule:
-- CMID-ZYZ- + LPAD(signal_registry_id, 6, '0')

-- 1) Full Academy column -> SSSR/CMID coverage.
WITH academy_columns AS (
SELECT
c.table_schema,
c.table_name,
c.ordinal_position,
c.column_name,
c.data_type,
c.is_nullable
FROM information_schema.columns c
WHERE c.table_schema = 'academy'
),
sssr AS (
SELECT
tr.db_schema,
b.source_table AS table_name,
b.column_reference AS column_name,
s.signal_registry_id,
s.signal_id,
s.signal_name,
s.status AS signal_status,
s.availability_status AS signal_availability,
b.key_role,
b.is_required,
b.status AS binding_status,
b.availability_status AS binding_availability
FROM zar.signal_binding_registry b
JOIN zar.signal_registry s
ON s.signal_id = b.signal_id
LEFT JOIN zar.table_registry tr
ON tr.dataset_key = b.source_table
WHERE tr.db_schema = 'academy'
)
SELECT
c.table_name,
c.ordinal_position,
c.column_name,
c.data_type,
c.is_nullable,
x.signal_id,
CASE
WHEN x.signal_registry_id IS NULL THEN NULL
ELSE 'CMID-ZYZ-' || lpad(x.signal_registry_id::text, 6, '0')
END AS cmid,
x.signal_name,
x.key_role,
x.signal_status,
x.signal_availability,
x.binding_status,
x.binding_availability,
CASE WHEN x.signal_registry_id IS NULL THEN 'MISSING_SSSR' ELSE 'SSSR_LINKED' END AS evidence_readiness
FROM academy_columns c
LEFT JOIN sssr x
ON x.db_schema = c.table_schema
AND x.table_name = c.table_name
AND x.column_name = c.column_name
ORDER BY c.table_name, c.ordinal_position;

-- 2) Coverage summary per Academy table.
WITH academy_columns AS (
SELECT table_schema, table_name, column_name
FROM information_schema.columns
WHERE table_schema = 'academy'
),
sssr AS (
SELECT DISTINCT
tr.db_schema,
b.source_table AS table_name,
b.column_reference AS column_name
FROM zar.signal_binding_registry b
JOIN zar.signal_registry s
ON s.signal_id = b.signal_id
LEFT JOIN zar.table_registry tr
ON tr.dataset_key = b.source_table
WHERE tr.db_schema = 'academy'
AND s.availability_status IN ('active','draft','pending')
AND b.availability_status IN ('active','draft','pending')
)
SELECT
c.table_name,
count(*) AS column_count,
count(x.column_name) AS sssr_linked_columns,
count(*) - count(x.column_name) AS missing_sssr_columns,
round(100.0 * count(x.column_name) / NULLIF(count(*), 0), 1) AS sssr_coverage_pct
FROM academy_columns c
LEFT JOIN sssr x
ON x.db_schema = c.table_schema
AND x.table_name = c.table_name
AND x.column_name = c.column_name
GROUP BY c.table_name
ORDER BY sssr_coverage_pct, c.table_name;

-- 3) Evidence-critical Academy columns: quick review list.
-- This is intentionally lexical triage only; it does not assign evidence semantics.
SELECT
c.table_name,
c.ordinal_position,
c.column_name,
c.data_type,
c.is_nullable
FROM information_schema.columns c
WHERE c.table_schema = 'academy'
AND c.column_name ~* '(user|learner|company|organi[sz]ation|course|module|complete|completion|status|pass|score|certificate|issue|verify|attempt|topic|framework|role|category|jurisdiction|version|created|updated|started|finished|timestamp|date)'
ORDER BY c.table_name, c.ordinal_position;

academy.learning_assignment_events

academy.learning_assignment_events.sqlGitHub ↗
-- EcoWorld Academy / ZAYAZ
-- academy.learning_assignment_events
-- PostgreSQL / Aurora PostgreSQL
--
-- Immutable, append-only event ledger for compliance-learning assignment history.
-- HR/Workforce remains authoritative for workforce eligibility; Academy remains
-- authoritative for assignment, invitation, learning progress and certification.
-- Tenant/client authorization is established before evidence resolution.

BEGIN;

CREATE SCHEMA IF NOT EXISTS academy AUTHORIZATION zayaz_admin;

CREATE TABLE IF NOT EXISTS academy.learning_assignment_events (
learning_assignment_event_id uuid PRIMARY KEY DEFAULT gen_random_uuid(),

company_id uuid NOT NULL,

-- Stable tenant-scoped workforce/person identifier. This allows an eligible
-- employee to be tracked before an Academy account exists. Do not use raw email.
subject_key text NOT NULL,

-- Nullable until/if the subject has an Academy learner account.
user_id uuid,

-- Course may be NULL for eligibility events before a qualifying course is selected.
course_id text,

-- Optional link to existing seat assignment. FK intentionally deferred until
-- the canonical PK column name of academy_company_seat_assignments is confirmed.
seat_assignment_id uuid,

certificate_id uuid,

-- Stable compliance population/cohort identifier, e.g. anti_corruption_FY2026.
compliance_cohort_key text NOT NULL,

-- e.g. FY2026.
reporting_period_key text NOT NULL,

-- Semantic topic independent of one specific course.
-- e.g. anti_corruption, esg_awareness, code_of_conduct.
training_topic text NOT NULL,

-- Optional evidence/policy/control requirement reference.
requirement_key text,

event_type text NOT NULL,

-- Why the obligation/assignment was created.
assignment_origin text,

invitation_channel text,
due_at timestamptz,
occurred_at timestamptz NOT NULL,

-- Provenance.
source_system text NOT NULL DEFAULT 'academy',
source_event_id text,
source_reference text,

actor_type text,
actor_ref text,

reason_code text,
reason_detail text,

-- Supporting point-in-time context, not a replacement for authoritative HR data.
context_snapshot jsonb NOT NULL DEFAULT '{}'::jsonb,
metadata jsonb NOT NULL DEFAULT '{}'::jsonb,

-- Immutable correction chain.
supersedes_event_id uuid,
correction_reason text,

-- Integration idempotency.
idempotency_key text,

created_at timestamptz NOT NULL DEFAULT now(),

CONSTRAINT fk_learning_assignment_events_user
FOREIGN KEY (user_id)
REFERENCES academy.users (user_id)
ON UPDATE CASCADE
ON DELETE RESTRICT,

CONSTRAINT fk_learning_assignment_events_course
FOREIGN KEY (course_id)
REFERENCES academy.courses (course_id)
ON UPDATE CASCADE
ON DELETE RESTRICT,

CONSTRAINT fk_learning_assignment_events_certificate
FOREIGN KEY (certificate_id)
REFERENCES academy.certificates (certificate_id)
ON UPDATE CASCADE
ON DELETE RESTRICT,

CONSTRAINT fk_learning_assignment_events_supersedes
FOREIGN KEY (supersedes_event_id)
REFERENCES academy.learning_assignment_events (learning_assignment_event_id)
ON UPDATE CASCADE
ON DELETE RESTRICT,

CONSTRAINT chk_learning_assignment_subject_key
CHECK (btrim(subject_key) <> ''),

CONSTRAINT chk_learning_assignment_cohort
CHECK (compliance_cohort_key ~ '^[A-Za-z0-9][A-Za-z0-9_.:-]*$'),

CONSTRAINT chk_learning_assignment_reporting_period
CHECK (btrim(reporting_period_key) <> ''),

CONSTRAINT chk_learning_assignment_training_topic
CHECK (training_topic ~ '^[a-z][a-z0-9_]*$'),

CONSTRAINT chk_learning_assignment_requirement_key
CHECK (
requirement_key IS NULL
OR requirement_key ~ '^[A-Za-z0-9][A-Za-z0-9_.:-]*$'
),

CONSTRAINT chk_learning_assignment_event_type
CHECK (event_type IN (
'eligible',
'eligibility_ended',
'assigned',
'invitation_queued',
'invitation_sent',
'invitation_delivered',
'invitation_failed',
'reminder_sent',
'started',
'completed',
'certified',
'overdue',
'waived',
'revoked',
'expired',
'cancelled'
)),

CONSTRAINT chk_learning_assignment_origin
CHECK (
assignment_origin IS NULL
OR assignment_origin IN (
'onboarding',
'compliance_campaign',
'hr_trigger',
'policy_trigger',
'manual',
'admin',
'api',
'import',
'system'
)
),

CONSTRAINT chk_learning_assignment_channel
CHECK (
invitation_channel IS NULL
OR invitation_channel IN (
'email', 'academy', 'sms', 'sso', 'manager', 'api', 'other'
)
),

CONSTRAINT chk_learning_assignment_actor_type
CHECK (
actor_type IS NULL
OR actor_type IN (
'system', 'admin', 'manager', 'learner', 'hr', 'api', 'integration'
)
),

-- Once the course-specific lifecycle starts, a course is mandatory.
CONSTRAINT chk_learning_assignment_course_required
CHECK (
event_type IN ('eligible', 'eligibility_ended', 'waived', 'cancelled')
OR course_id IS NOT NULL
),

-- Completion/certification must resolve to an Academy learner.
CONSTRAINT chk_learning_assignment_user_for_completion
CHECK (
event_type NOT IN ('completed', 'certified')
OR user_id IS NOT NULL
),

CONSTRAINT chk_learning_assignment_certificate_event
CHECK (
certificate_id IS NULL
OR event_type IN ('completed', 'certified')
),

CONSTRAINT chk_learning_assignment_correction_reason
CHECK (
supersedes_event_id IS NULL
OR (correction_reason IS NOT NULL AND btrim(correction_reason) <> '')
),

CONSTRAINT chk_learning_assignment_not_self_superseding
CHECK (
supersedes_event_id IS NULL
OR supersedes_event_id <> learning_assignment_event_id
)
);

COMMENT ON TABLE academy.learning_assignment_events IS
'Immutable compliance-learning lifecycle event ledger used as audit-grade evidence for training eligibility, assignment, invitation, progress, completion and certification controls.';

COMMENT ON COLUMN academy.learning_assignment_events.subject_key IS
'Stable tenant-scoped workforce/person identifier usable before an Academy user exists. Do not store raw email addresses.';
COMMENT ON COLUMN academy.learning_assignment_events.compliance_cohort_key IS
'Stable cohort identifier tying workforce eligibility, assignment and completion events to one governed compliance population.';
COMMENT ON COLUMN academy.learning_assignment_events.reporting_period_key IS
'Reporting/compliance period such as FY2026. Used by evidence resolution; not a tenant selector.';
COMMENT ON COLUMN academy.learning_assignment_events.training_topic IS
'Semantic training topic such as anti_corruption; independent of a specific Academy course.';
COMMENT ON COLUMN academy.learning_assignment_events.assignment_origin IS
'Origin of the training obligation/assignment, including onboarding, HR trigger, compliance campaign or policy trigger.';
COMMENT ON COLUMN academy.learning_assignment_events.context_snapshot IS
'Point-in-time supporting context only; authoritative workforce/course facts remain in their source systems.';
COMMENT ON COLUMN academy.learning_assignment_events.supersedes_event_id IS
'Reference to an earlier immutable event corrected by this new event.';

CREATE UNIQUE INDEX IF NOT EXISTS uq_learning_assignment_events_idempotency
ON academy.learning_assignment_events (idempotency_key)
WHERE idempotency_key IS NOT NULL;

CREATE UNIQUE INDEX IF NOT EXISTS uq_learning_assignment_events_source_event
ON academy.learning_assignment_events (source_system, source_event_id)
WHERE source_event_id IS NOT NULL;

CREATE INDEX IF NOT EXISTS idx_learning_assignment_events_company_cohort
ON academy.learning_assignment_events (company_id, compliance_cohort_key, occurred_at);

CREATE INDEX IF NOT EXISTS idx_learning_assignment_events_subject
ON academy.learning_assignment_events (company_id, subject_key, training_topic, occurred_at);

CREATE INDEX IF NOT EXISTS idx_learning_assignment_events_user
ON academy.learning_assignment_events (user_id, occurred_at)
WHERE user_id IS NOT NULL;

CREATE INDEX IF NOT EXISTS idx_learning_assignment_events_course
ON academy.learning_assignment_events (course_id, occurred_at)
WHERE course_id IS NOT NULL;

CREATE INDEX IF NOT EXISTS idx_learning_assignment_events_period_topic
ON academy.learning_assignment_events (
company_id, reporting_period_key, training_topic, event_type
);

CREATE INDEX IF NOT EXISTS idx_learning_assignment_events_due
ON academy.learning_assignment_events (due_at)
WHERE due_at IS NOT NULL;

CREATE INDEX IF NOT EXISTS idx_learning_assignment_events_context_gin
ON academy.learning_assignment_events USING gin (context_snapshot);

CREATE INDEX IF NOT EXISTS idx_learning_assignment_events_metadata_gin
ON academy.learning_assignment_events USING gin (metadata);

-- Append-only protection: correct history by inserting a superseding event.
CREATE OR REPLACE FUNCTION academy.reject_learning_assignment_event_mutation()
RETURNS trigger
LANGUAGE plpgsql
AS $$
BEGIN
RAISE EXCEPTION
'academy.learning_assignment_events is append-only. Insert a correcting event using supersedes_event_id instead of %.',
TG_OP;
END;
$$;

DROP TRIGGER IF EXISTS trg_learning_assignment_events_no_update
ON academy.learning_assignment_events;

CREATE TRIGGER trg_learning_assignment_events_no_update
BEFORE UPDATE ON academy.learning_assignment_events
FOR EACH ROW
EXECUTE FUNCTION academy.reject_learning_assignment_event_mutation();

DROP TRIGGER IF EXISTS trg_learning_assignment_events_no_delete
ON academy.learning_assignment_events;

CREATE TRIGGER trg_learning_assignment_events_no_delete
BEFORE DELETE ON academy.learning_assignment_events
FOR EACH ROW
EXECUTE FUNCTION academy.reject_learning_assignment_event_mutation();

-- PII-minimized timeline suitable for evidence resolution / auditor UI.
CREATE OR REPLACE VIEW academy.v_learning_assignment_event_timeline AS
SELECT
e.learning_assignment_event_id,
e.company_id,
e.subject_key,
e.user_id,
e.compliance_cohort_key,
e.reporting_period_key,
e.training_topic,
e.requirement_key,
e.course_id,
c.course_name,
e.event_type,
e.assignment_origin,
e.invitation_channel,
e.due_at,
e.occurred_at,
e.certificate_id,
cert.certificate_number,
cert.issued_at AS certificate_issued_at,
e.source_system,
e.source_event_id,
e.source_reference,
e.reason_code,
e.reason_detail,
e.supersedes_event_id,
e.correction_reason,
e.created_at
FROM academy.learning_assignment_events e
LEFT JOIN academy.courses c
ON c.course_id = e.course_id
LEFT JOIN academy.certificates cert
ON cert.certificate_id = e.certificate_id;

COMMENT ON VIEW academy.v_learning_assignment_event_timeline IS
'PII-minimized learning-assignment lifecycle timeline suitable as a governed source for evidence resolution and auditor views.';

-- Operational stage counts. Final regulatory percentages must use the governed
-- HR/workforce denominator and governed calculation logic in Evidence Resolution.
CREATE OR REPLACE VIEW academy.v_learning_assignment_control_summary AS
SELECT
company_id,
compliance_cohort_key,
reporting_period_key,
training_topic,

count(DISTINCT subject_key)
FILTER (WHERE event_type = 'eligible') AS eligible_event_subjects,

count(DISTINCT subject_key)
FILTER (WHERE event_type = 'assigned') AS assigned_subjects,

count(DISTINCT subject_key)
FILTER (WHERE event_type IN ('invitation_sent', 'invitation_delivered'))
AS invited_subjects,

count(DISTINCT subject_key)
FILTER (WHERE event_type = 'started') AS started_subjects,

count(DISTINCT subject_key)
FILTER (WHERE event_type = 'completed') AS completed_subjects,

count(DISTINCT subject_key)
FILTER (WHERE event_type = 'certified') AS certified_subjects,

count(DISTINCT subject_key)
FILTER (WHERE event_type = 'overdue') AS overdue_subjects,

count(DISTINCT subject_key)
FILTER (WHERE event_type = 'waived') AS waived_subjects,

count(DISTINCT subject_key)
FILTER (WHERE event_type = 'eligibility_ended') AS eligibility_ended_subjects,

min(occurred_at) AS first_event_at,
max(occurred_at) AS last_event_at

FROM academy.learning_assignment_events
GROUP BY
company_id,
compliance_cohort_key,
reporting_period_key,
training_topic;

COMMENT ON VIEW academy.v_learning_assignment_control_summary IS
'Operational cohort-stage counts from the immutable Academy learning-assignment ledger. Final compliance percentages require governed HR denominator/calculation logic.';

-- Optional registry registration.
DO $$
BEGIN
IF to_regclass('core_metadata.table_registry') IS NOT NULL THEN
BEGIN
EXECUTE $sql$
INSERT INTO core_metadata.table_registry (
schema_name,
table_name,
table_description,
business_owner,
technical_owner,
data_steward,
domain,
system_of_record,
criticality,
classification,
status
)
VALUES (
'academy',
'learning_assignment_events',
'Immutable event ledger for compliance-learning eligibility, assignment, invitation, progress and completion evidence.',
'EcoWorld Academy',
'Platform Engineering',
'Academy Data Steward',
'academy',
true,
'high',
'internal',
'active'
)
ON CONFLICT (schema_name, table_name) DO NOTHING
$sql$;
EXCEPTION
WHEN undefined_column THEN
RAISE NOTICE 'core_metadata.table_registry column contract differs; metadata registration skipped.';
END;
END IF;
END;
$$;

-- Conditional grants following existing ZAYAZ role conventions.
DO $$
BEGIN
IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'zayaz_app') THEN
GRANT USAGE ON SCHEMA academy TO zayaz_app;
GRANT SELECT, INSERT ON academy.learning_assignment_events TO zayaz_app;
GRANT SELECT ON
academy.v_learning_assignment_event_timeline,
academy.v_learning_assignment_control_summary
TO zayaz_app;
END IF;

IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'zayaz_readonly') THEN
GRANT USAGE ON SCHEMA academy TO zayaz_readonly;
GRANT SELECT ON
academy.learning_assignment_events,
academy.v_learning_assignment_event_timeline,
academy.v_learning_assignment_control_summary
TO zayaz_readonly;
END IF;

IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'zayaz_analytics') THEN
GRANT USAGE ON SCHEMA academy TO zayaz_analytics;
GRANT SELECT ON
academy.learning_assignment_events,
academy.v_learning_assignment_event_timeline,
academy.v_learning_assignment_control_summary
TO zayaz_analytics;
END IF;

IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'zayaz_verifier_api') THEN
GRANT USAGE ON SCHEMA academy TO zayaz_verifier_api;
GRANT SELECT ON
academy.v_learning_assignment_event_timeline,
academy.v_learning_assignment_control_summary
TO zayaz_verifier_api;
END IF;
END;
$$;

COMMIT;

-- ---------------------------------------------------------------------------
-- Example lifecycle
-- ---------------------------------------------------------------------------
-- New hire becomes eligible (may occur before Academy user creation):
-- INSERT INTO academy.learning_assignment_events (
-- company_id, subject_key, compliance_cohort_key, reporting_period_key,
-- training_topic, requirement_key, event_type, assignment_origin,
-- occurred_at, source_system, source_event_id, reason_code
-- ) VALUES (
-- '<company-uuid>', 'hr_person:8e241...', 'anti_corruption_FY2026', 'FY2026',
-- 'anti_corruption', 'anti_corruption_training', 'eligible', 'onboarding',
-- '2026-02-03T08:00:00Z', 'hr', 'hr_evt_928123', 'new_hire'
-- );
--
-- Invitation sent:
-- INSERT INTO academy.learning_assignment_events (
-- company_id, subject_key, user_id, course_id, compliance_cohort_key,
-- reporting_period_key, training_topic, requirement_key, event_type,
-- assignment_origin, invitation_channel, due_at, occurred_at,
-- source_system, source_event_id
-- ) VALUES (
-- '<company-uuid>', 'hr_person:8e241...', '<academy-user-uuid>',
-- 'AC-ANTI-CORRUPTION-101', 'anti_corruption_FY2026', 'FY2026',
-- 'anti_corruption', 'anti_corruption_training', 'invitation_sent',
-- 'onboarding', 'email', '2026-03-03T23:59:59Z',
-- '2026-02-03T08:05:00Z', 'academy', 'academy_invitation_78122'
-- );
--
-- Never UPDATE an incorrect event. Insert a new event with supersedes_event_id
-- and correction_reason.

academy.course_compliance_mapping.sql

academy.course_compliance_mapping.sqlGitHub ↗
-- EcoWorld Academy / ZAYAZ
-- academy.course_compliance_mapping
-- PostgreSQL / Aurora PostgreSQL
--
-- Purpose
-- -------
-- Governed mapping between an externally verifiable EcoWorld Academy public
-- course code (for example AC2608-4f86b941) and the compliance/evidence
-- requirements that the course is approved to satisfy.
--
-- Design principles
-- -----------------
-- 1. public_code is the canonical course locator in this mapping.
-- Internal academy.course_id is deliberately NOT stored here.
-- 2. Runtime resolution of public_code -> product/course -> academy.course_id
-- belongs to PRODREG, where product_public_codes and academy_courses already
-- own that relationship.
-- 3. Qualification is version-aware. An approval may pin a course/content
-- version and content hash so changed learning content cannot inherit an old
-- approval silently.
-- 4. One course may satisfy multiple framework requirements/evidence types.
-- 5. One requirement/evidence type may be satisfied by multiple approved courses.
-- 6. This table says whether a course COUNTS. It does not calculate workforce
-- coverage; the Evidence Resolver combines qualifying completions with the
-- governed workforce denominator.
--
-- NOTE ABOUT PRODREG FK
-- ---------------------
-- The repository documentation confirms prodreg.product_public_codes is the
-- public routing registry for go.ecoworld.ai/*, but its exact column contract
-- is not available here. Therefore no guessed FK is created.
-- Once the canonical public-code column is confirmed, add a FK or validation
-- trigger to prodreg.product_public_codes.

BEGIN;

CREATE SCHEMA IF NOT EXISTS academy AUTHORIZATION zayaz_admin;

DO $$
BEGIN
IF to_regclass('core_evidence.evidence_type') IS NULL THEN
RAISE EXCEPTION
'core_evidence.evidence_type must exist before creating academy.course_compliance_mapping';
END IF;
END;
$$;

CREATE TABLE IF NOT EXISTS academy.course_compliance_mapping (
course_compliance_mapping_id uuid PRIMARY KEY DEFAULT gen_random_uuid(),

-- Externally verifiable EcoWorld public course code.
public_code text NOT NULL,

-- Convenience URL for auditors/admins.
verification_url text GENERATED ALWAYS AS
('https://go.ecoworld.ai/' || public_code) STORED,

-- Semantic training subject independent of a particular course title.
training_topic text NOT NULL,

-- Evidence concept for which this course provides qualifying evidence.
evidence_type_id uuid NOT NULL,

-- Role played by course evidence inside the evidence type.
evidence_role text NOT NULL DEFAULT 'qualifying_completion',

-- Compliance/framework target.
framework_code text,
requirement_code text,
requirement_label text,
jurisdiction_code text,
regulatory_source_ref text,

-- How strongly this course satisfies the requirement.
qualification_scope text NOT NULL DEFAULT 'full',

-- Completion conditions that must be met for the learning record to count.
requires_course_completion boolean NOT NULL DEFAULT true,
requires_assessment_pass boolean NOT NULL DEFAULT false,
minimum_assessment_score numeric(6,3),
requires_certificate boolean NOT NULL DEFAULT false,

-- Version pinning. public_code remains the human-facing locator, but approval
-- may be tied to a particular reviewed course/content version.
qualified_course_version text,
qualified_content_version text,
qualified_content_hash text,

-- Governed applicability and qualification evidence.
applicability jsonb NOT NULL DEFAULT '{}'::jsonb,
completion_rule jsonb NOT NULL DEFAULT '{}'::jsonb,
qualification_basis jsonb NOT NULL DEFAULT '{}'::jsonb,

mapping_rationale text NOT NULL,

-- Governance workflow.
review_status text NOT NULL DEFAULT 'pending_review',
reviewed_by text,
reviewed_at timestamptz,
approved_by text,
approved_at timestamptz,

-- Runtime lifecycle.
status text NOT NULL DEFAULT 'draft',
effective_from timestamptz,
effective_to timestamptz,

version text NOT NULL DEFAULT '1.0.0',
supersedes_mapping_id uuid,

created_by text,
updated_by text,
metadata jsonb NOT NULL DEFAULT '{}'::jsonb,

created_at timestamptz NOT NULL DEFAULT now(),
updated_at timestamptz NOT NULL DEFAULT now(),

CONSTRAINT fk_course_compliance_mapping_evidence_type
FOREIGN KEY (evidence_type_id)
REFERENCES core_evidence.evidence_type (evidence_type_id)
ON UPDATE CASCADE
ON DELETE RESTRICT,

CONSTRAINT fk_course_compliance_mapping_supersedes
FOREIGN KEY (supersedes_mapping_id)
REFERENCES academy.course_compliance_mapping (course_compliance_mapping_id)
ON UPDATE CASCADE
ON DELETE RESTRICT,

CONSTRAINT chk_course_compliance_public_code
CHECK (
btrim(public_code) <> ''
AND public_code !~ '\s'
AND length(public_code) BETWEEN 6 AND 128
),

CONSTRAINT chk_course_compliance_training_topic
CHECK (training_topic ~ '^[a-z][a-z0-9_]*$'),

CONSTRAINT chk_course_compliance_evidence_role
CHECK (evidence_role IN (
'qualifying_completion',
'qualifying_certification',
'competency',
'supplementary',
'prerequisite'
)),

CONSTRAINT chk_course_compliance_qualification_scope
CHECK (qualification_scope IN (
'full',
'partial',
'supplementary',
'prerequisite'
)),

CONSTRAINT chk_course_compliance_minimum_score
CHECK (
minimum_assessment_score IS NULL
OR (
minimum_assessment_score >= 0
AND minimum_assessment_score <= 100
)
),

CONSTRAINT chk_course_compliance_assessment_score_logic
CHECK (
minimum_assessment_score IS NULL
OR requires_assessment_pass = true
),

CONSTRAINT chk_course_compliance_review_status
CHECK (review_status IN (
'pending_review',
'in_review',
'approved',
'rejected'
)),

CONSTRAINT chk_course_compliance_status
CHECK (status IN (
'draft',
'active',
'suspended',
'deprecated',
'retired'
)),

CONSTRAINT chk_course_compliance_active_approval
CHECK (
status <> 'active'
OR (
review_status = 'approved'
AND approved_by IS NOT NULL
AND approved_at IS NOT NULL
)
),

CONSTRAINT chk_course_compliance_reviewed
CHECK (
reviewed_at IS NULL
OR reviewed_by IS NOT NULL
),

CONSTRAINT chk_course_compliance_approved
CHECK (
approved_at IS NULL
OR approved_by IS NOT NULL
),

CONSTRAINT chk_course_compliance_effective_dates
CHECK (
effective_to IS NULL
OR effective_from IS NULL
OR effective_to > effective_from
),

CONSTRAINT chk_course_compliance_version
CHECK (version ~ '^[0-9]+\.[0-9]+\.[0-9]+$'),

CONSTRAINT chk_course_compliance_hash
CHECK (
qualified_content_hash IS NULL
OR qualified_content_hash ~ '^[A-Fa-f0-9]{64}$'
),

CONSTRAINT chk_course_compliance_not_self_superseding
CHECK (
supersedes_mapping_id IS NULL
OR supersedes_mapping_id <> course_compliance_mapping_id
),

CONSTRAINT chk_course_compliance_rationale
CHECK (btrim(mapping_rationale) <> '')
);

COMMENT ON TABLE academy.course_compliance_mapping IS
'Governed public-course-code to compliance/evidence qualification registry. Defines which EcoWorld Academy courses count as valid evidence for specific training requirements.';

COMMENT ON COLUMN academy.course_compliance_mapping.public_code IS
'Externally verifiable EcoWorld course code used by go.ecoworld.ai. Internal academy.course_id is intentionally not stored in this table.';
COMMENT ON COLUMN academy.course_compliance_mapping.verification_url IS
'Generated public verification/routing URL derived from public_code.';
COMMENT ON COLUMN academy.course_compliance_mapping.training_topic IS
'Semantic topic such as anti_corruption or esg_awareness; independent of course title.';
COMMENT ON COLUMN academy.course_compliance_mapping.evidence_type_id IS
'Canonical evidence type for which qualifying course completion/certification contributes evidence.';
COMMENT ON COLUMN academy.course_compliance_mapping.evidence_role IS
'Role played by the course record when resolving the evidence type.';
COMMENT ON COLUMN academy.course_compliance_mapping.qualification_scope IS
'full means the course independently satisfies the mapped requirement; partial/supplementary/prerequisite require additional evidence or learning.';
COMMENT ON COLUMN academy.course_compliance_mapping.qualified_content_hash IS
'Optional SHA-256 hash of the reviewed course/content package. Recommended for audit-grade approvals.';
COMMENT ON COLUMN academy.course_compliance_mapping.completion_rule IS
'Additional declarative completion criteria. Must not contain arbitrary executable code.';
COMMENT ON COLUMN academy.course_compliance_mapping.qualification_basis IS
'Structured basis for approval, such as learning-objective mapping, reviewer evidence, framework clauses and competency coverage.';
COMMENT ON COLUMN academy.course_compliance_mapping.supersedes_mapping_id IS
'Previous mapping superseded by this version. Prefer versioned replacement over silently changing an approved semantic mapping.';

-- Only one active mapping for the same semantic qualification tuple.
CREATE UNIQUE INDEX IF NOT EXISTS uq_course_compliance_mapping_active
ON academy.course_compliance_mapping (
public_code,
training_topic,
evidence_type_id,
evidence_role,
COALESCE(framework_code, ''),
COALESCE(requirement_code, ''),
COALESCE(jurisdiction_code, '')
)
WHERE status = 'active';

CREATE INDEX IF NOT EXISTS idx_course_compliance_mapping_public_code
ON academy.course_compliance_mapping (public_code, status);

CREATE INDEX IF NOT EXISTS idx_course_compliance_mapping_evidence_type
ON academy.course_compliance_mapping (evidence_type_id, status);

CREATE INDEX IF NOT EXISTS idx_course_compliance_mapping_training_topic
ON academy.course_compliance_mapping (training_topic, status);

CREATE INDEX IF NOT EXISTS idx_course_compliance_mapping_framework
ON academy.course_compliance_mapping (
framework_code,
requirement_code,
status
);

CREATE INDEX IF NOT EXISTS idx_course_compliance_mapping_review
ON academy.course_compliance_mapping (
review_status,
status
);

CREATE INDEX IF NOT EXISTS idx_course_compliance_mapping_effective
ON academy.course_compliance_mapping (
effective_from,
effective_to
)
WHERE status = 'active';

CREATE INDEX IF NOT EXISTS idx_course_compliance_mapping_applicability_gin
ON academy.course_compliance_mapping USING gin (applicability);

CREATE INDEX IF NOT EXISTS idx_course_compliance_mapping_completion_rule_gin
ON academy.course_compliance_mapping USING gin (completion_rule);

CREATE INDEX IF NOT EXISTS idx_course_compliance_mapping_basis_gin
ON academy.course_compliance_mapping USING gin (qualification_basis);

CREATE INDEX IF NOT EXISTS idx_course_compliance_mapping_metadata_gin
ON academy.course_compliance_mapping USING gin (metadata);

CREATE OR REPLACE FUNCTION academy.set_updated_at()
RETURNS trigger
LANGUAGE plpgsql
AS $$
BEGIN
NEW.updated_at = now();
RETURN NEW;
END;
$$;

DROP TRIGGER IF EXISTS trg_course_compliance_mapping_set_updated_at
ON academy.course_compliance_mapping;

CREATE TRIGGER trg_course_compliance_mapping_set_updated_at
BEFORE UPDATE ON academy.course_compliance_mapping
FOR EACH ROW
EXECUTE FUNCTION academy.set_updated_at();

-- Auditor/Admin view with canonical evidence vocabulary and public verification URL.
CREATE OR REPLACE VIEW academy.v_course_compliance_mapping_audit AS
SELECT
ccm.course_compliance_mapping_id,
ccm.public_code,
ccm.verification_url,
ccm.training_topic,

et.evidence_key,
et.canonical_name AS evidence_type_name,
et.evidence_class,

ccm.evidence_role,
ccm.framework_code,
ccm.requirement_code,
ccm.requirement_label,
ccm.jurisdiction_code,
ccm.regulatory_source_ref,

ccm.qualification_scope,

ccm.requires_course_completion,
ccm.requires_assessment_pass,
ccm.minimum_assessment_score,
ccm.requires_certificate,

ccm.qualified_course_version,
ccm.qualified_content_version,
ccm.qualified_content_hash,

ccm.mapping_rationale,
ccm.review_status,
ccm.reviewed_by,
ccm.reviewed_at,
ccm.approved_by,
ccm.approved_at,

ccm.status,
ccm.effective_from,
ccm.effective_to,
ccm.version,

ccm.applicability,
ccm.completion_rule,
ccm.qualification_basis,

ccm.created_at,
ccm.updated_at

FROM academy.course_compliance_mapping ccm
JOIN core_evidence.evidence_type et
ON et.evidence_type_id = ccm.evidence_type_id;

COMMENT ON VIEW academy.v_course_compliance_mapping_audit IS
'Auditor/Admin projection showing why an externally verifiable Academy public course code qualifies for a governed evidence/compliance requirement.';

-- Admin review queue.
CREATE OR REPLACE VIEW academy.v_course_compliance_mapping_review_queue AS
SELECT
ccm.course_compliance_mapping_id,
ccm.public_code,
ccm.verification_url,
ccm.training_topic,
et.evidence_key,
et.canonical_name AS evidence_type_name,
ccm.framework_code,
ccm.requirement_code,
ccm.requirement_label,
ccm.qualification_scope,
ccm.review_status,
ccm.status,
ccm.mapping_rationale,
ccm.qualified_course_version,
ccm.qualified_content_version,
ccm.qualified_content_hash,
ccm.created_at,
ccm.updated_at
FROM academy.course_compliance_mapping ccm
JOIN core_evidence.evidence_type et
ON et.evidence_type_id = ccm.evidence_type_id
WHERE ccm.review_status IN ('pending_review', 'in_review')
OR ccm.status = 'draft'
ORDER BY ccm.created_at, ccm.public_code;

COMMENT ON VIEW academy.v_course_compliance_mapping_review_queue IS
'Admin queue of Academy course-compliance mappings requiring qualification review or activation.';

-- Metadata registration if the registry contract matches.
DO $$
BEGIN
IF to_regclass('core_metadata.table_registry') IS NOT NULL THEN
BEGIN
EXECUTE $sql$
INSERT INTO core_metadata.table_registry (
schema_name,
table_name,
table_description,
business_owner,
technical_owner,
data_steward,
domain,
system_of_record,
criticality,
classification,
status
)
VALUES (
'academy',
'course_compliance_mapping',
'Governed public Academy course code to compliance and evidence qualification mapping.',
'EcoWorld Academy / Compliance',
'Platform Engineering',
'Academy Compliance Steward',
'academy',
true,
'high',
'internal',
'active'
)
ON CONFLICT (schema_name, table_name) DO NOTHING
$sql$;
EXCEPTION
WHEN undefined_column THEN
RAISE NOTICE
'core_metadata.table_registry exists but uses a different column contract; metadata registration skipped.';
END;
END IF;
END;
$$;

-- Conditional grants.
DO $$
BEGIN
IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'zayaz_app') THEN
GRANT USAGE ON SCHEMA academy TO zayaz_app;
GRANT SELECT, INSERT, UPDATE
ON academy.course_compliance_mapping TO zayaz_app;
GRANT SELECT
ON academy.v_course_compliance_mapping_audit,
academy.v_course_compliance_mapping_review_queue
TO zayaz_app;
END IF;

IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'zayaz_readonly') THEN
GRANT USAGE ON SCHEMA academy TO zayaz_readonly;
GRANT SELECT
ON academy.course_compliance_mapping,
academy.v_course_compliance_mapping_audit,
academy.v_course_compliance_mapping_review_queue
TO zayaz_readonly;
END IF;

IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'zayaz_analytics') THEN
GRANT USAGE ON SCHEMA academy TO zayaz_analytics;
GRANT SELECT
ON academy.course_compliance_mapping,
academy.v_course_compliance_mapping_audit,
academy.v_course_compliance_mapping_review_queue
TO zayaz_analytics;
END IF;

IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'zayaz_verifier_api') THEN
GRANT USAGE ON SCHEMA academy TO zayaz_verifier_api;
GRANT SELECT
ON academy.v_course_compliance_mapping_audit
TO zayaz_verifier_api;
END IF;
END;
$$;

COMMIT;

-- ---------------------------------------------------------------------------
-- Example
-- ---------------------------------------------------------------------------
--
-- Map public course AC2608-4f86b941 as qualifying anti-corruption training:
--
-- INSERT INTO academy.course_compliance_mapping (
-- public_code,
-- training_topic,
-- evidence_type_id,
-- evidence_role,
-- framework_code,
-- requirement_code,
-- requirement_label,
-- qualification_scope,
-- requires_course_completion,
-- requires_assessment_pass,
-- minimum_assessment_score,
-- requires_certificate,
-- qualified_course_version,
-- qualified_content_version,
-- qualified_content_hash,
-- mapping_rationale,
-- review_status,
-- reviewed_by,
-- reviewed_at,
-- approved_by,
-- approved_at,
-- status,
-- effective_from,
-- created_by
-- )
-- SELECT
-- 'AC2608-4f86b941',
-- 'anti_corruption',
-- et.evidence_type_id,
-- 'qualifying_completion',
-- 'ESRS',
-- 'G1-3',
-- 'Prevention and detection of corruption and bribery',
-- 'full',
-- true,
-- true,
-- 70.000,
-- false,
-- '1.0.0',
-- '1.0.0',
-- NULL,
-- 'Approved learning objectives and assessment cover the mapped anti-corruption training requirement.',
-- 'approved',
-- 'academy-compliance-reviewer',
-- now(),
-- 'academy-compliance-approver',
-- now(),
-- 'active',
-- now(),
-- 'academy-admin'
-- FROM core_evidence.evidence_type et
-- WHERE et.evidence_key = 'anti_corruption_training_coverage';

APPENDIX B - Admin Interface

Impact of Change:

IMPACT OF CHANGE
──────────────────────────────────────────
Templates affected 14
Customer documents 4,821
Active evidence links 12,407

Old mapping
3 CMIDs

New mapping
4 CMIDs

[ View affected artifacts ]

[ Save Draft ] [ Validate ] [ Publish ]

Test Resolution button:

[ Test Resolution ]

The Admin selects a controlled test tenant/context:

Entity:            Test Company AS
Reporting period: 2026
Facility: Oslo

and sees:

Resolution result
────────────────────────────────
✓ entity resolved
✓ reporting period resolved
✓ 3 source mappings resolved
✓ 27 observations found
✓ composition succeeded
✓ provenance complete

Result: VALID

This is extremely valuable before activating a mapping.

Architecture:

Template


evidence_requirement


evidence_type

├── evidence_source_binding
│ │
│ └── evidence_source_dimension_binding

└── evidence_dimension


Runtime Context


Evidence Context Resolver


Resolved Evidence

┌──────┴──────┐
▼ ▼
AuditEvidenceLink Ask ZARA

** The Knowledge-Management System's Mapping Screen**

For scope_1_emissions the administrator sees:

Evidence Type
──────────────────────────────────────────────────────
Scope 1 Emissions
scope_1_emissions

Class metric
Mapping status VALIDATED
Status ACTIVE

Default composition
[ Aggregate ▼ ]


DIMENSIONS
──────────────────────────────────────────────────────
Dimension Required Resolver Security
entity ✓ tenant:eco_number 🔒
reporting_period ✓ document:period
facility ○ document/user context
jurisdiction ○ document context


MAPPED SOURCES
────────────────────────────────────────────────────────────────────
Role Source Requirement Priority State
stationary_combustion CMID-ZYZ-001288 required 10 ✓
mobile_combustion CMID-ZYZ-001352 required 20 ✓
process_emissions CMID-ZYZ-001389 required 30 ✓

[ + Search SSSR and add source ]


SOURCE DIMENSION MAPPING
────────────────────────────────────────────────────────────────────
Stationary combustion / CMID-ZYZ-001288

entity
tenant_context:eco_number
→ CMID-ZYZ-007441

reporting_period
document_context:current_document_period
→ CMID-ZYZ-002921

facility
current_facility
→ CMID-ZYZ-006322


ASSURANCE
──────────────────────────────────────────────────────
Verification Required
Minimum confidence 0.95
Authoritative Yes


USED BY
──────────────────────────────────────────────────────
Climate Change Policy
Carbon Emissions Policy
Net Zero Policy
GHG Inventory Procedure
...

And changing a mapping should show its blast radius before publication.


An Anti-Corruption Policy could contain:

YAML

evidence_requirements:
- id: workforce_anti_corruption_training
evidence_type: anti_corruption_training_coverage
required: true

context:
reporting_period: current_document_period

assurance:
provenance_required: true

and:

Employees and relevant personnel shall receive periodic anti-corruption and anti-bribery training.

<AuditEvidenceLink evidence="workforce_anti_corruption_training" />

When an auditor clicks it:

AuditEvidenceLink

evidence_requirement

anti_corruption_training_coverage

Evidence Context Resolver

├── Academy completion data
├── eligible workforce data
├── course qualification
└── reporting period

87.4% trained

├── 437 qualifying employees
├── 500 eligible employees
├── qualifying Academy courses
├── completion records
└── provenance

That is considerably stronger audit evidence than merely linking to a manually entered ESG percentage.

And there is a broader architectural consequence:

Compliance requirement

ZAYAZ detects training requirement

EcoWorld Academy provides relevant course

Employees complete course

Academy generates evidence

Evidence Registry resolves evidence

Policy / procedure / disclosure is substantiated

Further Admin and auditor views

SQL creates academy.v_course_compliance_mapping_review_queue

for Admin:

Pending qualification review
────────────────────────────────────────────

AC2608-4f86b941
Anti-Corruption
ESRS G1-3
Evidence: anti_corruption_training_coverage

Qualification: FULL

[ Open public course ]
[ Review learning objectives ]
[ Approve ]
[ Reject ]

and academy.v_course_compliance_mapping_audit for auditor/evidence use:

QUALIFYING COURSE
────────────────────────────────────────────

Public code
AC2608-4f86b941

Verification
↗ go.ecoworld.ai/AC2608-4f86b941

Training topic
Anti-corruption

Requirement
ESRS G1-3

Qualification
FULL

Evidence role
Qualifying completion

Completion required Yes
Assessment required Yes
Minimum score 70%
Certificate required No

Approved by
...

Approved at
...

Qualified content
v1.0.0
SHA-256: ...

This means the auditor can trace:

Why was Employee X counted as trained?


Completion record


Public course code
AC2608-4f86b941


course_compliance_mapping


Approved for ESRS G1-3


reviewed course version/hash

So Academy stops being merely an educational product and becomes an evidence-generating compliance subsystem.

The same mechanism can later work for safety training, cybersecurity training, Code of Conduct acknowledgements, supplier training, environmental procedures, procurement training, AI governance training, etc.




GitHub RepoRequest for Change (RFC)