stack: Typ project und Collection kb/gtd/ (#123)
CI / verify (push) Successful in 45s
Release / release (push) Successful in 36s

Files changed:
- CHANGES.md
- README.md
- VERSION
- kb/CONTRACT.md
- kb/CONVENTIONS.md
- kb/entities/COLLECTION.md
- kb/gtd/COLLECTION.md
- kb/gtd/INDEX.md
- kb/index.md
- tools/CONTRACT.md
- tools/chemenu/kb_collections.py
- tools/chemenu/tests/test_conventions.py
- tools/chemenu/tests/test_docs_verify.py
- tools/chemenu/tests/test_kb_collections.py
- tools/chemenu/tests/test_new_page.py
- tools/chemenu/tests/test_type_resolver.py
- tools/chemenu/tests/test_types_cmd.py
- types/project.md
- types/project.schema.yaml
- types/type-spec.md
This commit is contained in:
torben committed 2026-09-19 21:13:24 +02:00
1 parent 3c9d669729
commit ee24b6e5b8
20 files changed
+507 -38

No files matched your search

+100
View File
@@ -0,0 +1,100 @@
---
type: types/type-spec.md
name: project
description: Structured type for a committed initiative (a GTD project) - goal, participants, durable status, open loops
schema: types/project.schema.yaml
subtype_field: responsibility
base_dir: gtd
page_ref_fields: [related, sources]
layout:
haus: {dir: haus, title: Haus}
finanzen: {dir: finanzen, title: Finanzen}
technik: {dir: technik, title: Technik}
---
# Project
This instance's configuration for the `project` type: its frontmatter fields as this schema
requires them, and the page skeleton `wikitool new project` scaffolds. `project` is instance-owned
end to end - it declares no `guidance:`, so this file's own prose (below) carries its authoring
contract, the same way a type an instance invents for itself always does.
## When to use
- A committed initiative in the GTD sense: something with a goal, an end state, and open loops -
a household project, a piece of paid work, a piece of volunteer work.
## When NOT to use
- **The artifact the initiative is about.** `project` names the *Vorhaben* - the undertaking - not
the thing it produces or touches. A codebase, a deployed system, a tool: that is `entity` with
`entity_type: codebase` (or `system`/`tool`/`technology`). "Ship Chemenu 7.0" is a `project`;
Chemenu the codebase is an `entity`. The two are homonyms, not the same page under two types -
see `kb/entities/COLLECTION.md` for the artifact side of that line.
- A bare task or a day-to-day commitment with no project shape of its own - that lives in the
task provider, not here (`kb/` never mirrors the tracker's momentary state, see below).
## Frontmatter
| Field | Required | Use |
|---|---:|---|
| `type` | Yes | `types/project.md` |
| `state` | Yes | One of: active, dormant, completed, abandoned - a durable characterization, not the tracker's momentary state (see `## Status` below) |
| `responsibility` | Yes | `subtype_field`, one of: haus, finanzen, technik - selects the area under `kb/gtd/` |
| `created` / `modified` | Yes | As everywhere |
| `related` | No | Titles of related pages (entities, concepts, sources, other projects) |
| `sources` | No | Titles of the source pages backing this page's claims |
| `provenance` | Yes | sourced, general or mixed - `general` is the common case: a project page is usually written by the operator from their own participation, not from an ingested source |
| `summary` | Yes | One-liner for `kb/index.md` |
## Authoring guidance
- **`## Status` is a durable characterization, never a momentary state.** "Pilotbetrieb seit
2026-03, zwei Abteilungen angebunden" - not "warte auf Freigabe". The page never summarizes the
task list; the momentary state lives in the tracker, and the two are joined only by name, never
synced (`AGENTS.md` invariant 8 - one truth about "status").
- **`## Beteiligte` carries mentions, not links.** One to two lines per person, in prose, with
**no `[[wikilink]]` and no page of their own.** A person earns a page only once they matter for
the *knowledge*, independent of this project - at that point the mention becomes an edge with a
participation label. This is a deliberate, named exception to `kb/CONTRACT.md` § "Every page
should" (link to the entities it mentions): it is held by this rule, not by a checker, so read
a page here with no person-links as conforming, not as incomplete.
## Template
The block below is page material, so it is written in this instance's KB language
(`kb/CONVENTIONS.md` `language:`) rather than in the control plane's English - its headings
become the headings of every page `wikitool new project` scaffolds.
```markdown
# {name}
**Status:** {state|capitalize}
**Bereich:** {responsibility|capitalize}
## Ziel
TODO: Was ist der angestrebte Endzustand? Woran erkennt man, dass dieses Vorhaben abgeschlossen ist?
## Kontext
TODO: Warum jetzt, warum überhaupt - der Hintergrund, der nicht aus dem Titel folgt.
## Beteiligte
TODO: Ein bis zwei Zeilen je Person - Erwähnung im Fließtext, kein Wikilink, keine eigene Seite.
## Status
TODO: Dauerhafte Charakterisierung des aktuellen Stands - keine Aufgabenliste, kein Momentzustand.
## Entscheidungen
TODO: Festlegungen, die dieses Vorhaben getroffen hat, und warum.
## Gelerntes
TODO: Was sich im Verlauf gezeigt hat.
```
The value behind `**Status:**` and `**Bereich:**` stays the English enum value - that is what
`search --field` filters on.