Skip to content

feat(deploy): add LLM agentic release notes skill suite for Data Commons Platform - #200

Merged
clincoln8 merged 74 commits into
datacommonsorg:mainfrom
clincoln8:feat/release-notes-tool
Sep 10, 2026
Merged

clincoln8 merged 74 commits into
datacommonsorg:mainfrom
clincoln8:feat/release-notes-tool

Conversation

@clincoln8

Copy link
Copy Markdown
Contributor

Description

This PR introduces an end-to-end, LLM-native Skill Suite for generating publication-ready, partner-facing release notes for the Data Commons Platform (DCP) stack.

Instead of relying on rigid Python CLI scripts or manual PR curation, this tool provides a 4-step agentic workflow using LLM subagents and structured verification checkpoints:

Architecture & Skill Suite Breakdown:

  1. Master Orchestrator (deploy/generate_release_notes/SKILL.md): Entrypoint skill that orchestrates the release notes pipeline across 6 repositories and 6 container images.
  2. PR Extraction Skill (deploy/generate_release_notes/skills/pr-extraction/SKILL.md): Instructs subagents to resolve image tags across Artifact Registry (with user prompt fallback on missing tags), query merged PRs via gh pr list, extract change summaries & DCP impact, filter out intermediate release-window regressions and Base DC flag flips, and output human-verifiable text files (prs_*.txt).
  3. Release Delta Synthesis Skill (deploy/generate_release_notes/skills/release-delta-synthesis/SKILL.md): Analyzes all prs_*.txt files to distinguish true platform bug fixes present in prior releases vs. intra-release intermediate fixes, synthesizes salient features per container image (separating Mixer, MCP Agent Toolkit, and Website UI into distinct sections), and outputs IMAGE_DELTAS_<version>.txt.
  4. DCP Domain Context Skill (deploy/generate_release_notes/skills/dcp-context/SKILL.md): Architectural reference mapping DCP components, persona principles (external contracts, zero internal DB table exposure), and section mapping rules.
  5. Release Writer Skill (deploy/generate_release_notes/skills/release-writer/SKILL.md): Authors publication-ready release notes with dynamic Executive Summary scaling (2-3 sentences for major releases, 1 sentence for patch releases), two-tier Key Feature Updates (What's New + Specific Capabilities), GFM links ([repo#PR](URL)), and 4 grouped Bug Fix categories.
  6. Developer Guide (deploy/generate_release_notes/README.md): Comprehensive instructions for developers on how to prompt their LLM agent to execute the pipeline.

Technical Highlights

  • 1-to-1 Subagent Isolation: Spawns 6 dedicated subagents matching the 6 container image output files 1-to-1.
  • Strict User Prompt on Missing Tags: Prompts the user directly if an image tag is missing rather than making invalid assumptions.
  • Complete Ignored PRs Audit Log: Every ignored PR in prs_*.txt includes a 1-sentence Reason: explaining why it was excluded.
  • No Database Internals Exposure: Sanitizes internal Spanner table names (KeyValueStore, IngestionHistory) for partner-facing clarity.
  • Repo-Relative Link Portability: All skill references use relative paths without hardcoded user home directory URIs.

Verification

  • Successfully executed the complete 4-step pipeline to generate release notes for v1.1.0 -> v1.1.1 (RELEASE_NOTES_v1.1.1.md and IMAGE_DELTAS_v1.1.1.txt).
  • Evaluated generated outputs with subagent audit:
    • Executive summary: 23 words (dynamic budget).
    • Key Feature Updates: 4 major features with zero horizontal rule dividers between features.
    • Bug Fixes: Grouped into 4 functional categories with zero intermediate SDMX regression leaks.
    • Links: 100% valid GFM links [repo#PR](URL) without backtick formatting errors.

clincoln8 added 30 commits July 29, 2026 18:42
- Add ComponentConfig and SourceRule multi-repository mapping rules in config.py
- Add PullRequest, ComponentVersionInfo, and ReleaseInfoManifest models in models.py
- Add PRExtractor with gcloud container image tag lookup and single-call gh pr list date search in pr_extractor.py
- Add unit and integration tests in deploy/generate_release_notes/tests/
- Add generate-release-notes dependency group to pyproject.toml
…i pipeline (Flash + Pro)

- Add Two-Stage Gemini LLM Pipeline in feature_extractor.py (Stage 1 Flash noise filter + Stage 2 Pro synthesis and SOP classification)
- Add unit tests with mocked Gemini Client in test_feature_extractor.py
…ed PR IDs, SOPCategory enum, merged_at timestamps)
… FeatureUpdate model and Stage 2 Gemini prompt
…er using Gemini Pro

- Add ReleaseNotesWriter in release_notes_writer.py with agentic prompt following streamlined DCP template
- Add unit and integration test suite in test_release_notes_writer.py
…eration tool

- Connect Step 1 (PRExtractor), Step 2 (FeatureExtractor), and Step 3 (ReleaseNotesWriter) into click CLI
- Add test_main.py unit test suite
…etails across Feature Extractor and Release Notes Writer
…ipeline with direct bot/noise filtering instructions
…tform (focus on Ingestion Inputs & APIs, de-emphasize Spanner DB layer, drop internal testing)
…ng so t_max extends to current time for all repos
…de-emphasize Spanner DB layer in Release Notes Writer
…Enabled, focusing on explicit user actions and input types

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces an agentic, skill-driven tool suite for generating partner-facing release notes for the Data Commons Platform (DCP), adding orchestrator and subagent skills alongside configuration and dependency updates in pyproject.toml and uv.lock. The review feedback highlights several necessary improvements, including resolving inconsistencies in the README regarding the number of skills and executive summary rules, replacing LaTeX arrows with standard Unicode arrows for proper markdown rendering, formatting the gcloud timestamp output to UTC to avoid timezone mismatches, and removing a contradiction in the release-writer skill instructions where a banned word was used.

Comment thread deploy/generate_release_notes/README.md Outdated
Comment thread deploy/generate_release_notes/README.md Outdated
Comment thread deploy/generate_release_notes/README.md Outdated
Comment thread deploy/generate_release_notes/SKILL.md Outdated
Comment thread deploy/generate_release_notes/skills/pr-extraction/SKILL.md Outdated
Comment thread deploy/generate_release_notes/skills/release-writer/SKILL.md Outdated
@clincoln8
clincoln8 marked this pull request as draft July 30, 2026 23:35
@clincoln8
clincoln8 marked this pull request as ready for review September 4, 2026 22:56
@clincoln8
clincoln8 requested a review from carojahn September 4, 2026 22:56

### Step 2: Mandated Scale Analysis & Banned-Word Audit (Thinking Phase)
Open a `<thinking>` block to record your pre-writing analysis:
1. **Scope Evaluation**: Assess whether this is a Major/Feature-Rich release or a Small/Patch release.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we give examples of these somewhere?

@clincoln8 clincoln8 Sep 5, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add a few examples inline


- **Partner & Operator Persona**: Write specifically for external developers, data engineers, and instance operators building ON TOP OF DCP. Frame features around user capabilities and touchpoints defined in `skills/dcp-context/SKILL.md`.
- **Zero Internal Database Terms (STRICT)**: NEVER output feature titles or section names containing internal database table names, schema DDLs, or storage migration mechanics (e.g. no "KeyValueStore", "Spanner Graph DDL", "Bigtable Cutover"). Frame latency improvements around user impact (e.g. *"API Serving Latency & Query Throughput"*).
- **Tone**: Direct, factual, punchy, senior-engineer technical changelog. Active voice for features ("You can now..."), past tense for bugs ("Resolved...").

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add "objective"

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

- Cloud Workflows internal execution IDs and status tracking tables (`IngestionHistory`).
- Internal SQL parameter unrolling and join ordering optimizations.

### D. Sequential Decision SOP for Evaluating PR Relevance

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is SOP?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

reduced jargon by replacing the heading with "E. Step-by-Step Decision Process for Evaluating PR Relevance"

(SOP = standard operating procedure)


When analyzing Pull Requests and synthesizing release notes, agents MUST categorize changes based on **where and how the user or operator interacts with the platform**:

### A. Data Input & Ingestion Pipeline (What Data Engineers & Operators Care About)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On top of data engineers, we have the platform maintainers / managers - do we need a section for that (who are different than the data engineers)?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

added section for Platform Infrastructure & DevOps

…, SOP phrasing, and DevOps persona separation
@clincoln8

Copy link
Copy Markdown
Contributor Author

Thanks! Addressed feedback in clincoln8@62f0a57

@clincoln8
clincoln8 requested a review from carojahn September 5, 2026 00:18
@clincoln8
clincoln8 added this pull request to the merge queue Sep 10, 2026
Merged via the queue into datacommonsorg:main with commit ba41165 Sep 10, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants