You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
chore(copilot): refresh .github/copilot-instructions.md to match current state (#5554)
## Why
Several factual claims in \`.github/copilot-instructions.md\` had
drifted out of sync with the actual codebase, which means GitHub
Copilot's PR Reviewer was making decisions on stale ground rules.
## What
| Stale | Actual | Source of truth |
|-------|--------|-----------------|
| Cloud Run \`anyplot-backend\` | \`anyplot-api\` |
\`api/cloudbuild.yaml\` substitution |
| Cloud Run \`anyplot-frontend\` | \`anyplot-app\` |
\`app/cloudbuild.yaml\` substitution |
| Python 3.14+ | Python 3.13+ | \`pyproject.toml\` \`requires-python =
\">=3.13\"\` |
| Repair attempts ×3 | ×4 | \`impl-repair.yml\` run-name \"attempt 1, 2,
3, or 4\" |
| Single threshold (≥90, fallback ≥50 after 3) | Cascade 90/80/70/60/50
over 4 attempts | \`impl-review.yml\` \`THRESHOLD = max(50, 90 - attempt
* 10)\` |
Plus per user direction: drop the \"No Co-authored-by in commit
messages\" rule. Claude Code's default attribution footer is fine.
PostgreSQL 18 is correct and unchanged (confirmed by user).
## Test plan
- [x] \`git diff\` shows only the documentation updates listed above
- [ ] After merge, Copilot reviewer references the cascade table (not
the old single-threshold logic) on subsequent PRs
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: .github/copilot-instructions.md
+34-17Lines changed: 34 additions & 17 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,6 @@ This file provides guidance to GitHub Copilot when working with code in this rep
4
4
5
5
## Important Rules
6
6
7
-
-**No Co-authored-by in commit messages** - Never add `Co-authored-by:` lines to commit messages. Keep commit messages clean without AI attribution footers.
8
7
-**Always write in English** - All output text (code comments, commit messages, PR descriptions, issue comments, documentation) must be in English, even if the user writes in another language.
9
8
10
9
## Task Suitability
@@ -85,17 +84,22 @@ Everything for one plot type lives in a single directory:
│ └── python/ # Per-library metadata (one file per library)
91
+
│ ├── matplotlib.yaml
92
+
│ ├── seaborn.yaml
93
+
│ └── ...
94
+
└── implementations/
95
+
└── python/ # Library implementations (one file per library)
96
+
├── matplotlib.py
97
+
├── seaborn.py
98
+
└── ...
97
99
```
98
100
101
+
The `python/` subdirectory is a deliberate forward-compatibility layer; non-Python implementation languages would live as siblings (e.g. `implementations/r/`) when introduced. All paths in code, prompts, and metadata refer to the language-prefixed form: `plots/{spec-id}/implementations/python/{library}.py` and `plots/{spec-id}/metadata/python/{library}.yaml`.
102
+
99
103
Example: `plots/scatter-basic/` contains everything for the basic scatter plot.
**Quality threshold cascade** (`.github/workflows/impl-review.yml`): the threshold drops by 10 each repair attempt to give partial credit for incremental improvement.
149
+
150
+
| Review # | Repair attempt | Threshold |
151
+
|----------|----------------|-----------|
152
+
| 1 (initial) | 0 | ≥ 90 |
153
+
| 2 | 1 | ≥ 80 |
154
+
| 3 | 2 | ≥ 70 |
155
+
| 4 | 3 | ≥ 60 |
156
+
| 5 | 4 | ≥ 50 |
157
+
158
+
If the score is still below 50 after 4 repair attempts, the PR is closed (`gh pr close`) and the workflow posts a comment with next-step options. Regeneration is **manual**, not automatic — re-apply the `generate:{library}` label on the spec issue to start a fresh attempt.
159
+
144
160
**Specification Lifecycle:**
145
161
```
146
162
[open] spec-request → approved → spec-ready [implementations can start]
0 commit comments