feat: participation and RACI labels, written on the project page (#118)
CI / verify (push) Successful in 5m12s
CI / pwsh (push) Successful in 1m59s
Release / release (push) Successful in 34s

Files changed:
- CHANGES.md
- VERSION
- instructions/gtd-weekly-review/SKILL.md
- instructions/link-taxonomy.md
- kb/entities/COLLECTION.md
- kb/gtd/COLLECTION.md
- types/project.md

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SnAJ7Z3CpVD3PRbN73QtU2
This commit is contained in:
torbenandClaude Opus 5.5 committed 2026-10-03 23:03:10 +02:00
1 parent bd12831974
commit f3ccbd86f9
7 files changed
+105 -22

No files matched your search

+34 -3
View File
@@ -59,9 +59,9 @@ edge merely to mirror the first one.** The inbound view is rendered from the gra
`index rebuild` and `search`, so a reader landing on the target sees what points at it whether
or not anyone wrote a second edge.
That is why most labels below have no inverse. Only three pairs do, because in each the reverse
That is why most labels below have no inverse. Only four pairs do, because in each the reverse
direction is a genuine primary statement someone would write on its own: `depends-on` /
`required-by`, `runs-on` / `hosts`, and `composition` / `part-of`.
`required-by`, `runs-on` / `hosts`, `composition` / `part-of`, and `owns` / `owned-by`.
**A self-dual label is still written once.** `alternative-to` is its own inverse - the sentence
reads identically from either end - and that makes it the easiest label in the catalogue to
@@ -82,6 +82,15 @@ relationship the catalogue already had a word for. It is not a mirror: the paren
lists its parts, the child's names the whole it belongs to, and a reader landing on the child
needs the second one.
The fourth came with the participation labels, and for the opposite reason: not a child reaching
for a word, but a page whose reader asks the question from the other end. "Who answers for this
initiative?" is asked on the initiative's page, and a page shows only the edges it carries itself -
the inbound view lives in `search` and the index, not in the page's own links block. So the
initiative writes `owned-by`, a person page may still write `owns`, and neither is a mirror of the
other: each answers a reader who is standing where the edge is written. A new name for the same
claim would have been the alternative, and the worse one - two words for one statement are a
synonym no `lint` can tell apart, where an inverse pair is one statement read from either end.
## When to run
Adding or changing a `related:` entry, authorising labels in a `COLLECTION.md`, or judging
@@ -128,8 +137,13 @@ entity to entity.
| `produces` | — | emits the target as an artifact or data |
| `consumes` | — | reads the target as an artifact or data |
| `maintains` | — | carries the upkeep of the target |
| `owns` | — | is accountable for the target's existence and decisions |
| `owns` | `owned-by` | is accountable for the target's existence and decisions |
| `owned-by` | `owns` | has in the target the one accountable for its existence and decisions |
| `authored` | — | created the target as a one-time act |
| `involves` | — | takes the target in as a participant, without naming its role |
| `staffed-by` | — | is carried out, in part, by the target's work |
| `consults` | — | draws on the target's judgment without the target carrying the work |
| `informs` | — | keeps the target informed, without the target taking part |
| `alternative-to` | itself | serves the same purpose as the target, so a reader choosing between them wants both |
`uses` versus `depends-on` is the distinction worth keeping sharp: if removing the target breaks
@@ -141,6 +155,23 @@ says someone answers for this thing now - so it reads false about a person who i
gone from the project, however plainly they made it. That is the case `authored` exists for, and
picking `owns` for it is not a weaker edge but a wrong one.
`involves`, `staffed-by`, `owned-by`, `consults` and `informs` are the participation labels, and
they are written from the other end: on the initiative, codebase or system, pointing at whoever
takes part - `[Initiative] consults [Anna Müller]`. That is where "who is involved?" gets asked,
and a page's own links block shows only the edges it carries. The target may be a person or an
organization; "staffed-by Contractor GmbH" reads as true as "staffed-by Anna Müller". Four of them
are RACI read as sentences - `staffed-by` the R, `owned-by` the A, `consults` the C, `informs`
the I - and `involves` is the one to take when the role is not worth stating or not known.
It is the general label of the five and the weaker one: where a RACI label is true, take it
instead (see Decision points). `owned-by` and `staffed-by` are the pair most easily confused - the
one answers for the outcome, the other does the work, and a single person can be both, which is
two edges, not a choice between them.
A collection authorises whichever of the five its pages need. A household wiki may run on
`involves` and `owned-by` alone; one tracking client projects may authorise the four RACI labels
and drop `involves`. Someone only mentioned - neither working, consulted nor informed - takes no
edge at all (step 1).
`alternative-to` versus `contrasts` versus `compares-with`: `contrasts` asserts a *difference
worth reading both for*, `alternative-to` asserts *substitutability* - two things a reader might
pick between for the same job. `compares-with` weighs them on named dimensions, which in this