new: scaffold materializes a schema default only for a required field
CI / verify (push) Successful in 57s
Release / release (push) Successful in 37s

Files changed:
- CHANGES.md
- VERSION
- instructions/CONTRACT.md
- tools/CONTRACT.md
- tools/chemenu/commands/new_page.py
- tools/chemenu/tests/test_new_page.py
- types/type-spec.md
This commit is contained in:
2026-09-16 21:38:20 +02:00
parent 4284f101c8
commit aa31d431fc
7 changed files with 118 additions and 9 deletions
+25 -1
View File
@@ -59,7 +59,7 @@ concern - readable here, never shipped as something to parse.
---
## 6.1.0-beta.5 - 2026-09-16 - Session-Id-Fallback: Harness-Variable schliesst die Luecke zwischen Telemetrie-Join und Iteration-Budget-Gate
## 6.1.0-beta.6 - 2026-09-16 - new: scaffold materializes a schema default only for a required field
**Author:** Torben Nehmer
@@ -72,6 +72,7 @@ concern - readable here, never shipped as something to parse.
- Migrationsdokument prueft gegen eine festgehaltene Vorher-Ausgabe, Beispielverweis auf die .template-Form
- dist upgrade: --take-release nimmt fuer einen lokal geaenderten Pfad die Release-Fassung
- version notes antwortet auf einer ausgelieferten Instanz aus dem Release-Feed
- new: scaffold materializes a schema default only for a required field
<!-- /wikitool:bumps -->
### Upgrade-Prozedur als eigene Instruktion statt als Prosa in INSTALL.md
@@ -302,6 +303,29 @@ Aenderung waeren beide Tests gruen und blind gewesen.
`--minor`: additiv (ein neues optionales `source`-Feld in `budget.json`, die Id faellt weiterhin
auf `getppid()` zurueck, wo keine Variable greift), keine der beiden Drop-in-Richtungen verletzt.
### new: scaffold materializes a schema default only for a required field
`tools/wikitool new instruction --name "x"` schrieb bislang `obligation: required` in jede neue
Instruktion. `obligation:` ist ein Migrationsfeld (`instructions/CONTRACT.md`
§ `instructions/migrations/`) - eine gewoehnliche Instruktion ist keine Migration und hat nichts,
was laufen muesste. Ursache: `new_page._build_frontmatter()` materialisierte jedes
Schema-`default:` unbesehen; ueber alle acht `types/*.schema.yaml` gibt es genau zwei
(`entity`/`concept`s `provenance`, in `required:`; `instruction`s `obligation:`, nicht).
Die Regel jetzt: ein Schema-`default:` wird nur fuer ein Feld materialisiert, das das Schema auch
in `required:` fuehrt. Auf einem optionalen Feld ist ein `default:` eine Lese-Annahme (was ein
fehlendes Feld bedeutet), keine Schreib-Vorgabe - sie hinzuschreiben macht aus der stillen
Annahme eine ausgesprochene Behauptung. `instruction.obligation`s eigene Lese-Annahme steht
unveraendert und unabhaengig in `kb_state.py` (`frontmatter.get("obligation") or REQUIRED`).
Der `array`-Zweig direkt daneben (leere Liste fuer ein unbesetztes Array-Feld wie `tags:`) ist
davon ausdruecklich nicht betroffen - er bleibt fuer optionale wie Pflichtfelder gleich, weil ein
fehlender Schluessel sonst den Template-Filter-Suffix woertlich in den Body schreiben wuerde
(`{related|bullets}` -> das Wort "bullets").
`--patch`: kein Bestandsdokument aendert sich (`obligation:` stand bislang nur explizit oder auf
den beiden Migrationsdokumenten), keine Migration noetig, und ein zurueckgerolltes Werkzeug
schriebe das Feld nur wieder mit.
---
## 6.0.1 - 2026-09-16 - docs toc/verify erreichen die .template-Form einer Referenzdatei