Organisationsseiten: Personen als Abschnitt mit Aufstieg zur eigenen Seite, organization-Subtyp, member-of, Lint fuer Abschnittsanker #172

Closed
opened 2026-10-03 20:32:23 +00:00 by torben · 3 comments
Owner

Ergebnis

Abgeschlossen. Gebaut und ausgeliefert in 4ec22d3, Stack 8.0.0-beta.35 (--minor; der
Publish lief durch das Mass-Update-Gate, vom Betreiber freigegeben). Verifiziert durch CI-Run
529 und 530 auf 4ec22d3, beide success; lokal docs verify, instructions verify und
pytest (2182 passed, 3 skipped).

Nachzug aus der Abschlussprüfung (stack-close, 2026-10-04): kb/CONTRACT.md § Titles are
identifiers regelte, wie ein Wikilink geschrieben wird, kannte aber [[Titel#Abschnitt]] nicht —
obwohl dieses Paket genau diese Form zur geprüften gemacht hat. Jetzt steht dort: der Titelteil
ist die Referenz (der Graph zählt ihn, rename trägt den Anker mit), ein veralteter Anker ist
Broken Anchors (advisory), und ein Abschnitt ist nie Ziel einer Kante. Ausgeliefert in
af8bcb5, Stack 8.0.0-beta.36 (--patch), CI-Run 531 und 532 success. Sonst fand die
Prüfung nichts Veraltetes: docs/ trägt weder D28 noch Label- oder Lint-Begründungen, die
cli_contract-Datensätze nennen keine entity_type-Liste, README.md ist nachgezogen.

Abweichungen vom Entwurf, keine davon eine neue Entscheidung:

  • types/entity.guidance.md blieb unverändert (AK 3). Die Datei ist stack-eigen und sagt
    ausdrücklich nichts darüber, welche entity_type-Werte eine Instanz wählt; ihre Zeile 18
    („a person, a team or an organization") ist generisch und stimmt weiter.
  • Aufstieg, Schritt 2 präzisiert (D5): der Abschnitt schrumpft zu einem Spiegelstrich
    - [[<Name>]] - <Rolle> unter ## Personen, ohne eigene Überschrift. Bliebe die
    Überschrift stehen, lösten liegengebliebene Ankerlinks weiter auf und broken_anchors
    könnte sie nicht melden.
  • Vergleich der Überschriften (D4) zusätzlich ohne Inline-Code-Backticks und ohne
    schließende #; die H1 einer Seite zählt als Überschrift.
  • Mehr Pull-Through als geplant: wiki-ingest Schritt 7 sagt, wohin eine Person ohne
    Material für eine Seite geht; page-lifecycle.md § Afterwards nennt --op create für einen
    Aufstieg und die description: der Datei den neuen Abschnitt.
  • Drei bestehende Tests pinnten den entity_type-Wortschatz dieses Repos
    (test_type_resolver.py zweimal, test_types_cmd.py) und sind um organization erweitert.
  • AK 11: einziger Treffer außerhalb tests/ ist Docstring-Prosa in lint_core.py
    („organization's page"), kein Wortschatz-Literal.

Problem

In der beruflichen Instanz (entsteht auf Basis von 8.0.0 final) gibt es für viele Personen nur
Stubs: Titel, Tätigkeitsbereich, sonst nichts — meist nach Kunde gruppiert. Zwei Dinge passten
daran nicht:

  1. Die Seiten waren zu klein. Das Wiki führt zwei Schwellen, beide belegt (Farza, über
    Source - LLM Improvements Sonnet Analysis): Stub Threshold — unter 3 Sätzen oder 15
    Zeilen ist eine Seite ein Stub — und Split Threshold — ab etwa 120–150 Zeilen wird geteilt.
    Ein Personen-Stub liegt deutlich unter der unteren Schwelle. wiki-ingest Schritt 7 sagt
    dasselbe als Regel: „A subject earns a page when the source carries material for one".
  2. Die Gruppierung nach Kunde war nicht ausdrückbar. entity_type: wählt genau eine Area
    (people/); eine Ebene people/<kunde>/ gibt es nicht.

prio/blocking, weil die berufliche Instanz das beim Anlegen vorfinden soll: gebaut vor
version release von 8.0.0, nach #118.

Stand im Baum (geprüft 2026-10-03, vor dem Bau)

  • Organisationen waren entity_type: person. types/entity.schema.yaml:
    enum: [codebase, system, tool, technology, person]; types/entity.md layout: bildete
    person auf people/ ab; kb/entities/COLLECTION.md beschrieb people/ als „People and
    organizations"; types/entity.person.md sprach von „Person oder Organisation". Im Korpus genau
    eine Organisation: E3DC GmbH.
  • Kanten zielen auf Seiten, nie auf Abschnitte. xref add verlangt, dass das Ziel als Seite
    existiert (commands/xref.py, „Page A or B not found").
  • Wikilinks im Text dürfen einen Abschnitt nennen, der Graph sieht ihn nicht.
    kb_scan.WIKILINK_RE (\[\[([^\]|#]+)) schneidet den Anker ab: [[Kunde X#Anna Müller]]
    zählt als Link auf Kunde X. Ob der Abschnitt existiert, prüfte nichts.
  • rename erhält Anker. commands/page_ops.py LINK_RE behält ein |alias/#anchor-Suffix.
  • Im Korpus gab es keinen einzigen Wikilink mit #.

Entscheidungen (Betreiber, 2026-10-03)

D1 — Personen stehen als Abschnitt auf der Organisationsseite, bis sie eine Seite verdienen

Optionen waren: A jede Person eine Seite, B Personen nur als Abschnitt, C Abschnitt mit
Aufstieg
. Gewählt C — dieselbe Regel wie D28 aus #119, eine Ebene tiefer:

  • Eine Person steht als ###-Abschnitt unter ## Personen der Organisationsseite: Rolle,
    Tätigkeitsbereich, ein bis drei Zeilen. Keine eigene Seite.
  • Hat sie Material für eine eigene Seite (wiki-ingest Schritt 7), steigt sie auf: eigene
    Seite, der Abschnitt wird ein Spiegelstrich mit [[wikilink]], und die Personenseite trägt
    member-of auf die Organisation.
  • Projektseiten (#118): solange die Person keine Seite hat, zeigt die Kante auf die Organisation
    (consults: Kunde X), und ## Beteiligte nennt die Person als [[Kunde X#Anna Müller]].
    Nach dem Aufstieg zeigt beides auf die Person.

Bewusst getragene Kosten: RACI steht für nicht aufgestiegene Personen auf
Organisationsebene. Eine sehr große Organisation überschreitet Split Threshold — Ausweg ist
eine Teilorganisation (Abteilung, Standort) als eigene Seite mit part-of; Schreibdisziplin,
kein Prüfer. Wechselt jemand den Arbeitgeber, wandert der Abschnitt; Historie gibt es erst ab
einer eigenen Seite.

D2 — organization ist ein eigener entity_type und wird im Template ausgeliefert

Area organizations/, Titel „Organisationen", eigene Subtyp-Vorlage
types/entity.organization.md mit ## Personen. Die Trennung Person/Organisation ist kein
beruflicher Sonderfall. person meint nur noch Menschen.

D3 — Label member-of für Person → Organisation

„belongs to the organization the target is" — operationales Register, kein Inverses. part-of
bleibt der Teilorganisation → Organisation vorbehalten. Autorisiert unter entities: im
outbound: von kb/entities/COLLECTION.md.

D4 — Lint-Befund broken_anchors, nicht hart

  • Gemeldet wird ein [[Ziel#Anker]] bzw. [[Ziel#Anker|Alias]] im Seitentext, dessen Ziel
    existiert, auf dessen Seite aber keine Überschrift dem Anker entspricht. Fehlt schon das Ziel,
    ist das broken_links und nicht zusätzlich broken_anchors.
  • Vergleich: Überschriften aller Ebenen (# bis ######), code-bewusst (Code-Fences und
    Inline-Code maskiert); Anker und Überschrift ohne Backticks, schließende #, mehrfachen
    Whitespace und Groß-/Kleinschreibung (kb_scan.normalize_anchor). Ein verschachtelter Anker
    [[Ziel#A#B]] gilt, wenn jedes Segment als Überschrift auf der Zielseite vorkommt.
  • Nicht im Umfang: reine Selbstverweise [[#Anker]] und Anker in related:/sources:.
  • Nicht hart: der Link führt weiterhin auf die richtige Seite; und ein neuer harter Befund
    würde den Lint einer bestehenden Instanz nach dem Upgrade rot machen (D6).

D5 — Der Aufstieg ist eine dokumentierte Prozedur

instructions/page-lifecycle.md § „Promote a section to its own page", fünf Schritte: Seite mit
wikitool new entity --set entity_type=person anlegen; Abschnitt zu einem Spiegelstrich ohne
eigene Überschrift kürzen; xref add --rel member-of; Ankerlinks mit
wikitool search "[[<Organisation>#<Name>" finden und umbiegen, Kanten von Projektseiten
umhängen; lint bestätigt null broken_anchors. Kein Kommando: selten und urteilsbehaftet.

D6 — Versionsteil: --minor

  • Vorwärts: Schema, Type-Spec und Subtyp-Vorlagen gehören der Instanz und kommen nur als
    .template. member-of ist reine Daten. broken_anchors ist nicht hart.
  • Rückwärts: eine ältere tools/-Fassung kennt den Befund nicht; eine Seite mit
    entity_type: organization validiert gegen das Schema der Instanz.

Akzeptanzkriterien

  1. types/entity.schema.yaml führt organization im Enum; types/entity.md in der
    Frontmatter-Tabelle und im layout: als organization: {dir: organizations, title: Organisationen}.
  2. types/entity.organization.md existiert; new entity --set entity_type=organization legt
    die Seite unter kb/entities/organizations/ an, mit ## Personen und der Aufstiegsregel als
    TODO-Zeile (test_new_organization_scaffolds_the_organization_template).
  3. types/entity.person.md und kb/entities/COLLECTION.md (Areas, Per-area emphasis, neuer
    Abschnitt „People live on their organization's page until they earn their own") trennen Person
    und Organisation und verweisen auf page-lifecycle.md. types/entity.guidance.md bewusst
    unverändert (siehe oben).
  4. instructions/link-taxonomy.md § Operational führt member-of und grenzt es gegen
    part-of ab; kb/entities/COLLECTION.md autorisiert es unter outbound: entities:.
  5. instructions/kb-profiles.md § entities, instructions/wiki-ingest/SKILL.md Schritt 7
    und README.md nennen organization/organizations/.
  6. kb_scan.anchored_wikilinks/heading_anchors/normalize_anchor;
    lint_core.broken_anchors im Bericht („Broken Anchors - advisory, not an error") und in
    --json; nicht in HARD_ERROR_KEYS.
  7. Tests in test_lint.py: vorhandener Abschnitt mit anderer Schreibung, ###/####, Alias,
    Backticks, schließenden #, H1, verschachtelt (kein Befund); fehlender Abschnitt, auch
    verschachtelt (Befund, Anker wie geschrieben); Überschrift nur im Fence (Befund); fehlende
    Zielseite (nur broken_links); Anker in Fence/Inline-Code und [[#X]] (kein Befund);
    has_hard_errors bleibt falsch.
  8. lints cli_contract-Datensatz nennt den Befund (docs contract --apply,
    tools/CONTRACT.md); wiki-lint Schritt 3 nennt ihn; seit af8bcb5 auch kb/CONTRACT.md.
  9. page-lifecycle.md hat den Abschnitt; Inhaltsverzeichnis per docs toc --apply.
  10. E3DC GmbH: touch --set entity_type=organization, move nach
    kb/entities/organizations/, **Typ:**-Zeile angepasst, index rebuild, log append --op move. lint --json gegen HEAD verglichen: identisch bis auf den neuen, leeren
    broken_anchors.
  11. Kein Wortschatz-Literal member-of/organization in tools/chemenu/ außerhalb tests/
    (ein Docstring-Wort, siehe oben).
  12. docs verify und instructions verify grün; pytest: 2182 passed, 3 skipped.
  13. version bump --minor → 8.0.0-beta.35, Changeset geschrieben (4ec22d3); CI-Runs 529 und
    530 auf 4ec22d3 grün.

Abgrenzung

  • Beteiligungs- und RACI-Label der Projektseite: #118 (geschlossen).
  • Die COLLECTION.md und Vorlagen der beruflichen Instanz selbst (sie adoptiert die .template).
  • Ein Kommando für den Aufstieg — bewusst nicht (D5).
  • Azure-DevOps-Adapter für die berufliche Instanz: #128.
## Ergebnis **Abgeschlossen.** Gebaut und ausgeliefert in `4ec22d3`, Stack **8.0.0-beta.35** (`--minor`; der Publish lief durch das Mass-Update-Gate, vom Betreiber freigegeben). Verifiziert durch CI-Run **529** und **530** auf `4ec22d3`, beide success; lokal `docs verify`, `instructions verify` und `pytest` (2182 passed, 3 skipped). **Nachzug aus der Abschlussprüfung** (`stack-close`, 2026-10-04): `kb/CONTRACT.md` § Titles are identifiers regelte, wie ein Wikilink geschrieben wird, kannte aber `[[Titel#Abschnitt]]` nicht — obwohl dieses Paket genau diese Form zur geprüften gemacht hat. Jetzt steht dort: der Titelteil ist die Referenz (der Graph zählt ihn, `rename` trägt den Anker mit), ein veralteter Anker ist *Broken Anchors* (advisory), und ein Abschnitt ist nie Ziel einer Kante. Ausgeliefert in `af8bcb5`, Stack **8.0.0-beta.36** (`--patch`), CI-Run **531** und **532** success. Sonst fand die Prüfung nichts Veraltetes: `docs/` trägt weder D28 noch Label- oder Lint-Begründungen, die `cli_contract`-Datensätze nennen keine `entity_type`-Liste, `README.md` ist nachgezogen. Abweichungen vom Entwurf, keine davon eine neue Entscheidung: - **`types/entity.guidance.md` blieb unverändert** (AK 3). Die Datei ist stack-eigen und sagt ausdrücklich nichts darüber, welche `entity_type`-Werte eine Instanz wählt; ihre Zeile 18 („a person, a team or an organization") ist generisch und stimmt weiter. - **Aufstieg, Schritt 2 präzisiert** (D5): der Abschnitt schrumpft zu einem Spiegelstrich `- [[<Name>]] - <Rolle>` unter `## Personen`, **ohne eigene Überschrift**. Bliebe die Überschrift stehen, lösten liegengebliebene Ankerlinks weiter auf und `broken_anchors` könnte sie nicht melden. - **Vergleich der Überschriften** (D4) zusätzlich ohne Inline-Code-Backticks und ohne schließende `#`; die H1 einer Seite zählt als Überschrift. - **Mehr Pull-Through als geplant:** `wiki-ingest` Schritt 7 sagt, wohin eine Person ohne Material für eine Seite geht; `page-lifecycle.md` § Afterwards nennt `--op create` für einen Aufstieg und die `description:` der Datei den neuen Abschnitt. - **Drei bestehende Tests** pinnten den `entity_type`-Wortschatz dieses Repos (`test_type_resolver.py` zweimal, `test_types_cmd.py`) und sind um `organization` erweitert. - **AK 11:** einziger Treffer außerhalb `tests/` ist Docstring-Prosa in `lint_core.py` („organization's page"), kein Wortschatz-Literal. ## Problem In der beruflichen Instanz (entsteht auf Basis von **8.0.0 final**) gibt es für viele Personen nur Stubs: Titel, Tätigkeitsbereich, sonst nichts — meist nach Kunde gruppiert. Zwei Dinge passten daran nicht: 1. **Die Seiten waren zu klein.** Das Wiki führt zwei Schwellen, beide belegt (Farza, über `Source - LLM Improvements Sonnet Analysis`): `Stub Threshold` — unter 3 Sätzen oder 15 Zeilen ist eine Seite ein Stub — und `Split Threshold` — ab etwa 120–150 Zeilen wird geteilt. Ein Personen-Stub liegt deutlich unter der unteren Schwelle. `wiki-ingest` Schritt 7 sagt dasselbe als Regel: „A subject earns a page when the source carries material for one". 2. **Die Gruppierung nach Kunde war nicht ausdrückbar.** `entity_type:` wählt genau eine Area (`people/`); eine Ebene `people/<kunde>/` gibt es nicht. `prio/blocking`, weil die berufliche Instanz das beim Anlegen vorfinden soll: gebaut vor `version release` von 8.0.0, nach #118. ## Stand im Baum (geprüft 2026-10-03, vor dem Bau) - **Organisationen waren `entity_type: person`.** `types/entity.schema.yaml`: `enum: [codebase, system, tool, technology, person]`; `types/entity.md` `layout:` bildete `person` auf `people/` ab; `kb/entities/COLLECTION.md` beschrieb `people/` als „People and organizations"; `types/entity.person.md` sprach von „Person oder Organisation". Im Korpus genau eine Organisation: `E3DC GmbH`. - **Kanten zielen auf Seiten, nie auf Abschnitte.** `xref add` verlangt, dass das Ziel als Seite existiert (`commands/xref.py`, „Page A or B not found"). - **Wikilinks im Text dürfen einen Abschnitt nennen, der Graph sieht ihn nicht.** `kb_scan.WIKILINK_RE` (`\[\[([^\]|#]+)`) schneidet den Anker ab: `[[Kunde X#Anna Müller]]` zählt als Link auf `Kunde X`. Ob der Abschnitt existiert, prüfte nichts. - **`rename` erhält Anker.** `commands/page_ops.py` `LINK_RE` behält ein `|alias`/`#anchor`-Suffix. - **Im Korpus gab es keinen einzigen Wikilink mit `#`.** ## Entscheidungen (Betreiber, 2026-10-03) ### D1 — Personen stehen als Abschnitt auf der Organisationsseite, bis sie eine Seite verdienen Optionen waren: A jede Person eine Seite, B Personen nur als Abschnitt, **C Abschnitt mit Aufstieg**. Gewählt C — dieselbe Regel wie D28 aus #119, eine Ebene tiefer: - Eine Person steht als `###`-Abschnitt unter `## Personen` der Organisationsseite: Rolle, Tätigkeitsbereich, ein bis drei Zeilen. Keine eigene Seite. - Hat sie Material für eine eigene Seite (`wiki-ingest` Schritt 7), steigt sie auf: eigene Seite, der Abschnitt wird ein Spiegelstrich mit `[[wikilink]]`, und die Personenseite trägt `member-of` auf die Organisation. - Projektseiten (#118): solange die Person keine Seite hat, zeigt die Kante auf die Organisation (`consults: Kunde X`), und `## Beteiligte` nennt die Person als `[[Kunde X#Anna Müller]]`. Nach dem Aufstieg zeigt beides auf die Person. **Bewusst getragene Kosten:** RACI steht für nicht aufgestiegene Personen auf Organisationsebene. Eine sehr große Organisation überschreitet `Split Threshold` — Ausweg ist eine Teilorganisation (Abteilung, Standort) als eigene Seite mit `part-of`; Schreibdisziplin, kein Prüfer. Wechselt jemand den Arbeitgeber, wandert der Abschnitt; Historie gibt es erst ab einer eigenen Seite. ### D2 — `organization` ist ein eigener `entity_type` und wird im Template ausgeliefert Area `organizations/`, Titel „Organisationen", eigene Subtyp-Vorlage `types/entity.organization.md` mit `## Personen`. Die Trennung Person/Organisation ist kein beruflicher Sonderfall. `person` meint nur noch Menschen. ### D3 — Label `member-of` für Person → Organisation „belongs to the organization the target is" — operationales Register, kein Inverses. `part-of` bleibt der Teilorganisation → Organisation vorbehalten. Autorisiert unter `entities:` im `outbound:` von `kb/entities/COLLECTION.md`. ### D4 — Lint-Befund `broken_anchors`, nicht hart - **Gemeldet wird** ein `[[Ziel#Anker]]` bzw. `[[Ziel#Anker|Alias]]` im Seitentext, dessen Ziel existiert, auf dessen Seite aber keine Überschrift dem Anker entspricht. Fehlt schon das Ziel, ist das `broken_links` und nicht zusätzlich `broken_anchors`. - **Vergleich:** Überschriften aller Ebenen (`#` bis `######`), code-bewusst (Code-Fences und Inline-Code maskiert); Anker und Überschrift ohne Backticks, schließende `#`, mehrfachen Whitespace und Groß-/Kleinschreibung (`kb_scan.normalize_anchor`). Ein verschachtelter Anker `[[Ziel#A#B]]` gilt, wenn jedes Segment als Überschrift auf der Zielseite vorkommt. - **Nicht im Umfang:** reine Selbstverweise `[[#Anker]]` und Anker in `related:`/`sources:`. - **Nicht hart:** der Link führt weiterhin auf die richtige Seite; und ein neuer harter Befund würde den Lint einer bestehenden Instanz nach dem Upgrade rot machen (D6). ### D5 — Der Aufstieg ist eine dokumentierte Prozedur `instructions/page-lifecycle.md` § „Promote a section to its own page", fünf Schritte: Seite mit `wikitool new entity --set entity_type=person` anlegen; Abschnitt zu einem Spiegelstrich ohne eigene Überschrift kürzen; `xref add --rel member-of`; Ankerlinks mit `wikitool search "[[<Organisation>#<Name>"` finden und umbiegen, Kanten von Projektseiten umhängen; `lint` bestätigt null `broken_anchors`. Kein Kommando: selten und urteilsbehaftet. ### D6 — Versionsteil: `--minor` - **Vorwärts:** Schema, Type-Spec und Subtyp-Vorlagen gehören der Instanz und kommen nur als `.template`. `member-of` ist reine Daten. `broken_anchors` ist nicht hart. - **Rückwärts:** eine ältere `tools/`-Fassung kennt den Befund nicht; eine Seite mit `entity_type: organization` validiert gegen das Schema der *Instanz*. ## Akzeptanzkriterien 1. [x] `types/entity.schema.yaml` führt `organization` im Enum; `types/entity.md` in der Frontmatter-Tabelle und im `layout:` als `organization: {dir: organizations, title: Organisationen}`. 2. [x] `types/entity.organization.md` existiert; `new entity --set entity_type=organization` legt die Seite unter `kb/entities/organizations/` an, mit `## Personen` und der Aufstiegsregel als TODO-Zeile (`test_new_organization_scaffolds_the_organization_template`). 3. [x] `types/entity.person.md` und `kb/entities/COLLECTION.md` (Areas, Per-area emphasis, neuer Abschnitt „People live on their organization's page until they earn their own") trennen Person und Organisation und verweisen auf `page-lifecycle.md`. `types/entity.guidance.md` bewusst unverändert (siehe oben). 4. [x] `instructions/link-taxonomy.md` § Operational führt `member-of` und grenzt es gegen `part-of` ab; `kb/entities/COLLECTION.md` autorisiert es unter `outbound: entities:`. 5. [x] `instructions/kb-profiles.md` § `entities`, `instructions/wiki-ingest/SKILL.md` Schritt 7 und `README.md` nennen `organization`/`organizations/`. 6. [x] `kb_scan.anchored_wikilinks`/`heading_anchors`/`normalize_anchor`; `lint_core.broken_anchors` im Bericht („Broken Anchors - advisory, not an error") und in `--json`; nicht in `HARD_ERROR_KEYS`. 7. [x] Tests in `test_lint.py`: vorhandener Abschnitt mit anderer Schreibung, `###`/`####`, Alias, Backticks, schließenden `#`, H1, verschachtelt (kein Befund); fehlender Abschnitt, auch verschachtelt (Befund, Anker wie geschrieben); Überschrift nur im Fence (Befund); fehlende Zielseite (nur `broken_links`); Anker in Fence/Inline-Code und `[[#X]]` (kein Befund); `has_hard_errors` bleibt falsch. 8. [x] `lint`s `cli_contract`-Datensatz nennt den Befund (`docs contract --apply`, `tools/CONTRACT.md`); `wiki-lint` Schritt 3 nennt ihn; seit `af8bcb5` auch `kb/CONTRACT.md`. 9. [x] `page-lifecycle.md` hat den Abschnitt; Inhaltsverzeichnis per `docs toc --apply`. 10. [x] `E3DC GmbH`: `touch --set entity_type=organization`, `move` nach `kb/entities/organizations/`, `**Typ:**`-Zeile angepasst, `index rebuild`, `log append --op move`. `lint --json` gegen `HEAD` verglichen: identisch bis auf den neuen, leeren `broken_anchors`. 11. [x] Kein Wortschatz-Literal `member-of`/`organization` in `tools/chemenu/` außerhalb `tests/` (ein Docstring-Wort, siehe oben). 12. [x] `docs verify` und `instructions verify` grün; `pytest`: 2182 passed, 3 skipped. 13. [x] `version bump --minor` → 8.0.0-beta.35, Changeset geschrieben (`4ec22d3`); CI-Runs 529 und 530 auf `4ec22d3` grün. ## Abgrenzung - Beteiligungs- und RACI-Label der Projektseite: #118 (geschlossen). - Die `COLLECTION.md` und Vorlagen der beruflichen Instanz selbst (sie adoptiert die `.template`). - Ein Kommando für den Aufstieg — bewusst nicht (D5). - Azure-DevOps-Adapter für die berufliche Instanz: #128.
torben added the prio/plannedsize/Marea/kbkind/decision labels 2026-10-03 20:32:23 +00:00
torben changed title from Organisationsseiten sammeln Personen-Stubs: Personen eines Kunden als Abschnitt statt eigener Seite to Organisationsseiten: Personen als Abschnitt mit Aufstieg zur eigenen Seite, `organization`-Subtyp, `member-of`, Lint fuer Abschnittsanker 2026-10-03 20:39:25 +00:00
torben added prio/blockingkind/build and removed prio/plannedkind/decision labels 2026-10-03 20:39:25 +00:00
Author
Owner

Changelog: Q1–Q5 entschieden (Betreiber, 2026-10-03) und als D1–D6 in den Body uebernommen: Variante C (Abschnitt mit Aufstieg), organization als ausgelieferter entity_type mit eigener Subtyp-Vorlage, Label member-of, Lint-Befund broken_anchors (nicht hart, hier mitgebaut), Aufstieg als Prozedur in page-lifecycle.md statt als Kommando, Versionsteil --minor. Akzeptanzkriterien konkret (13 Punkte, inkl. Testfaelle fuer den Befund und E3DC GmbH → organizations/). kind/decision → kind/build, prio/planned → prio/blocking (vor 8.0.0 final), Reihenfolge nach #118.

**Changelog:** Q1–Q5 entschieden (Betreiber, 2026-10-03) und als D1–D6 in den Body uebernommen: Variante C (Abschnitt mit Aufstieg), `organization` als ausgelieferter `entity_type` mit eigener Subtyp-Vorlage, Label `member-of`, Lint-Befund `broken_anchors` (nicht hart, hier mitgebaut), Aufstieg als Prozedur in `page-lifecycle.md` statt als Kommando, Versionsteil `--minor`. Akzeptanzkriterien konkret (13 Punkte, inkl. Testfaelle fuer den Befund und `E3DC GmbH` → `organizations/`). `kind/decision` → `kind/build`, `prio/planned` → `prio/blocking` (vor 8.0.0 final), Reihenfolge nach #118.
Author
Owner

Changelog: Gebaut und gepublisht (4ec22d3, Stack 8.0.0-beta.35; Mass-Update-Gate vom Betreiber freigegeben), CI-Runs 529/530 gruen. AK 1–13 abgehakt mit Beleg. Neu im Body: „Stand der Umsetzung" mit den Abweichungen — types/entity.guidance.md bleibt unveraendert (stack-eigen, instanzneutral); Aufstieg Schritt 2 praezisiert (Abschnitt wird Spiegelstrich ohne eigene Ueberschrift, damit broken_anchors liegengebliebene Links meldet); Ueberschriftenvergleich zusaetzlich ohne Backticks/schliessende #, H1 zaehlt; zusaetzlicher Pull-Through in wiki-ingest Schritt 7 und page-lifecycle.md § Afterwards; drei bestehende Tests mit gepinntem entity_type-Wortschatz erweitert. „Stand im Baum" und Problem ins Praeteritum gesetzt.

**Changelog:** Gebaut und gepublisht (`4ec22d3`, Stack 8.0.0-beta.35; Mass-Update-Gate vom Betreiber freigegeben), CI-Runs 529/530 gruen. AK 1–13 abgehakt mit Beleg. Neu im Body: „Stand der Umsetzung" mit den Abweichungen — `types/entity.guidance.md` bleibt unveraendert (stack-eigen, instanzneutral); Aufstieg Schritt 2 praezisiert (Abschnitt wird Spiegelstrich **ohne** eigene Ueberschrift, damit `broken_anchors` liegengebliebene Links meldet); Ueberschriftenvergleich zusaetzlich ohne Backticks/schliessende `#`, H1 zaehlt; zusaetzlicher Pull-Through in `wiki-ingest` Schritt 7 und `page-lifecycle.md` § Afterwards; drei bestehende Tests mit gepinntem `entity_type`-Wortschatz erweitert. „Stand im Baum" und Problem ins Praeteritum gesetzt.
Author
Owner

Changelog: Geschlossen. Abschlussprüfung fand eine Lücke: kb/CONTRACT.md § Titles are identifiers kannte [[Titel#Abschnitt]] und Broken Anchors nicht — nachgezogen in af8bcb5 (Stack 8.0.0-beta.36, --patch), CI-Runs 531/532 grün. Sonst nichts veraltet (docs/, Command-Records, README geprüft). Body auf Endstand: Kopf „Ergebnis" mit allen gelaufenen Prüfungen und dem Nachzug, AK 8 um kb/CONTRACT.md ergänzt, Verweis auf #118 als geschlossen.

**Changelog:** Geschlossen. Abschlussprüfung fand eine Lücke: `kb/CONTRACT.md` § Titles are identifiers kannte `[[Titel#Abschnitt]]` und *Broken Anchors* nicht — nachgezogen in `af8bcb5` (Stack 8.0.0-beta.36, `--patch`), CI-Runs 531/532 grün. Sonst nichts veraltet (`docs/`, Command-Records, README geprüft). Body auf Endstand: Kopf „Ergebnis" mit allen gelaufenen Prüfungen und dem Nachzug, AK 8 um `kb/CONTRACT.md` ergänzt, Verweis auf #118 als geschlossen.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: torben/chemenu#172