@klickd/core 4.0.0-preview.1 → 4.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,98 @@
1
+ # `examples/v4/starter-skills/` — Starter `.klickd` skills
2
+
3
+ > **Status:** Starter / sample artefacts. **Non-normative.** **Pre-release.** **Not v4.1 GA.**
4
+ >
5
+ > **Triggers no release.** No tag, no `latest` on npm or PyPI, no DOI on Zenodo, no IANA action, no SDK bump.
6
+
7
+ This directory ships four real, structured `.klickd` files — starter skills on top of the **v4.0 envelope**. They are downloadable starter `.klickd` files — not relabelled v4-preview personas, not host-side skills, not v4.1 GA packs.
8
+
9
+ ## Files
10
+
11
+ | File | Skill id | Domain | Hash (sha256_file) |
12
+ |---|---|---|---|
13
+ | [`user.klickd`](./user.klickd) | `x.klickd/user` | transversal (base) | `19121af045f6dd3537aa9bd4372edfaed5097b8436f026a8e9c585abbac6c80a` |
14
+ | [`student.klickd`](./student.klickd) | `x.klickd/student` | education | `ffea74552ecedc9076d6468cb10214586632163f073a8c7975642e272464dba4` |
15
+ | [`research.klickd`](./research.klickd) | `x.klickd/research` | research / evidence | `571bd07773caff23d08fe6857bbf696dd6e49f701aab750fa7b261345285ce63` |
16
+ | [`coding.klickd`](./coding.klickd) | `x.klickd/coding` | software engineering | `1aab06122d8b6c7ed45737aa3b6becad3ae33badb5ad893cc7788ad6dd1481f4` |
17
+ | [`manifest.json`](./manifest.json) | — | sha256 manifest of the four skills above | (regenerable via `scripts/verify_starter_skills.py`) |
18
+
19
+ ## What these skills *are*
20
+
21
+ Each file is a real structured JSON document that carries:
22
+
23
+ - the **v4.0 envelope** (`klickd_version`, `payload_schema_version`, `domain`, `profile_kind`, `created_at`, `encrypted`) — so an existing v4.0 reader round-trips it without breaking;
24
+ - the **`x_klickd_pack` block** carrying:
25
+ - `pack`, `pack_version`, `spec_ref`, `publisher`
26
+ - `frameworks[]` (ESCO / DigComp / LifeComp / EQF / CEFR / SFIA depending on the skill)
27
+ - `base_transversal_core`
28
+ - domain-specific `competencies[]` anchored to authoritative framework IRIs
29
+ - `levels[]` with framework-anchored `level_label` (e.g. `EQF level 4`, `EQF level 6`, `EQF level 7`)
30
+ - `mastery[]` (empty in starter; pointer-only when populated by a carrier)
31
+ - `source_policy`, `evidence_policy` (RFC-002 §8b)
32
+ - `verification_gates` and per-skill `gates.verification_gates_default` (RFC-002, `raise_only: true`)
33
+ - `human_authority` (`final_decision_owner: human_carrier`, `agent_role: advisory`)
34
+ - `structured_memory` block scoped to `memory.x_klickd.<pack>`
35
+ - `router_cost` (deterministic heuristic, RFC-003)
36
+ - `forbidden_fields` literal (enforces the carrier-vs-skill split)
37
+
38
+ ## What these skills are NOT
39
+
40
+ - **Not v4.1 GA.** `klickd_version: "4.0"`, `_pack_metadata.claims_v41_ga: false`. No public catalog is implied.
41
+ - **Not relabelled personas.** They are *new artefacts* authored against frameworks. They do **not** harvest `knowledge.mastered[]` / `mastered_topics` from the v4-preview persona fixtures under [`../personas/`](../personas/) (clean-architecture invariant).
42
+ - **Not host-side skills.** The `forbidden_fields` literal is the carrier-vs-skill firewall. Pedagogy, scoring rubrics, prompt strategies, tone rules — those belong in a `host_skill` on the agent side, not in the starter file.
43
+ - **Not personal data.** No PII, no secrets, no real user state. `display_name: null`, `school_or_institution_ref: null`, `mastery: []`, `history: []`. The starter files are *publisher-owned starter shapes* a carrier can adopt and personalise locally.
44
+
45
+ ## How to verify
46
+
47
+ Offline verification of structure, fields, anti-PII guard, anti-host_skill guard, and hash stability:
48
+
49
+ ```bash
50
+ python3 scripts/verify_starter_skills.py
51
+ # or via pytest
52
+ pytest tests/test_starter_skills.py
53
+ ```
54
+
55
+ The general starter-pack validator (`scripts/validate_starter_packs.py`) is
56
+ v4.1-native by default — it expects the v4.1-shaped fields at the top level
57
+ of each file. For the v4.0 starter `.klickd` files in this directory (which
58
+ nest those fields under `x_klickd_pack` so the v4.0 envelope round-trips
59
+ unchanged) run it with the `--v40-envelope` flag:
60
+
61
+ ```bash
62
+ # v4.0-envelope mode — unwraps `x_klickd_pack` before validation
63
+ python3 scripts/validate_starter_packs.py \
64
+ --dir examples/v4/starter-skills \
65
+ --v40-envelope
66
+ ```
67
+
68
+ The two scripts are complementary: `verify_starter_skills.py` covers the v4.0
69
+ envelope, persona-isolation, and hash-stability checks specific to this
70
+ directory; `validate_starter_packs.py --v40-envelope` covers the shared
71
+ v4.1-shaped field/forbidden-field/PII checks against the same files.
72
+
73
+ ## How to use
74
+
75
+ These are downloadable starter `.klickd` files. A carrier can:
76
+
77
+ 1. Open the file matching their context (`user.klickd` as the always-on base, plus one of `student.klickd` / `research.klickd` / `coding.klickd`).
78
+ 2. Personalise *locally* — fill in `language_proficiency[]`, `subjects[].current_chapter_ref`, mastery entries (pointer-only), exam targets, etc. Personalisation never weakens gates (`raise_only: true`).
79
+ 3. Carry the file between agents. `human_authority.final_decision_owner = "human_carrier"` is non-negotiable across hosts.
80
+
81
+ ## Relation to internal spec work
82
+
83
+ These starter `.klickd` files implement the **shape** described in the internal spec work at [`docs/rfcs/RFC-009-chimera-v4.1.md`](../../../docs/rfcs/RFC-009-chimera-v4.1.md) on top of the **v4.0 envelope**. They are starter artefacts for reviewers and integrators to see the architecture working end-to-end *before* the strict v4.1 schema is promoted past `Draft`. Promotion of the strict v4.1 schema and any catalog surface remains gated by `ACCEPTANCE_CHECKLIST_V4.md`.
84
+
85
+ ## Relation to existing personas
86
+
87
+ | `examples/v4/personas/*.klickd` | `examples/v4/starter-skills/*.klickd` |
88
+ |---|---|
89
+ | Persona anchors / v4-preview demo fixtures. | Starter `.klickd` skills on the v4.0 envelope. |
90
+ | Free-text `knowledge.mastered[]`, narrative `level`. | Framework-anchored `competencies[]`, framework-anchored `levels[]`. |
91
+ | Carry tutor-style fields (`teaching_mode`, `agent_instructions`). | Carry **state only**; `forbidden_fields` block forbids host-side skill fields. |
92
+ | Inspiration material for skill authors. | Real downloadable starter `.klickd` files. |
93
+
94
+ The personas remain non-normative anchors. The starter `.klickd` files in this directory are the canonical starter artefacts going forward.
95
+
96
+ ## Release status
97
+
98
+ No tag, no release. The live npm package (`@klickd/core`) and PyPI package (`klickd`) **do not yet ship these starter `.klickd` files as package data** — a future patch release will be required to update those live pages. This directory and the GitHub raw URLs are the source of truth until then.
@@ -0,0 +1,177 @@
1
+ {
2
+ "klickd_version": "4.0",
3
+ "preview": "4.0.0-chimera-starter.1",
4
+ "payload_schema_version": "4.0.0-preview.1",
5
+ "domain_schema_version": "chimera-starter-1.0",
6
+ "created_at": "2026-05-26T00:00:00Z",
7
+ "encrypted": false,
8
+ "domain": "software_engineering",
9
+ "profile_kind": "developer",
10
+ "_pack_metadata": {
11
+ "kind": "chimera_starter_pack",
12
+ "non_normative": true,
13
+ "claims_v41_ga": false,
14
+ "contains_real_pii": false,
15
+ "contains_secrets": false,
16
+ "see_readme": "examples/v4/starter-skills/README.md",
17
+ "spec_ref": "docs/rfcs/RFC-009-chimera-v4.1.md",
18
+ "note": "Real structured Chimera-aligned starter pack on the v4.0 envelope. Not a v4.1 GA pack."
19
+ },
20
+ "x_klickd_pack": {
21
+ "pack": "x.klickd/coding",
22
+ "pack_version": "0.1.0-starter",
23
+ "spec_ref": "docs/rfcs/RFC-009-chimera-v4.1.md",
24
+ "publisher": {
25
+ "name": "klickd",
26
+ "ref": "https://klickd.app"
27
+ },
28
+ "frameworks": [
29
+ {
30
+ "scheme": "esco",
31
+ "version": "v1.1.1",
32
+ "iri_prefix": "http://data.europa.eu/esco/skill/",
33
+ "canonical_url": "https://esco.ec.europa.eu/en/classification/skill_main"
34
+ },
35
+ {
36
+ "scheme": "digcomp",
37
+ "version": "2.2",
38
+ "iri_prefix": "https://joint-research-centre.ec.europa.eu/digcomp/2.2/",
39
+ "canonical_url": "https://joint-research-centre.ec.europa.eu/digcomp_en"
40
+ },
41
+ {
42
+ "scheme": "sfia",
43
+ "version": "8",
44
+ "iri_prefix": "https://sfia-online.org/en/sfia-8/",
45
+ "canonical_url": "https://sfia-online.org/en/sfia-8"
46
+ },
47
+ {
48
+ "scheme": "eqf",
49
+ "version": "2017",
50
+ "iri_prefix": "https://europa.eu/europass/eqf/",
51
+ "canonical_url": "https://europa.eu/europass/en/europass-tools/european-qualifications-framework"
52
+ }
53
+ ],
54
+ "base_transversal_core": {
55
+ "frameworks": [
56
+ { "scheme": "esco", "version": "v1.1.1" },
57
+ { "scheme": "digcomp", "version": "2.2" },
58
+ { "scheme": "eqf", "version": "2017" }
59
+ ],
60
+ "transversal_refs": [
61
+ { "competency_ref": "esco:S5", "scheme": "esco", "prefLabel": "working with computers" },
62
+ { "competency_ref": "digcomp:3.4", "scheme": "digcomp", "prefLabel": "Programming" },
63
+ { "competency_ref": "digcomp:4.2", "scheme": "digcomp", "prefLabel": "Protecting personal data and privacy" }
64
+ ]
65
+ },
66
+ "competencies": [
67
+ { "competency_ref": "esco:S5", "scheme": "esco", "prefLabel": "working with computers" },
68
+ { "competency_ref": "digcomp:3.4", "scheme": "digcomp", "prefLabel": "Programming" },
69
+ { "competency_ref": "digcomp:4.1", "scheme": "digcomp", "prefLabel": "Protecting devices" },
70
+ { "competency_ref": "digcomp:4.2", "scheme": "digcomp", "prefLabel": "Protecting personal data and privacy" },
71
+ { "competency_ref": "sfia:PROG", "scheme": "sfia", "prefLabel": "Programming/software development" },
72
+ { "competency_ref": "sfia:TEST", "scheme": "sfia", "prefLabel": "Systems and software testing" }
73
+ ],
74
+ "levels": [
75
+ {
76
+ "framework_ref": "https://europa.eu/europass/eqf/level/6",
77
+ "level_label": "EQF level 6",
78
+ "effective_at": "2026-05-26"
79
+ }
80
+ ],
81
+ "language_proficiency": [],
82
+ "mastery": [],
83
+ "engineering_discipline": {
84
+ "code_review_required_before_merge": true,
85
+ "tests_required_for_new_logic": true,
86
+ "typecheck_required_for_typed_languages": true,
87
+ "secrets_handling": "pointer_only_never_inline",
88
+ "supply_chain_awareness": "verify_provenance_when_adding_dependency",
89
+ "reversibility_default": "prefer_reversible_changes"
90
+ },
91
+ "gates": {
92
+ "verification_gates_default": {
93
+ "raise_only": true,
94
+ "claim_grounding_required": true,
95
+ "reversibility_threshold": "low"
96
+ },
97
+ "human_veto_policy": {
98
+ "owner": "human_carrier",
99
+ "scope": ["force_push", "dependency_addition", "secret_handling", "production_deploy"]
100
+ }
101
+ },
102
+ "human_authority": {
103
+ "final_decision_owner": "human_carrier",
104
+ "agent_role": "advisory",
105
+ "escalation": "human_carrier_only"
106
+ },
107
+ "memory_scope": "memory.x_klickd.coding",
108
+ "structured_memory": {
109
+ "scope": "memory.x_klickd.coding",
110
+ "policy": "pack_scoped_only",
111
+ "entries": []
112
+ },
113
+ "evidence_policy": {
114
+ "required_for_claims": true,
115
+ "pointer_only": true,
116
+ "attestation_shape_ref": "rfc-002#8b"
117
+ },
118
+ "source_policy": {
119
+ "frameworks_offline_bundle": "docs/rfcs/chimera/frameworks/base_transversal_core.bundle.json",
120
+ "allow_inline_definitions": false,
121
+ "language_tags": ["en", "fr"]
122
+ },
123
+ "verification_gates": {
124
+ "version": 1,
125
+ "user_default": "silent",
126
+ "gates": [
127
+ {
128
+ "id": "force-push",
129
+ "action_class": "force_push",
130
+ "level": "block",
131
+ "reason": "Force push is destructive; requires explicit human authorisation."
132
+ },
133
+ {
134
+ "id": "dependency-add",
135
+ "action_class": "dependency_addition",
136
+ "level": "confirm",
137
+ "reason": "New dependencies expand the supply-chain surface; confirm provenance before adding."
138
+ },
139
+ {
140
+ "id": "secrets",
141
+ "action_class": "secret_handling",
142
+ "level": "block",
143
+ "reason": "Secrets never inline; pointer-only handling enforced at gate level."
144
+ },
145
+ {
146
+ "id": "production-deploy",
147
+ "action_class": "production_deploy",
148
+ "level": "block",
149
+ "reason": "Deploys touch shared infrastructure; reversibility threshold low."
150
+ },
151
+ {
152
+ "id": "destructive-git",
153
+ "action_class": "destructive_git",
154
+ "level": "confirm",
155
+ "reason": "Destructive git operations (reset --hard, branch -D) require confirmation."
156
+ }
157
+ ]
158
+ },
159
+ "router_cost": {
160
+ "tokens_estimate": 900,
161
+ "baseline": "base_plus_one",
162
+ "source_row": "docs/rfcs/chimera/packs/router_cost.md"
163
+ },
164
+ "forbidden_fields": [
165
+ "pedagogy",
166
+ "teaching_method",
167
+ "socratic_steps",
168
+ "prompt_strategy",
169
+ "scoring_rubric",
170
+ "intervention_policy",
171
+ "tone_rules",
172
+ "system_prompt_overrides",
173
+ "knowledge.mastered",
174
+ "mastered_topics"
175
+ ]
176
+ }
177
+ }
@@ -0,0 +1,45 @@
1
+ {
2
+ "manifest_version": "1.0",
3
+ "kind": "klickd_starter_skill_manifest",
4
+ "non_normative": true,
5
+ "claims_v41_ga": false,
6
+ "spec_ref": "docs/rfcs/RFC-009-chimera-v4.1.md",
7
+ "see_readme": "examples/v4/starter-skills/README.md",
8
+ "generated_at": "2026-05-26T00:00:00Z",
9
+ "hash_algo": "sha256",
10
+ "note": "Hashes are reproducible offline. sha256_file is over the raw bytes of the file as stored. sha256_canonical_json is over json.dumps(obj, sort_keys=True, separators=(',', ':'), ensure_ascii=False).encode('utf-8') and is stable across whitespace-only edits to the source file.",
11
+ "packs": [
12
+ {
13
+ "id": "x.klickd/user",
14
+ "file": "user.klickd",
15
+ "pack_version": "0.1.0-starter",
16
+ "bytes": 6020,
17
+ "sha256_file": "19121af045f6dd3537aa9bd4372edfaed5097b8436f026a8e9c585abbac6c80a",
18
+ "sha256_canonical_json": "09dfb1f9af44ac2e25d37ad87139388ea714f7b1d8ab79b5bc9ecf8f130cb1c6"
19
+ },
20
+ {
21
+ "id": "x.klickd/student",
22
+ "file": "student.klickd",
23
+ "pack_version": "0.1.0-starter",
24
+ "bytes": 6554,
25
+ "sha256_file": "ffea74552ecedc9076d6468cb10214586632163f073a8c7975642e272464dba4",
26
+ "sha256_canonical_json": "72c542ae92db5bf8ba76c8b5449eb99dfceb4ab6886c944414473ba8b99fcd0e"
27
+ },
28
+ {
29
+ "id": "x.klickd/research",
30
+ "file": "research.klickd",
31
+ "pack_version": "0.1.0-starter",
32
+ "bytes": 6274,
33
+ "sha256_file": "571bd07773caff23d08fe6857bbf696dd6e49f701aab750fa7b261345285ce63",
34
+ "sha256_canonical_json": "f668a1069b9bf85cbe190052f029ac7430910ca2bf0caf2cf28035542b1e2d9c"
35
+ },
36
+ {
37
+ "id": "x.klickd/coding",
38
+ "file": "coding.klickd",
39
+ "pack_version": "0.1.0-starter",
40
+ "bytes": 6305,
41
+ "sha256_file": "1aab06122d8b6c7ed45737aa3b6becad3ae33badb5ad893cc7788ad6dd1481f4",
42
+ "sha256_canonical_json": "b1ae3d57998c69ec41ad2fe88fa2b1920e31ab64cab71c38a7661edc3b14c38c"
43
+ }
44
+ ]
45
+ }
@@ -0,0 +1,175 @@
1
+ {
2
+ "klickd_version": "4.0",
3
+ "preview": "4.0.0-chimera-starter.1",
4
+ "payload_schema_version": "4.0.0-preview.1",
5
+ "domain_schema_version": "chimera-starter-1.0",
6
+ "created_at": "2026-05-26T00:00:00Z",
7
+ "encrypted": false,
8
+ "domain": "research",
9
+ "profile_kind": "researcher",
10
+ "_pack_metadata": {
11
+ "kind": "chimera_starter_pack",
12
+ "non_normative": true,
13
+ "claims_v41_ga": false,
14
+ "contains_real_pii": false,
15
+ "contains_secrets": false,
16
+ "see_readme": "examples/v4/starter-skills/README.md",
17
+ "spec_ref": "docs/rfcs/RFC-009-chimera-v4.1.md",
18
+ "note": "Real structured Chimera-aligned starter pack on the v4.0 envelope. Not a v4.1 GA pack."
19
+ },
20
+ "x_klickd_pack": {
21
+ "pack": "x.klickd/research",
22
+ "pack_version": "0.1.0-starter",
23
+ "spec_ref": "docs/rfcs/RFC-009-chimera-v4.1.md",
24
+ "publisher": {
25
+ "name": "klickd",
26
+ "ref": "https://klickd.app"
27
+ },
28
+ "frameworks": [
29
+ {
30
+ "scheme": "esco",
31
+ "version": "v1.1.1",
32
+ "iri_prefix": "http://data.europa.eu/esco/skill/",
33
+ "canonical_url": "https://esco.ec.europa.eu/en/classification/skill_main"
34
+ },
35
+ {
36
+ "scheme": "digcomp",
37
+ "version": "2.2",
38
+ "iri_prefix": "https://joint-research-centre.ec.europa.eu/digcomp/2.2/",
39
+ "canonical_url": "https://joint-research-centre.ec.europa.eu/digcomp_en"
40
+ },
41
+ {
42
+ "scheme": "lifecomp",
43
+ "version": "2020",
44
+ "iri_prefix": "https://joint-research-centre.ec.europa.eu/lifecomp/2020/",
45
+ "canonical_url": "https://joint-research-centre.ec.europa.eu/lifecomp_en"
46
+ },
47
+ {
48
+ "scheme": "eqf",
49
+ "version": "2017",
50
+ "iri_prefix": "https://europa.eu/europass/eqf/",
51
+ "canonical_url": "https://europa.eu/europass/en/europass-tools/european-qualifications-framework"
52
+ }
53
+ ],
54
+ "base_transversal_core": {
55
+ "frameworks": [
56
+ { "scheme": "esco", "version": "v1.1.1" },
57
+ { "scheme": "digcomp", "version": "2.2" },
58
+ { "scheme": "lifecomp", "version": "2020" },
59
+ { "scheme": "eqf", "version": "2017" }
60
+ ],
61
+ "transversal_refs": [
62
+ { "competency_ref": "esco:S2", "scheme": "esco", "prefLabel": "information skills" },
63
+ { "competency_ref": "digcomp:1.2", "scheme": "digcomp", "prefLabel": "Evaluating data, information and digital content" },
64
+ { "competency_ref": "lifecomp:L2", "scheme": "lifecomp", "prefLabel": "Critical thinking" }
65
+ ]
66
+ },
67
+ "competencies": [
68
+ { "competency_ref": "esco:S2", "scheme": "esco", "prefLabel": "information skills" },
69
+ { "competency_ref": "digcomp:1.2", "scheme": "digcomp", "prefLabel": "Evaluating data, information and digital content" },
70
+ { "competency_ref": "digcomp:1.3", "scheme": "digcomp", "prefLabel": "Managing data, information and digital content" },
71
+ { "competency_ref": "lifecomp:L2", "scheme": "lifecomp", "prefLabel": "Critical thinking" }
72
+ ],
73
+ "levels": [
74
+ {
75
+ "framework_ref": "https://europa.eu/europass/eqf/level/7",
76
+ "level_label": "EQF level 7",
77
+ "effective_at": "2026-05-26"
78
+ }
79
+ ],
80
+ "language_proficiency": [],
81
+ "mastery": [],
82
+ "claim_grounding": {
83
+ "policy": "every_factual_claim_with_date_or_attribution_requires_source",
84
+ "preferred_sources": ["peer_reviewed", "primary_source", "official_registry"],
85
+ "fallback_sources": ["tool:web_search"],
86
+ "forbidden_sources": ["unverified_social_media"],
87
+ "citation_shape_ref": "rfc-002#8b",
88
+ "replication_expected_when": "quantitative_result_or_dated_event"
89
+ },
90
+ "verification_artifacts_policy": {
91
+ "shape_ref": "rfc-003#verification_artifacts",
92
+ "required_for": ["empirical_claim", "quantitative_result", "policy_recommendation"],
93
+ "pointer_only": true
94
+ },
95
+ "gates": {
96
+ "verification_gates_default": {
97
+ "raise_only": true,
98
+ "claim_grounding_required": true,
99
+ "reversibility_threshold": "low"
100
+ },
101
+ "human_veto_policy": {
102
+ "owner": "human_carrier",
103
+ "scope": ["publication", "claim_attribution", "data_release"]
104
+ }
105
+ },
106
+ "human_authority": {
107
+ "final_decision_owner": "human_carrier",
108
+ "agent_role": "advisory",
109
+ "escalation": "human_carrier_only"
110
+ },
111
+ "memory_scope": "memory.x_klickd.research",
112
+ "structured_memory": {
113
+ "scope": "memory.x_klickd.research",
114
+ "policy": "pack_scoped_only",
115
+ "entries": []
116
+ },
117
+ "evidence_policy": {
118
+ "required_for_claims": true,
119
+ "pointer_only": true,
120
+ "attestation_shape_ref": "rfc-002#8b"
121
+ },
122
+ "source_policy": {
123
+ "frameworks_offline_bundle": "docs/rfcs/chimera/frameworks/base_transversal_core.bundle.json",
124
+ "allow_inline_definitions": false,
125
+ "language_tags": ["en", "fr"]
126
+ },
127
+ "verification_gates": {
128
+ "version": 1,
129
+ "user_default": "silent",
130
+ "gates": [
131
+ {
132
+ "id": "uncited-claim",
133
+ "action_class": "factual_claim_without_citation",
134
+ "level": "block",
135
+ "reason": "Research pack: every factual claim must carry a source pointer."
136
+ },
137
+ {
138
+ "id": "quantitative-result",
139
+ "action_class": "quantitative_result",
140
+ "level": "confirm",
141
+ "reason": "Quantitative results require verification artefact (RFC-003 §verification_artifacts)."
142
+ },
143
+ {
144
+ "id": "publication",
145
+ "action_class": "publication",
146
+ "level": "block",
147
+ "reason": "No publication step from the agent; human authority required."
148
+ },
149
+ {
150
+ "id": "data-release",
151
+ "action_class": "data_release",
152
+ "level": "block",
153
+ "reason": "Data release requires explicit human consent; reversibility threshold low."
154
+ }
155
+ ]
156
+ },
157
+ "router_cost": {
158
+ "tokens_estimate": 800,
159
+ "baseline": "base_plus_one",
160
+ "source_row": "docs/rfcs/chimera/packs/router_cost.md"
161
+ },
162
+ "forbidden_fields": [
163
+ "pedagogy",
164
+ "teaching_method",
165
+ "socratic_steps",
166
+ "prompt_strategy",
167
+ "scoring_rubric",
168
+ "intervention_policy",
169
+ "tone_rules",
170
+ "system_prompt_overrides",
171
+ "knowledge.mastered",
172
+ "mastered_topics"
173
+ ]
174
+ }
175
+ }