Skip to content
Draft
Show file tree
Hide file tree
Changes from 59 commits
Commits
Show all changes
70 commits
Select commit Hold shift + click to select a range
e8acd58
feat(deploy): implement Step 1 PR Extractor for release notes tool
clincoln8 Jul 30, 2026
81bdb12
fix(deploy): enforce strict timestamp and tag resolution in PRExtract…
clincoln8 Jul 30, 2026
40fbc80
fix(deploy): fail explicitly when required container image tag or git…
clincoln8 Jul 30, 2026
b02d3b7
feat(deploy): add skip_missing_images flag to PRExtractor to allow by…
clincoln8 Jul 30, 2026
909db08
feat(deploy): implement Step 2 Feature Extractor with Two-Stage Gemin…
clincoln8 Jul 30, 2026
8a1ae42
feat(deploy): apply design fixes to Step 2 Feature Extractor (qualifi…
clincoln8 Jul 30, 2026
b5be976
feat(deploy): add per-PR contribution summaries (pr_contributions) to…
clincoln8 Jul 30, 2026
5ac65ee
feat(deploy): implement Step 3 Streamlined Agentic Release Notes Writ…
clincoln8 Jul 30, 2026
f788858
feat(deploy): implement CLI entry point main.py for release notes gen…
clincoln8 Jul 30, 2026
4dfd05a
fix(deploy): add __main__.py to enable python -m deploy.generate_rele…
clincoln8 Jul 30, 2026
f451ae3
fix(deploy): update default Gemini models to gemini-3.5-flash and gem…
clincoln8 Jul 30, 2026
40230e4
fix(deploy): update default Gemini models to gemini-3-flash and gemin…
clincoln8 Jul 30, 2026
7d86269
fix(deploy): set default Gemini models to gemini-2.5-flash and gemini…
clincoln8 Jul 30, 2026
7a5385c
fix(deploy): update default filter model to stable gemini-3.5-flash a…
clincoln8 Jul 30, 2026
fbf33c6
fix(deploy): set default Gemini models to gemini-3.5-flash for Stage …
clincoln8 Jul 30, 2026
e0c5c77
fix(deploy): set default Gemini models to gemini-3.6-flash across all…
clincoln8 Jul 30, 2026
70dae84
feat(deploy): inject rich DCP domain knowledge, repository maps, and …
clincoln8 Jul 30, 2026
7dc1f13
fix(deploy): enforce User-First focus over developer implementation d…
clincoln8 Jul 30, 2026
54ce1e5
refactor(deploy): simplify Feature Extractor to single-stage Gemini p…
clincoln8 Jul 30, 2026
9593d43
fix(deploy): update prompts to write for users building ON TOP OF pla…
clincoln8 Jul 30, 2026
d033d8f
fix(deploy): fix date range calculation when new_version tag is missi…
clincoln8 Jul 30, 2026
3ff5e32
fix(deploy): filter out non-DCP-relevant features and test-only PRs, …
clincoln8 Jul 30, 2026
e4d0331
fix(deploy): fix link formatting template in ReleaseNotesWriter to re…
clincoln8 Jul 30, 2026
46fa01b
fix(deploy): update Capabilities section to Capabilities & Use Cases …
clincoln8 Jul 30, 2026
cf1cf25
fix(deploy): update pr_contributions example in FeatureExtractor JSON…
clincoln8 Jul 30, 2026
6f6484a
feat(deploy): apply user's clean, structured FeatureExtractor prompt …
clincoln8 Jul 30, 2026
3408128
feat(deploy): apply user's master Release Notes Writer prompt with DO…
clincoln8 Jul 30, 2026
2a5258d
feat(deploy): add Anti-AI-Fluff word allowlist and strict word count …
clincoln8 Jul 30, 2026
223f9d2
fix(deploy): add internal iteration bug filtering rule and expand SDM…
clincoln8 Jul 30, 2026
27cb6f2
feat(deploy): implement deterministic Python-level detect_internal_re…
clincoln8 Jul 30, 2026
683c5db
fix(deploy): remove invalid base:main search qualifier in PRExtractor…
clincoln8 Jul 30, 2026
ca81cce
fix(deploy): enforce rendering ALL features from features_payload wit…
clincoln8 Jul 30, 2026
6b8d3e8
fix(deploy): add custom_only variable filtering example to DO vs DON'…
clincoln8 Jul 30, 2026
bc8bb23
feat(deploy): add generalized Enum & Configuration Value extraction r…
clincoln8 Jul 30, 2026
da8f81a
docs(deploy): add comprehensive README.md for generate_release_notes …
clincoln8 Jul 30, 2026
d735e20
docs(deploy): add Configuration & Component Registry (config.py) sect…
clincoln8 Jul 30, 2026
85ec7e7
fix(deploy): enforce strict DB Internal Name Ban and Grouped Bug Fixe…
clincoln8 Jul 30, 2026
69d3ca7
refactor(deploy): replace specific term list with generalized Externa…
clincoln8 Jul 30, 2026
67a8617
refactor(deploy): apply subagent audit recommendations to generalize …
clincoln8 Jul 30, 2026
9871d3e
fix(deploy): pass pr_urls payload, inject 6-repo domain context into …
clincoln8 Jul 30, 2026
6bfd99b
refactor(deploy): streamline Feature Updates format into What's New a…
clincoln8 Jul 30, 2026
152e770
fix(deploy): add NO Horizontal Dividers Between Features constraint t…
clincoln8 Jul 30, 2026
4a8c556
fix(deploy): deterministically filter out internal regression fixes f…
clincoln8 Jul 30, 2026
3a9ee68
feat(deploy): include full list of pull_requests per component/image …
clincoln8 Jul 30, 2026
7148b42
feat(deploy): transform DCP Release Notes Generator into a modular Je…
clincoln8 Jul 30, 2026
63baaaa
docs(deploy): update README with LLM agent skill instructions and zer…
clincoln8 Jul 30, 2026
3c4c9fb
feat(deploy): mandate concurrent subagent spawning via invoke_subagen…
clincoln8 Jul 30, 2026
c98542e
refactor(deploy): delete Python CLI tool and streamline release notes…
clincoln8 Jul 30, 2026
71f1e6e
refactor(deploy): clarify Orchestrator vs Subagent skill boundary for…
clincoln8 Jul 30, 2026
d13b356
feat(deploy): replace rigid path rules with PR content & semantic rel…
clincoln8 Jul 30, 2026
8dbc1b6
feat(deploy): provide DCP Context Skill to subagents and add Excluded…
clincoln8 Jul 30, 2026
658613c
feat(deploy): add Release Delta Synthesis skill, clean prs_*.txt form…
clincoln8 Jul 30, 2026
4002405
feat(deploy): separate Website, Mixer, and MCP Agent Toolkit into dis…
clincoln8 Jul 30, 2026
0b0ee69
fix(deploy): address all audit recommendations - URL preservation, ta…
clincoln8 Jul 30, 2026
e5ad81a
fix(deploy): enforce prompt user on missing image tags, mandate reaso…
clincoln8 Jul 30, 2026
ad9f99c
docs(deploy): sanitize internal Spanner table names in generated RELE…
clincoln8 Jul 30, 2026
46aa9c2
fix(deploy): replace all local file URIs with relative links across r…
clincoln8 Jul 30, 2026
a01200e
feat(deploy): update Release Writer skill to scale Executive Summary …
clincoln8 Jul 30, 2026
1591261
chore(deploy): add .gitignore and .gitkeep for generate_release_notes…
clincoln8 Jul 30, 2026
75482cc
revert(deploy): restore pyproject.toml and uv.lock to match upstream/…
clincoln8 Jul 30, 2026
95a61b7
docs(deploy): remove redundant Repository Mapping table from README a…
clincoln8 Jul 30, 2026
f9e0b66
feat(deploy): establish dcp-context SKILL.md as Single Source of Trut…
clincoln8 Jul 30, 2026
adcd05f
docs(deploy): rewrite README.md for developer readability with Quick …
clincoln8 Jul 30, 2026
0027cac
docs(deploy): replace Jetski with Antigravity in README.md
clincoln8 Jul 30, 2026
48b438a
docs(deploy): remove hardcoded repository count from SKILL.md descrip…
clincoln8 Jul 30, 2026
fc11ca7
fix(deploy): correct infra path from infra/modules/ to infra/dcp/ in …
clincoln8 Jul 30, 2026
760bfc7
refactor(deploy): move persona and contract principles to release-wri…
clincoln8 Jul 30, 2026
79a4679
docs(deploy): rewrite dcp-context SKILL.md with DCP definition, user …
clincoln8 Jul 30, 2026
d327f4c
refactor(deploy): update release notes skill suite to 10/10 SOP stand…
clincoln8 Jul 31, 2026
da6745d
docs(deploy): add Maintenance & Updating section to README.md
clincoln8 Jul 31, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
99 changes: 99 additions & 0 deletions deploy/generate_release_notes/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
# Data Commons Platform (DCP) Release Notes Generator

An agentic, skill-driven tool suite for generating publication-ready, partner-facing release notes for the Data Commons Platform (DCP).

The tool automatically extracts merged Pull Requests across all 6 core Data Commons repositories, classifies them according to standard SOP categories, filters out internal test noise and regressions, writes human-verifiable PR lists per container image (`output/prs_<component>.txt`), and formats concise release notes tailored for developers and platform operators building on top of DCP.

---

## Agentic Skill Suite Architecture

The release notes generation pipeline is structured into 4 modular `SKILL.md` instruction sets. Point your LLM agent at these skills to execute the generation process:

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.

medium

The text states that the pipeline is structured into "4 modular SKILL.md instruction sets", but the directory tree directly below lists 5 SKILL.md files (the master orchestrator plus 4 sub-skills). This should be updated to "5 modular SKILL.md instruction sets" or clarified as "1 master orchestrator and 4 subagent skills" to avoid confusion.

Suggested change
The release notes generation pipeline is structured into 4 modular `SKILL.md` instruction sets. Point your LLM agent at these skills to execute the generation process:
The release notes generation pipeline is structured into 5 modular SKILL.md instruction sets. Point your LLM agent at these skills to execute the generation process:


```
deploy/generate_release_notes/
├── SKILL.md <-- 1. Master Orchestrator Skill (Entrypoint)
├── skills/
│ ├── pr-extraction/
│ │ └── SKILL.md <-- 2. PR Extraction Skill (Subagent Extraction)
│ ├── release-delta-synthesis/
│ │ └── SKILL.md <-- 3. Release Delta Synthesis Skill (Image Delta Analysis)
│ ├── dcp-context/
│ │ └── SKILL.md <-- 4. DCP Domain Context & Architectural Map
│ └── release-writer/
│ └── SKILL.md <-- 5. Partner-Facing Release Notes Writer
└── output/ <-- Verification & Output Directory
├── prs_services.txt <-- Verified PRs for Core Services (Website, Mixer, MCP)
├── prs_preprocessing.txt <-- Verified PRs for Data Preprocessor (datacommons-data)
├── prs_dataflow_worker.txt <-- Verified PRs for Dataflow Worker
├── prs_ingestion_helper.txt <-- Verified PRs for Ingestion Helper
├── prs_postprocessing.txt <-- Verified PRs for Postprocessing Helper
├── prs_dcp_monorepo.txt <-- Verified PRs for DCP Monorepo & Infra
├── IMAGE_DELTAS_v1.1.1.txt <-- Intermediate Image Delta Summary (Delta vs. Previous Release)
└── RELEASE_NOTES_v1.1.1.md <-- Final Publication-Ready Release Notes
```

---

## Developer Usage Instructions (Prompting Your LLM Agent)

### Step 1: Point Your LLM Agent at the Orchestrator Skill
To generate release notes for a release range, point your LLM agent at [`SKILL.md`](SKILL.md):

> **Prompt Example**:
> *"Please read `deploy/generate_release_notes/SKILL.md` and generate release notes for version v1.1.0 to v1.1.1."*

### Step 2: PR Extraction & Intermediate Verification Files
Your LLM agent will spawn concurrent subagents using `skills/pr-extraction/SKILL.md` and `skills/dcp-context/SKILL.md` to:
1. Resolve container image tags across Artifact Registry via `gcloud`.
2. Query merged Pull Requests across all 6 Data Commons repositories via `gh pr list`.
3. Analyze PR content, change summary, and DCP impact.
4. Output human-verifiable text files per container image into `deploy/generate_release_notes/output/prs_*.txt`.

Developers can open and inspect these `.txt` files to verify that all relevant PRs for each image are correctly captured, and inspect the **Irrelevant / Excluded PRs** audit log at the bottom.

### Step 3: Release Delta Synthesis (Delta vs. Previously Published Image)
Your LLM agent will spawn a **Release Delta Synthesis Subagent** using `skills/release-delta-synthesis/SKILL.md` to:
1. Analyze all `output/prs_*.txt` files.
2. Distinguish true platform bug fixes present in `<prev_version>` vs. intermediate bug fixes introduced and resolved within `<new_version>` (omitting intra-release fixes).
3. Summarize salient features and operator capabilities added to each container image relative to `<prev_version>`.
4. Output the intermediate delta summary file: `deploy/generate_release_notes/output/IMAGE_DELTAS_<new_version>.txt`.

### Step 4: Final Release Notes Authoring
Your LLM agent will load `skills/release-writer/SKILL.md` and author the publication-ready release notes:
`deploy/generate_release_notes/output/RELEASE_NOTES_<new_version>.md`

---

## Modular Skill Breakdown

### 1. Orchestrator Skill (`SKILL.md`)
The master entrypoint skill that coordinates subagent execution, manages the step-by-step pipeline, and ensures intermediate verification files are generated before writing the final release notes.

### 2. PR Extraction Skill (`skills/pr-extraction/SKILL.md`)
Contains exact commands and rules for `gcloud container images list-tags` resolution, date-range `gh pr list` queries, non-production test filtering, and intermediate regression exclusion.

### 3. DCP Domain Context Skill (`skills/dcp-context/SKILL.md`)
Defines the architectural map across all 6 core repositories (`datacommons`, `website`, `mixer`, `agent-toolkit`, `import`) and enforces strict **External Contracts & Operator Capabilities** vs. **Zero Internal Implementation Mechanics** (no internal database table names or DDLs).

### 4. Release Writer Skill (`skills/release-writer/SKILL.md`)
Defines the non-verbose, partner-facing GFM format:
- **Executive Summary**: 1 single sentence (max 25 words).

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.

medium

There is a discrepancy between the executive summary rule defined here and the one in skills/release-writer/SKILL.md. Here, it states that the executive summary is strictly "1 single sentence (max 25 words)". However, release-writer/SKILL.md defines a dynamic executive summary that scales up to "2-3 sentences" for large/feature-rich releases. Please update this description to reflect the dynamic scaling rules.

Suggested change
- **Executive Summary**: 1 single sentence (max 25 words).
- Executive Summary: Dynamic length scaling with release scope (2-3 sentences for major releases, 1 single sentence of max 25 words for patch releases).

- **Key Feature Updates**: **What's New** (1 paragraph combining description + benefit) followed by **Specific Capabilities** (bullet points with `[repo#PR](URL)` links).
- **Improvements & Configuration Updates**: Bullet points extracting concrete enums (`custom_only`, `base_only`) and scaling limits (`max_workers`).
- **Bug Fixes**: 3–5 high-level functional categories (Deployment, Ingestion, Serving APIs, UI).

---

## Repository Mapping

| Repository | Scope / Path Filter | Target Component & Image |
| :--- | :--- | :--- |
| `datacommonsorg/datacommons` | All PRs (`infra/dcp/`, `packages/`) | DCP Monorepo & Infra (`dcp`) |
| `datacommonsorg/website` | All PRs (excluding `cdc_data/`) | Core Services (`services`) $\rightarrow$ `gcr.io/datcom-ci/datacommons-services` |
| `datacommonsorg/mixer` | All PRs (`internal/server/`, `proto/`, `deploy/`) | Core Services (`services`) $\rightarrow$ `gcr.io/datcom-ci/datacommons-services` |
| `datacommonsorg/agent-toolkit` | All PRs (`src/datacommons_mcp/`) | Core Services (`services`) $\rightarrow$ `gcr.io/datcom-ci/datacommons-services` |
| `datacommonsorg/import` | `simple/` | Data Preprocessor (`preprocessing`) $\rightarrow$ `gcr.io/datcom-ci/datacommons-data` |
| `datacommonsorg/import` | `pipeline/ingestion/` | Dataflow Worker (`dataflow_worker`) $\rightarrow$ Dataflow Templates |
| `datacommonsorg/import` | `pipeline/workflow/ingestion-helper/` | Ingestion Helper (`ingestion_helper`) $\rightarrow$ `datacommons-ingestion-helper` |
| `datacommonsorg/import` | `pipeline/workflow/aggregation-helper/` | Postprocessing Helper (`postprocessing`) $\rightarrow$ `datacommons-aggregation-helper` |

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.

medium

The LaTeX math symbol $\rightarrow$ is used in the markdown table. In standard GitHub Flavored Markdown (GFM), this may not render correctly outside of a math block. It is cleaner and more portable to use a standard Unicode arrow () or a text arrow (->).

Suggested change
| `datacommonsorg/website` | All PRs (excluding `cdc_data/`) | Core Services (`services`) $\rightarrow$ `gcr.io/datcom-ci/datacommons-services` |
| `datacommonsorg/mixer` | All PRs (`internal/server/`, `proto/`, `deploy/`) | Core Services (`services`) $\rightarrow$ `gcr.io/datcom-ci/datacommons-services` |
| `datacommonsorg/agent-toolkit` | All PRs (`src/datacommons_mcp/`) | Core Services (`services`) $\rightarrow$ `gcr.io/datcom-ci/datacommons-services` |
| `datacommonsorg/import` | `simple/` | Data Preprocessor (`preprocessing`) $\rightarrow$ `gcr.io/datcom-ci/datacommons-data` |
| `datacommonsorg/import` | `pipeline/ingestion/` | Dataflow Worker (`dataflow_worker`) $\rightarrow$ Dataflow Templates |
| `datacommonsorg/import` | `pipeline/workflow/ingestion-helper/` | Ingestion Helper (`ingestion_helper`) $\rightarrow$ `datacommons-ingestion-helper` |
| `datacommonsorg/import` | `pipeline/workflow/aggregation-helper/` | Postprocessing Helper (`postprocessing`) $\rightarrow$ `datacommons-aggregation-helper` |
| datacommonsorg/website | All PRs (excluding cdc_data/) | Core Services (services) → gcr.io/datcom-ci/datacommons-services |
| datacommonsorg/mixer | All PRs (internal/server/, proto/, deploy/) | Core Services (services) → gcr.io/datcom-ci/datacommons-services |
| datacommonsorg/agent-toolkit | All PRs (src/datacommons_mcp/) | Core Services (services) → gcr.io/datcom-ci/datacommons-services |
| datacommonsorg/import | simple/ | Data Preprocessor (preprocessing) → gcr.io/datcom-ci/datacommons-data |
| datacommonsorg/import | pipeline/ingestion/ | Dataflow Worker (dataflow_worker) → Dataflow Templates |
| datacommonsorg/import | pipeline/workflow/ingestion-helper/ | Ingestion Helper (ingestion_helper) → datacommons-ingestion-helper |
| datacommonsorg/import | pipeline/workflow/aggregation-helper/ | Postprocessing Helper (postprocessing) → datacommons-aggregation-helper |

67 changes: 67 additions & 0 deletions deploy/generate_release_notes/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
---
name: dcp-release-notes
description: Master orchestrator skill for generating publication-ready, partner-facing Data Commons Platform (DCP) release notes across all 6 core repositories using agentic subagents.
---

# DCP Release Notes Generator (Orchestrator Skill)

This skill orchestrates the end-to-end generation of publication-ready, partner-facing release notes for the Data Commons Platform (DCP). It coordinates specialized subagents to extract PRs per container image, write human-readable verification `.txt` files for developer review, apply domain context, and author concise release notes.

---

## Component & Container Image Registry

| Component Key | Component Name | Container Image URI / Artifact | Source Repos & Content Focus | Output Verification File |
| :--- | :--- | :--- | :--- | :--- |
| `services` | Core Services (Website, Mixer, MCP Agent) | `gcr.io/datcom-ci/datacommons-services` | `datacommonsorg/website`<br>`datacommonsorg/mixer`<br>`datacommonsorg/agent-toolkit`<br>*(Serving APIs, SDMX 3.0, FastMCP, UI)* | `output/prs_services.txt` |
| `preprocessing` | Data Preprocessor | `gcr.io/datcom-ci/datacommons-data` | `datacommonsorg/import`<br>*(CSV/MCF validation, JSON-LD streaming batching)* | `output/prs_preprocessing.txt` |
| `dataflow_worker` | Dataflow Ingestion Worker | `us-docker.pkg.dev/datcom-ci/gcr.io/dataflow-templates/ingestion` | `datacommonsorg/import`<br>*(Dataflow pipelines, TFRecord loading, Spanner graph transforms)* | `output/prs_dataflow_worker.txt` |
| `ingestion_helper` | Ingestion Helper Service | `gcr.io/datcom-ci/datacommons-ingestion-helper` | `datacommonsorg/import`<br>*(Cloud Workflows status tracking, run history tables)* | `output/prs_ingestion_helper.txt` |
| `postprocessing` | Postprocessing Helper Service | `gcr.io/datcom-ci/datacommons-aggregation-helper` | `datacommonsorg/import`<br>*(Graph postprocessing rollups, StatVar/Place aggregations, summary store)* | `output/prs_postprocessing.txt` |
| `dcp_monorepo` | DCP Monorepo & Terraform Infra | DCP Monorepo | `datacommonsorg/datacommons`<br>*(Terraform modules, Admin CLI, deployment infra)* | `output/prs_dcp_monorepo.txt` |

---

## Workflow Instructions

When requested to generate release notes (e.g., *"Generate release notes for v1.1.0 to v1.1.1"*):

### Step 1: Version Resolution & Output Directory Setup
1. Identify the previous release tag (`<prev_version>`, e.g., `v1.1.0`) and target release tag (`<new_version>`, e.g., `v1.1.1`).
2. Ensure `deploy/generate_release_notes/output/` directory exists.

> [!IMPORTANT]
> **DO NOT resolve image tags or run `gcloud` commands in the orchestrator.**
> The orchestrator MUST NOT query Artifact Registry or inspect image creation timestamps up front. Simply pass the raw version strings (`<prev_version>` and `<new_version>`) to each subagent and let them resolve their assigned image tags concurrently.

### Step 2: Spawn PR Extraction Subagents
Call `invoke_subagent` to spawn subagents concurrently across the components above.

Provide each subagent with:
1. The **PR Extraction Skill**: [`skills/pr-extraction/SKILL.md`](skills/pr-extraction/SKILL.md).
2. The **DCP Context Skill**: [`skills/dcp-context/SKILL.md`](skills/dcp-context/SKILL.md).
3. Its assigned **Component Name**, **Image URI**, **Source Repos**, `<prev_version>`, `<new_version>`, and target **Output Verification File**.

#### Dedicated Subagent Tasks (1-to-1 with Component Output Files):
- **Subagent 1 (`services-extractor`)**: Extract PRs for `gcr.io/datcom-ci/datacommons-services` from `website`, `mixer`, `agent-toolkit` $\rightarrow$ write `output/prs_services.txt`.
- **Subagent 2 (`preprocessing-extractor`)**: Extract PRs for `gcr.io/datcom-ci/datacommons-data` (preprocessor) from `import` repo $\rightarrow$ write `output/prs_preprocessing.txt`.
- **Subagent 3 (`dataflow-worker-extractor`)**: Extract PRs for Dataflow Ingestion Worker from `import` repo $\rightarrow$ write `output/prs_dataflow_worker.txt`.
- **Subagent 4 (`ingestion-helper-extractor`)**: Extract PRs for Ingestion Helper Service from `import` repo $\rightarrow$ write `output/prs_ingestion_helper.txt`.
- **Subagent 5 (`postprocessing-extractor`)**: Extract PRs for Postprocessing Helper Service from `import` repo $\rightarrow$ write `output/prs_postprocessing.txt`.

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.

medium

The LaTeX math symbol $\rightarrow$ is used here. Please replace it with a standard Unicode arrow () or text arrow (->) to ensure proper rendering in GFM.

Suggested change
- **Subagent 1 (`services-extractor`)**: Extract PRs for `gcr.io/datcom-ci/datacommons-services` from `website`, `mixer`, `agent-toolkit` $\rightarrow$ write `output/prs_services.txt`.
- **Subagent 2 (`preprocessing-extractor`)**: Extract PRs for `gcr.io/datcom-ci/datacommons-data` (preprocessor) from `import` repo $\rightarrow$ write `output/prs_preprocessing.txt`.
- **Subagent 3 (`dataflow-worker-extractor`)**: Extract PRs for Dataflow Ingestion Worker from `import` repo $\rightarrow$ write `output/prs_dataflow_worker.txt`.
- **Subagent 4 (`ingestion-helper-extractor`)**: Extract PRs for Ingestion Helper Service from `import` repo $\rightarrow$ write `output/prs_ingestion_helper.txt`.
- **Subagent 5 (`postprocessing-extractor`)**: Extract PRs for Postprocessing Helper Service from `import` repo $\rightarrow$ write `output/prs_postprocessing.txt`.
- Subagent 1 (services-extractor): Extract PRs for gcr.io/datcom-ci/datacommons-services from website, mixer, agent-toolkit write output/prs_services.txt.
- Subagent 2 (preprocessing-extractor): Extract PRs for gcr.io/datcom-ci/datacommons-data (preprocessor) from import repo write output/prs_preprocessing.txt.
- Subagent 3 (dataflow-worker-extractor): Extract PRs for Dataflow Ingestion Worker from import repo write output/prs_dataflow_worker.txt.
- Subagent 4 (ingestion-helper-extractor): Extract PRs for Ingestion Helper Service from import repo write output/prs_ingestion_helper.txt.
- Subagent 5 (postprocessing-extractor): Extract PRs for Postprocessing Helper Service from import repo write output/prs_postprocessing.txt.

- **Subagent 6 (`monorepo-extractor`)**: Extract PRs for `datacommonsorg/datacommons` monorepo & Terraform infra $\rightarrow$ write `output/prs_dcp_monorepo.txt`.

### Step 3: Verification Checkpoint & Release Delta Synthesis Subagent
1. Notify the developer that raw PR verification files have been generated under `deploy/generate_release_notes/output/prs_*.txt` for review.
2. Call `invoke_subagent` to spawn a specialized **Release Delta Synthesis Subagent** (`delta-synthesizer`).
3. Provide the subagent with the **Release Delta Synthesis Skill**: [`skills/release-delta-synthesis/SKILL.md`](skills/release-delta-synthesis/SKILL.md).
4. The subagent will:
- Read all `output/prs_*.txt` files.
- Investigate and distinguish true bug fixes present in `<prev_version>` vs. intermediate bug fixes introduced and fixed within `<new_version>` (omitting intra-release fixes).
- Summarize salient features and configuration updates per container image relative to `<prev_version>`.
- Output the unified image delta summary to: `deploy/generate_release_notes/output/IMAGE_DELTAS_<new_version>.txt`.

### Step 4: Author Publication-Ready Release Notes
1. Read the **DCP Domain Context Skill**: [`skills/dcp-context/SKILL.md`](skills/dcp-context/SKILL.md).
2. Read the **Release Writer Skill**: [`skills/release-writer/SKILL.md`](skills/release-writer/SKILL.md).
3. Read `deploy/generate_release_notes/output/IMAGE_DELTAS_<new_version>.txt`.
4. Author the final release notes from the verified image delta summary into: `deploy/generate_release_notes/output/RELEASE_NOTES_<new_version>.md`.
4 changes: 4 additions & 0 deletions deploy/generate_release_notes/output/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Ignore generated release notes outputs and verification logs
*.txt
*.md
!.gitkeep
1 change: 1 addition & 0 deletions deploy/generate_release_notes/output/.gitkeep
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Preserve output directory structure for generated release notes artifacts
66 changes: 66 additions & 0 deletions deploy/generate_release_notes/skills/dcp-context/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
---
name: dcp-context
description: Architectural reference and domain context for Data Commons Platform (DCP) release notes generation.
---

# Data Commons Platform (DCP) Domain Context & Architectural Map

This skill provides the domain context, repository mapping, and architectural principles for writing publication-ready, partner-facing DCP release notes.

---

## 1. Core Architectural Overview

Data Commons Platform (DCP) is a self-hosted, Cloud Spanner-backed deployment of Data Commons. It replaces legacy Bigtable with Cloud Spanner graph tables and vector embeddings. It features custom data ingestion pipelines, specialized serving APIs, and deployment automation across 6 core repositories:

1. `datacommonsorg/datacommons` (Monorepo & Infra):
- **Terraform Modules** (`infra/dcp/`, `infra/modules/`): Infrastructure provisioning for Spanner, Cloud Run, BigQuery, and Dataflow.
- **CLI Tools** (`packages/datacommons-cli/`): `datacommons admin init`, `datacommons admin deploy`.
- **Admin Portal** (`packages/datacommons-admin/`): Web management interface.

2. `datacommonsorg/website` (Web Application & Frontend):
- Serves UI pages (Explore, Visualization Tools, Place Browser) and REST API routing (`server/`, `static/`, `build/cdc_services/`).

3. `datacommonsorg/mixer` (Core Serving Engine):
- High-performance gRPC graph and StatVar serving engine (`internal/server/`, `proto/`, `deploy/helm_charts/`, ESPv2 gateway).
- Serves SDMX 3.0 REST Data & Availability endpoints, `/v2/observation`, and vector search embeddings.

4. `datacommonsorg/agent-toolkit` (Model Context Protocol / MCP):
- Model Context Protocol (MCP) server & FastMCP tools for AI agent integrations (`src/datacommons_mcp/`).
- Enables agentic research playbooks, multi-entity observation retrieval, and indicator search across custom or base instances.

5. `datacommonsorg/import` (Ingestion Stack & Cloud Workflows):
- **Data Preprocessor** (`simple/`): CSV/MCF validation and streaming JSON-LD batching (built into `datacommons-data` container image).
- **Dataflow Ingestion Worker** (`pipeline/ingestion/`): Parallelized BigQuery/Spanner graph loading.
- **Cloud Workflow Helpers** (`pipeline/workflow/ingestion-helper/`, `pipeline/workflow/aggregation-helper/`): Ingestion status tracking and postprocessing aggregations (StatVar, Place, Entity rollups).

---

## 2. Architectural Boundary & Persona Principles

### Focus on External Contracts & Operator Capabilities
- **Partner & Operator Focus**: Write specifically for external developers, data engineers, and instance operators building ON TOP OF DCP.
- **User Capabilities**: Frame every feature and improvement around *what the user can now do*, *which input formats are supported*, or *how compute resources scale*.
- **Extract Concrete Enums & Configuration Values**: Always extract valid enums (`custom_only`, `base_only`, `base_and_custom`), CLI flags (`--instance_name`), and scaling bounds (`max_workers`, BigQuery slots).

### Zero Internal Implementation Mechanics (STRICT)
- **NO Internal Database Terms**: 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", "Database Schema Modification").
- **Frame Performance Speedups Around User Impact**: If an internal storage or cache layer change improves serving speed, title it around user impact: **"API Serving Latency & Query Throughput"** or **"Faster API Response Speed"** without naming internal database tables.

---

## 3. Section Mapping & Release Content Principles

Rather than using arbitrary internal categories, map changes directly into the three standard release notes sections based on technical impact:

1. **Key Feature Updates**:
- Major, high-impact capabilities introduced in this release (e.g., SDMX 3.0 REST Data & Availability APIs, FastMCP AI agent tools, streaming JSON-LD preprocessors, vector search embeddings).
- Must follow the non-verbose format: **What's New** (1 paragraph combining description + benefit) followed by **Specific Capabilities** (bullet points with `[repo#PR](URL)` links).

2. **Improvements & Configuration Updates**:
- Incremental enhancements, operator tools, Terraform variables (`max_workers`, BigQuery slots), CLI flags (`--instance_name`), and scaling optimizations.
- Must extract concrete enums (e.g. `custom_only`, `base_only`) and explicit configuration parameters.

3. **Bug Fixes**:
- Synthesized into 3 to 5 functional categories (*Deployment & Infrastructure*, *Ingestion Pipeline Reliability*, *Serving API & Query Robustness*, *Web UI & Visualization*).
- Must ONLY include true platform bug fixes present in prior releases (excluding intra-release intermediate fixes).
Loading
Loading