Skip to content

[CI Failure Doctor] Schema validation mismatch in create_project: title field inconsistency between safe_outputs_tools.json and safe_output_validation_config.go #10098

@github-actions

Description

@github-actions

🏥 CI Failure Investigation - Run #21035582213

Summary

CI failed due to incomplete schema update in PR #10068. The title field for create_project was made optional in the tool schema (safe_outputs_tools.json) but remains marked as required in the validation config (safe_output_validation_config.go), causing a validation mismatch.

Failure Details

Root Cause Analysis

PR #10068 added a title-prefix configuration feature to allow auto-generation of project titles when the title parameter is not provided. The implementation updated:

pkg/workflow/js/safe_outputs_tools.json - Removed title from required array
actions/setup/js/create_project.cjs - Added auto-generation logic using title-prefix
pkg/workflow/create_project.go - Added TitlePrefix config field
pkg/workflow/safe_outputs_config_generation.go - Added title-prefix handling

MISSED: pkg/workflow/safe_output_validation_config.go line 250 still has Required: true for the title field

The Problem

// pkg/workflow/safe_output_validation_config.go:250
"create_project": {
    DefaultMax: 1,
    Fields: map[string]FieldValidation{
        "title": {Required: true, Type: "string", Sanitize: true, MaxLength: 256},  // ❌ Should be false
        // ...
    },
},

This creates a mismatch:

  • Tool schema says: title is optional (can be auto-generated)
  • Validation config says: title is required (must be provided)

Impact

Any workflow using create_project without an explicit title parameter (relying on auto-generation) will fail runtime validation with an error like:

Error: Required field 'title' is missing

This breaks the intended functionality of the title-prefix feature.

Recommended Fix

File: pkg/workflow/safe_output_validation_config.go
Line: 250
Change:

 "create_project": {
     DefaultMax: 1,
     Fields: map[string]FieldValidation{
-        "title": {Required: true, Type: "string", Sanitize: true, MaxLength: 256},
+        "title": {Required: false, Type: "string", Sanitize: true, MaxLength: 256},
         "owner": {Type: "string", Sanitize: true, MaxLength: 128},
         // ...
     },
 },

Validation Steps:

  1. Make the change above
  2. Run make test to verify tests pass
  3. Run make agent-finish to ensure full validation
  4. Commit and push

Prevention Strategies

For Future Development

Rule: When changing a field's required status in any tool schema, ALWAYS update BOTH:

  1. pkg/workflow/js/safe_outputs_tools.json (tool schema)
  2. pkg/workflow/safe_output_validation_config.go (validation config)

These files must stay in sync. The validation config enforces what the tool schema declares.

Detection Pattern

Search for the pattern: "making X field optional" or "removing X from required"

When found, verify updates in:

  • Tool schema JSON file
  • Validation config Go file
  • Implementation code (JavaScript)
  • Go config structs

AI Team Self-Improvement

Add to AGENTS.md or developer instructions:

### Safe Output Schema Changes

When modifying safe-output tool schemas (making fields optional/required):

1. **ALWAYS update both files together**:
   - `pkg/workflow/js/safe_outputs_tools.json` - Tool schema definition
   - `pkg/workflow/safe_output_validation_config.go` - Runtime validation rules

2. **Search both files** for the field name when making changes
   
3. **Pattern to remember**:
   - Making a field optional? Update `Required: true``Required: false` in validation config
   - Making a field required? Update `Required: false``Required: true` and add to `required` array in JSON

4. **Validation**: Run `make test` to catch mismatches before committing

Historical Context

This is a common pattern when adding "optional with auto-generation" features. Previous similar changes successfully updated both files. This appears to be an oversight rather than a systemic issue.

Pattern: INCOMPLETE_SCHEMA_UPDATE
First occurrence: Run #21035582213
Related failures: None found

Investigation Metadata

  • Investigator: CI Failure Doctor
  • Investigation Date: 2026-01-15T15:20:00Z
  • Investigation File: /tmp/gh-aw/cache-memory/investigations/2026-01-15-21035582213.json
  • Method: Code analysis (GitHub API unavailable)

AI generated by CI Failure Doctor

To add this workflow in your repository, run gh aw add githubnext/agentics/workflows/ci-doctor.md@ea350161ad5dcc9624cf510f134c6a9e39a6f94d. See usage guide.

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions