@terreno/mcp 57.6.1 → 57.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/docs/upgrades/57.7.0.md +64 -0
- package/dist/docs/upgrades/58.0.0.md +4 -0
- package/dist/docs/versioned/next/explanation/loop-engineering.md +32 -3
- package/dist/docs/versioned/next/explanation/repository-settings.md +12 -5
- package/dist/docs/versioned/next/explanation/roadmap-process.md +41 -19
- package/dist/docs/versioned/next/explanation/roadmap-seed-issues.md +271 -22
- package/dist/docs/versioned/next/explanation/static-analysis.md +3 -2
- package/dist/docs/versioned/next/explanation/test-isolation.md +42 -0
- package/dist/docs/versioned/next/how-to/circleci.md +95 -53
- package/dist/docs/versioned/next/how-to/github-actions-ci.md +4 -3
- package/dist/docs/versioned/next/how-to/run-tests-locally.md +23 -2
- package/dist/docs/versioned/next/implementationPlans/IP_TEMPLATE.md +3 -1
- package/dist/docs/versioned/next/implementationPlans/admin-improvements.md +1 -1
- package/dist/docs/versioned/next/implementationPlans/admin-scripts-durable-jobs.md +2 -1
- package/dist/docs/versioned/next/implementationPlans/agent-ui-blocks.md +1 -0
- package/dist/docs/versioned/next/implementationPlans/ai-agents-and-failover.md +1 -0
- package/dist/docs/versioned/next/implementationPlans/ai-observability.md +1 -0
- package/dist/docs/versioned/next/implementationPlans/announcements-surfaces.md +1 -1
- package/dist/docs/versioned/next/implementationPlans/announcements.md +2 -1
- package/dist/docs/versioned/next/implementationPlans/app-mcp-server.md +1 -0
- package/dist/docs/versioned/next/implementationPlans/better-auth-strict-oauth-provider.md +2 -1
- package/dist/docs/versioned/next/implementationPlans/can-as-permission-seam.md +1 -1
- package/dist/docs/versioned/next/implementationPlans/collection-registry.md +1 -1
- package/dist/docs/versioned/next/implementationPlans/comms-adapter-expo-push.md +1 -1
- package/dist/docs/versioned/next/implementationPlans/comms-adapter-twilio-sms.md +1 -1
- package/dist/docs/versioned/next/implementationPlans/comms-admin-dashboard.md +1 -1
- package/dist/docs/versioned/next/implementationPlans/compile-pipeline-dedup.md +2 -1
- package/dist/docs/versioned/next/implementationPlans/datatable-server-side-filtering.md +1 -1
- package/dist/docs/versioned/next/implementationPlans/describe-model-schema.md +1 -1
- package/dist/docs/versioned/next/implementationPlans/docs-reference-coverage.md +1 -1
- package/dist/docs/versioned/next/implementationPlans/docs-site-and-versioning.md +1 -1
- package/dist/docs/versioned/next/implementationPlans/examples-demo-coverage.md +1 -1
- package/dist/docs/versioned/next/implementationPlans/framework-audit-log.md +1 -1
- package/dist/docs/versioned/next/implementationPlans/gpt-chat-mascot.md +1 -0
- package/dist/docs/versioned/next/implementationPlans/inbound-webhooks.md +1 -1
- package/dist/docs/versioned/next/implementationPlans/knip-cleanup.md +1 -0
- package/dist/docs/versioned/next/implementationPlans/mcp-doc-sync-off-compile-path.md +2 -1
- package/dist/docs/versioned/next/implementationPlans/mcp-service-tokens.md +2 -1
- package/dist/docs/versioned/next/implementationPlans/migrate-admin-to-syncdb.md +2 -1
- package/dist/docs/versioned/next/implementationPlans/migrate-cicd-to-circleci.md +1 -1
- package/dist/docs/versioned/next/implementationPlans/mongodb-migrations-tooling.md +1 -1
- package/dist/docs/versioned/next/implementationPlans/notification-center.md +1 -1
- package/dist/docs/versioned/next/implementationPlans/org-management-ui.md +1 -1
- package/dist/docs/versioned/next/implementationPlans/password-reset-and-email-verification.md +1 -1
- package/dist/docs/versioned/next/implementationPlans/rate-limiting.md +1 -1
- package/dist/docs/versioned/next/implementationPlans/remove-legacy-realtime.md +1 -0
- package/dist/docs/versioned/next/implementationPlans/support-agent.md +1 -0
- package/dist/docs/versioned/next/implementationPlans/syncdb-codegen.md +1 -1
- package/dist/docs/versioned/next/implementationPlans/terreno-langfuse-integration.md +1 -1
- package/dist/docs/versioned/next/implementationPlans/upgrade-guides-and-skill.md +1 -1
- package/dist/docs/versioned/next/reference/lifecycle-plugin.md +2 -2
- package/dist/docs/versioned/next/reference/test.md +1 -1
- package/dist/docs/versioned/next/reference/ui.md +65 -2
- package/dist/docs/versioned/next/tasks/can-as-permission-seam.md +4 -4
- package/dist/docs/versioned/next/tasks/collection-registry.md +6 -6
- package/dist/docs/versioned/next/tasks/describe-model-schema.md +5 -5
- package/dist/docs/versioned/next/tasks/migrate-cicd-to-circleci.md +6 -3
- package/package.json +2 -2
- package/src/docs/upgrades/57.7.0.md +64 -0
- package/src/docs/upgrades/58.0.0.md +4 -0
- package/src/docs/versioned/next/explanation/loop-engineering.md +32 -3
- package/src/docs/versioned/next/explanation/repository-settings.md +12 -5
- package/src/docs/versioned/next/explanation/roadmap-process.md +41 -19
- package/src/docs/versioned/next/explanation/roadmap-seed-issues.md +271 -22
- package/src/docs/versioned/next/explanation/static-analysis.md +3 -2
- package/src/docs/versioned/next/explanation/test-isolation.md +42 -0
- package/src/docs/versioned/next/how-to/circleci.md +95 -53
- package/src/docs/versioned/next/how-to/github-actions-ci.md +4 -3
- package/src/docs/versioned/next/how-to/run-tests-locally.md +23 -2
- package/src/docs/versioned/next/implementationPlans/IP_TEMPLATE.md +3 -1
- package/src/docs/versioned/next/implementationPlans/admin-improvements.md +1 -1
- package/src/docs/versioned/next/implementationPlans/admin-scripts-durable-jobs.md +2 -1
- package/src/docs/versioned/next/implementationPlans/agent-ui-blocks.md +1 -0
- package/src/docs/versioned/next/implementationPlans/ai-agents-and-failover.md +1 -0
- package/src/docs/versioned/next/implementationPlans/ai-observability.md +1 -0
- package/src/docs/versioned/next/implementationPlans/announcements-surfaces.md +1 -1
- package/src/docs/versioned/next/implementationPlans/announcements.md +2 -1
- package/src/docs/versioned/next/implementationPlans/app-mcp-server.md +1 -0
- package/src/docs/versioned/next/implementationPlans/better-auth-strict-oauth-provider.md +2 -1
- package/src/docs/versioned/next/implementationPlans/can-as-permission-seam.md +1 -1
- package/src/docs/versioned/next/implementationPlans/collection-registry.md +1 -1
- package/src/docs/versioned/next/implementationPlans/comms-adapter-expo-push.md +1 -1
- package/src/docs/versioned/next/implementationPlans/comms-adapter-twilio-sms.md +1 -1
- package/src/docs/versioned/next/implementationPlans/comms-admin-dashboard.md +1 -1
- package/src/docs/versioned/next/implementationPlans/compile-pipeline-dedup.md +2 -1
- package/src/docs/versioned/next/implementationPlans/datatable-server-side-filtering.md +1 -1
- package/src/docs/versioned/next/implementationPlans/describe-model-schema.md +1 -1
- package/src/docs/versioned/next/implementationPlans/docs-reference-coverage.md +1 -1
- package/src/docs/versioned/next/implementationPlans/docs-site-and-versioning.md +1 -1
- package/src/docs/versioned/next/implementationPlans/examples-demo-coverage.md +1 -1
- package/src/docs/versioned/next/implementationPlans/framework-audit-log.md +1 -1
- package/src/docs/versioned/next/implementationPlans/gpt-chat-mascot.md +1 -0
- package/src/docs/versioned/next/implementationPlans/inbound-webhooks.md +1 -1
- package/src/docs/versioned/next/implementationPlans/knip-cleanup.md +1 -0
- package/src/docs/versioned/next/implementationPlans/mcp-doc-sync-off-compile-path.md +2 -1
- package/src/docs/versioned/next/implementationPlans/mcp-service-tokens.md +2 -1
- package/src/docs/versioned/next/implementationPlans/migrate-admin-to-syncdb.md +2 -1
- package/src/docs/versioned/next/implementationPlans/migrate-cicd-to-circleci.md +1 -1
- package/src/docs/versioned/next/implementationPlans/mongodb-migrations-tooling.md +1 -1
- package/src/docs/versioned/next/implementationPlans/notification-center.md +1 -1
- package/src/docs/versioned/next/implementationPlans/org-management-ui.md +1 -1
- package/src/docs/versioned/next/implementationPlans/password-reset-and-email-verification.md +1 -1
- package/src/docs/versioned/next/implementationPlans/rate-limiting.md +1 -1
- package/src/docs/versioned/next/implementationPlans/remove-legacy-realtime.md +1 -0
- package/src/docs/versioned/next/implementationPlans/support-agent.md +1 -0
- package/src/docs/versioned/next/implementationPlans/syncdb-codegen.md +1 -1
- package/src/docs/versioned/next/implementationPlans/terreno-langfuse-integration.md +1 -1
- package/src/docs/versioned/next/implementationPlans/upgrade-guides-and-skill.md +1 -1
- package/src/docs/versioned/next/reference/lifecycle-plugin.md +2 -2
- package/src/docs/versioned/next/reference/test.md +1 -1
- package/src/docs/versioned/next/reference/ui.md +65 -2
- package/src/docs/versioned/next/tasks/can-as-permission-seam.md +4 -4
- package/src/docs/versioned/next/tasks/collection-registry.md +6 -6
- package/src/docs/versioned/next/tasks/describe-model-schema.md +5 -5
- package/src/docs/versioned/next/tasks/migrate-cicd-to-circleci.md +6 -3
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Upgrading to 57.7.0
|
|
2
|
+
|
|
3
|
+
**Action required:** No
|
|
4
|
+
**Affected packages:** @terreno/ui
|
|
5
|
+
|
|
6
|
+
## Summary
|
|
7
|
+
|
|
8
|
+
Bump every `@terreno/*` package together to `57.7.0`. `@terreno/ui`'s `Filter` is now `DropdownPanel`. Existing `Filter` and `FilterProps` imports keep working until Terreno 58. Panels stay on screen, render through the `TerrenoProvider` portal on native, and accept styled or custom triggers. No Expo upgrade is required if you are already on `57.x`.
|
|
9
|
+
|
|
10
|
+
## Breaking changes
|
|
11
|
+
|
|
12
|
+
None
|
|
13
|
+
|
|
14
|
+
## Deprecations
|
|
15
|
+
|
|
16
|
+
### `Filter` and `FilterProps`
|
|
17
|
+
|
|
18
|
+
**What changed**
|
|
19
|
+
|
|
20
|
+
`Filter` is renamed to `DropdownPanel`. `Filter` and `FilterProps` stay exported as deprecated aliases and are removed in Terreno 58. `FilterSelectMenu`, `FilterBoolean`, `FilterAccordion`, and `FilterChangesBadge` keep their names.
|
|
21
|
+
|
|
22
|
+
**Why**
|
|
23
|
+
|
|
24
|
+
The control is a general compositional dropdown (trigger, anchored panel, optional Apply/Clear/Cancel footer), not a filter-only widget.
|
|
25
|
+
|
|
26
|
+
**Migration**
|
|
27
|
+
|
|
28
|
+
```tsx
|
|
29
|
+
// Before
|
|
30
|
+
import {Filter} from "@terreno/ui";
|
|
31
|
+
|
|
32
|
+
<Filter label="Status">{children}</Filter>;
|
|
33
|
+
|
|
34
|
+
// After
|
|
35
|
+
import {DropdownPanel} from "@terreno/ui";
|
|
36
|
+
|
|
37
|
+
<DropdownPanel label="Status">{children}</DropdownPanel>;
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Changed behavior
|
|
41
|
+
|
|
42
|
+
### Panels stay on screen and escape clipping
|
|
43
|
+
|
|
44
|
+
**What changed**
|
|
45
|
+
|
|
46
|
+
`DropdownPanel` (including the `Filter` alias) right-aligns to its trigger when a left-aligned panel would cross the right viewport edge, clamps to an 8px screen margin, flips above the trigger when there is no usable room below, and scrolls its body with the footer pinned when the content is taller than the space available. On native it renders through the `TerrenoProvider` portal host, so the panel is no longer clipped inside scroll views or cards. Without a host it stays an inline overlay.
|
|
47
|
+
|
|
48
|
+
**Why**
|
|
49
|
+
|
|
50
|
+
Left-aligned panels ran off screen, and inline overlays were clipped by parent scroll views.
|
|
51
|
+
|
|
52
|
+
**Migration**
|
|
53
|
+
|
|
54
|
+
No call-site change is required. Pass `align` or `maxPanelHeight` to override the automatic layout. Apps that position their own panels can call `computeDropdownPanelLayout`.
|
|
55
|
+
|
|
56
|
+
## New capabilities
|
|
57
|
+
|
|
58
|
+
`DropdownPanel` triggers accept `triggerVariant` (any `Button` variant), `applyButtonVariant`, `triggerSize` on labeled triggers, `fullWidth`, and `renderTrigger` for a fully custom trigger.
|
|
59
|
+
|
|
60
|
+
## Verification
|
|
61
|
+
|
|
62
|
+
- `bun add` every `@terreno/*` dependency to `57.7.0`, then `bun run compile` at the app root
|
|
63
|
+
- Open a screen that uses `Filter` or `DropdownPanel` and confirm the panel stays inside the viewport, including near the right edge and inside a scrolling parent
|
|
64
|
+
- Replace `Filter` imports with `DropdownPanel` before upgrading to Terreno 58
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
This file is a placeholder until Terreno 58 is cut. When that release ships, expand this page into a full upgrade note.
|
|
4
4
|
|
|
5
|
+
## `Filter` and `FilterProps` are removed
|
|
6
|
+
|
|
7
|
+
`@terreno/ui` removes the `Filter` and `FilterProps` aliases added as deprecations in 57.7.0. Import `DropdownPanel` and `DropdownPanelProps`. `FilterSelectMenu`, `FilterBoolean`, `FilterAccordion`, and `FilterChangesBadge` keep their names. See [57.7.0](57.7.0.md).
|
|
8
|
+
|
|
5
9
|
## HTTP rate limiting defaults on
|
|
6
10
|
|
|
7
11
|
`TerrenoApp` will enable HTTP rate limiting by default (memory store unless you pass `store`). Apps that must stay unlimited must pass an explicit off once 58 defines that API.
|
|
@@ -49,7 +49,7 @@ the inner loop until the approved task list is done. Roast never invokes Pick. B
|
|
|
49
49
|
Taste additionally wait while async review bots are running, preferring provider CLI
|
|
50
50
|
watch hooks or harness event subscriptions over timer polling. Taste also waits in a
|
|
51
51
|
loop for product CI with `gh` or `circleci` until jobs are terminal or the wait times
|
|
52
|
-
out. Before any push it
|
|
52
|
+
out. Before any push it fetches latest `master` (merging it only when needed), then records last-run failed tests
|
|
53
53
|
and re-verifies them locally, then runs the repository's root
|
|
54
54
|
`prepush` package script in a no-context subagent when present (falling back to affected
|
|
55
55
|
package lint, typecheck, and tests), then pushes and watches CI.
|
|
@@ -82,8 +82,8 @@ acceptance criteria. Taste is one reactive iteration, not an unbounded fix-until
|
|
|
82
82
|
daemon. It waits until async review bots (Bugbot, CodeQL, and similar) on the current
|
|
83
83
|
head have reported, then waits in a loop for product CI using GitHub CLI
|
|
84
84
|
(`gh pr checks --watch`, `gh run watch`) or CircleCI CLI (`circleci run watch`) until
|
|
85
|
-
jobs are terminal or the wait times out. Before any push it
|
|
86
|
-
`master
|
|
85
|
+
jobs are terminal or the wait times out. Before any push it fetches latest
|
|
86
|
+
`master` (merging it only when needed), records last-run failed tests and re-verifies them locally, then runs root
|
|
87
87
|
`prepush` when present in a fresh subagent with no parent
|
|
88
88
|
conversation. If absent, it proves affected-package lint, typecheck, and tests instead.
|
|
89
89
|
It then pushes and watches CI, emits `PASS`, `FAIL`, `BLOCKED`, or `PENDING`, and exits.
|
|
@@ -139,6 +139,35 @@ or transports it and Brew excludes it from commits unless repository policy says
|
|
|
139
139
|
otherwise. Stage results follow the plugin's JSON-schema-backed YAML contract and never
|
|
140
140
|
contain chain-of-thought or transcripts.
|
|
141
141
|
|
|
142
|
+
## Commits and pushes
|
|
143
|
+
|
|
144
|
+
Every pushed commit starts a full CI run. Harnesses such as Cursor cloud agents push
|
|
145
|
+
every commit automatically, so commit count turns directly into CI runs. Before these
|
|
146
|
+
rules, one 30-commit dashboard PR had ten "mark slice roasted" commits and ten "harden"
|
|
147
|
+
follow-ups, and `ui-ci` stayed red on every commit after the first.
|
|
148
|
+
|
|
149
|
+
- One behavior-scoped commit per task, after Roast `PASS`: code, tests, docs, and the
|
|
150
|
+
task-file mark together. Roast-driven fixes fold into that commit.
|
|
151
|
+
- Progress lives in execution state, not in standalone task-file commits.
|
|
152
|
+
- Pick and Roast never push. Brew pushes once. Taste pushes at most once per reaction.
|
|
153
|
+
- Pick does not continue on a head whose product CI shows a branch-caused failure.
|
|
154
|
+
- Pick lists a behavior's edge cases before coding, so Roast proves them instead of
|
|
155
|
+
discovering them.
|
|
156
|
+
- Roast runs the gate CI will run (root `prepush`, which mirrors the triggered CI jobs),
|
|
157
|
+
not only the task's test file.
|
|
158
|
+
- Taste fetches `master` before every push but merges it only when the PR conflicts, a
|
|
159
|
+
failure traces to base drift, or the branch is otherwise merge-ready.
|
|
160
|
+
|
|
161
|
+
## Direct invocation
|
|
162
|
+
|
|
163
|
+
Outer loops (`terreno-planning-loop`, `terreno-taste-sweep`) consume Taste `PENDING`
|
|
164
|
+
and invoke Taste again. When a human invokes Taste directly, no loop is waiting, so a
|
|
165
|
+
`PENDING` would only tell them to come back later. In that case Taste uses
|
|
166
|
+
**standalone entry**: it waits in-process with native watches and reacts again. It
|
|
167
|
+
stops on `PASS`, `BLOCKED`, or `FAIL`, or after 3 fix pushes or 3 hours of waiting,
|
|
168
|
+
which ends as `BLOCKED` with one concrete human action. A directly invoked Brew
|
|
169
|
+
starts Taste as its next stage instead of exiting.
|
|
170
|
+
|
|
142
171
|
## Retry and stop rules
|
|
143
172
|
|
|
144
173
|
- Pick implements one task, Roast proves it, then Pick takes the next unblocked task.
|
|
@@ -51,11 +51,18 @@ as GitHub App checks; they are not CircleCI jobs.
|
|
|
51
51
|
|
|
52
52
|
**Path:** Settings → Environments
|
|
53
53
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
**
|
|
58
|
-
|
|
54
|
+
`cd.yml` is disabled; CircleCI `gcp-cd-preview` performs GCP previews and
|
|
55
|
+
halts on fork PRs. While the GitHub WIF provider still exists, keep the
|
|
56
|
+
`gcp-cd-preview` environment restricted with a **deployment branch policy** or
|
|
57
|
+
**required reviewers** so a fork that re-enables `cd.yml` cannot mint a prod
|
|
58
|
+
WIF token.
|
|
59
|
+
|
|
60
|
+
### Actions secrets for CircleCI hooks
|
|
61
|
+
|
|
62
|
+
`preview-cleanup.yml` (PR close) and `publish-on-tag.yml` (manual publish demo
|
|
63
|
+
redeploy) start CircleCI pipelines. Set the secret `CIRCLECI_TOKEN` and the
|
|
64
|
+
variable `CIRCLECI_PIPELINE_DEFINITION_ID` under Settings → Secrets and
|
|
65
|
+
variables → Actions.
|
|
59
66
|
|
|
60
67
|
## Merge settings
|
|
61
68
|
|
|
@@ -88,11 +88,10 @@ half applies:
|
|
|
88
88
|
| 1 | Announcements | Announcement | Maintainers only | Official release notes, breaking changes, deprecations, and launch updates from the Terreno team. |
|
|
89
89
|
| 2 | Q&A | Question / Answer | Anyone | Ask how to use Terreno. Search existing threads first; accepted answers may become how-to guides in `docs/how-to/`. |
|
|
90
90
|
| 3 | Ideas | Open-ended | Anyone | Feature ideas and improvements before they are shaped. This is the intake funnel — do not open a tracking issue until a maintainer promotes your idea. |
|
|
91
|
-
| 4 |
|
|
92
|
-
| 5 |
|
|
93
|
-
| 6 |
|
|
94
|
-
| 7 |
|
|
95
|
-
| 8 | Docs feedback | Open-ended | Anyone | Report missing or confusing documentation. Link the page URL; recurring feedback becomes docs PRs. |
|
|
91
|
+
| 4 | Agents & AI | Open-ended | Anyone | MCP setup, Cursor/Claude skills, agent workflows, and prompt patterns for building with Terreno. |
|
|
92
|
+
| 5 | RFCs | Open-ended | Anyone | Substantial proposals that change public API or add packages. Use the RFC discussion template; accepted RFCs become IPs. |
|
|
93
|
+
| 6 | Show and tell | Open-ended | Anyone | Apps and experiments built with Terreno. Share what you shipped and what friction you hit. |
|
|
94
|
+
| 7 | Docs feedback | Open-ended | Anyone | Report missing or confusing documentation. Link the page URL; recurring feedback becomes docs PRs. |
|
|
96
95
|
|
|
97
96
|
### Pinned posts
|
|
98
97
|
|
|
@@ -127,24 +126,29 @@ When an answer repeats, maintainers turn it into a how-to doc via PR.
|
|
|
127
126
|
- Do **not** open a feature issue directly — maintainers promote accepted ideas to tracked issues on the [Terreno Roadmap](https://github.com/TerrenoLabs/terreno/projects) board.
|
|
128
127
|
- For API/package-level design, use the **RFCs** category instead.
|
|
129
128
|
- Bugs → [Bug report](https://github.com/TerrenoLabs/terreno/issues/new?template=bug_report.yml).
|
|
129
|
+
- **Hacktoberfest pitches live here too.** Tick the Hacktoberfest box on the form; maintainers apply the [`hacktoberfest`](https://github.com/TerrenoLabs/terreno/discussions?discussions_q=label%3Ahacktoberfest) label. 👍 the pitches you want built.
|
|
130
130
|
```
|
|
131
131
|
|
|
132
|
-
#### Hacktoberfest
|
|
132
|
+
#### Hacktoberfest (inside Ideas)
|
|
133
133
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
1. [Start a Hacktoberfest discussion](https://github.com/TerrenoLabs/terreno/discussions/new?category=hacktoberfest) — the form asks for the idea, area, rough size, and what "done" looks like.
|
|
138
|
-
2. Upvote and comment on other pitches. Upvotes are how maintainers rank them.
|
|
139
|
-
3. Maintainers turn popular, well-scoped ideas into issues labeled [`hacktoberfest`](https://github.com/TerrenoLabs/terreno/issues?q=is%3Aissue+is%3Aopen+label%3Ahacktoberfest) and link them back here. Pick one up by commenting on the issue.
|
|
134
|
+
Hacktoberfest does not get its own category. Pitches are Ideas discussions carrying the
|
|
135
|
+
`hacktoberfest` label, so upvotes, promotion, and search all use the same path as any other
|
|
136
|
+
idea.
|
|
140
137
|
|
|
141
|
-
|
|
142
|
-
|
|
138
|
+
1. [Start an Ideas discussion](https://github.com/TerrenoLabs/terreno/discussions/new?category=ideas)
|
|
139
|
+
and tick **This is a Hacktoberfest pitch**. Give the area, rough size, and what "done" looks
|
|
140
|
+
like.
|
|
141
|
+
2. A maintainer applies the [`hacktoberfest`](https://github.com/TerrenoLabs/terreno/discussions?discussions_q=label%3Ahacktoberfest)
|
|
142
|
+
label and the matching `area:*` label. Upvotes are how maintainers rank pitches.
|
|
143
|
+
3. Popular, well-scoped pitches become issues labeled
|
|
144
|
+
[`hacktoberfest`](https://github.com/TerrenoLabs/terreno/issues?q=is%3Aissue+is%3Aopen+label%3Ahacktoberfest),
|
|
145
|
+
linked back to the discussion. Pick one up by commenting on the issue.
|
|
143
146
|
|
|
144
|
-
Promotion follows the Ideas path, with one change: a Hacktoberfest
|
|
147
|
+
Promotion follows the Ideas path, with one change: a Hacktoberfest pitch small enough to finish
|
|
145
148
|
in a weekend becomes a `hacktoberfest` + `good first issue` work item directly (see
|
|
146
149
|
[GitHub issue lifecycle](../how-to/github-issue-lifecycle.md)) instead of a `Shaping` roadmap
|
|
147
|
-
item. Larger ones go through `roadmap-promote` like any
|
|
150
|
+
item. Larger ones get `hacktoberfest` + `help wanted` and go through `roadmap-promote` like any
|
|
151
|
+
other idea.
|
|
148
152
|
|
|
149
153
|
#### Agents & AI
|
|
150
154
|
|
|
@@ -397,10 +401,10 @@ do not claim completion until done.
|
|
|
397
401
|
|
|
398
402
|
| Workflow | Trigger | Purpose |
|
|
399
403
|
| -------- | ------- | ------- |
|
|
400
|
-
| [`.github/workflows/triage.yml`](https://github.com/TerrenoLabs/terreno/blob/master/.github/workflows/triage.yml) | Issue opened | `status:needs-triage` + `area:*` from package dropdown + `type:*` from Kind when present |
|
|
404
|
+
| [`.github/workflows/triage.yml`](https://github.com/TerrenoLabs/terreno/blob/master/.github/workflows/triage.yml) | Issue opened | `status:needs-triage` + `area:*` from package dropdown + `type:*` from Kind when present; `area:*` / `type:*` labels the issue was opened with win, so `roadmap:sync` issues are not asked for an area |
|
|
401
405
|
| [`.github/workflows/roadmap-generate.yml`](https://github.com/TerrenoLabs/terreno/blob/master/.github/workflows/roadmap-generate.yml) | Daily + manual | `roadmap:sync --check` for board drift, then regenerate `ROADMAP.md` from the board and open a pull request when it changes |
|
|
402
406
|
| [`.github/workflows/roadmap-sync.yml`](https://github.com/TerrenoLabs/terreno/blob/master/.github/workflows/roadmap-sync.yml) | Taxonomy files change on `master` + manual | Apply labels and reconcile the board's fields and items |
|
|
403
|
-
| [`.github/workflows/roadmap-reconcile.yml`](https://github.com/TerrenoLabs/terreno/blob/master/.github/workflows/roadmap-reconcile.yml) | IP or task files change on `master` + manual | Advance status from IP headers, push to the board, regenerate `ROADMAP.md` |
|
|
407
|
+
| [`.github/workflows/roadmap-reconcile.yml`](https://github.com/TerrenoLabs/terreno/blob/master/.github/workflows/roadmap-reconcile.yml) | IP or task files change on `master` + manual | Advance status from IP headers, add an entry for every new IP, open its tracking issue, push to the board, regenerate `ROADMAP.md` |
|
|
404
408
|
All three share the `roadmap` concurrency group. They write the same board, and interleaving
|
|
405
409
|
them produces confusing partial states. After the group lock is acquired, each job refreshes
|
|
406
410
|
to the latest branch HEAD so a queued `roadmap-sync` cannot overwrite statuses that
|
|
@@ -413,7 +417,7 @@ The full loop, each arrow with exactly one writer:
|
|
|
413
417
|
|
|
414
418
|
```
|
|
415
419
|
docs/implementationPlans/*.md ──roadmap:reconcile──▶ roadmap-seed-issues.md
|
|
416
|
-
docs/tasks/*.md
|
|
420
|
+
docs/tasks/*.md (Status + new entries) │
|
|
417
421
|
roadmap:sync
|
|
418
422
|
▼
|
|
419
423
|
Project board
|
|
@@ -439,6 +443,24 @@ reported by `--check` and is never overwritten. Cards that are not in
|
|
|
439
443
|
[`roadmap-seed-issues.md`](roadmap-seed-issues.md) are also `--check` failures; apply does
|
|
440
444
|
not delete them. Maintainers own the board's *state* and `Community interest`.
|
|
441
445
|
|
|
446
|
+
**New IPs reach the roadmap on merge.** When a merged plan has no entry,
|
|
447
|
+
`roadmap:reconcile --fix` scaffolds one: the title from the IP's H1, the summary from the first
|
|
448
|
+
paragraph of `## Goal`, and links to the IP and its task list (when `docs/tasks/<slug>.md`
|
|
449
|
+
exists). Area, Target, and Impact come from an optional IP header:
|
|
450
|
+
|
|
451
|
+
```markdown
|
|
452
|
+
**Roadmap:** Area=`api`, Target=`Next`, Impact=`Feature`
|
|
453
|
+
```
|
|
454
|
+
|
|
455
|
+
Without that header they are inferred: Area from the packages named in the header block
|
|
456
|
+
(default `dx`); Target `Released` for shipped work, `Future` for drafts, `58` when a
|
|
457
|
+
`**Target:**` line names 58, otherwise `Next`; Impact `Breaking` when the `**Target:**` line
|
|
458
|
+
says so, otherwise `Feature`. Edit the scaffolded section afterward if a guess is wrong. The
|
|
459
|
+
workflow then runs `roadmap:sync --create-missing-ip-issues`, which opens a tracking issue
|
|
460
|
+
only for entries backed by an IP. Drafts land as `Shaping`. Moving an entry to `Shipped` also
|
|
461
|
+
moves its Target to `Released`. `ROADMAP.md` links each entry's IP and, when one exists, its
|
|
462
|
+
task list.
|
|
463
|
+
|
|
442
464
|
**Status automation is monotonic.** `roadmap:reconcile --fix` advances status and applies
|
|
443
465
|
supersessions, but never walks a status backwards and never revives declined work. IP headers
|
|
444
466
|
go stale far more often than boards do — several plans still read `Draft` for work that
|