Skip to content

feat: add config.schema.json + CI validation of shipped example configs - #135

Open
javimosch wants to merge 1 commit into
masterfrom
mago/task-133
Open

javimosch wants to merge 1 commit into
masterfrom
mago/task-133

Conversation

@javimosch

Copy link
Copy Markdown
Owner

Summary

Adds a JSON Schema for ~/.config/tau/config.json and validates every shipped
example config against it in CI.

  • config.schema.json (repo root, draft-07): describes all 16 FileConfig
    keys with types, enums (mode, provider), and descriptions. It is
    intentionally stricter than the loader — additionalProperties: false
    surfaces typos in editors even though tau ignores unknown keys — and allows
    a "$schema" binding key. Provider enum mirrors the built-in table.
  • examples/config/: four ready-to-copy example configs (minimal,
    per-provider-keys, batch, full), each carrying a "$schema" line for
    editor validation, plus a short README.
  • scripts/check-config-schema.py: stdlib-only validator (no jsonschema
    dependency) that validates examples/config/*.json and every config-shaped
    JSON object embedded in shipped docs/scripts (README.md,
    docs/configuration.md, examples/README.md, examples/*.sh). Also runs
    drift guards that fail if the schema diverges from the FileConfig struct
    or the provider table. --file PATH mode validates a single file.
  • Validation wiring: new offline config-schema smoke group (4 checks,
    incl. a negative case); a Zig unit test that parses every shipped example
    through the real FileConfig loader; and a minimal
    .github/workflows/config-schema.yml job (the repo's first workflow) that
    runs the validator on PRs and pushes to master.
  • Docs: schema section in docs/configuration.md, links from README.md,
    examples/README.md, and AGENTS.md validation commands.

How verified

  • python3 scripts/check-config-schema.py — 10 shipped config examples valid;
    negative cases (bad enum, typo'd key, wrong type) correctly exit 1.
  • zig build test — 275/275 pass, including the new
    examples/config/*.json parse as FileConfig test.
  • ./scripts/smoke.sh --group config-schema — 4/4 pass.

Notes for reviewer

  • The repo had no CI workflows; the workflow file is minimal (checkout +
    python3 scripts/check-config-schema.py, no toolchain install). Drop it if
    the org validates elsewhere — the smoke group + zig test already cover it.
  • When PR feat: add tau init to scaffold a commented starter config with detected providers #128 (tau init, JSONC) merges, its scaffold output can be added to
    the validated set — the schema already covers all keys it writes.

Closes #133 (mago task #133)

Adds a JSON Schema (draft-07) for ~/.config/tau/config.json covering every
FileConfig key, with a provider enum and strict additionalProperties so
typos surface in editors (tau itself still ignores unknown keys; the
"$schema" binding key is explicitly allowed).

Ships ready-to-copy examples under examples/config/ and a stdlib-only
validator (scripts/check-config-schema.py) that checks them plus every
config-shaped JSON block in shipped docs/scripts. Drift guards fail the
check if the schema diverges from FileConfig or the provider table.

Wired into the existing validation paths: new offline `config-schema`
smoke group, a zig test parsing each example through the real FileConfig
loader, and a minimal GitHub Actions job running the validator.

Closes #133

Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@coderabbitai

coderabbitai Bot commented Sep 26, 2026

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 590f0266-4017-4b25-bab5-a4f1938d2ee5


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

25 similar comments
@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

29 similar comments
@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

@javimosch

Copy link
Copy Markdown
Owner Author

🤖 am-merger-script: security-sensitive path detected. Needs human review.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add a JSON Schema for the config file (config.schema.json) validated in CI against all shipped example configs

2 participants