@okfit/profiles 0.5.0 → 0.6.0
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/README.md +30 -3
- package/SoftwareProject.js +35 -4
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -19,7 +19,7 @@ guidance = "Exactly one Project exists and it lives at the bundle root as the pr
|
|
|
19
19
|
|
|
20
20
|
[types.Module]
|
|
21
21
|
description = "A unit of code with an owner and a boundary."
|
|
22
|
-
guidance = "One per workspace package, plugin, website, action, test harness, or config dependency. Link to the Decisions that shaped it and the Conventions it is bound by."
|
|
22
|
+
guidance = "One per workspace package, plugin, website, action, worker, test harness, or config dependency. Link to the Decisions that shaped it and the Conventions it is bound by."
|
|
23
23
|
required = ["resource", "kind"]
|
|
24
24
|
|
|
25
25
|
[types.Module.fields.kind]
|
|
@@ -29,6 +29,7 @@ values.package = "A publishable npm package under packages/."
|
|
|
29
29
|
values.website = "A docs or marketing site, usually RSPress."
|
|
30
30
|
values.plugin = "A Claude Code or editor plugin distributed outside npm."
|
|
31
31
|
values.action = "A GitHub Action."
|
|
32
|
+
values.worker = "A detached runtime unit, such as a sidecar or worker bundle, spawned by another module with its own lifecycle and not itself a package or action."
|
|
32
33
|
values.harness = "A private test-only package or package group that exercises built artifacts and is never published."
|
|
33
34
|
values.config-dependency = "A package consumed through pnpm configDependencies rather than dependencies, loaded before the workspace resolves."
|
|
34
35
|
|
|
@@ -110,7 +111,7 @@ kind = "path"
|
|
|
110
111
|
|
|
111
112
|
[types.Gotcha]
|
|
112
113
|
description = "A state or result that looks like one thing and is the opposite: breakage that is transient, or success that did nothing."
|
|
113
|
-
guidance = "Describe what a reader sees, what they will wrongly conclude, and what is actually true, and point resource at the code or command that produces the misleading signal. Give it a staleness window, since a trap fixed upstream turns into misinformation."
|
|
114
|
+
guidance = "Describe what a reader sees, what they will wrongly conclude, and what is actually true, and point resource at the code or command that produces the misleading signal, or omit resource and name the outside system when nothing in this repository produces it. Give it a staleness window, since a trap fixed upstream turns into misinformation; a known bug nobody is scheduled to fix is a Gotcha, and becomes a Roadmap once the fix is planned."
|
|
114
115
|
|
|
115
116
|
[types.Gotcha.fields.resource]
|
|
116
117
|
description = "A path relative to this concept file to the code, script, or config that produces the misleading signal."
|
|
@@ -126,7 +127,7 @@ description = "Where the consumer lives, as a URL or an owner/name pair, since i
|
|
|
126
127
|
|
|
127
128
|
[types.Roadmap]
|
|
128
129
|
description = "A gate and the forward-looking work behind it, held as intent rather than as a Decision."
|
|
129
|
-
guidance = "List the phases and what remains in each, and give it a staleness window so queued work is re-examined instead of read as settled. Deprecate it when the gate holds and write the Decisions the work produced."
|
|
130
|
+
guidance = "List the phases and what remains in each, and give it a staleness window so queued work is re-examined instead of read as settled. Deprecate it when the gate holds and write the Decisions the work produced; a known bug with nobody queued to fix it is a Gotcha, not a Roadmap."
|
|
130
131
|
|
|
131
132
|
[types.Roadmap.fields.gate]
|
|
132
133
|
description = "The observable condition that closes this roadmap, for example a release shipped or a benchmark met."
|
|
@@ -139,6 +140,26 @@ guidance = "Record the inputs, the method, and the numbers so a reader can judge
|
|
|
139
140
|
description = "Paths to the Decisions this measurement supports, one entry per Decision."
|
|
140
141
|
kind = "path"
|
|
141
142
|
|
|
143
|
+
[types.Invariant]
|
|
144
|
+
description = "A property the code holds by construction: enforced by the type system or pinned by a test, not followed by people."
|
|
145
|
+
guidance = "State the property, name the mechanism that enforces it, and say what a refactor would have to break for it to stop holding. Distinct from Convention, which a contributor can choose to ignore."
|
|
146
|
+
|
|
147
|
+
[types.Invariant.fields.resource]
|
|
148
|
+
description = "A path relative to this concept file to the type, function, or test that enforces the property."
|
|
149
|
+
kind = "path"
|
|
150
|
+
|
|
151
|
+
[types.Incident]
|
|
152
|
+
description = "A dated production failure: what shipped broken, what it looked like to the consumer, the root cause, and the guard that now stops it."
|
|
153
|
+
guidance = "Keep the whole narrative in one record rather than splitting the misleading signal into a Gotcha and the guard into a Decision, and link both where they exist. Set occurred to the date it happened so a reader can weigh how far the code has moved since."
|
|
154
|
+
required = ["occurred"]
|
|
155
|
+
|
|
156
|
+
[types.Incident.fields.occurred]
|
|
157
|
+
description = "The ISO 8601 date the failure happened or was first observed."
|
|
158
|
+
|
|
159
|
+
[types.Incident.fields.guard]
|
|
160
|
+
description = "A path relative to this concept file to the test, check, or config that now stops the failure recurring."
|
|
161
|
+
kind = "path"
|
|
162
|
+
|
|
142
163
|
[tags.architecture]
|
|
143
164
|
description = "Concerns the shape of the system rather than one module."
|
|
144
165
|
|
|
@@ -171,6 +192,12 @@ description = "Concerns how the system reports on itself: events, metrics, logs,
|
|
|
171
192
|
|
|
172
193
|
[tags.deps]
|
|
173
194
|
description = "Concerns how third-party dependencies are declared, pinned, and distributed."
|
|
195
|
+
|
|
196
|
+
[tags.github]
|
|
197
|
+
description = "Concerns the GitHub platform surface: the REST and GraphQL APIs, Apps and installation tokens, Actions, Packages, check runs, and pull request conventions."
|
|
198
|
+
|
|
199
|
+
[tags.docs]
|
|
200
|
+
description = "Concerns the documentation itself: provenance, rot, re-derivation, and what a claim would take to falsify."
|
|
174
201
|
```
|
|
175
202
|
|
|
176
203
|
Only `concepts`, `types`, and `tags` carry real vocabulary; the literal's `extensions: {}` is `OkfitConfig`'s one required key and never appears on disk, since the codec folds unknown top-level keys into it (P-24: `fields.<k>.kind = "path"` and the `tags` table are vocabulary only — core enforces none of it yet). `Reference.required = ["sources"]` checks presence only: `sources = []` passes, and each entry's shape is core's `family-invalid` (P-23).
|
package/SoftwareProject.js
CHANGED
|
@@ -22,7 +22,7 @@ const config = {
|
|
|
22
22
|
},
|
|
23
23
|
Module: {
|
|
24
24
|
description: "A unit of code with an owner and a boundary.",
|
|
25
|
-
guidance: "One per workspace package, plugin, website, action, test harness, or config dependency. Link to the Decisions that shaped it and the Conventions it is bound by.",
|
|
25
|
+
guidance: "One per workspace package, plugin, website, action, worker, test harness, or config dependency. Link to the Decisions that shaped it and the Conventions it is bound by.",
|
|
26
26
|
required: ["resource", "kind"],
|
|
27
27
|
fields: {
|
|
28
28
|
kind: {
|
|
@@ -33,6 +33,7 @@ const config = {
|
|
|
33
33
|
website: "A docs or marketing site, usually RSPress.",
|
|
34
34
|
plugin: "A Claude Code or editor plugin distributed outside npm.",
|
|
35
35
|
action: "A GitHub Action.",
|
|
36
|
+
worker: "A detached runtime unit, such as a sidecar or worker bundle, spawned by another module with its own lifecycle and not itself a package or action.",
|
|
36
37
|
harness: "A private test-only package or package group that exercises built artifacts and is never published.",
|
|
37
38
|
"config-dependency": "A package consumed through pnpm configDependencies rather than dependencies, loaded before the workspace resolves."
|
|
38
39
|
}
|
|
@@ -119,7 +120,7 @@ const config = {
|
|
|
119
120
|
},
|
|
120
121
|
Gotcha: {
|
|
121
122
|
description: "A state or result that looks like one thing and is the opposite: breakage that is transient, or success that did nothing.",
|
|
122
|
-
guidance: "Describe what a reader sees, what they will wrongly conclude, and what is actually true, and point resource at the code or command that produces the misleading signal. Give it a staleness window, since a trap fixed upstream turns into misinformation.",
|
|
123
|
+
guidance: "Describe what a reader sees, what they will wrongly conclude, and what is actually true, and point resource at the code or command that produces the misleading signal, or omit resource and name the outside system when nothing in this repository produces it. Give it a staleness window, since a trap fixed upstream turns into misinformation; a known bug nobody is scheduled to fix is a Gotcha, and becomes a Roadmap once the fix is planned.",
|
|
123
124
|
fields: { resource: {
|
|
124
125
|
description: "A path relative to this concept file to the code, script, or config that produces the misleading signal.",
|
|
125
126
|
kind: "path"
|
|
@@ -133,7 +134,7 @@ const config = {
|
|
|
133
134
|
},
|
|
134
135
|
Roadmap: {
|
|
135
136
|
description: "A gate and the forward-looking work behind it, held as intent rather than as a Decision.",
|
|
136
|
-
guidance: "List the phases and what remains in each, and give it a staleness window so queued work is re-examined instead of read as settled. Deprecate it when the gate holds and write the Decisions the work produced.",
|
|
137
|
+
guidance: "List the phases and what remains in each, and give it a staleness window so queued work is re-examined instead of read as settled. Deprecate it when the gate holds and write the Decisions the work produced; a known bug with nobody queued to fix it is a Gotcha, not a Roadmap.",
|
|
137
138
|
fields: { gate: { description: "The observable condition that closes this roadmap, for example a release shipped or a benchmark met." } }
|
|
138
139
|
},
|
|
139
140
|
Measurement: {
|
|
@@ -143,6 +144,26 @@ const config = {
|
|
|
143
144
|
description: "Paths to the Decisions this measurement supports, one entry per Decision.",
|
|
144
145
|
kind: "path"
|
|
145
146
|
} }
|
|
147
|
+
},
|
|
148
|
+
Invariant: {
|
|
149
|
+
description: "A property the code holds by construction: enforced by the type system or pinned by a test, not followed by people.",
|
|
150
|
+
guidance: "State the property, name the mechanism that enforces it, and say what a refactor would have to break for it to stop holding. Distinct from Convention, which a contributor can choose to ignore.",
|
|
151
|
+
fields: { resource: {
|
|
152
|
+
description: "A path relative to this concept file to the type, function, or test that enforces the property.",
|
|
153
|
+
kind: "path"
|
|
154
|
+
} }
|
|
155
|
+
},
|
|
156
|
+
Incident: {
|
|
157
|
+
description: "A dated production failure: what shipped broken, what it looked like to the consumer, the root cause, and the guard that now stops it.",
|
|
158
|
+
guidance: "Keep the whole narrative in one record rather than splitting the misleading signal into a Gotcha and the guard into a Decision, and link both where they exist. Set occurred to the date it happened so a reader can weigh how far the code has moved since.",
|
|
159
|
+
required: ["occurred"],
|
|
160
|
+
fields: {
|
|
161
|
+
occurred: { description: "The ISO 8601 date the failure happened or was first observed." },
|
|
162
|
+
guard: {
|
|
163
|
+
description: "A path relative to this concept file to the test, check, or config that now stops the failure recurring.",
|
|
164
|
+
kind: "path"
|
|
165
|
+
}
|
|
166
|
+
}
|
|
146
167
|
}
|
|
147
168
|
},
|
|
148
169
|
tags: {
|
|
@@ -156,7 +177,9 @@ const config = {
|
|
|
156
177
|
compat: { description: "Concerns compatibility across versions of the runtime, the package manager, or a dependency." },
|
|
157
178
|
bundle: { description: "Concerns install weight and reachability: tree-shaking, subpath entrypoints, and dependency edges declined for their cost." },
|
|
158
179
|
observability: { description: "Concerns how the system reports on itself: events, metrics, logs, sinks, and artifacts." },
|
|
159
|
-
deps: { description: "Concerns how third-party dependencies are declared, pinned, and distributed." }
|
|
180
|
+
deps: { description: "Concerns how third-party dependencies are declared, pinned, and distributed." },
|
|
181
|
+
github: { description: "Concerns the GitHub platform surface: the REST and GraphQL APIs, Apps and installation tokens, Actions, Packages, check runs, and pull request conventions." },
|
|
182
|
+
docs: { description: "Concerns the documentation itself: provenance, rot, re-derivation, and what a claim would take to falsify." }
|
|
160
183
|
},
|
|
161
184
|
extensions: {}
|
|
162
185
|
};
|
|
@@ -219,6 +242,14 @@ const layout = {
|
|
|
219
242
|
{
|
|
220
243
|
directory: "measurements",
|
|
221
244
|
type: "Measurement"
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
directory: "invariants",
|
|
248
|
+
type: "Invariant"
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
directory: "incidents",
|
|
252
|
+
type: "Incident"
|
|
222
253
|
}
|
|
223
254
|
]
|
|
224
255
|
};
|