@theholocron/cli 5.0.0-alpha.6 → 5.0.0-alpha.61

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
@@ -112,6 +112,52 @@ Additional `repo` fields recognised by `holocron setup`:
112
112
  | `repo.protection` | `"balanced" \| "strict" \| "none"` | Branch-protection preset applied by `holocron setup`. For `"strict"`, the required status checks are derived from the task manifest — see below. |
113
113
  | `repo.properties` | `RepoProperties` | Org-level custom property values synced to the GitHub dashboard. |
114
114
 
115
+ ### Custom properties synced to GitHub
116
+
117
+ `holocron setup` and `holocron sync` both call `syncProperties()` with two
118
+ kinds of fields — always one-way (`holocron.config.ts` → resolved →
119
+ properties; properties are never a second editable source of truth):
120
+
121
+ **Manual** — `repo.properties` states these explicitly:
122
+
123
+ | Property | Value |
124
+ | ------------------------ | ---------------------------------------------- |
125
+ | `lifecycle` | `"active" \| "experimental" \| "deprecated"` |
126
+ | `open_source` | `boolean` |
127
+ | `runtime_environment` | `"node" \| "browser" \| "universal" \| "none"` |
128
+ | `uses_external_packages` | `boolean` |
129
+
130
+ **Derived** — computed from resolved config + `package.json`, not a config field:
131
+
132
+ | Property | Value |
133
+ | ---------------------------------- | ---------------------------------------------------------------------------------------- |
134
+ | `monorepo` | `boolean` — whether `pnpm-workspace.yaml` exists |
135
+ | `holocron_branch_protection_level` | the active `repo.protection` preset |
136
+ | `holocron_profile` | repo archetype: `library` / `cli` / `plugin` / `template` / `app` / `docs` / `platform` |
137
+ | `holocron_capabilities` | provider capability keys actually wired in `providers: {}` (`multi_select`) |
138
+ | `holocron_stack` | detected build/framework tooling — `next`, `vite`, `astro`, `tsdown`, … (`multi_select`) |
139
+ | `holocron_compliance` | `"compliant" \| "non-compliant"` against a minimal `source` + `ci` baseline |
140
+
141
+ Field definitions and derivation heuristics:
142
+ `.notes/tech-holocron-platform.spec.md` → "Custom-properties sync — field
143
+ definitions (#677)".
144
+
145
+ The four derived fields' pure computation —
146
+ `deriveProfile()`/`deriveStack()`/`deriveCapabilities()`/`deriveCompliance()`
147
+ (plus their `HolocronProfile`/`DeriveProfileInput`/`PackageJsonLike` types)
148
+ — is exported from this package's public entry point, separate from the
149
+ local-filesystem reads (`readWorkspacePackageJsons()`) that gather their
150
+ inputs here. `@theholocron/sentinel`'s `syncPropertiesFromConfig()` reuses
151
+ these functions unchanged, gathering the same inputs over the GitHub API
152
+ instead (D8 — one derivation, two input sources, not two
153
+ implementations).
154
+
155
+ `missingCapabilities(capabilities)` is `deriveCompliance()`'s sibling —
156
+ same `REQUIRED_BASELINE` table, but returns _which_ required capabilities
157
+ are absent rather than whether any are. `@theholocron/sentinel`'s
158
+ `postCheckRun()` uses it to name what's missing on the check run it
159
+ posts, instead of reporting pass/fail.
160
+
115
161
  ### Required status checks (`protection: "strict"`)
116
162
 
117
163
  `holocron setup` builds the branch-protection required-check list from the