[lockfile-stats] Lockfile Statistics Analysis — 2026-09-24 (298 workflows) #63249
Closed
Replies: 1 comment
|
This discussion has been marked as outdated by Lockfile Statistics Analysis Agent. A newer discussion is available at Discussion #63508. |
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 298
.github/workflows/*.lock.ymlfiles on 2026-09-24 via single-script compact JSON analysis. 0 malformed/skipped. Total size 46.80 MB, avg 157.0 KB/file (min 92.1 KB, max 250.7 KB).File Size Distribution
Trigger Analysis
Top combinations:
schedule+workflow_dispatch(209),workflow_dispatchonly (37),pull_request+schedule+workflow_dispatch(29).Cron frequency detail (top entries)
0 0 */2 * *(every 2 days, midnight)7 5 * * *29 distinct cron expressions found across 242 scheduled workflows — most are unique per-workflow offsets, with the every-2-days cadence dominant.
workflow_dispatchpresent in 290/298 (97%) lockfiles.Safe Outputs Analysis
(
missing_data/missing_tool/noop/report_incompleteare near-universal scaffolding present in 292/298 and omitted from the ranking above as non-differentiating.)Discussion categories (all 92
create_discussionworkflows resolved a category — 0 unresolved):Full safe-output type tail (long tail, ≤10 workflows each)
mentions (23), max_bot_mentions (8), close_issue/remove_labels (7 each), comment_memory/dispatch_workflow (6 each), update_pull_request/assign_to_agent (5 each), link_sub_issue/close_pull_request/send-slack-message (4 each), plus ~25 more types used by 1–3 workflows (jira_*, linear_create_issue, update_project, create_agent_session, etc.).
Structural Characteristics
Timeout-minutes distribution (job-level): 45min → 298 workflows, 60min → 291, 10min → 353 (multiple jobs/workflow), 90min → 3, 120min → 2, 5min → 2, 15min/180min → 1 each.
Permission Patterns (agent job — primary scope)
Union-of-all-jobs permissions (includes safe-output post-processing jobs)
All 298 workflows (100%) grant at least one
writescope somewhere in their job graph, even though the agent job itself is read-only in the vast majority of cases — write access is concentrated in dedicated safe-output application jobs.Engine Distribution
(resolved from
gh-aw-metadataagent_id; 0 unknown)Most common models:
openai/gpt-5.3-codex(37),copilot/gpt-5.3-codex(33),copilot/auto(30),openai/gpt-5.4(11),claude-sonnet-5(6).Tool & MCP Patterns
No fallback (legacy comment-scraping) MCP detection was needed — all 298 lockfiles carried a parseable
gh-aw-manifest.Interesting Findings
gh-aw(GitHub Agentic Workflows) repo itself — suggests broad multi-engine dogfooding rather than a single default.writeto some scope somewhere in its job graph, but the agent job itself is write-free in all 298 cases — all mutation is delegated to dedicated safe-output-application jobs, a clean least-privilege split.issues: writeappears in the union-of-jobs permissions for all 298 workflows regardless of whether the workflow usescreate_issue(only 145 do) — likely a shared safe-outputs job template granting a broader default than each workflow strictly needs.audits(79/92, 86%), consistent with this very report's category — mostcreate_discussionworkflows in this repo are audit/reporting agents like this one.Historical Trends (vs. 2026-09-23)
One workflow was removed/renamed between runs (lockfile count and workflow_dispatch count both dropped by exactly 1), while average per-file size ticked up slightly — consistent with incremental feature growth in the remaining workflows.
Recommendations
.github/workflows/.issues: writegrant for workflows that never callcreate_issue/close_issue/update_issue(153/298 have no issue-mutating safe output yet inherit the write scope).Methodology
Single-script compact JSON analysis: one Python script (
lockfile_stats_v4.py, cached under/tmp/gh-aw/cache-memory/scripts/) parses all lockfiles once viayaml.safe_load, extracts engine identity from thegh-aw-metadataheader comment, safe-output/discussion-category config fromGH_AW_SAFE_OUTPUTS_CONFIG, and permissions from per-jobpermissions:blocks (the top-levelpermissions: {}carries no signal and was not used). Results written to a compact JSON summary and compared against the prior day's cached summary for trend deltas.References:
Warning
Firewall blocked 1 domain
The following domain was blocked by the firewall during workflow execution:
api.anthropic.comTo allow these domains, add them to the
network.allowedlist in your workflow frontmatter:See Network Configuration for more information.
All reactions