[Schema Consistency] Schema Consistency Check - 2026-06-10 #38294
Closed
Replies: 1 comment
-
|
This discussion has been marked as outdated by Schema Consistency Checker. A newer discussion is available at Discussion #38531. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Summary
day_mod=1)This run re-verified the three open findings from prior runs against current
main(HEAD073404c) and ran two fresh proven-strategy passes (documentation coverage for newer top-level fields, and schema-default vs compiler-default consistency formax-tool-denials). All fresh leads were consistent. The three standing findings remain valid; one source file moved location but its behavior is unchanged.Critical Issues
None. No type mismatches, missing required-field enforcement, or schema/parser field gaps that would let invalid input through were found this run.
Findings (all standing, re-confirmed)
1. Decorative enum:
experiments.*.analysis_typeis never branched on (Strategy 20)The schema defines an enum
analysis_type: [t_test, mann_whitney, proportion_test, bayesian_ab], but the analyzer only stores and prints the value — it never branches its computation on which test was selected.pkg/parser/schemas/main_workflow_schema.json(experiments.*.analysis_typeenum)pkg/cli/experiments_analyze_statistics.go:120(note: file moved frompkg/workflow/js/topkg/cli/since last run)pkg/cli/experiments_analyze_statistics.go:298(Test type : %sto stderr)switch(line 345) branches onRecommendation, notAnalysisTypeImpact: All four enum values produce identical statistics. Users selecting
mann_whitneyvst_testget the same computation — the choice is silently inert. Either implement per-test logic or document the field as advisory/label-only.2. Permission matching uses exact equality with no privilege hierarchy (Strategy 23, secondary)
The role/permission check compares the required role against the actor's effective role with exact string equality and no hierarchy expansion.
actions/setup/js/check_permissions_utils.cjs:254→return normalizedRequired === effectiveRole;role_namenot being read) is now RESOLVED (lines 242–246 preferrole_name, normalizingmaintainer→maintain).Impact: A workflow configured with a custom
roles: [write]will reject anadminormaintaineractor, because matching is exact rather than "this level or higher." Docs (compilation-process.md,triggers.md— "based on repository permission level") imply threshold/level semantics. The default[admin, maintainer, write]masks the gotcha for most users, so it surfaces only with custom single-value role lists. Undocumented gotcha — either expand a privilege hierarchy or document that role matching is exact-set membership.3.
user-invokablefrontmatter field is undocumented (Strategy 17)IgnoredFrontmatterFields = []string{"user-invokable"}atpkg/constants/constants.go:318docs/src/content/docs/Impact: Low. The field is intentionally silently ignored (a Copilot custom-agent field), but it has zero user-facing documentation explaining that it is accepted-but-ignored.
Fresh leads checked this run (all clean)
Verification details
secret-masking(4 files),observability(21),max-tool-denials(curated atengines.md:272,285),resources(19),user-rate-limit(6),runs-on-slim(7),mcp-scripts(17). No new zero-coverage top-level field.disable-model-invocation/run-install-scriptsare no longer current top-level schema properties.max-tool-denials: schemadefault: 5==constants.DefaultMaxToolDenials(pkg/constants/engine_constants.go:386) == fallback inpkg/workflow/copilot_engine_execution.go:620. Consistent.field_gaps.in_parser_not_schemais empty; remaining gaps are top-level fields accessed viamap[string]any(no yaml tags) — known false positives.redirectfield: schema string, handled across compiler, documented infrontmatter.md. Consistent.Recommendations
analysis_type: implement per-test-type branching in the experiments analyzer, OR mark the enum as label-only in the schema description so users don't expect different statistics per value.roles:lists are matched as exact-set membership (admin does not implicitly satisfywrite), OR add hierarchy expansion incheck_permissions_utils.cjs.user-invokable: add a one-line note to the frontmatter reference that the field is accepted-but-ignored (Copilot custom-agent compatibility).Strategy Performance
Next Steps
analysis_type: implement branching or relabel as advisoryroles:listsuser-invokablefieldReferences: §27258453758
Beta Was this translation helpful? Give feedback.
All reactions