code-foundry 1.39.0 → 1.39.1

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/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.39.1](https://github.com/0xPlayerOne/code-foundry/compare/v1.39.0...v1.39.1) (2026-10-01)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * report inactive main rulesets in github doctor ([#682](https://github.com/0xPlayerOne/code-foundry/issues/682)) ([695a0b4](https://github.com/0xPlayerOne/code-foundry/commit/695a0b437910aa8e664a481c1648dbadcc1a2de8))
9
+
3
10
  ## [1.39.0](https://github.com/0xPlayerOne/code-foundry/compare/v1.38.1...v1.39.0) (2026-10-01)
4
11
 
5
12
 
package/docs/WORKFLOWS.md CHANGED
@@ -311,6 +311,12 @@ features and enforce only checks that actually run:
311
311
  Apply only checks for enabled workflows.
312
312
  ```
313
313
 
314
+ `code-foundry doctor --github` treats a matching `main` ruleset in `disabled`
315
+ or `evaluate` mode as an error because neither mode blocks merges. If GitHub
316
+ does not expose branch protection or rulesets for the repository, the doctor
317
+ warns that enforcement could not be confirmed instead of inferring an active
318
+ policy from unavailable data.
319
+
314
320
  Keep strict status checks, linear history, and conversation resolution enabled
315
321
  where required. For a repository with optional features disabled, do not require
316
322
  checks that will never run.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "code-foundry",
3
- "version": "1.39.0",
3
+ "version": "1.39.1",
4
4
  "description": "A fast, language-aware repository factory for agent-ready workflows, testing, security, and release automation.",
5
5
  "homepage": "https://github.com/0xPlayerOne/code-foundry#readme",
6
6
  "bugs": {
@@ -18,6 +18,24 @@ export function doctorGithub(root) {
18
18
  const details = { repository }
19
19
  const rulesets = hydrateRulesets(repository, ghJson(['api', `repos/${repository}/rulesets`]))
20
20
  const mainRulesets = rulesetsForBranch(rulesets, 'main')
21
+ details.mainRulesets = mainRulesets.map((ruleset) => ({
22
+ id: ruleset.id ?? null,
23
+ name: ruleset.name ?? String(ruleset.id ?? 'unnamed'),
24
+ enforcement: ruleset.enforcement ?? null,
25
+ }))
26
+ for (const ruleset of mainRulesets) {
27
+ const name = ruleset.name ?? ruleset.id ?? 'unnamed'
28
+ if (ruleset.enforcement === 'disabled') {
29
+ errors.push(`main ruleset ${name} is disabled; its branch rules are not enforced.`)
30
+ } else if (ruleset.enforcement === 'evaluate') {
31
+ errors.push(`main ruleset ${name} is evaluate-only; its branch rules are not enforced.`)
32
+ } else if (ruleset.enforcement !== 'active') {
33
+ const state = ruleset.enforcement ?? 'missing'
34
+ warnings.push(
35
+ `main ruleset ${name} enforcement state '${state}' could not be confirmed; expected active.`
36
+ )
37
+ }
38
+ }
21
39
  const protection = ghJson(['api', `repos/${repository}/branches/main/protection`])
22
40
  const required = mainRulesets.length
23
41
  ? requiredContextsFromRulesets(mainRulesets)