You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
New Strategy: YES (radically different approach focusing on runtime behavior)
Critical Issues: 2
Moderate Issues: 5
Documentation/Enhancement Opportunities: 4
Analysis Approach (Strategy 11)
This analysis used a completely new strategy not attempted before: Runtime Behavior vs Schema Contracts. Unlike previous strategies that focused on field enumeration, type analysis, or documentation completeness, this strategy examines what actually happens when code executes versus what the schema promises.
Key Innovation: Instead of comparing static definitions, this strategy traces execution paths to find:
Silent failures (fields ignored without error)
Type coercion mismatches
Partial implementations
Validation gaps
Undocumented runtime behaviors
Critical Issues
1. Dual Field Names: `timeout-minutes` vs `timeout_minutes` ⚠️
Impact: HIGH - Schema pollution and potential confusion
Details:
Schema defines BOTH timeout-minutes and timeout_minutes as separate top-level properties
Runtime handles both for backwards compatibility (compiler_orchestrator_workflow.go:149-151)
Consider standardizing access patterns for consistency
OR keep as-is if there's architectural reason
7. Limited Usage of `bots` and `roles` Fields 🤖
Impact: LOW - Potential incomplete implementation
Details:
Schema defines bots and roles fields
Very limited references in production code (2 occurrences each)
Mostly used in role validation checks
Evidence:
Field: bots
Production code: 2 references
Test code: 0 references
Field: roles
Production code: 2 references
Test code: 1 reference
``````**Location**: `pkg/workflow/role_checks.go:77`**Recommendation**:
- Verify if`bots` and `roles` are fully implemented
- If these are newer/experimental features, mark them as such in schema
- Add more comprehensive tests if features are production-ready
</details>### Documentation/Enhancement Opportunities<details><summary><b>8. `maxItems` Constraints Runtime Validation ✅</b></summary>**Impact**: INFO - Validation appears present
**Details:**
- Schema defines 20 `maxItems` constraints for arrays
- Runtime has 19 references to max/exceed/too-many checks
- Good coverage but worth verifying specific constraints
**Evidence:**``````
Schema maxItems count: 20
Runtime max-related checks: 19
Recommendation:
Audit each schema maxItems to ensure corresponding runtime validation
Document any intentionally unvalidated maxItems
Consider adding schema reference comments in validation code
9. `engine` Default Value - Correctly Implemented ✅
Impact: POSITIVE - No issue found
Details:
Schema declares engine default as "copilot"
Runtime correctly applies this default when field is missing
Good alignment between schema contract and implementation
Add "$comment": "Pass-through field: forwarded to GitHub Actions without validation" in schema
Or create a "x-passthrough": true extension property
Helps users understand validation boundaries
11. Silent Field Ignores via `exists` Checks 🤫
Impact: INFO - Design pattern observation
Details:
Many fields use if exists { process } else { skip } pattern
No error when field is missing
This is intentional for optional fields but not always obvious from schema
Evidence:
// Common pattern throughout pkg/workflow/*ifengine, exists:=frontmatter["engine"]; exists {
// process engine
}
// No else clause - silently skip if missing
Recommendation:
Ensure schema marks these fields as not required (omit from required array)
Document pass-through fields in schema with comments
Verify bots and roles implementation completeness
Audit maxItems constraints against runtime validation
Long-term Enhancements
Consider standardizing field access patterns (cache outlier)
Add runtime warnings when type coercion occurs (like max-patch-size)
Create schema extension for pass-through fields
Strategy Performance
Strategy Used: Runtime Behavior vs Schema Contracts (Strategy 11)
Findings: 11 total (2 critical, 5 moderate, 4 informational)
Effectiveness: VERY HIGH - discovered runtime behaviors not found by previous strategies
Should Reuse: YES - excellent for finding schema/runtime contract violations
Innovation: First strategy to trace execution paths rather than compare static definitions
Strategy Strengths
✅ Found runtime behaviors not visible in static analysis
✅ Discovered silent failures and type coercion issues
✅ Identified undocumented automatic behaviors (firewall enablement)
✅ Validated schema contracts against actual implementation
Strategy Weaknesses
⚠️ Requires deeper code reading (slower than grep-based approaches) ⚠️ May miss issues only visible in edge cases ⚠️ Relies on tracing execution paths (could miss rarely-used code paths)
Next Steps
Complete schema consistency analysis
Fix critical schema issues (timeout field duplication, 'on' required status)
Update schema documentation for undocumented runtime behaviors
Verify maxItems validation coverage
Add strategy 11 to proven strategies cache
Analysis Date: January 29, 2026 Strategy: Runtime Behavior vs Schema Contracts (NEW) Repository: githubnext/gh-aw Workflow Run: §21498944402
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
-
Summary
Analysis Approach (Strategy 11)
This analysis used a completely new strategy not attempted before: Runtime Behavior vs Schema Contracts. Unlike previous strategies that focused on field enumeration, type analysis, or documentation completeness, this strategy examines what actually happens when code executes versus what the schema promises.
Key Innovation: Instead of comparing static definitions, this strategy traces execution paths to find:
Critical Issues
1. Dual Field Names: `timeout-minutes` vs `timeout_minutes`⚠️
Impact: HIGH - Schema pollution and potential confusion
Details:
timeout-minutesandtimeout_minutesas separate top-level propertiesEvidence:
Location:
pkg/parser/schemas/main_workflow_schema.json(both fields present)pkg/workflow/compiler_orchestrator_workflow.go:149-151Recommendation:
timeout_minutesfrom schema (keep onlytimeout-minutesfor consistency)2. Schema `required` Field Not Enforced: `on` Field⚠️
Impact: MEDIUM - Schema contract violation
Details:
onfield as required:"required": ["on"]onfieldEvidence:
Location:
pkg/parser/schemas/main_workflow_schema.json(line with"required")pkg/workflow/compiler_orchestrator_workflow.go:139Recommendation:
onfrom schema'srequiredarray (align with actual runtime behavior)onshould truly be requiredonhas sensible defaultsModerate Issues
3. Pass-Through YAML Sections Without Validation 📋
Impact: MEDIUM - Limited validation of user input
Details:
Several schema fields are extracted as raw YAML sections and passed through to GitHub Actions without validation:
concurrencycontainerenvironmentenvruns-onservicesEvidence:
Location:
pkg/workflow/compiler_orchestrator_workflow.go:139-296Recommendation:
4. Automatic Firewall Enablement (Undocumented Behavior) 🔐
Impact: MEDIUM - Security feature not clearly documented in schema
Details:
copilotandclaudeengines when network restrictions existEvidence:
Location:
pkg/workflow/compiler_orchestrator_engine.go:191-194,pkg/workflow/firewall.go:81-96Recommendation:
enginefield description about automatic firewall enablementnetwork.firewallsection that firewall may be auto-enabled5. `max-patch-size` Type Coercion with Silent Truncation 🔢
Impact: LOW-MEDIUM - Silent data loss
Details:
max-patch-sizeas integerEvidence:
Location:
pkg/workflow/safe_outputs_config.go:307-325Recommendation:
6. `cache` Field Indirect Access Pattern 💾
Impact: LOW - Inconsistent access pattern
Details:
frontmatter["fieldname"]cachefield accessed via separatetopLevelmapEvidence:
Location:
pkg/workflow/cache.go:247Recommendation:
cacheuses different access pattern7. Limited Usage of `bots` and `roles` Fields 🤖
Impact: LOW - Potential incomplete implementation
Details:
botsandrolesfieldsEvidence:
Recommendation:
maxItemsto ensure corresponding runtime validation9. `engine` Default Value - Correctly Implemented ✅
Impact: POSITIVE - No issue found
Details:
enginedefault as"copilot"Evidence:
Location:
pkg/workflow/compiler_orchestrator_engine.go:156-167Status: ✅ Working as expected
10. Pass-Through Fields Could Use Schema Documentation Tag 📝
Impact: LOW - Documentation clarity
Details:
Many fields are pass-through to GitHub Actions YAML:
concurrency,container,environment,env,runs-on,services,network,run-nameRecommendation:
"$comment": "Pass-through field: forwarded to GitHub Actions without validation"in schema"x-passthrough": trueextension property11. Silent Field Ignores via `exists` Checks 🤫
Impact: INFO - Design pattern observation
Details:
if exists { process } else { skip }patternEvidence:
Recommendation:
requiredarray)Recommendations by Priority
Immediate Actions
timeout_minutesfrom schema - keeps clean API surfaceonfrom required array OR enforce validation - align schema with runtimeShort-term Improvements
botsandrolesimplementation completenessmaxItemsconstraints against runtime validationLong-term Enhancements
cacheoutlier)max-patch-size)Strategy Performance
Strategy Strengths
✅ Found runtime behaviors not visible in static analysis
✅ Discovered silent failures and type coercion issues
✅ Identified undocumented automatic behaviors (firewall enablement)
✅ Validated schema contracts against actual implementation
Strategy Weaknesses
Next Steps
Analysis Date: January 29, 2026
Strategy: Runtime Behavior vs Schema Contracts (NEW)
Repository: githubnext/gh-aw
Workflow Run: §21498944402
Beta Was this translation helpful? Give feedback.
All reactions