Skip to content

Complete semantic configuration validation, capabilities, doctor, and gate onboarding #12

Description

@douglasjarquin

Problem

Made strictly decodes .made.yml, but syntactic validity is not enough. The effective configuration can still advertise unsupported agents/fields or reach the pipeline with combinations guaranteed to fail later. Capabilities and doctor currently under-report the information Consigliere needs to determine operational compatibility, and gate initialization still requires hidden low-level arguments for ordinary use.

Required implementation

Semantic config preflight

Validate the complete trusted/effective configuration before any pipeline stage executes. Reject:

  • unsupported agent
  • Review enabled without a supported agent
  • Test enabled without a test command
  • required CI combined with a CI-disable flag
  • required stage explicitly disabled
  • unsupported multi-agent agents configuration
  • disable_project_settings when it cannot be enforced
  • invalid or inaccessible evidence publication
  • unsafe evidence paths
  • contradictory or invalid timeout combinations
  • pushed executable policy not authorized by trusted config
  • any retained field that has no real behavioral owner

Remove or consolidate duplicate concepts such as no_ci versus ci.required unless both are necessary and documented.

Reject .made.yml symlinks and other non-regular-file/path-race tricks. Every retained field must affect real behavior and have a test.

Capabilities

Expand made capabilities --json to expose at least:

{
  "protocol_version": 1,
  "status_schema_version": 3,
  "config_schema_version": 1,
  "supported_agents": ["codex"],
  "features": {
    "high_level_submit": true,
    "exact_status": true,
    "batch_active_status": true,
    "idempotent_cancel": true,
    "stage_review_decision": true,
    "merge_completion": true,
    "durable_restart_state": true
  }
}

Bump schema versions for incompatible changes and document compatibility policy.

Doctor

Expand made doctor --json and human output to validate:

  • Made home ownership/mode
  • daemon/socket/protocol
  • status/config schema versions
  • durable store health and migration state
  • pending gate submissions
  • torn/corrupt state and repair guidance
  • gate initialization
  • hook integrity and embedded Made binary path
  • real remote and current default branch
  • trusted .made.yml
  • semantic configuration
  • supported agent binary/version/capabilities
  • project-settings isolation capability
  • reviewer containment availability
  • GitHub authentication and check-query capability
  • evidence publication health
  • stale worktrees
  • awaiting-action and interrupted/retryable runs
  • required Consigliere compatibility range where configured

Human output must provide exact remediation commands.

Gate onboarding

Support the normal flow:

cd <repo>
made gate init

Infer target path, origin URL, and default branch. Retain explicit arguments for automation.

Acceptance criteria

  • Guaranteed-invalid config fails before Intent or any agent/test command starts.
  • Unsupported/decorative config fields are removed or rejected.
  • Capabilities report all schema versions, supported agents, and required features truthfully.
  • Doctor detects real operational incompatibility and provides actionable repair commands.
  • Gate init works from a normal repository without requiring the user to manually pass path and origin URL.
  • Symlink and path-race config attacks are rejected.

Required tests

  • every semantic contradiction above
  • supported/unsupported agent matrix
  • required disabled stage
  • trusted versus pushed executable-policy boundary
  • .made.yml symlink and replacement race
  • capabilities schema compatibility
  • doctor store/spool/gate/hook/agent/GitHub/evidence checks
  • normal zero-argument gate init
  • explicit automation arguments
  • human remediation output

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions