Noetrail_JSON_Schema_Package_v1.0/
│
├── README_UA.md
├── ALIGNMENT_NOTES_UA.md
├── SCHEMA_INDEX.json
│
├── schemas/
│ ├── action-classes.json
│ ├── epistemic-state.schema.json
│ ├── epistemic-policy.schema.json
│ ├── challenge-profile.schema.json
│ ├── decision-record.schema.json
│ └── registry-index.schema.json
│
├── examples/
│ ├── example.state.json
│ ├── RandomAudit.policy.json
│ ├── Anneal30.policy.json
│ ├── RiskDirected.policy.json
│ ├── example.challenge-profile.json
│ └── example.decision-record.json
│
├── registry/
│ └── registry.json
│
└── reports/
└── VALIDATION_REPORT.txt
# Noetrail JSON Schema Package v1.0
## Для чого цей пакет
Цей пакет є машинозчитуваним структурним ядром Noetrail v1.0. Він містить JSON Schema Draft 2020-12 схеми для чотирьох основних об’єктів Noetrail, схему реєстру, контрольований словник епістемічних дій, валідні приклади та звіт перевірки.
Пакет не змінює семантику frozen Noetrail v1.0.
## Нормативні схеми
- `schemas/epistemic-state.schema.json` — `EpistemicState`
- `schemas/epistemic-policy.schema.json` — `EpistemicPolicy`
- `schemas/challenge-profile.schema.json` — `ChallengeProfile`
- `schemas/decision-record.schema.json` — `DecisionRecord`
- `schemas/registry-index.schema.json` — `NoetrailRegistry`
- `schemas/action-classes.json` — 13 canonical epistemic action classes
## Базовий цикл
EpistemicState
↓
EpistemicPolicy
↓
Epistemic Action
↓
нові evidence
↓
оновлений EpistemicState
Контур перевірки policy:
Incumbent + Challenger
↓
ChallengeProfile
↓
Evaluation
↓
DecisionRecord
## Важлива межа
JSON Schema перевіряє структурну відповідність.
Вона не доводить наукову валідність policy.
Семантичні інваріанти, зокрема заборона видавати ретроспективне порівняння за проспективне promotion evidence, перевіряються окремим semantic/conformance layer.
## Версія JSON Schema
Усі core schema-файли використовують JSON Schema Draft 2020-12.
Цей файл особливо важливий, бо виправляє розбіжність між нашою пізнішою prose-документацією та frozen schemas.
# Noetrail v1.0 — узгодження prose-документації зі frozen schemas
Під час складання окремого JSON Schema Package було повторно звірено frozen release Noetrail v1.0.
У деяких пізніше написаних пояснювальних і нормативних текстах використовувалися ілюстративні field names, які не завжди буквально збігаються з frozen v1.0 JSON schemas.
Це документаційне розходження, а не причина мовчки змінювати frozen schemas.
Ключові exact правила frozen v1.0:
1. `EpistemicPolicy.scope` — string.
2. `EpistemicPolicy` не має top-level `actions`.
Action class задається через:
`output_contract.action_class`.
3. `EpistemicPolicy.artifact_hash` — string,
а не object `{algorithm, value}`.
4. `EpistemicPolicy.provenance` — array.
5. `ChallengeProfile` використовує:
`benchmark_refs`
та
`lock_hash`.
6. Gates використовують поле:
`op`.
7. `ChallengeProfile` у frozen schema не має поля `version`.
8. `DecisionRecord` у frozen schema не має поля `version`.
При `additionalProperties: false` додавання такого поля є structural error.
9. `DecisionRecord` вимагає:
`challenge_lock_hash`,
`results`,
`gate_results`,
`failures`,
`artifact_hashes`,
`provenance`,
`timestamp`.
10. `EpistemicState` використовує:
`evidence_refs`,
`evidence_dependencies`,
`admissible_action_classes`,
`current_policy`,
`challenger_refs`.
11. Registry v1.0 має statuses:
`incumbent`,
`challenger`,
`retired`,
`example`.
Для публікаційної версії prose Technical Specification слід зробити documentation-alignment pass, не змінюючи frozen v1.0 machine schema semantics.
Нові бажані поля краще оформлювати як майбутній backward-compatible profile або v1.1 proposal, а не заднім числом переписувати v1.0.
{
"package": "Noetrail JSON Schema Package",
"version": "1.0.0",
"json_schema_draft": "2020-12",
"schemas": [
{
"object_type": "EpistemicState",
"path": "schemas/epistemic-state.schema.json",
"schema_id": "urn:noetrail:schema:epistemic-state:1.0"
},
{
"object_type": "EpistemicPolicy",
"path": "schemas/epistemic-policy.schema.json",
"schema_id": "urn:noetrail:schema:epistemic-policy:1.0"
},
{
"object_type": "ChallengeProfile",
"path": "schemas/challenge-profile.schema.json",
"schema_id": "urn:noetrail:schema:challenge-profile:1.0"
},
{
"object_type": "DecisionRecord",
"path": "schemas/decision-record.schema.json",
"schema_id": "urn:noetrail:schema:decision-record:1.0"
},
{
"object_type": "NoetrailRegistry",
"path": "schemas/registry-index.schema.json",
"schema_id": "urn:noetrail:schema:registry-index:1.0"
}
],
"controlled_vocabulary": {
"path": "schemas/action-classes.json",
"count": 13
}
}
Це наш canonical machine vocabulary із 13 епістемічних дій.
{
"version": "1.0.0",
"title": "Noetrail Epistemic Action Classes",
"values": [
"experiment",
"direct_replication",
"conceptual_replication",
"adversarial_test",
"measurement_audit",
"causal_identification",
"reanalysis",
"boundary_search",
"model_criticism",
"model_generation",
"evidence_synthesis",
"random_exploration",
"stop_defer"
]
}
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:noetrail:schema:epistemic-state:1.0",
"title": "Noetrail EpistemicState",
"type": "object",
"additionalProperties": false,
"required": [
"type",
"id",
"version",
"objective",
"claims",
"uncertainty",
"constraints",
"provenance"
],
"properties": {
"type": {
"const": "EpistemicState"
},
"id": {
"type": "string",
"minLength": 1
},
"version": {
"type": "string",
"minLength": 1
},
"objective": {
"type": "string",
"minLength": 1
},
"claims": {
"type": "array"
},
"evidence_refs": {
"type": "array",
"items": {
"type": "string"
}
},
"uncertainty": {
"type": [
"object",
"array",
"string"
]
},
"evidence_dependencies": {
"type": [
"object",
"array",
"null"
]
},
"constraints": {
"type": [
"object",
"array"
]
},
"admissible_action_classes": {
"type": "array",
"items": {
"type": "string"
}
},
"current_policy": {
"type": [
"object",
"null"
]
},
"challenger_refs": {
"type": "array"
},
"provenance": {
"type": "array"
}
}
}
Це, мабуть, найважливіша schema Noetrail.
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:noetrail:schema:epistemic-policy:1.0",
"title": "Noetrail EpistemicPolicy",
"type": "object",
"additionalProperties": false,
"required": [
"type",
"id",
"version",
"title",
"scope",
"input_profile",
"output_contract",
"implementation",
"artifact_hash",
"license",
"provenance"
],
"properties": {
"type": {
"const": "EpistemicPolicy"
},
"id": {
"type": "string",
"minLength": 1
},
"version": {
"type": "string",
"minLength": 1
},
"title": {
"type": "string"
},
"scope": {
"type": "string"
},
"input_profile": {
"type": [
"object",
"string"
]
},
"output_contract": {
"type": "object",
"required": [
"action_class",
"uncertainty_required"
],
"properties": {
"action_class": {
"type": [
"string",
"array"
]
},
"uncertainty_required": {
"type": "boolean"
},
"rationale_required": {
"type": "boolean"
}
},
"additionalProperties": true
},
"protected_exploration": {
"type": [
"object",
"null"
]
},
"implementation": {
"type": [
"object",
"string"
]
},
"artifact_hash": {
"type": "string",
"minLength": 16
},
"license": {
"type": "string"
},
"provenance": {
"type": "array"
}
}
}
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:noetrail:schema:challenge-profile:1.0",
"title": "Noetrail ChallengeProfile",
"type": "object",
"additionalProperties": false,
"required": [
"type",
"id",
"incumbent",
"challengers",
"benchmark_refs",
"metrics",
"gates",
"development_exclusions",
"prospective",
"locked",
"lock_hash"
],
"properties": {
"type": {
"const": "ChallengeProfile"
},
"id": {
"type": "string"
},
"incumbent": {
"type": "object"
},
"challengers": {
"type": "array",
"minItems": 1
},
"benchmark_refs": {
"type": "array",
"minItems": 1
},
"metrics": {
"type": "array",
"minItems": 1
},
"gates": {
"type": "array",
"minItems": 1,
"items": {
"type": "object",
"required": [
"id",
"metric",
"op",
"value"
],
"properties": {
"id": {
"type": "string"
},
"metric": {
"type": "string"
},
"op": {
"enum": [
">=",
">",
"<=",
"<",
"=="
]
},
"value": {}
},
"additionalProperties": true
}
},
"development_exclusions": {
"type": "array"
},
"exploration_constraints": {
"type": [
"object",
"array",
"null"
]
},
"seed_protocol": {
"type": [
"object",
"string",
"null"
]
},
"prospective": {
"type": "boolean"
},
"locked": {
"type": "boolean"
},
"lock_hash": {
"type": "string",
"minLength": 8
},
"notes": {
"type": "string"
}
}
}
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:noetrail:schema:decision-record:1.0",
"title": "Noetrail DecisionRecord",
"type": "object",
"additionalProperties": false,
"required": [
"type",
"id",
"challenge_profile_id",
"challenge_lock_hash",
"results",
"gate_results",
"decision",
"selected_policy",
"failures",
"artifact_hashes",
"provenance",
"timestamp"
],
"properties": {
"type": {
"const": "DecisionRecord"
},
"id": {
"type": "string"
},
"challenge_profile_id": {
"type": "string"
},
"challenge_lock_hash": {
"type": "string"
},
"results": {
"type": "object"
},
"gate_results": {
"type": "array"
},
"decision": {
"enum": [
"promote",
"retain",
"demote",
"inconclusive"
]
},
"selected_policy": {
"type": [
"object",
"null"
]
},
"failures": {
"type": "array"
},
"artifact_hashes": {
"type": "object"
},
"provenance": {
"type": "array"
},
"timestamp": {
"type": "string"
}
}
}
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:noetrail:schema:registry-index:1.0",
"title": "Noetrail RegistryIndex",
"type": "object",
"additionalProperties": false,
"required": [
"type",
"version",
"entries"
],
"properties": {
"type": {
"const": "NoetrailRegistry"
},
"version": {
"type": "string"
},
"entries": {
"type": "array",
"items": {
"type": "object",
"required": [
"policy_id",
"version",
"title",
"status",
"artifact_hash"
],
"properties": {
"policy_id": {
"type": "string"
},
"version": {
"type": "string"
},
"title": {
"type": "string"
},
"status": {
"enum": [
"incumbent",
"challenger",
"retired",
"example"
]
},
"artifact_hash": {
"type": "string"
},
"schema_conformance": {
"type": "string"
},
"implementation": {},
"provenance": {}
},
"additionalProperties": true
}
}
}
}
{
"type": "EpistemicState",
"id": "urn:noetrail:state:model-inadequacy-governance",
"version": "1.0.0",
"objective": "Govern and compare policies for detecting represented-model inadequacy under equal audit budgets.",
"claims": [
{
"text": "No fixed audit policy should have permanent privileged status.",
"status": "working principle"
}
],
"evidence_refs": [
"urn:noetrail:benchmark:arcos-locked",
"urn:noetrail:benchmark:successor-locked"
],
"uncertainty": {
"primary": "Which policy generalizes best on unseen misspecification families?"
},
"evidence_dependencies": {
"benchmark_versions": "immutable"
},
"constraints": {
"mean_false_alarm_max": 0.015,
"preserve_negative_results": true
},
"admissible_action_classes": [
"experiment",
"direct_replication",
"conceptual_replication",
"adversarial_test",
"measurement_audit",
"causal_identification",
"reanalysis",
"boundary_search",
"model_criticism",
"model_generation",
"evidence_synthesis",
"random_exploration",
"stop_defer"
],
"current_policy": {
"policy_id": "urn:noetrail:policy:anneal30",
"version": "0.3.0"
},
"challenger_refs": [
{
"policy_id": "urn:noetrail:policy:risk-directed",
"version": "1.0.0"
}
],
"provenance": [
{
"artifact_hash": "b7d1669649e207a800a8b46beb86d4015fc7574b661fb7a1ad7a934229e09b5e",
"role": "locked benchmark evidence"
}
]
}
{
"type": "EpistemicPolicy",
"id": "urn:noetrail:policy:random-audit",
"version": "1.0.0",
"title": "RandomAudit",
"scope": "Model-inadequacy audit policy",
"input_profile": {
"profile": "model-inadequacy-audit"
},
"output_contract": {
"action_class": "random_exploration",
"uncertainty_required": true,
"rationale_required": false
},
"protected_exploration": {
"minimum_random_fraction": 1.0
},
"implementation": {
"kind": "reference-example"
},
"artifact_hash": "2d20bc1dfdd563fabc2d3df1d574b8c243852a82fb582bf4147be7daf3d16aec",
"license": "CC0-1.0",
"provenance": [
{
"role": "baseline"
}
]
}
{
"type": "EpistemicPolicy",
"id": "urn:noetrail:policy:anneal30",
"version": "0.3.0",
"title": "Anneal30",
"scope": "Protected-exploration + risk-directed model-inadequacy audit policy",
"input_profile": {
"profile": "model-inadequacy-audit"
},
"output_contract": {
"action_class": [
"random_exploration",
"adversarial_test"
],
"uncertainty_required": true,
"rationale_required": false
},
"protected_exploration": {
"minimum_random_fraction": 0.3
},
"implementation": {
"artifact": "Successor_v0.3_Frozen_Candidate.zip"
},
"artifact_hash": "93efc10a1b93efe7a4677e28848bf0047fdcbe08acf1201513b1f104e749f128",
"license": "CC-BY-4.0",
"provenance": [
{
"role": "validated incumbent candidate"
}
]
}
{
"type": "EpistemicPolicy",
"id": "urn:noetrail:policy:risk-directed",
"version": "1.0.0",
"title": "RiskDirected",
"scope": "Residual-risk-directed model-inadequacy audit policy",
"input_profile": {
"profile": "model-inadequacy-audit"
},
"output_contract": {
"action_class": "adversarial_test",
"uncertainty_required": true,
"rationale_required": false
},
"protected_exploration": null,
"implementation": {
"artifact": "Successor_v1.0_Locked_Confirmatory.zip"
},
"artifact_hash": "2298b2636fcf86096de4da2d28dfe2d8b4aae46d1a70826c3ac03353e91bc77a",
"license": "CC-BY-4.0",
"provenance": [
{
"role": "post-lock challenger"
}
]
}
Це хороший приклад того, як не видавати вже побачений результат RiskDirected за prospective validation.
{
"type": "ChallengeProfile",
"id": "urn:noetrail:challenge:risk-vs-anneal-fresh-required",
"incumbent": {
"policy_id": "urn:noetrail:policy:anneal30",
"version": "0.3.0"
},
"challengers": [
{
"policy_id": "urn:noetrail:policy:risk-directed",
"version": "1.0.0"
}
],
"benchmark_refs": [
{
"requirement": "fresh out-of-development locked benchmark required"
}
],
"metrics": [
"mean_detection",
"mean_false_alarm",
"worst_family_detection"
],
"gates": [
{
"id": "g1",
"metric": "mean_detection_advantage",
"op": ">",
"value": 0.0
},
{
"id": "g2",
"metric": "challenger_mean_false_alarm",
"op": "<=",
"value": 0.015
}
],
"development_exclusions": [
"ARCOS-Bench v1.0",
"Successor development v0.1-v0.3",
"Successor v1.0 locked worlds"
],
"exploration_constraints": null,
"seed_protocol": null,
"prospective": false,
"locked": false,
"lock_hash": "NOT_LOCKED",
"notes": "Example showing that the existing RiskDirected result cannot be reused as prospective promotion evidence."
}
{
"type": "DecisionRecord",
"id": "urn:noetrail:decision:anneal30-vs-risk-directed-existing-evidence",
"challenge_profile_id": "urn:noetrail:challenge:risk-vs-anneal-fresh-required",
"challenge_lock_hash": "NONE",
"results": {
"risk_directed_mean_detection": 0.314125,
"anneal30_mean_detection": 0.28925
},
"gate_results": [],
"decision": "inconclusive",
"selected_policy": null,
"failures": [
"Existing RiskDirected advantage was observed without a pre-outcome direct promotion challenge; fresh locked evidence is required."
],
"artifact_hashes": {
"successor_v1_locked": "b7d1669649e207a800a8b46beb86d4015fc7574b661fb7a1ad7a934229e09b5e"
},
"provenance": [
{
"status": "retrospective descriptive evidence"
}
],
"timestamp": "2026-09-25T00:00:00Z"
}
{
"type": "NoetrailRegistry",
"version": "1.0.0",
"entries": [
{
"policy_id": "urn:noetrail:policy:random-audit",
"version": "1.0.0",
"title": "RandomAudit",
"status": "example",
"artifact_hash": "2d20bc1dfdd563fabc2d3df1d574b8c243852a82fb582bf4147be7daf3d16aec",
"schema_conformance": "Noetrail v1.0",
"implementation": {
"kind": "reference-example"
},
"provenance": [
{
"role": "baseline"
}
]
},
{
"policy_id": "urn:noetrail:policy:anneal30",
"version": "0.3.0",
"title": "Anneal30",
"status": "incumbent",
"artifact_hash": "93efc10a1b93efe7a4677e28848bf0047fdcbe08acf1201513b1f104e749f128",
"schema_conformance": "Noetrail v1.0",
"implementation": {
"artifact": "Successor_v0.3_Frozen_Candidate.zip"
},
"provenance": [
{
"role": "validated incumbent candidate"
}
]
},
{
"policy_id": "urn:noetrail:policy:risk-directed",
"version": "1.0.0",
"title": "RiskDirected",
"status": "challenger",
"artifact_hash": "2298b2636fcf86096de4da2d28dfe2d8b4aae46d1a70826c3ac03353e91bc77a",
"schema_conformance": "Noetrail v1.0",
"implementation": {
"artifact": "Successor_v1.0_Locked_Confirmatory.zip"
},
"provenance": [
{
"role": "post-lock challenger"
}
]
}
]
}
Noetrail JSON Schema Package v1.0 — validation report
PASS examples/example.state.json
-> EpistemicState
PASS examples/Anneal30.policy.json
-> EpistemicPolicy
PASS examples/RandomAudit.policy.json
-> EpistemicPolicy
PASS examples/RiskDirected.policy.json
-> EpistemicPolicy
PASS examples/example.challenge-profile.json
-> ChallengeProfile
PASS examples/example.decision-record.json
-> DecisionRecord
PASS registry/registry.json
-> NoetrailRegistry
OVERALL: PASS
Якщо ти захочеш опублікувати не все, а мінімальний canonical machine-readable набір, достатньо цих семи файлів:
schemas/
├── action-classes.json
├── epistemic-state.schema.json
├── epistemic-policy.schema.json
├── challenge-profile.schema.json
├── decision-record.schema.json
└── registry-index.schema.json
SCHEMA_INDEX.json