Skip to content

LGC-2026-07-24T054107

@catalinradoiu catalinradoiu tagged this 23 Jul 18:12
Task/Issue URL:
https://app.asana.com/1/137249556945/project/1214901934989258/task/1216567840454275?focus=true
Tech Design URL (if applicable): 
API Proposals URL(s) (if applicable):

### Description

Enforces the existing (but previously undocumented) rule that any change
to a public API must come with an API Proposal, and documents it for
contributors and LLM agents.

- **New workflow `.github/workflows/api-proposal-check.yml`** — on every
PR, detects changes to `.kt`/`.java` files under a `*-api` module's
`src/main`. If any are found, it requires the PR body's `API Proposals`
field to contain a link (or `None`); otherwise it posts a sticky comment
explaining how to fix it. When no `-api` source changed it passes
immediately.
- **PR template** — new `API Proposals URL(s) (if applicable):` field.
- **`.cursor/rules/contributions.mdc`** — new **Tech Design** and **API
Proposals** sections instructing agents to ask the user for the tech
design / API Proposal link(s) *before* opening a PR (the CI check is the
safety net, not the discovery mechanism).

### Steps to test this PR

_API Proposal check_
- [ ] Open a test PR that edits a `.kt`/`.java` file under any
`*-api/src/main` with the `API Proposals` field left empty → the `API
Proposal check` fails and a sticky comment appears listing the changed
`-api` files.
- [ ] Edit the PR body to put a link (or `None`) in the `API Proposals`
field → re-run passes and the sticky comment is removed.
- [ ] Open a PR that touches only `:app`/`-impl`/test files → the check
passes with no comment.

### UI changes
| Before  | After |
| ------ | ----- |
| No UI changes | No UI changes |



<!-- CURSOR_SUMMARY -->
---

> [!NOTE]
> **Low Risk**
> Changes are limited to PR templates, contributor docs, and a read-only
GitHub Actions check with PR comments—no app runtime or build logic.
> 
> **Overview**
> Documents and automates the rule that **public `-api` surface
changes** need an approved API Proposal (and that larger work may need a
**Tech Design**), so contributors and agents surface links before PRs
instead of only at review time.
> 
> Adds a **GitHub Actions** workflow that diffs PRs for `.kt`/`.java`
under `*-api/src/main`; when matches exist, it expects the PR body’s
**API Proposals** field to include a URL or `None`, otherwise it
posts/updates a **sticky bot comment** listing changed files
(non-blocking warning). The **PR template** gains `API Proposals
URL(s)`, and **contributions.mdc**, **AGENTS.md**, and
**CONTRIBUTING.md** spell out early planning, field usage, and when to
use `None`.
> 
> <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit
91001987261f4a99260b8942e7d1dd85ec01591d. Bugbot is set up for automated
code reviews on this repo. Configure
[here](https://www.cursor.com/dashboard/bugbot).</sup>
<!-- /CURSOR_SUMMARY -->

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Assets 2
Loading