Repository navigation
Config JSON Schema 2026 10 22
github-actions[bot] edited this page Oct 22, 2026
·
1 revision
testosterone.yaml had no JSON Schema, so editors could not suggest its keys or flag a typo such as worker: until testo config validate ran. Most YAML-driven tools ship one; editors with a YAML language server (VS Code's Red Hat YAML extension, JetBrains, Neovim) load it from a URL or a # yaml-language-server: $schema=... line.
-
testo_core/config/json_schema.pybuilds a draft-07 schema from the constants intesto_core/config/schema.py(SUPPORTED_FRAMEWORKS,SUPPORTED_TIERS,SUPPORTED_REPORTER_TYPES,Defaults). The loader stays the source of truth for what loads; the schema mirrors the keystesto_core/config/loader.pyreads. -
scripts/export_config_schema.pywrites it toschema/testosterone.schema.json. CI runs it with--check, the same wayexport_openapi.pyguardsfrontend/openapi.json. Editors load it fromhttps://raw.githubusercontent.com/taltal-beep/testosterone/main/schema/testosterone.schema.json. -
testo config initandtesto initwrite the$schemaline at the top of the file, and the repo's own configs point at the file by relative path. -
equipment,frameworkand reportertypesuggest the built-in names but accept any string, because plugins add their own. Unknown keys on the top level,defaults, cycles and stages are errors, which is what catches typos. Reporter entries allow any key, since those are reporter options. - Only the canonical
cycles:layout is described. Legacyplans:andruns:still load, but the schema flags them.
-
Generate from the dataclasses. Rejected: the dataclasses are the loaded form, not the YAML. YAML has
equipment,ifandargsas a string or list; the dataclasses haveframework,if_exprand a tuple. - Switch the loader to Pydantic and use its schema. Rejected for now: a rewrite of the loader for a small editor feature.
-
Submit to SchemaStore. Not yet: it is an outside repository, so it waits for the maintainer's go-ahead. With it, editors would apply the schema to any file named
testosterone.yamlwithout the$schemaline.
- A new loader key needs a matching schema entry.
tests/contract/testo_core/test_config_json_schema.pyvalidates the repo's configs and the starter template against the schema, checks a set of invalid configs are flagged, and fails if the committed file is stale. - The schema URL follows
main, so a key added onmainshows up in editors before it is on PyPI.
Generated from docs/Specs & ADRs/Config JSON Schema - 2026-10-22.md. Edit it there; changes made in the wiki are overwritten.
Architecture
CLI Commands
Processes & Guides
- CI-CD Pipeline Setup
- E2E Harness Operations Guide
- GitLab Pages Demo
- Publishing Docker Images
- Publishing to Artifactory
- Publishing to PyPI
- Team Server
Prompts & Snippets
Roadmap & Strategy
Specs & ADRs
- Alerts Where Developers Look - 2026-10-22
- Architecture Consolidation - 2026-10-06
- BehaveX Reports - 2026-10-21
- Command Adapter and JUnit Import - 2026-09-25
- Config JSON Schema - 2026-10-22
- Delta Comparison Policy
- Docs Site - 2026-10-19
- Docs Vault and Wiki Sync - 2026-10-07
- Flaky Test Quarantine - 2026-10-22
- GitHub Action PR Comment - 2026-10-19
- Ingest and Team Server - 2026-10-22
- Interview Readiness Fixes - 2026-10-07
- Library Packaging
- Open Source Features - 2026-10-19
- Phase 3 Delta Comparison Engine Plan
- Phase 3 Unified Dashboard Plan
- Phase 4 BYOK and Failure Analysis
- Phase 5 UI Redesign - Cycles-First Navigation
- Playwright Adapter - 2026-10-19
- Playwright JSON Import - 2026-10-22
- Plugin API - 2026-10-19
- Specs & ADRs
- Repository Pattern - Database-Agnostic Refactor
- UI Restyle - 2026-10-19
Testing Workflows
Vault