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

+78
View File
@@ -0,0 +1,78 @@
---
profile: none
outbound:
entities: [see-also]
concepts: [see-also]
sources: [see-also]
gtd: [see-also]
required_by_stack: true
---
# kb/gtd/ - Collection Contract
One page per committed initiative (a project in the GTD sense): the goal, the participants, the
durable status, the open loops. This is the half of Muster 4 that `kb/` owns - the other half,
the moment-to-moment task list, lives in the task tracker and is joined to a page here only by
name (`AGENTS.md` invariant 8, § "Two truths about status are forbidden").
**Quality goal:** a page here should still make sense once the initiative is over. A reader
should come away knowing what was attempted, who was in it, what was decided, and what was
learned - not a snapshot of what was still open at some point in time.
Inherits [kb/CONTRACT.md](../CONTRACT.md) for the rules the stack enforces - linking mechanics,
provenance, citation, the confidence machinery - and
[kb/CONVENTIONS.md](../CONVENTIONS.md) for what this instance decided: language, naming forms,
tone, relationship labels, the hedging rule. Neither is restated here.
**This collection is `required_by_stack`.** A type-spec declaring `name: project` whose schema
requires `state:` must exist (`types/type-spec.md` § "What the stack still requires of the type
layer"), and `kb/gtd/` is whichever collection that type writes into - derived, not hardcoded, so
renaming it stays consistent instead of tripping a stale name.
## Types offered
`project` (`tools/wikitool types describe project`). The `responsibility:` field selects the
area:
| Area | Holds |
|------|-------|
| `haus/` | Household initiatives |
| `finanzen/` | Financial initiatives |
| `technik/` | Technical initiatives outside any tracked codebase's own scope |
These are areas, not collections: they inherit this contract and carry no `COLLECTION.md` of
their own. The initial three values are this instance's own starting vocabulary
(`types/project.md` § Frontmatter) - not a stack requirement, and free to extend.
## Two rules unique to this collection
- **`## Status` is durable, never a momentary state (D7).** The page never summarizes the task
list. "Pilotbetrieb seit 2026-03, zwei Abteilungen angebunden" is a status; "warte auf
Freigabe" is a tracker state and does not belong here. The join between a page and its tracker
project happens at read time, over the normalized title, and is never stored.
- **`## Beteiligte` carries mentions, not links (D28).** One to two lines per person, in prose,
with no `[[wikilink]]` and no page of their own. This is a deliberate, named exception to
`kb/CONTRACT.md` § "Every page should" - a project page with unlinked people in its
`## Beteiligte` section is conforming, not incomplete. A person earns their own page, and the
mention becomes an edge, only once they matter for the knowledge independent of this one
initiative.
## Authorised labels
Only `see-also` is authorised in every direction for now. The vocabulary a participation edge
(person -> project) would use is a deliberate later addition, not an oversight - adding it is a
collection-contract change made when that label exists, not a way around a refusal.
## Outbound linking
A project page links to the entities and concepts its initiative actually touches - the codebase
it ships, the system it changes, the concept it applies - and to other project pages it depends
on or was split from.
## What does not belong here
- A summary of the tracker's current task list. The tracker owns tasks; this page owns the
initiative's durable memory.
- A person's own page reached from `## Beteiligte` - see above.
- An initiative's *artifact* - the codebase, system or tool it is about. That is `entity`
(`kb/entities/COLLECTION.md`), a different page under a different type.