@okfit/profiles 0.6.0 → 0.7.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 CHANGED
@@ -6,13 +6,16 @@ Named configuration profiles for [okfit](https://github.com/spencerbeggs/okfit).
6
6
 
7
7
  ## The `software-project` profile
8
8
 
9
- `Profiles.softwareProject.config` is a hand-authored `OkfitConfig` (P-25) that sets only `concepts`, `types`, `tags`, and `extensions: {}`; `okf_version`, `bundle`, `lifecycle`, `actors`, and `lint` are inherited from `OkfitConfig.DEFAULTS` by whoever merges it (the CLI applies `DEFAULTS < profile < file` with `OkfitConfig.merge`). `Profiles.get(name)` resolves a profile by its exact name and answers `Option.none` for `"none"` and unknown names. The TOML below decodes to the exact same value and is checked against the literal by `__test__/SoftwareProject.test.ts`:
9
+ `Profiles.softwareProject.config` is a hand-authored `OkfitConfig` (P-25) that sets only `concepts`, `types`, `tags`, `extensions: {}`, and one `lint` opinion (`status_missing = "warn"`, so a concept with neither `status` nor `verified` is reported instead of silently reading as stable); `okf_version`, `bundle`, `lifecycle`, `actors`, and every other `lint` severity are inherited from `OkfitConfig.DEFAULTS` by whoever merges it (the CLI applies `DEFAULTS < profile < file` with `OkfitConfig.merge`). `Profiles.get(name)` resolves a profile by its exact name and answers `Option.none` for `"none"` and unknown names. The TOML below decodes to the exact same value and is checked against the literal by `__test__/SoftwareProject.test.ts`:
10
10
 
11
11
  ```toml
12
12
  [concepts]
13
13
  required = ["title", "description"]
14
14
  tags.required = []
15
15
 
16
+ [lint]
17
+ status_missing = "warn"
18
+
16
19
  [types.Project]
17
20
  description = "The repository's root concept: its purpose, boundaries, and non-goals."
18
21
  guidance = "Exactly one Project exists and it lives at the bundle root as the project file. State the purpose in one paragraph and list what is deliberately out of scope so a reader never infers boundaries from silence."
@@ -1,8 +1,11 @@
1
1
  //#region src/SoftwareProject.ts
2
2
  /**
3
3
  * Hand-authored, typed `OkfitConfig` (P-25). Sets ONLY `concepts`, `types`,
4
- * `tags` and `extensions: {}`; `okf_version`, `bundle`, `lifecycle`, `actors`
5
- * and `lint` are inherited from `OkfitConfig.DEFAULTS` by whoever merges.
4
+ * `tags`, `extensions: {}` and one `lint` opinion (`status_missing = "warn"`,
5
+ * issue #110: a software project wants every concept's status written down
6
+ * rather than read from silence); `okf_version`, `bundle`, `lifecycle`,
7
+ * `actors` and the rest of `lint` are inherited from `OkfitConfig.DEFAULTS`
8
+ * by whoever merges.
6
9
  * `actors.agent` is deliberately unset (P-17): which agent writes is a fact
7
10
  * about the repository, not about the software-project shape. Every string
8
11
  * obeys P-42 (one-sentence descriptions, at most two-sentence guidance, plain
@@ -15,6 +18,7 @@ const config = {
15
18
  required: ["title", "description"],
16
19
  tags: { required: [] }
17
20
  },
21
+ lint: { status_missing: "warn" },
18
22
  types: {
19
23
  Project: {
20
24
  description: "The repository's root concept: its purpose, boundaries, and non-goals.",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@okfit/profiles",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "private": false,
5
5
  "description": "Named OKF configuration profiles for okfit, starting with the software-project profile.",
6
6
  "keywords": [
@@ -37,7 +37,7 @@
37
37
  "peerDependencies": {
38
38
  "@effected/git": "^0.15.0",
39
39
  "@effected/markdown": "^0.10.0",
40
- "@okfit/core": "^0.4.1",
40
+ "@okfit/core": "^0.5.0",
41
41
  "effect": "4.0.0-rc.115"
42
42
  },
43
43
  "engines": {