@codedrifters/configulator 0.0.191 → 0.0.193
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/label-taxonomy.md +138 -0
- package/lib/index.d.mts +354 -191
- package/lib/index.d.ts +355 -192
- package/lib/index.js +458 -203
- package/lib/index.js.map +1 -1
- package/lib/index.mjs +462 -210
- package/lib/index.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# Label Taxonomy Ownership
|
|
2
|
+
|
|
3
|
+
Configulator synthesizes a canonical GitHub label set for every consuming
|
|
4
|
+
project via the sync-labels workflow. This document defines **who owns
|
|
5
|
+
which label families** so the taxonomy stays coherent as more agent
|
|
6
|
+
bundles are ported.
|
|
7
|
+
|
|
8
|
+
## Three ownership tiers
|
|
9
|
+
|
|
10
|
+
Labels fall into one of three tiers based on who is responsible for
|
|
11
|
+
defining them, maintaining their colors and descriptions, and keeping
|
|
12
|
+
them in sync with the agent rules that depend on them.
|
|
13
|
+
|
|
14
|
+
### Tier 1 — Configulator core labels
|
|
15
|
+
|
|
16
|
+
Defined statically in `src/workflows/sync-labels.ts` and applied to
|
|
17
|
+
every project that uses `addSyncLabelsWorkflow`. These are the labels
|
|
18
|
+
that the orchestrator, issue-worker, and PR automation depend on
|
|
19
|
+
regardless of which specific agent bundles a project enables.
|
|
20
|
+
|
|
21
|
+
Families in this tier:
|
|
22
|
+
|
|
23
|
+
- **`status:*`** — workflow state (`ready`, `in-progress`, `blocked`,
|
|
24
|
+
`done`, `deferred`, `needs-attention`). Required by every agent that
|
|
25
|
+
transitions issues through the workflow.
|
|
26
|
+
- **`priority:*`** — scheduling priority (`critical`, `high`, `medium`,
|
|
27
|
+
`low`, `trivial`). Required by the orchestrator to sequence work.
|
|
28
|
+
- **`type:*`** — conventional-commit work type (`feat`, `fix`, `docs`,
|
|
29
|
+
`chore`, `refactor`, `style`, `perf`, `test`, `build`, `ci`,
|
|
30
|
+
`revert`, `release`, `hotfix`). Matches the PR title convention so
|
|
31
|
+
automation can derive one from the other.
|
|
32
|
+
|
|
33
|
+
These are exported as `DEFAULT_STATUS_LABELS`, `DEFAULT_PRIORITY_LABELS`,
|
|
34
|
+
and `DEFAULT_TYPE_LABELS` and are always merged in.
|
|
35
|
+
|
|
36
|
+
### Tier 2 — Agent-bundle labels
|
|
37
|
+
|
|
38
|
+
Owned by the individual agent bundle that depends on them. A bundle
|
|
39
|
+
should contribute only the labels its rules reference — typically a
|
|
40
|
+
small family of phase labels used by a multi-phase workflow.
|
|
41
|
+
|
|
42
|
+
Examples seen in the vortex reference taxonomy:
|
|
43
|
+
|
|
44
|
+
- `meeting:extract`, `meeting:notes`, `meeting:draft`, `meeting:link`
|
|
45
|
+
— owned by the meeting-analysis bundle
|
|
46
|
+
- `research:scope`, `research:search`, `research:synthesize`,
|
|
47
|
+
`research:verify` — owned by a research-pipeline bundle
|
|
48
|
+
- `bcm:outline`, `bcm:scaffold`, `bcm:context`, `bcm:connect` —
|
|
49
|
+
owned by a bcm-writer bundle
|
|
50
|
+
|
|
51
|
+
Bundle-contributed labels are scoped: a project that does not enable
|
|
52
|
+
the meeting-analysis bundle does not get `meeting:*` labels. This
|
|
53
|
+
keeps the label list per-project aligned with the workflows that
|
|
54
|
+
project actually runs.
|
|
55
|
+
|
|
56
|
+
A bundle declares its labels via the optional `labels` field on the
|
|
57
|
+
`AgentRuleBundle` interface. When `AgentConfig` is enabled on a
|
|
58
|
+
project, `addSyncLabelsWorkflow` merges labels from every active
|
|
59
|
+
bundle into `.github/labels.yml` automatically.
|
|
60
|
+
|
|
61
|
+
```ts
|
|
62
|
+
export const meetingAnalysisBundle: AgentRuleBundle = {
|
|
63
|
+
name: "meeting-analysis",
|
|
64
|
+
// ...
|
|
65
|
+
labels: [
|
|
66
|
+
{ name: "meeting:extract", color: "C5DEF5", description: "..." },
|
|
67
|
+
{ name: "meeting:notes", color: "BFDADC", description: "..." },
|
|
68
|
+
{ name: "meeting:draft", color: "D4C5F9", description: "..." },
|
|
69
|
+
{ name: "meeting:link", color: "FEF2C0", description: "..." },
|
|
70
|
+
],
|
|
71
|
+
};
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Consumers can still override a bundle-contributed label's color or
|
|
75
|
+
description by supplying the same label name via
|
|
76
|
+
`SyncLabelsOptions.labels` — the consumer entry wins.
|
|
77
|
+
|
|
78
|
+
### Tier 3 — Consumer-project labels
|
|
79
|
+
|
|
80
|
+
Owned by the end project. These are domain-specific categories
|
|
81
|
+
configulator cannot reasonably predict. Examples from the vortex
|
|
82
|
+
reference project:
|
|
83
|
+
|
|
84
|
+
- `area:requirements`, `area:business-strategy`, `area:references`,
|
|
85
|
+
`area:product`, `area:architecture` — area labels tied to a
|
|
86
|
+
directory layout unique to that project
|
|
87
|
+
|
|
88
|
+
Consumers add these through the `labels` option on
|
|
89
|
+
`addSyncLabelsWorkflow` / `SyncLabelsOptions.labels`.
|
|
90
|
+
|
|
91
|
+
## How the tiers compose
|
|
92
|
+
|
|
93
|
+
At synth time, the final label set written to `.github/labels.yml` is:
|
|
94
|
+
|
|
95
|
+
```
|
|
96
|
+
DEFAULT_STATUS_LABELS
|
|
97
|
+
∪ DEFAULT_PRIORITY_LABELS
|
|
98
|
+
∪ DEFAULT_TYPE_LABELS
|
|
99
|
+
∪ (labels contributed by enabled agent bundles)
|
|
100
|
+
∪ (labels provided by the consumer via options)
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
The sync-labels workflow then reconciles this set against the live
|
|
104
|
+
repo — creating missing labels, updating colors/descriptions, and
|
|
105
|
+
(if `deleteOtherLabels` is true, the default) removing any label that
|
|
106
|
+
is not in the file.
|
|
107
|
+
|
|
108
|
+
## Naming conventions
|
|
109
|
+
|
|
110
|
+
- Use lowercase, kebab-case label names.
|
|
111
|
+
- Use a family prefix followed by a colon: `family:name` (e.g.
|
|
112
|
+
`status:ready`, `meeting:extract`).
|
|
113
|
+
- Keep descriptions short and action-oriented — they appear in the
|
|
114
|
+
GitHub UI dropdown when applying labels.
|
|
115
|
+
- Pick distinct hex colors within a family so labels are scannable in
|
|
116
|
+
the issue list. Related families (e.g. all `research:*`) should
|
|
117
|
+
share a color gradient.
|
|
118
|
+
|
|
119
|
+
## When to add a new label family
|
|
120
|
+
|
|
121
|
+
Before adding a new family, check whether an existing one covers the
|
|
122
|
+
intent:
|
|
123
|
+
|
|
124
|
+
- Workflow state → `status:*`
|
|
125
|
+
- Scheduling order → `priority:*`
|
|
126
|
+
- Kind of change → `type:*`
|
|
127
|
+
|
|
128
|
+
A new family is warranted when it cross-cuts the existing ones and
|
|
129
|
+
is required by a specific agent's rules — for example, phase labels
|
|
130
|
+
that track which micro-session of a multi-phase agent an issue
|
|
131
|
+
belongs to.
|
|
132
|
+
|
|
133
|
+
## See also
|
|
134
|
+
|
|
135
|
+
- `docs/audits/label-audit-308.md` — initial audit of configulator
|
|
136
|
+
labels against the vortex reference taxonomy
|
|
137
|
+
- `src/workflows/sync-labels.ts` — source of truth for the Tier 1
|
|
138
|
+
default labels
|