name: quality-gate-size-analysis description: Analyze static quality gate on-disk size changes, correlate with Confluence exception records and GitHub PRs by milestone argument-hint: "<time-range e.g. 3mo, 6mo> [optional: specific release e.g. 7.77]"
Analyze the agent's static quality gate on-disk size metrics, pull approved exception records from Confluence, fetch PR data from GitHub with milestone-based release attribution, and produce a cross-referenced report.
Step 1: Query Datadog Metrics
1a. Relative on-disk size (per-commit deltas)
Query datadog.agent.static_quality_gate.relative_on_disk_size filtered to ci_commit_ref_slug:main, grouped by gate_name and arch:
max:datadog.agent.static_quality_gate.relative_on_disk_size{ci_commit_ref_slug:main} by {gate_name,arch}
- Use
from=now-$TIME_RANGEandto=now - Request
raw_data=trueto get CSV with timestamps for spike identification - Identify the largest single-commit jumps per gate — these are the candidates for exception correlation
1b. Absolute package size (branch comparison)
Query datadog.agent.package.size for main and relevant release branches to measure inter-release deltas:
max:datadog.agent.package.size{git_ref:main,package:datadog-agent,os:debian,arch:amd64}
max:datadog.agent.package.size{git_ref:7-XX-x,package:datadog-agent,os:debian,arch:amd64}
- Compare the stable average of each release branch to quantify the bump
- Include both the prior release and the current release branches
1c. Other useful metrics
datadog.agent.static_quality_gate.on_disk_size— absolute on-disk size per gatedatadog.agent.static_quality_gate.on_wire_size— compressed/network sizedatadog.agent.static_quality_gate.max_allowed_on_disk_size— configured thresholds
1d. Reference dashboard
The Agent Package size metrics dashboard contains all relevant widgets.
Step 2: Fetch Confluence Exception Records
Exception records live in the ABLD Confluence space under folder ID 5996904656.
2a. Enumerate all exception pages
Use CQL search:
ancestor = 5996904656 AND type = page ORDER BY created DESC
cloudId:datadoghq.atlassian.net- Exclude the
[TEMPLATE]page from results
2b. Fetch each page body
For every page returned, call getConfluencePage with contentFormat=markdown to extract:
- Decision status: Approved / Pending / Declined
- Disk size increase: the number in the "Measures" or "Bounds Granted" row
- Scope: which platforms/packages are affected
- Linked PRs: PR numbers/URLs mentioned in the "Feature" or "PR" rows
- Requester: who filed the exception
- Expiry / Payback: any commitments to recover the size
2c. Build an exception table
Compile all exceptions into a structured table with columns: Title, Date, Decision, Disk Increase, Scope, PRs, Requester.
Step 3: Pull GitHub PR Data
3a. Find PRs linked from Confluence
Extract PR numbers from the Confluence pages (they appear as GitHub URLs in the exception text). For each PR:
gh pr view <NUMBER> --repo DataDog/datadog-agent --json number,title,mergedAt,milestone,labels,state
The milestone field (e.g. 7.77.0) determines which release the PR belongs to. Do NOT use labels for release attribution.
3b. Search for additional size-impacting PRs
Search for PRs merged in the time window that may have size impact but no exception:
gh pr list --repo DataDog/datadog-agent --base main --state merged \
--search "merged:>=YYYY-MM-DD" --json number,title,mergedAt,milestone,labels
Filter for PRs with labels like qa/rc-required, component/system-probe, etc., and cross-check against the exception list.
3c. Search by feature name
For exceptions that don't directly link a PR, search by keyword:
gh pr list --repo DataDog/datadog-agent --base main --state merged \
--search "<feature-keyword> merged:>=YYYY-MM-DD" --json number,title,mergedAt,milestone
Step 4: Cross-Reference and Correlate
4a. Match metric spikes to PRs
For each significant spike in relative_on_disk_size:
- Identify the approximate date from the metric timestamp
- Find PRs merged on or just before that date
- Check if those PRs are covered by a Confluence exception
4b. Match PRs to releases via milestone
Group all size-impacting PRs by their milestone (not by label or merge date):
milestone:7.75.0→ Release 7.75milestone:7.76.0→ Release 7.76- etc.
4c. Identify gaps
Flag:
- PRs with size impact but no Confluence exception
- Confluence exceptions still in Pending status
- Exceptions with empty "Bounds Granted" fields
- PRs with no milestone set
Step 5: Generate Report
Write a markdown report to the repository root (e.g. quality_gate_size_analysis_YYYYQN.md) with these sections:
- Executive Summary — one paragraph overview
- Metrics Overview — absolute sizes per release branch, largest jumps table
- Confluence Exceptions — full table split by Approved vs Pending
- Release Attribution — PRs grouped by milestone, each linked to its exception status
- Coverage Gaps — list of unmatched PRs or pending exceptions
- Methodology — brief description of data sources and correlation approach
Key Details and Pitfalls
- The
relative_on_disk_sizemetric usesci_commit_ref_slug(notgit_ref) for branch filtering. - The
package.sizemetric usesgit_reffor branch filtering — branch names use hyphens (e.g.7-77-x). - The Confluence folder
5996904656is a folder, not a page — use CQLancestor =to search, notgetConfluencePageDescendants. - PR milestones determine release attribution, not labels. Use
gh pr view --json milestone. - The
gate_nametag values look likestatic_quality_gate_docker_agent_amd64— use these to distinguish between agent variants (docker, MSI, DCA, dogstatsd, IoT, heroku, FIPS). - Some exceptions cover multiple PRs across multiple releases (e.g. PAR landed in 7.76, with follow-on work in 7.77 and 7.78).