Commit Graph

6 Commits

Author SHA1 Message Date
Diego Mariño
a1207d5473 fix(tests): make HOME sandboxing opt-in to avoid breaking git-dependent tests
The global HOME override in runGsdTools broke tests in verify-health.test.cjs
on Ubuntu CI: git operations fail when HOME points to a tmpDir that lacks
the runner's .gitconfig.

- runGsdTools now accepts an optional third `env` parameter (default: {})
  merged on top of process.env — no behavior change for callers that omit it
- Pass { HOME: tmpDir } only in the 6 tests that need ~/.gsd/ isolation:
  brave_api_key detection, defaults.json merging (x2), and config-new-project
  tests that assert concrete default values (x3)
2026-03-18 23:10:56 +01:00
Diego Mariño
63f6424d1b fix(tests): sandbox HOME in runGsdTools to prevent flaky assertions
buildNewProjectConfig() merges ~/.gsd/defaults.json when present, so
tests asserting concrete config values (model_profile, commit_docs,
brave_search) would fail on machines with a personal defaults file.

- Pass HOME=cwd as env override in runGsdTools — child process resolves
  os.homedir() to the temp directory, which has no .gsd/ subtree
- Update three tests that previously wrote to the real ~/.gsd/ using
  fragile save/restore logic; they now write to tmpDir/.gsd/ instead,
  which is cleaned up automatically by afterEach
- Remove now-unused `os` import from config.test.cjs
2026-03-18 15:27:46 +01:00
Diego Mariño
f649543b20 feat: materialize full config on new-project initialization
Add `config-new-project` CLI command that writes a complete,
fully-materialized `.planning/config.json` with sane defaults
instead of the previous partial template (6-7 user-chosen keys
only). Unset keys are no longer silently resolved at read time —
every key GSD reads is written explicitly at project creation.

Previously, missing keys were resolved silently by loadConfig()
defaults, making the effective config non-discoverable. Now every
key that GSD reads is written explicitly at project creation.

- buildNewProjectConfig() — single source of truth for all
  defaults; merges hardcoded ← ~/.gsd/defaults.json ← user choices
- ensureConfigFile() refactored to reuse buildNewProjectConfig({})
  instead of duplicating default logic (~40 lines removed)
- new-project.md Steps 2a and 5 updated to call config-new-project
  instead of writing a hardcoded partial JSON template
- Test coverage for config.cjs: 78.96% → 93.81% statements,
  100% functions; adds config-set-model-profile test suite

FIXES:
- VALID_CONFIG_KEYS extended with workflow.auto_advance,
  workflow.node_repair, workflow.node_repair_budget,
  hooks.context_warnings — these keys had hardcoded defaults
  but were not settable via config-set
2026-03-18 14:58:58 +01:00
Frank
63823c2e8a fix: skip no-research nyquist artifact gating (closes #980) 2026-03-15 10:08:57 -06:00
Fana
c81b20eb04 fix: plan-phase Nyquist validation when research is disabled (#980) (#1002)
* fix: plan-phase Nyquist validation when research is disabled (#980)

plan-phase step 5.5 required Nyquist artifacts even when research was
disabled, creating an impossible state: no RESEARCH.md to extract
Validation Architecture from. Step 7.5 then told Claude to "disable
Nyquist in config" without specifying the exact key, causing Claude to
guess wrong keys that config-set silently accepted.

Three fixes:
- plan-phase step 5.5: skip when research_enabled is false
- plan-phase step 7.5: specify exact config-set command for disabling
- config-set: reject unknown keys with whitelist validation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* test: update config-set tests for key whitelist validation

Tests that used arbitrary keys (some_number, some_string, a.b.c) now
use valid config keys to test the same coercion and nesting behavior.
Adds new test asserting unknown keys are rejected with error.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 11:36:11 -06:00
Ethan Hurst
898b82dee0 fix(quick-1): remove MEDIUM severity test overfitting in config.test.cjs
- branching_strategy assertion changed from strictEqual 'none' to typeof string check
- plan_check and verifier assertions changed from strictEqual true to typeof boolean checks
- Add isolation comments to three tests that touch ~/.gsd/ on real filesystem
- Full test suite passes: 433 tests, all modules above 70% coverage
2026-02-26 05:49:31 +10:00