[lockfile-stats] Lockfile Statistics Report — 2026-08-26 (294 workflows) #56128
Closed
Replies: 1 comment
|
This discussion was automatically closed because it expired on 2026-08-27T21:06:05.931Z.
|
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.
Executive summary
Analyzed 294 compiled lockfiles (
.github/workflows/*.lock.yml) as of 2026-08-26.0malformed/skipped. Total size 44,272,954 bytes (~42.2 MB), avg 150.6 KB/file (min 88,958 B, max 238,038 B). All self-checks passed (yaml parsing OK, safe-outputs config found in every file, engine resolved for every file, permissions resolved for every file).File size distribution
Trigger analysis
Top triggers:
workflow_dispatch(286),schedule(238),pull_request(43),issues(5),issue_comment(3).Top combinations:
schedule+workflow_dispatch(205),workflow_dispatchonly (38),pull_request+schedule+workflow_dispatch(29),pull_request+workflow_dispatch(9).workflow_dispatchpresent in 286/294 (97.3%). Most common cron:0 0 */2 * *(every 2 days) in 42 workflows; the rest are long-tail unique schedules.Full cron frequency table (30 distinct patterns)
0 0 */2 * *7 5 * * *49 14 * * 1-523 11 * * *38 3 * * *9 3 * * *41 4 * * *26 5 * * *37 5 * * *40 3 * * *Safe outputs analysis
create_discussionconfigured in 92 workflows; category resolved for all 92 (100%, no fallback parsing needed).Other common safe-output types:
create_issue(143),add_comment(77),create_pull_request(63),add_labels(32),upload_asset(26),create_pull_request_review_comment/submit_pull_request_review(16 each). Universal defaults (missing_data,missing_tool,noop,report_incomplete,create_report_incomplete_issue) each appear in 288/294 workflows — the 6 without them are likely older or minimal configs.Structural characteristics
Timeouts: 10 min (312 job-instances), 45 min (295), 60 min (288), 90 min (3), 5 min (2), 120 min (2), 180 min (1).
Permission patterns
From
jobs.agent.permissions(the actual per-workflow scope, not the always-empty top-level block):permissions_unknown = 0for all 294 files.The agent job itself is essentially read-only everywhere — writes happen through the
safeoutputsMCP server instead. Looking at the union across all jobs in each workflow (agent + post-processing jobs), all 294 workflows (100%) grantwriteon at least one scope, withissues: writeuniversal (294/294),contents: writein 204/294, andpull-requests: writein 144/294 — this is where the actual safe-output side effects get applied.Engine distribution
engine_unknown = 0— every lockfile'sagent_idresolved cleanly from itsgh-aw-metadataheader. Top models:copilot/mai-code-1-flash-picker(32),copilot/gpt-5.4(23),copilot/claude-sonnet-4.5(12).Tool & MCP patterns
Every workflow uses the
safeoutputsMCP server (294/294) — expected, since it's the safe-output write path.githubMCP server appears in 121 workflows,agenticworkflowsin 43,serenain 25,mcpscriptsin 12.mcp_fallback_used_count = 0, meaning every file's manifest was parsed directly (no legacy comment-scraping needed).Full MCP server counts
Interesting findings
id-token: write(likely OIDC-based publishing). All mutation happens through the sandboxedsafeoutputsMCP layer, not direct job permissions — a consistent security pattern across the whole fleet.auditsis the dominant discussion category (79/92, 86% of discussion-producing workflows) — this very workflow is part of the majority pattern.missing_data,missing_tool,noop,report_incomplete,create_report_incomplete_issue) — suggesting a shared compiler template rather than per-workflow authoring of these steps.create_discussionconfigs resolved their category straight fromGH_AW_SAFE_OUTPUTS_CONFIGJSON, with no regex fallback triggered — a good signal the config-embedding convention is applied uniformly.Historical trends (vs. 2026-08-25)
All deltas are consistent with exactly one new lockfile being added (using
codexengine,workflow_dispatch+schedule trigger,create_issue+github+safeoutputstooling) with no other files changing structurally.Recommendations
discussions: readgrant sits at only 52/294 in the agent job butdiscussions: writereaches 95/294 in the job union — confirm this gap is intentional (write happens only in a later job stage) rather than a missed grant.Methodology note
Single-script compact JSON analysis: one cached Python analyzer (
lockfile_stats_v4.py) parses all lockfiles once viayaml.safe_loadplus targeted regex forgh-aw-metadata/gh-aw-manifestheader comments, emits one compact summary JSON, and this report reasons only from that JSON (no per-filecat/grepoutside the analyzer).References:
All reactions