stack: TOC-Scope auf types/ und docs/, Sprachregeln nach AGENTS.md zentralisiert, alle Templates auf Control-Plane-Sprache, --breaking akkumuliert (schliesst #99)
Files changed: - AGENTS.md - CHANGES.md - ENVIRONMENT.md.template - SOUL.md - SOUL.md.template - USER.md.template - VERSION - docs/ownership-and-templates.md - docs/version-model.md - instructions/CONTRACT.md - instructions/dev/doc-pull-through.md - instructions/dev/stack-close/SKILL.md - instructions/dev/stack-dev/SKILL.md - instructions/dev/version-parts.md - instructions/setup-instance.md - kb/CONVENTIONS.md - kb/CONVENTIONS.md.template - kb/concepts/COLLECTION.md - kb/sources/COLLECTION.md - tools/CONTRACT.md - tools/chemenu/commands/types_cmd.py - tools/chemenu/commands/version_cmd.py - tools/chemenu/tests/test_toc.py - tools/chemenu/tests/test_version_cmd.py - tools/chemenu/toc.py - tools/chemenu/version.py - types/comparison.md - types/concept.md - types/entity.md - types/lint-report.md - types/source.md
This commit is contained in:
+12
-5
@@ -40,11 +40,18 @@ those regions and nothing else. Nothing matches on this text.
|
||||
|
||||
## Language
|
||||
|
||||
Pages are written in **German**. This binds `kb/` and the authoring surface that shapes it -
|
||||
the page type-specs `types/entity.md`, `types/concept.md`, `types/source.md` and
|
||||
`types/comparison.md`. `raw/` is untouched ([raw/CONTRACT.md](../raw/CONTRACT.md)), and the
|
||||
control plane stays English: `AGENTS.md`, the stage contracts, this file, `instructions/`, and
|
||||
the type-specs for non-page artifacts.
|
||||
Pages are written in **German** - the `language:` in this file's own frontmatter, and the one
|
||||
place that value is written down. This binds `kb/`, and inside the page type-specs
|
||||
(`types/entity.md`, `types/concept.md`, `types/source.md`, `types/comparison.md`) exactly the
|
||||
parts that become page text: each one's `## Template` block, and the `layout:` titles that head a
|
||||
catalog section. Their authoring guidance around those is instruction to an agent, so it follows
|
||||
the control plane and stays English - the same prose/identifier cut
|
||||
[kb/CONTRACT.md](CONTRACT.md#language-and-identifiers) makes inside a page, applied one level up.
|
||||
`raw/` is untouched ([raw/CONTRACT.md](../raw/CONTRACT.md)).
|
||||
|
||||
Two things follow from that value rather than being decided here, both stated once in
|
||||
[AGENTS.md § File naming](../AGENTS.md#file-naming): the control plane stays English whatever an
|
||||
instance writes its pages in, and an agent *speaks* the language named above.
|
||||
|
||||
Which line is prose and which is an identifier - and therefore what is translated at all - is
|
||||
the contract's rule, not this file's: see
|
||||
|
||||
@@ -27,12 +27,20 @@ marker pair, so a rename re-renders words and nothing else.
|
||||
|
||||
## Language
|
||||
|
||||
Pages are written in **{language}**. This binds `kb/` and the authoring surface that shapes it -
|
||||
the page type-specs `types/entity.md`, `types/concept.md`, `types/source.md` and
|
||||
`types/comparison.md`, whose `## Template` blocks are the body skeleton every new page starts
|
||||
from. `raw/` is untouched ([raw/CONTRACT.md](../raw/CONTRACT.md)), and the control plane stays
|
||||
English: `AGENTS.md`, the stage contracts, this file, `instructions/`, and the type-specs for
|
||||
non-page artifacts.
|
||||
Pages are written in **{language}** - the `language:` in this file's own frontmatter, and the
|
||||
one place that value is written down. This binds `kb/`, and inside the page type-specs
|
||||
(`types/entity.md`, `types/concept.md`, `types/source.md`, `types/comparison.md`) exactly the
|
||||
parts that become page text: each one's `## Template` block - the body skeleton every new page
|
||||
starts from - and the `layout:` titles that head a catalog section. Their authoring guidance
|
||||
around those is instruction to an agent, so it follows the control plane and stays English - the
|
||||
same prose/identifier cut [kb/CONTRACT.md](CONTRACT.md#language-and-identifiers) makes inside a
|
||||
page, applied one level up. Adopting this template into a non-English instance therefore means
|
||||
translating those blocks, not the whole file. `raw/` is untouched
|
||||
([raw/CONTRACT.md](../raw/CONTRACT.md)).
|
||||
|
||||
Two things follow from that value rather than being decided here, both stated once in
|
||||
[AGENTS.md § File naming](../AGENTS.md#file-naming): the control plane stays English whatever an
|
||||
instance writes its pages in, and an agent *speaks* the language named above.
|
||||
|
||||
Which line is prose and which is an identifier - and therefore what is translated at all - is
|
||||
the contract's rule, not this file's: see
|
||||
|
||||
+21
-22
@@ -35,32 +35,31 @@ tone, relationship labels, the confidence rubric. Neither is restated here.
|
||||
|
||||
## Types offered
|
||||
|
||||
`concept` (`tools/wikitool types describe concept`). Das Feld `concept_type:`
|
||||
wählt die Area:
|
||||
`concept` (`tools/wikitool types describe concept`). The `concept_type:` field
|
||||
picks the area:
|
||||
|
||||
| Area | Hält |
|
||||
|------|------|
|
||||
| `architectures/` | Aufbau und Struktur: wie ein System geschnitten ist und warum die Schnitte dort liegen |
|
||||
| `patterns/` | Wiederverwendbare Lösungsformen, die über mehr als einen Gegenstand hinweg gelten |
|
||||
| `protocols/` | Kommunikationsprotokolle und Standards, in ihrer üblichen Schreibweise benannt |
|
||||
| `workflows/` | Abläufe und Prozesse, die projektübergreifend wiederkehren |
|
||||
| `decisions/` | Architektur- und Entwurfsentscheidungen (siehe unten) |
|
||||
| `problems/` | Wiederkehrende Problemstellungen und ihre Lösungsansätze |
|
||||
| Area | Holds |
|
||||
|------|-------|
|
||||
| `architectures/` | Shape and structure: how a system is cut up, and why the cuts fall where they do |
|
||||
| `patterns/` | Reusable solution shapes that hold across more than one subject |
|
||||
| `protocols/` | Communication protocols and standards, named in their usual spelling |
|
||||
| `workflows/` | Procedures and processes that recur across projects |
|
||||
| `decisions/` | Architectural and design decisions (see below) |
|
||||
| `problems/` | Recurring problems and the approaches taken to them |
|
||||
|
||||
Das sind Areas, keine Collections: sie erben diesen Contract und tragen keine
|
||||
eigene `COLLECTION.md`.
|
||||
These are areas, not collections: they inherit this contract and carry no
|
||||
`COLLECTION.md` of their own.
|
||||
|
||||
Die Zuordnung trifft niemand von Hand — sie steht als `layout:` in
|
||||
`types/concept.md`, und `wikitool new` legt eine neue Seite direkt dort ab.
|
||||
Eine Seite, die anderswo liegt, meldet `wikitool lint` als *misplaced*;
|
||||
`wikitool move --page "<Titel>"` bringt sie an ihren berechneten Ort.
|
||||
Nobody assigns them by hand — the mapping is the `layout:` in
|
||||
`types/concept.md`, and `wikitool new` puts a new page straight there. A page
|
||||
sitting anywhere else is reported by `wikitool lint` as *misplaced*;
|
||||
`wikitool move --page "<title>"` moves it to its computed location.
|
||||
|
||||
Die Aufteilung ist keine Geschmacksfrage, sondern das, was die Shard-Schwelle
|
||||
des Katalogs überhaupt wirksam macht: `index rebuild` teilt **pro Area**, und
|
||||
eine Collection ohne Areas teilt sich nie — mit 80 Seiten in einer einzigen
|
||||
Tabelle war die Schwelle hier ein toter Wert. Keine der sechs
|
||||
Areas liegt derzeit über der Schwelle, also bekommt auch keine einen eigenen
|
||||
Shard; wächst eine hinein, passiert das ohne Zutun.
|
||||
The split is not a matter of taste but what makes the catalog's shard threshold
|
||||
effective at all: `index rebuild` splits **per area**, and a collection without
|
||||
areas never splits — with 80 pages in a single table the threshold was a dead
|
||||
value here. None of the six areas is currently above it, so none gets a shard of
|
||||
its own; when one grows into it, that happens without anyone acting.
|
||||
|
||||
## Decisions
|
||||
|
||||
|
||||
+26
-28
@@ -26,38 +26,36 @@ renamed or dropped - its authoring rules below are the instance's, its existence
|
||||
## Types offered
|
||||
|
||||
`source` (`tools/wikitool types describe source`). Page titles carry the `Source - ` prefix,
|
||||
applied automatically by `wikitool new source`. Das Feld `source_type:` wählt die Area - **ohne
|
||||
Default**: `wikitool new source` verweigert ohne einen expliziten Wert.
|
||||
applied automatically by `wikitool new source`. The `source_type:` field picks the area - **with
|
||||
no default**: `wikitool new source` refuses without an explicit value.
|
||||
|
||||
| Area | Hält |
|
||||
|------|------|
|
||||
| `transcripts/` | Session-Transkripte: mitgeschriebener Dialog zwischen Mensch und Agent, oder zwischen Menschen |
|
||||
| `analyses/` | Analyse-Output eines Modells über einen Gegenstand - kein Dialog, kein Protokoll, sondern eine eigenständige Einschätzung |
|
||||
| `articles/` | Externe Artikel und Blogposts, mit `source_url:` |
|
||||
| `documents/` | Eingelesene Dokumente, Handbücher, Spezifikationen |
|
||||
| `notes/` | Echte eigene Notizen ohne Dialogform - Cheat Sheets, Merkzettel |
|
||||
| `trackers/` | Exporte aus einem Issue-Tracker oder vergleichbaren System |
|
||||
| `unclassified/` | Sichtbares Fach für eine Quelle, deren Kategorie noch nicht feststeht - beratender `lint`-Befund, kein Sammelbecken. Es wieder zu leeren, oder das Enum um einen neuen Wert zu erweitern: [instructions/evolve-subtypes.md](../../instructions/evolve-subtypes.md) |
|
||||
| Area | Holds |
|
||||
|------|-------|
|
||||
| `transcripts/` | Session transcripts: recorded dialogue between a human and an agent, or between humans |
|
||||
| `analyses/` | A model's analytical output about a subject - not dialogue, not a record, but an assessment in its own right |
|
||||
| `articles/` | External articles and blog posts, with `source_url:` |
|
||||
| `documents/` | Ingested documents, manuals, specifications |
|
||||
| `notes/` | Genuinely own notes in no dialogue form - cheat sheets, reminders |
|
||||
| `trackers/` | Exports from an issue tracker or comparable system |
|
||||
| `unclassified/` | The visible slot for a source whose category is not settled yet - an advisory `lint` finding, not a dumping ground. Emptying it again, or extending the enum by a new value: [instructions/evolve-subtypes.md](../../instructions/evolve-subtypes.md) |
|
||||
|
||||
Das sind Areas, keine Collections: sie erben diesen Contract und tragen keine eigene
|
||||
`COLLECTION.md`. Die Zuordnung trifft niemand von Hand - sie steht als `layout:` in
|
||||
`types/source.md`, und `wikitool new` legt eine neue Seite direkt dort ab. Eine Seite, die
|
||||
anderswo liegt, meldet `wikitool lint` als *misplaced*; `wikitool move --page "<Titel>"` bringt
|
||||
sie an ihren berechneten Ort.
|
||||
These are areas, not collections: they inherit this contract and carry no `COLLECTION.md` of
|
||||
their own. Nobody assigns them by hand - the mapping is the `layout:` in `types/source.md`, and
|
||||
`wikitool new` puts a new page straight there. A page sitting anywhere else is reported by
|
||||
`wikitool lint` as *misplaced*; `wikitool move --page "<title>"` moves it to its computed
|
||||
location.
|
||||
|
||||
**`analysis` gegen `document`:** die Unterscheidung läuft über die Autorschaft, nicht über den
|
||||
Inhalt. Ein Modell, das über einen Gegenstand urteilt oder ihn zusammenfasst, ohne dass ein
|
||||
Mensch oder eine Organisation dafür geradesteht, ist `analysis` - unabhängig davon, wie
|
||||
artikelförmig der Text wirkt. Ein Handbuch, eine Spezifikation, eine Herstellerdoku ist
|
||||
`document`, auch wenn ein Werkzeug sie generiert hat, solange eine Organisation die Aussage
|
||||
verantwortet. Die Frage ist also "wer haftet für die Behauptung", nicht "wie liest sich der
|
||||
Text".
|
||||
**`analysis` versus `document`:** the distinction runs on authorship, not on content. A model
|
||||
judging or summarizing a subject with no human or organization answering for it is `analysis` -
|
||||
however article-shaped the text looks. A manual, a specification, a vendor document is
|
||||
`document`, even where a tool generated it, as long as an organization is accountable for what
|
||||
it says. The question is "who is liable for the claim", not "how does the text read".
|
||||
|
||||
Solange es diesen Default noch gab, fiel fast alles hierher in `notes/`, weil
|
||||
`types/source.schema.yaml` `notes` als `default:` gesetzt hatte - der Compiler wählte das
|
||||
Sammelbecken, sobald niemand widersprach.
|
||||
22 der 29 damaligen Seiten waren tatsächlich Transkripte, Analysen oder Tracker-Exporte und
|
||||
wurden per `wikitool touch --set source_type=…` umklassifiziert, bevor die Areas entstanden.
|
||||
While that default still existed, nearly everything landed here in `notes/`, because
|
||||
`types/source.schema.yaml` had `notes` as its `default:` - the compiler picked the dumping
|
||||
ground whenever nobody objected. 22 of the 29 pages there at the time were in fact transcripts,
|
||||
analyses or tracker exports, and were reclassified with `wikitool touch --set source_type=…`
|
||||
before the areas existed.
|
||||
|
||||
## Provenance rules
|
||||
|
||||
|
||||
Reference in New Issue
Block a user