@terreno/mcp 57.0.0-beta.1 → 57.1.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/bootstrap.d.ts +1 -1
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +381 -191
- package/dist/bootstrap.js.map +1 -1
- package/dist/docs/guidelines/api/skills/mongoose-schema-safety/SKILL.md +8 -0
- package/dist/docs/resources/overview.md +6 -1
- package/dist/docs/resources/rtk.md +3 -1
- package/dist/docs/resources/syncdb.md +43 -0
- package/dist/docs/upgrades/56.0.0-beta.2.md +34 -0
- package/dist/docs/upgrades/57.0.0.md +49 -0
- package/dist/docs/upgrades/57.1.0.md +126 -0
- package/dist/docs/versioned/next/README.md +15 -3
- package/dist/docs/versioned/next/explanation/README.md +3 -0
- package/dist/docs/versioned/next/explanation/admin-consent-migration.md +15 -0
- package/dist/docs/versioned/next/explanation/admin-plugin-frontend.md +12 -0
- package/dist/docs/versioned/next/explanation/announcements/rtk-deprecation.md +29 -0
- package/dist/docs/versioned/next/explanation/authentication.md +51 -58
- package/dist/docs/versioned/next/explanation/local-first-data.md +52 -0
- package/dist/docs/versioned/next/explanation/loop-engineering.md +117 -0
- package/dist/docs/versioned/next/explanation/repository-settings.md +8 -0
- package/dist/docs/versioned/next/explanation/roadmap-process.md +22 -9
- package/dist/docs/versioned/next/explanation/roadmap-seed-issues.md +39 -0
- package/dist/docs/versioned/next/how-to/README.md +3 -0
- package/dist/docs/versioned/next/how-to/admin-add-model.md +41 -0
- package/dist/docs/versioned/next/how-to/admin-custom-home.md +31 -0
- package/dist/docs/versioned/next/how-to/admin-custom-widget.md +42 -0
- package/dist/docs/versioned/next/how-to/admin-import-prebuilt.md +25 -0
- package/dist/docs/versioned/next/how-to/circleci.md +173 -0
- package/dist/docs/versioned/next/how-to/configure-better-auth.md +13 -10
- package/dist/docs/versioned/next/how-to/expose-mcp-tools.md +194 -0
- package/dist/docs/versioned/next/how-to/install-agent-skills.md +46 -0
- package/dist/docs/versioned/next/how-to/migrate-rtk-to-syncdb.md +26 -1
- package/dist/docs/versioned/next/how-to/websocket-integration.md +2 -1
- package/dist/docs/versioned/next/implementationPlans/ModularAPI.md +1 -0
- package/dist/docs/versioned/next/implementationPlans/README.md +31 -17
- package/dist/docs/versioned/next/implementationPlans/admin-improvements-research.md +136 -0
- package/dist/docs/versioned/next/implementationPlans/admin-improvements.md +157 -527
- package/dist/docs/versioned/next/implementationPlans/admin-only-research.md +4 -0
- package/dist/docs/versioned/next/implementationPlans/admin-only.md +3 -1
- package/dist/docs/versioned/next/implementationPlans/admin-script-runner.md +1 -0
- package/dist/docs/versioned/next/implementationPlans/admin-ui-v2-django-parity.md +1 -0
- package/dist/docs/versioned/next/implementationPlans/agentic-sdlc-plugin.md +160 -130
- package/dist/docs/versioned/next/implementationPlans/apierror-standard-error-redesign.md +1 -0
- package/dist/docs/versioned/next/implementationPlans/b2b-platform-program.md +5 -4
- package/dist/docs/versioned/next/implementationPlans/comms-abstraction-research.md +48 -0
- package/dist/docs/versioned/next/implementationPlans/comms-abstraction.md +152 -62
- package/dist/docs/versioned/next/implementationPlans/comms-adapter-sendgrid.md +9 -9
- package/dist/docs/versioned/next/implementationPlans/comms-admin-dashboard.md +1 -1
- package/dist/docs/versioned/next/implementationPlans/consent-forms.md +4 -0
- package/dist/docs/versioned/next/implementationPlans/design-blend-skill.md +1 -0
- package/dist/docs/versioned/next/implementationPlans/docs-site-and-versioning.md +1 -0
- package/dist/docs/versioned/next/implementationPlans/feature-flags-openfeature.md +1 -0
- package/dist/docs/versioned/next/implementationPlans/feature-flags.md +4 -0
- package/dist/docs/versioned/next/implementationPlans/infra-mcp-research.md +1 -0
- package/dist/docs/versioned/next/implementationPlans/infra-mcp.md +3 -3
- package/dist/docs/versioned/next/implementationPlans/mcp-boost-parity.md +1 -0
- package/dist/docs/versioned/next/implementationPlans/migrate-cicd-to-circleci-research.md +1 -0
- package/dist/docs/versioned/next/implementationPlans/migrate-cicd-to-circleci.md +2 -2
- package/dist/docs/versioned/next/implementationPlans/model-router-actions.md +4 -0
- package/dist/docs/versioned/next/implementationPlans/model-router-mcp.md +5 -4
- package/dist/docs/versioned/next/implementationPlans/offline-mode.md +3 -1
- package/dist/docs/versioned/next/implementationPlans/oss-launch-program.md +11 -2
- package/dist/docs/versioned/next/implementationPlans/pluggable-database-sqlite-research.md +150 -0
- package/dist/docs/versioned/next/implementationPlans/pluggable-database-sqlite.md +247 -0
- package/dist/docs/versioned/next/implementationPlans/positioning-django-rails-universal.md +1 -1
- package/dist/docs/versioned/next/implementationPlans/public-roadmap-github.md +2 -2
- package/dist/docs/versioned/next/implementationPlans/rbac-permissions.md +52 -15
- package/dist/docs/versioned/next/implementationPlans/rtk-to-syncdb-migration-docs.md +13 -12
- package/dist/docs/versioned/next/implementationPlans/syncdb-codegen-research.md +137 -0
- package/dist/docs/versioned/next/implementationPlans/syncdb-codegen.md +63 -59
- package/dist/docs/versioned/next/implementationPlans/syncdb-local-first.md +1 -0
- package/dist/docs/versioned/next/implementationPlans/syncdb-phase-c-design.md +1 -0
- package/dist/docs/versioned/next/implementationPlans/terreno-langfuse-integration.md +1 -0
- package/dist/docs/versioned/next/implementationPlans/terreno-syncdb-2.md +1 -0
- package/dist/docs/versioned/next/implementationPlans/upgrade-banner.md +4 -0
- package/dist/docs/versioned/next/reference/README.md +6 -1
- package/dist/docs/versioned/next/reference/admin-config.md +51 -0
- package/dist/docs/versioned/next/reference/ai.md +15 -1
- package/dist/docs/versioned/next/reference/api.md +18 -0
- package/dist/docs/versioned/next/reference/comms.md +88 -7
- package/dist/docs/versioned/next/reference/environment-variables.md +9 -1
- package/dist/docs/versioned/next/reference/{rtk.md → legacy/rtk.md} +11 -7
- package/dist/docs/versioned/next/reference/lifecycle-plugin.md +54 -0
- package/dist/docs/versioned/next/reference/mcp-server.md +7 -0
- package/dist/docs/versioned/next/reference/syncdb.md +30 -3
- package/dist/docs/versioned/next/tasks/README.md +21 -10
- package/dist/docs/versioned/next/tasks/admin-improvements.md +189 -353
- package/dist/docs/versioned/next/tasks/admin-only.md +2 -0
- package/dist/docs/versioned/next/tasks/agentic-sdlc-plugin.md +54 -160
- package/dist/docs/versioned/next/tasks/comms-abstraction.md +30 -24
- package/dist/docs/versioned/next/tasks/comms-adapter-sendgrid.md +4 -4
- package/dist/docs/versioned/next/tasks/consent-forms.md +2 -0
- package/dist/docs/versioned/next/tasks/feature-flags.md +2 -0
- package/dist/docs/versioned/next/tasks/migrate-cicd-to-circleci.md +14 -10
- package/dist/docs/versioned/next/tasks/model-router-actions.md +2 -0
- package/dist/docs/versioned/next/tasks/model-router-mcp.md +27 -27
- package/dist/docs/versioned/next/tasks/offline-mode.md +2 -0
- package/dist/docs/versioned/next/tasks/pluggable-database-sqlite.md +44 -0
- package/dist/docs/versioned/next/tasks/public-roadmap-github.md +1 -1
- package/dist/docs/versioned/next/tasks/rtk-to-syncdb-migration-docs.md +15 -15
- package/dist/docs/versioned/next/tasks/syncdb-codegen.md +37 -31
- package/dist/docs/versioned/next/tasks/upgrade-banner.md +2 -0
- package/dist/index.js +24 -55
- package/dist/index.js.map +1 -1
- package/dist/local/localServer.d.ts.map +1 -1
- package/dist/local/localServer.js +9 -8
- package/dist/local/localServer.js.map +1 -1
- package/dist/local/localTools.d.ts +1 -1
- package/dist/local/localTools.d.ts.map +1 -1
- package/dist/prompts.d.ts.map +1 -1
- package/dist/prompts.js +44 -45
- package/dist/prompts.js.map +1 -1
- package/dist/resources.d.ts.map +1 -1
- package/dist/resources.js +9 -2
- package/dist/resources.js.map +1 -1
- package/dist/tools.d.ts +1 -1
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +4 -2
- package/dist/tools.js.map +1 -1
- package/package.json +7 -3
- package/src/docs/guidelines/api/skills/mongoose-schema-safety/SKILL.md +8 -0
- package/src/docs/resources/overview.md +6 -1
- package/src/docs/resources/rtk.md +3 -1
- package/src/docs/resources/syncdb.md +43 -0
- package/src/docs/upgrades/56.0.0-beta.2.md +34 -0
- package/src/docs/upgrades/57.0.0.md +49 -0
- package/src/docs/upgrades/57.1.0.md +126 -0
- package/src/docs/versioned/next/README.md +15 -3
- package/src/docs/versioned/next/explanation/README.md +3 -0
- package/src/docs/versioned/next/explanation/admin-consent-migration.md +15 -0
- package/src/docs/versioned/next/explanation/admin-plugin-frontend.md +12 -0
- package/src/docs/versioned/next/explanation/announcements/rtk-deprecation.md +29 -0
- package/src/docs/versioned/next/explanation/authentication.md +51 -58
- package/src/docs/versioned/next/explanation/local-first-data.md +52 -0
- package/src/docs/versioned/next/explanation/loop-engineering.md +117 -0
- package/src/docs/versioned/next/explanation/repository-settings.md +8 -0
- package/src/docs/versioned/next/explanation/roadmap-process.md +22 -9
- package/src/docs/versioned/next/explanation/roadmap-seed-issues.md +39 -0
- package/src/docs/versioned/next/how-to/README.md +3 -0
- package/src/docs/versioned/next/how-to/admin-add-model.md +41 -0
- package/src/docs/versioned/next/how-to/admin-custom-home.md +31 -0
- package/src/docs/versioned/next/how-to/admin-custom-widget.md +42 -0
- package/src/docs/versioned/next/how-to/admin-import-prebuilt.md +25 -0
- package/src/docs/versioned/next/how-to/circleci.md +173 -0
- package/src/docs/versioned/next/how-to/configure-better-auth.md +13 -10
- package/src/docs/versioned/next/how-to/expose-mcp-tools.md +194 -0
- package/src/docs/versioned/next/how-to/install-agent-skills.md +46 -0
- package/src/docs/versioned/next/how-to/migrate-rtk-to-syncdb.md +26 -1
- package/src/docs/versioned/next/how-to/websocket-integration.md +2 -1
- package/src/docs/versioned/next/implementationPlans/ModularAPI.md +1 -0
- package/src/docs/versioned/next/implementationPlans/README.md +31 -17
- package/src/docs/versioned/next/implementationPlans/admin-improvements-research.md +136 -0
- package/src/docs/versioned/next/implementationPlans/admin-improvements.md +157 -527
- package/src/docs/versioned/next/implementationPlans/admin-only-research.md +4 -0
- package/src/docs/versioned/next/implementationPlans/admin-only.md +3 -1
- package/src/docs/versioned/next/implementationPlans/admin-script-runner.md +1 -0
- package/src/docs/versioned/next/implementationPlans/admin-ui-v2-django-parity.md +1 -0
- package/src/docs/versioned/next/implementationPlans/agentic-sdlc-plugin.md +160 -130
- package/src/docs/versioned/next/implementationPlans/apierror-standard-error-redesign.md +1 -0
- package/src/docs/versioned/next/implementationPlans/b2b-platform-program.md +5 -4
- package/src/docs/versioned/next/implementationPlans/comms-abstraction-research.md +48 -0
- package/src/docs/versioned/next/implementationPlans/comms-abstraction.md +152 -62
- package/src/docs/versioned/next/implementationPlans/comms-adapter-sendgrid.md +9 -9
- package/src/docs/versioned/next/implementationPlans/comms-admin-dashboard.md +1 -1
- package/src/docs/versioned/next/implementationPlans/consent-forms.md +4 -0
- package/src/docs/versioned/next/implementationPlans/design-blend-skill.md +1 -0
- package/src/docs/versioned/next/implementationPlans/docs-site-and-versioning.md +1 -0
- package/src/docs/versioned/next/implementationPlans/feature-flags-openfeature.md +1 -0
- package/src/docs/versioned/next/implementationPlans/feature-flags.md +4 -0
- package/src/docs/versioned/next/implementationPlans/infra-mcp-research.md +1 -0
- package/src/docs/versioned/next/implementationPlans/infra-mcp.md +3 -3
- package/src/docs/versioned/next/implementationPlans/mcp-boost-parity.md +1 -0
- package/src/docs/versioned/next/implementationPlans/migrate-cicd-to-circleci-research.md +1 -0
- package/src/docs/versioned/next/implementationPlans/migrate-cicd-to-circleci.md +2 -2
- package/src/docs/versioned/next/implementationPlans/model-router-actions.md +4 -0
- package/src/docs/versioned/next/implementationPlans/model-router-mcp.md +5 -4
- package/src/docs/versioned/next/implementationPlans/offline-mode.md +3 -1
- package/src/docs/versioned/next/implementationPlans/oss-launch-program.md +11 -2
- package/src/docs/versioned/next/implementationPlans/pluggable-database-sqlite-research.md +150 -0
- package/src/docs/versioned/next/implementationPlans/pluggable-database-sqlite.md +247 -0
- package/src/docs/versioned/next/implementationPlans/positioning-django-rails-universal.md +1 -1
- package/src/docs/versioned/next/implementationPlans/public-roadmap-github.md +2 -2
- package/src/docs/versioned/next/implementationPlans/rbac-permissions.md +52 -15
- package/src/docs/versioned/next/implementationPlans/rtk-to-syncdb-migration-docs.md +13 -12
- package/src/docs/versioned/next/implementationPlans/syncdb-codegen-research.md +137 -0
- package/src/docs/versioned/next/implementationPlans/syncdb-codegen.md +63 -59
- package/src/docs/versioned/next/implementationPlans/syncdb-local-first.md +1 -0
- package/src/docs/versioned/next/implementationPlans/syncdb-phase-c-design.md +1 -0
- package/src/docs/versioned/next/implementationPlans/terreno-langfuse-integration.md +1 -0
- package/src/docs/versioned/next/implementationPlans/terreno-syncdb-2.md +1 -0
- package/src/docs/versioned/next/implementationPlans/upgrade-banner.md +4 -0
- package/src/docs/versioned/next/reference/README.md +6 -1
- package/src/docs/versioned/next/reference/admin-config.md +51 -0
- package/src/docs/versioned/next/reference/ai.md +15 -1
- package/src/docs/versioned/next/reference/api.md +18 -0
- package/src/docs/versioned/next/reference/comms.md +88 -7
- package/src/docs/versioned/next/reference/environment-variables.md +9 -1
- package/src/docs/versioned/next/reference/{rtk.md → legacy/rtk.md} +11 -7
- package/src/docs/versioned/next/reference/lifecycle-plugin.md +54 -0
- package/src/docs/versioned/next/reference/mcp-server.md +7 -0
- package/src/docs/versioned/next/reference/syncdb.md +30 -3
- package/src/docs/versioned/next/tasks/README.md +21 -10
- package/src/docs/versioned/next/tasks/admin-improvements.md +189 -353
- package/src/docs/versioned/next/tasks/admin-only.md +2 -0
- package/src/docs/versioned/next/tasks/agentic-sdlc-plugin.md +54 -160
- package/src/docs/versioned/next/tasks/comms-abstraction.md +30 -24
- package/src/docs/versioned/next/tasks/comms-adapter-sendgrid.md +4 -4
- package/src/docs/versioned/next/tasks/consent-forms.md +2 -0
- package/src/docs/versioned/next/tasks/feature-flags.md +2 -0
- package/src/docs/versioned/next/tasks/migrate-cicd-to-circleci.md +14 -10
- package/src/docs/versioned/next/tasks/model-router-actions.md +2 -0
- package/src/docs/versioned/next/tasks/model-router-mcp.md +27 -27
- package/src/docs/versioned/next/tasks/offline-mode.md +2 -0
- package/src/docs/versioned/next/tasks/pluggable-database-sqlite.md +44 -0
- package/src/docs/versioned/next/tasks/public-roadmap-github.md +1 -1
- package/src/docs/versioned/next/tasks/rtk-to-syncdb-migration-docs.md +15 -15
- package/src/docs/versioned/next/tasks/syncdb-codegen.md +37 -31
- package/src/docs/versioned/next/tasks/upgrade-banner.md +2 -0
- package/dist/docs/versioned/next/implementationPlans/PLAN_INDEX.md +0 -73
- package/dist/docs/versioned/next/implementationPlans/syncdb-api-inventory.md +0 -303
- package/src/docs/versioned/next/implementationPlans/PLAN_INDEX.md +0 -73
- package/src/docs/versioned/next/implementationPlans/syncdb-api-inventory.md +0 -303
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Task List: Admin-Only — Serve Admin SPA From a Terreno Backend
|
|
2
2
|
|
|
3
|
+
**Status:** Closed (2026-08-20) — IP complete. Shipped as `@terreno/admin-spa`. Open tasks below were not executed; see shipped code in `admin-spa/`.
|
|
4
|
+
|
|
3
5
|
*Structured task breakdown for automated implementation. Each task should be independently implementable and testable.*
|
|
4
6
|
|
|
5
7
|
See: `docs/implementationPlans/admin-only.md` for full plan.
|
|
@@ -1,163 +1,57 @@
|
|
|
1
|
-
# Task List:
|
|
1
|
+
# Task List: Loop-Engineering Lifecycle Plugin
|
|
2
2
|
|
|
3
3
|
See: [`docs/implementationPlans/agentic-sdlc-plugin.md`](../implementationPlans/agentic-sdlc-plugin.md)
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
-
|
|
21
|
-
- Acceptance:
|
|
22
|
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
|
|
26
|
-
-
|
|
27
|
-
- Acceptance:
|
|
28
|
-
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
|
|
32
|
-
-
|
|
33
|
-
- Acceptance:
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
-
|
|
39
|
-
- Acceptance:
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
- [
|
|
44
|
-
-
|
|
45
|
-
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
- [
|
|
50
|
-
-
|
|
51
|
-
-
|
|
52
|
-
|
|
53
|
-
-
|
|
54
|
-
|
|
55
|
-
- [
|
|
56
|
-
-
|
|
57
|
-
-
|
|
58
|
-
- Depends on: Task 2.2, PR #869 merged
|
|
59
|
-
- Acceptance: the gates fire correctly in both a bootstrapped consumer app and this monorepo, verified by running Roast on a frontend change in each; `syncdb/` is included and `rtk/` retained.
|
|
60
|
-
|
|
61
|
-
- [ ] **Task 2.4**: Make Blend's conventions portable
|
|
62
|
-
- Description: `terreno-1-blend` assumes `docs/implementationPlans/` and `docs/tasks/`, a project registry containing only `flourishhealth/terreno`, and this repo's `bun run` command set. Generalize: describe where planning artifacts go with a documented default and a way to detect an existing convention, replace the hardcoded registry with a resolution procedure, and describe the command set as "the project's lint/compile/test commands" discovered from `package.json`. Keep the question-first behavior exactly as it is — that is the stage's most valuable property.
|
|
63
|
-
- Files: `plugins/terreno-planning/skills/terreno-1-blend/SKILL.md`
|
|
64
|
-
- Depends on: Task 2.1
|
|
65
|
-
- Acceptance: Blend produces an IP in a consumer app with no Terreno-specific directory assumptions; the question-first clarification gate is unchanged; the registry is a procedure rather than a fixed list.
|
|
66
|
-
|
|
67
|
-
- [ ] **Task 2.5**: Verify the pipeline in a consumer app
|
|
68
|
-
- Description: Scaffold an app with `terreno_bootstrap_app`, install the plugin, and take one small feature from request to open PR through all five stages. Record every place the pipeline assumed something untrue about the project. Fix each. This task is the actual acceptance test for Phase 2 — the previous tasks are hypotheses until this passes.
|
|
69
|
-
- Files: any plugin skill needing correction
|
|
70
|
-
- Depends on: Task 2.3, Task 2.4
|
|
71
|
-
- Acceptance: all five stages complete in a consumer app; a PR is opened with evidence attached; every assumption failure found is fixed; the run is summarized in the PR body.
|
|
72
|
-
|
|
73
|
-
## Phase 3: Resolve overlap with repo skills
|
|
74
|
-
|
|
75
|
-
- [ ] **Task 3.1**: Map the overlap precisely
|
|
76
|
-
- Description: For each plugin stage, read its repo-skill counterparts (`submit`, `commit`, `create-pr`, `check-watcher`, `respond-to-review`, `autobot`, `ip`, `design-blend`, `implement`) and produce a table: plugin stage, overlapping skill, rules that agree, rules that **disagree**. The disagreements matter most — two documented processes with different rules is worse than either alone. Report in the PR body.
|
|
77
|
-
- Files: none (findings in the PR body)
|
|
78
|
-
- Depends on: none
|
|
79
|
-
- Acceptance: every stage is mapped to its counterparts; all rule disagreements are listed explicitly with both wordings.
|
|
80
|
-
|
|
81
|
-
- [ ] **Task 3.2**: Make Brew self-contained; inline Taste review loop per AP5
|
|
82
|
-
- Description: Per IP question AP5, rewrite **Taste** (`terreno-5-taste`) to inline the full submit → CI → review loop (former `autobot` behavior) rather than delegating to repo skills — delegation has been unreliable inside the plugin. **Brew** (`terreno-4-brew`) may orchestrate `commit`/`create-pr` where those resolve from the plugin cache, but must not depend on monorepo-only paths. Resolve every disagreement from Task 3.1 in favor of one wording, in one place. Deprecate `submit` and `autobot` repo skills once Taste ships.
|
|
83
|
-
- Files: `plugins/terreno-planning/skills/terreno-4-brew/SKILL.md`, `terreno-5-taste/SKILL.md`, and deprecated `.rulesync/skills/submit/`, `autobot/`
|
|
84
|
-
- Depends on: Task 3.1, Task 2.5
|
|
85
|
-
- Acceptance: Taste completes a full review loop without delegating to repo skills; no rule appears in both a plugin stage and a repo skill with different wording; `submit`/`autobot` are marked deprecated; `bun run rules:check` exits 0.
|
|
86
|
-
|
|
87
|
-
- [ ] **Task 3.3**: Cross-reference deprecated repo skills
|
|
88
|
-
- Description: Add a short deprecation note to `.rulesync/skills/submit/SKILL.md` and `autobot/SKILL.md` pointing to the plugin pipeline (Brew/Taste) as the supported path. Regenerate mirrors. Document in `plugins/README.md` that the individual repo skills are legacy once the plugin is public.
|
|
89
|
-
- Files: `.rulesync/skills/submit/SKILL.md`, `.rulesync/skills/autobot/SKILL.md`, generated mirrors, `plugins/README.md`
|
|
90
|
-
- Depends on: Task 3.2, Task 4.1
|
|
91
|
-
- Acceptance: both skills state they are deprecated in favor of Brew/Taste; the plugin README references them as legacy; `bun run rules:check` exits 0.
|
|
92
|
-
|
|
93
|
-
## Phase 4: Documentation
|
|
94
|
-
|
|
95
|
-
- [ ] **Task 4.1**: Write `plugins/README.md`
|
|
96
|
-
- Description: Under 150 lines. Cover: what the pipeline is in two sentences; the five stages in a table with the plain-language meaning of each coffee name per IP question AP3; installation (marketplace, per the AP1 decision); a quickstart showing one feature going through all five stages; prerequisites (the skill dependency from Task 2.2, the Terreno version range from Task 1.4); how it relates to the individual repo skills; and how to use a single stage without the full pipeline. Every command must be one you ran.
|
|
97
|
-
- Files: `plugins/README.md` (new)
|
|
98
|
-
- Depends on: Task 2.5
|
|
99
|
-
- Acceptance: under 150 lines; every coffee name is glossed; the installation steps were performed from a fresh state; the quickstart matches a run you completed.
|
|
100
|
-
|
|
101
|
-
- [ ] **Task 4.2**: Write `docs/explanation/agentic-sdlc.md`
|
|
102
|
-
- Description: The conceptual case, no commands. Cover: the process layer versus the MCP tool layer, and why both are needed; why planning is a separate stage with a question-first gate (agents confidently plan the wrong thing); why review happens in a **fresh context** rather than by asking the implementing agent to check its own work; why verification is a separate stage from implementation; why the frontend gate demands evidence rather than a claim; and why flaky CI must be classified rather than guessed at. Then an honest limits section: what the pipeline does not do, where a human must decide, and why the review loop persists through slow CI but stops when no autonomous action can advance a terminal failure. Reuse the mermaid diagram from the IP.
|
|
103
|
-
- Files: `docs/explanation/agentic-sdlc.md` (new), `docs/explanation/README.md`
|
|
104
|
-
- Depends on: Task 4.1
|
|
105
|
-
- Acceptance: no commands; all six design rationales explained; a limits section naming at least three things the pipeline will not do; linked from the explanation index.
|
|
106
|
-
|
|
107
|
-
- [ ] **Task 4.3**: Write `docs/how-to/use-the-terreno-plugin.md`
|
|
108
|
-
- Description: Task-focused: install the plugin, take a small feature from request to merged PR through all five stages, with the real output of each stage. Include what to do when a stage stops and asks a question (Blend's clarification gate), when Roast's review sub-agent flags something, and when Dial In reports blocked. Include a "using one stage on its own" section — most people will start with Pour or Dial In on existing work rather than adopting the whole pipeline at once.
|
|
109
|
-
- Files: `docs/how-to/use-the-terreno-plugin.md` (new), `docs/how-to/README.md`
|
|
110
|
-
- Depends on: Task 4.2
|
|
111
|
-
- Acceptance: the walkthrough was performed and the outputs shown are real; all three interruption cases documented; the single-stage section is present; listed in the how-to index.
|
|
112
|
-
|
|
113
|
-
- [ ] **Task 4.4**: Write `docs/reference/sdlc-plugin.md`
|
|
114
|
-
- Description: Per-stage reference: name, slash command, plain-language purpose, preconditions, inputs, outputs, scope boundary (what it explicitly does not own), handoff target, and failure/exit conditions. Include the `disable-model-invocation` behavior — several stages are deliberately not auto-invocable and must be called explicitly — and explain why. Add the plugin to `docs/reference/README.md`.
|
|
115
|
-
- Files: `docs/reference/sdlc-plugin.md` (new), `docs/reference/README.md`
|
|
116
|
-
- Depends on: Task 4.1
|
|
117
|
-
- Acceptance: all five stages documented with all eight fields; the auto-invocation behavior matches each skill's frontmatter; listed in the reference index.
|
|
118
|
-
|
|
119
|
-
## Phase 5: Positioning
|
|
120
|
-
|
|
121
|
-
- [ ] **Task 5.1**: Add the pipeline to the positioning copy
|
|
122
|
-
- Description: Update `docs/explanation/positioning.md` (from [`positioning-django-rails-universal`](../implementationPlans/positioning-django-rails-universal.md)): name the pipeline in the AI-native pillar's `pillars` block, and rewrite the comparison table's generator row so it credits the pipeline — Django gives you `manage.py startapp`, Terreno gives you a reviewed path from request to mergeable PR. Add the tool-layer/process-layer distinction to the `pitch` block. Keep the copy blocks internally consistent, since every other surface copies them verbatim.
|
|
123
|
-
- Files: `docs/explanation/positioning.md`
|
|
124
|
-
- Depends on: Task 4.2
|
|
125
|
-
- Acceptance: the pipeline appears in the pillars block and the comparison table; the tool/process distinction is in the pitch; the blocks remain consistent with each other.
|
|
126
|
-
|
|
127
|
-
- [ ] **Task 5.2**: Surface the pipeline in the README and docs landing
|
|
128
|
-
- Description: Add the pipeline to `README.md`'s AI section (currently only describes the MCP server) and to `docs/README.md`'s pillars, each with a link to the explainer and the how-to. Keep it to a short paragraph in each — the detail lives in the docs. Make sure the AI section names both layers so a reader understands they are complementary rather than alternatives.
|
|
129
|
-
- Files: `README.md`, `docs/README.md`
|
|
130
|
-
- Depends on: Task 5.1
|
|
131
|
-
- Acceptance: both surfaces name the pipeline and the MCP server as the two halves of the AI story; both link the explainer; neither exceeds a paragraph.
|
|
132
|
-
|
|
133
|
-
- [ ] **Task 5.3**: Make agents aware of the pipeline
|
|
134
|
-
- Description: Add the pipeline to `.rulesync/rules/00-root.md` (source for `AGENTS.md`, `CLAUDE.md`, and the copilot instructions) and to `CLAUDE-consumer.md`, so an agent working in this repo or in a consumer app knows the pipeline exists and when to use it. Currently no root agent file mentions `plugins/` at all. Regenerate mirrors.
|
|
135
|
-
- Files: `.rulesync/rules/00-root.md`, `CLAUDE-consumer.md`, generated mirrors
|
|
136
|
-
- Depends on: Task 5.2
|
|
137
|
-
- Acceptance: `AGENTS.md` and `CLAUDE.md` both describe the pipeline and when to use it; `bun run rules:check` exits 0.
|
|
138
|
-
|
|
139
|
-
- [ ] **Task 5.4**: Use the pipeline in the dogfooding harness
|
|
140
|
-
- Description: If AP1 made the plugin public, update `.rulesync/skills/build-terreno-app/SKILL.md` to install and use the pipeline during the dogfooding run — it is exactly the kind of public tooling that harness is meant to exercise, and the run will find portability problems that Task 2.5 missed. Add the plugin to the skill's list of permitted public sources, and add a friction-log section for pipeline-specific gaps. Regenerate mirrors.
|
|
141
|
-
- Files: `.rulesync/skills/build-terreno-app/SKILL.md`, generated mirrors
|
|
142
|
-
- Depends on: Task 5.3
|
|
143
|
-
- Acceptance: the harness installs and uses the pipeline; the plugin is listed among permitted sources; the friction log has a pipeline section; `bun run rules:check` exits 0.
|
|
144
|
-
|
|
145
|
-
## Phase 6: Distribution
|
|
146
|
-
|
|
147
|
-
- [ ] **Task 6.1**: Verify a fresh install
|
|
148
|
-
- Description: From a clean agent environment with no plugin cache, install the plugin per `plugins/README.md` and confirm all five stages are available and invocable. Record what the install experience actually looks like, including whether the stages appear as slash commands and whether the sibling-skill handoff from Task 2.1 resolves from the cache rather than the workspace.
|
|
149
|
-
- Files: `plugins/README.md` (corrections)
|
|
150
|
-
- Depends on: Task 4.1, Task 1.4
|
|
151
|
-
- Acceptance: a fresh install exposes all five stages; the handoff resolves from the plugin cache; every install-guide inaccuracy is fixed.
|
|
152
|
-
|
|
153
|
-
- [ ] **Task 6.2**: Generate non-Cursor variants
|
|
154
|
-
- Description: Per IP question AP6, make the pipeline available outside Cursor by routing it through `.rulesync/`, which already generates skills for cursor, claude, devin, copilot, and agents targets. Decide whether the plugin skills become rulesync sources (generated into the plugin directory) or whether a parallel rulesync copy is maintained — prefer one source of truth. Document which runtimes are supported and any behavioral differences (notably that the `disable-model-invocation` and slash-command behavior is Cursor-specific).
|
|
155
|
-
- Files: `.rulesync/skills/` or the plugin skills, `plugins/README.md`, `docs/reference/sdlc-plugin.md`, generated mirrors
|
|
156
|
-
- Depends on: Task 6.1
|
|
157
|
-
- Acceptance: the pipeline is invocable in at least one non-Cursor runtime; there is a single source of truth per skill, not two divergent copies; runtime differences are documented; `bun run rules:check` exits 0.
|
|
158
|
-
|
|
159
|
-
- [ ] **Task 6.3**: Extend license coverage to `plugins/`
|
|
160
|
-
- Description: Update `scripts/check-license-coverage.ts` (from [`oss-governance-baseline`](../implementationPlans/oss-governance-baseline.md)) so `plugins/terreno-planning/` is covered by the license check. Confirm the plugin ships a LICENSE and that its declared license matches the root license.
|
|
161
|
-
- Files: `scripts/check-license-coverage.ts`
|
|
162
|
-
- Depends on: Task 1.4, `oss-governance-baseline` Task 1.6
|
|
163
|
-
- Acceptance: `bun run check:licenses` covers the plugin; deleting `plugins/terreno-planning/LICENSE` makes it fail and name the plugin.
|
|
5
|
+
## Phase 1: Audit and contracts
|
|
6
|
+
|
|
7
|
+
- [x] **Task 1.1**: Audit five lifecycle skills, metadata, references, repo skills, state conventions, sync tooling, and long-lived-context assumptions
|
|
8
|
+
- Blocked by: none
|
|
9
|
+
- Acceptance: Findings identify duplicated repository knowledge, missing handoffs, generated sources, and orchestration owned by stages.
|
|
10
|
+
- [x] **Task 1.2**: Define shared stage result and execution-state schemas
|
|
11
|
+
- Blocked by: Task 1.1
|
|
12
|
+
- Acceptance: Stable schemas use only `PASS`/`FAIL`/`BLOCKED`/`PENDING`, preserve evidence/attempts, and contain no reasoning transcript.
|
|
13
|
+
- [x] **Task 1.3**: Document loop ownership, retries, human gates, state transport, and supporting-skill discovery
|
|
14
|
+
- Blocked by: Task 1.2
|
|
15
|
+
- Acceptance: A fresh invocation packet and fallback execution-state location are explicit.
|
|
16
|
+
|
|
17
|
+
## Phase 2: Bounded lifecycle stages
|
|
18
|
+
|
|
19
|
+
- [x] **Task 2.1**: Refactor Grow as an approved-artifact transition
|
|
20
|
+
- Blocked by: Task 1.3
|
|
21
|
+
- Acceptance: Grow classifies uncertainty, researches facts, grills decisions, maps acceptance to verification, and emits Pick-ready state.
|
|
22
|
+
- [x] **Task 2.2**: Refactor Pick as one-slice TDD implementation
|
|
23
|
+
- Blocked by: Task 1.3
|
|
24
|
+
- Acceptance: Pick consumes retry evidence, preserves verified behavior, runs independent implementation/test-quality review, and delegates repository detail.
|
|
25
|
+
- [x] **Task 2.3**: Refactor Roast as independent authoritative verification
|
|
26
|
+
- Blocked by: Task 2.2
|
|
27
|
+
- Acceptance: Roast executes a requirement/evidence matrix, does not trust Pick claims, and returns exact failures to Pick.
|
|
28
|
+
- [x] **Task 2.4**: Refactor Brew to terminate after PR setup
|
|
29
|
+
- Blocked by: Task 2.3
|
|
30
|
+
- Acceptance: Brew records PR/current head and recommends Taste without executing or waiting for it.
|
|
31
|
+
- [x] **Task 2.5**: Refactor Taste as one reactive iteration
|
|
32
|
+
- Blocked by: Task 2.4
|
|
33
|
+
- Acceptance: Taste observes current head once, handles current actionable work, emits state, exits, and contains no internal waiting loop.
|
|
34
|
+
|
|
35
|
+
## Phase 3: Plugin boundary and composition
|
|
36
|
+
|
|
37
|
+
- [x] **Task 3.1**: Remove Terreno package commands/patterns from lifecycle control surfaces
|
|
38
|
+
- Blocked by: Task 2.5
|
|
39
|
+
- Acceptance: Exact repo knowledge remains under `.rulesync/skills/`; lifecycle stages discover applicable skills.
|
|
40
|
+
- [x] **Task 3.2**: Convert plugin utility/orchestration skills to shared references
|
|
41
|
+
- Blocked by: Task 2.5
|
|
42
|
+
- Acceptance: Plugin exposes exactly five lifecycle skill directories; independent review and feature-loop behavior remain documented once.
|
|
43
|
+
- [x] **Task 3.3**: Document backend, UI, and multi-invocation CI/review compositions
|
|
44
|
+
- Blocked by: Task 3.2
|
|
45
|
+
- Acceptance: Each scenario shows lifecycle + project skills + durable evidence.
|
|
46
|
+
|
|
47
|
+
## Phase 4: Validation and documentation
|
|
48
|
+
|
|
49
|
+
- [x] **Task 4.1**: Add lifecycle architecture validator and unit tests
|
|
50
|
+
- Blocked by: Task 3.2
|
|
51
|
+
- Acceptance: Validator enforces names/directories, required contracts, status/transition values, portability, Brew/Taste boundaries, and migration docs.
|
|
52
|
+
- [x] **Task 4.2**: Update plugin/docs/metadata/changelog and regenerate integrations
|
|
53
|
+
- Blocked by: Task 4.1
|
|
54
|
+
- Acceptance: Plugin is `2.0.0`; docs describe the bounded loop; generated rules are current; retired names appear only in intentional migration/history.
|
|
55
|
+
- [x] **Task 4.3**: Run static tests, rulesync validation, lint/type checks, and independent review
|
|
56
|
+
- Blocked by: Task 4.2
|
|
57
|
+
- Acceptance: All checks pass and no material standards/spec findings remain.
|
|
@@ -9,39 +9,39 @@ IP: [comms-abstraction](../implementationPlans/comms-abstraction.md)
|
|
|
9
9
|
- Files: `comms/package.json`, `comms/tsconfig.json`, `comms/biome.jsonc`, root `package.json`
|
|
10
10
|
- Depends on: none
|
|
11
11
|
- Acceptance: `bun run comms:compile` and `bun run comms:lint` pass
|
|
12
|
-
- [
|
|
13
|
-
- Description: `
|
|
14
|
-
- Status: base provider/message
|
|
15
|
-
- Files: `comms/src/types.ts`
|
|
12
|
+
- [x] **Task 1.2**: Finish provider types for remaining contracts
|
|
13
|
+
- Description: Add `cancelled` to `CommsMessageStatus`; expand `CommsHookContext` (`message`, `userId`, `isRetry`, `attempt`, `messageId`); add `OptOutEvent`; add `errorCode`/`errorClass` on `DeliveryEvent`; keep shipped `onRetry(context, result)` and `isPermanentFailure` alias
|
|
14
|
+
- Status: base provider/message/`errorCode`/`errorClass` shipped; listed fields remain
|
|
15
|
+
- Files: `comms/src/types.ts`, `comms/src/index.ts`
|
|
16
16
|
- Depends on: 1.1
|
|
17
|
-
- Acceptance: types compile and are exported
|
|
17
|
+
- Acceptance: types compile and are exported; existing SendGrid tests still typecheck against `onRetry(context, result)`
|
|
18
18
|
- [x] **Task 1.3**: Console adapters
|
|
19
19
|
- Description: dev adapters for all four channels logging via `logger.info`
|
|
20
20
|
- Files: `comms/src/adapters/console.ts` + tests
|
|
21
21
|
- Depends on: 1.2
|
|
22
22
|
- Acceptance: each adapter returns `accepted: true` and logs
|
|
23
|
-
- [
|
|
24
|
-
- Description:
|
|
25
|
-
- Files: `comms/src/models/commsMessage.ts` + tests
|
|
26
|
-
- Depends on: 1.
|
|
27
|
-
- Acceptance: send logging survives a forced model error (logged, not thrown);
|
|
28
|
-
- Status: model and non-throwing `logSend` shipped;
|
|
29
|
-
- [
|
|
30
|
-
- Description: `sendMail
|
|
31
|
-
- Status:
|
|
32
|
-
- Files: `comms/src/commsService.ts`, `comms/src/templates.ts` + tests
|
|
33
|
-
- Depends on: 1.2, 1.3, 1.4
|
|
34
|
-
- Acceptance: unit tests cover happy path + unconfigured channel in both env modes; permanent failures do not retry
|
|
35
|
-
- [ ] **Task 1.6**: Lifecycle hooks
|
|
36
|
-
- Description: `beforeSend` (mutate/cancel), `onSend`, `onError`, `onRetry`, `onOptOut`, `onDeliveryEvent` wiring in the facade; every hook wrapped so a throw is logged and never changes the send outcome
|
|
23
|
+
- [x] **Task 1.4**: `CommsMessage` attempt history + dashboard fields
|
|
24
|
+
- Description: add `status: cancelled`, `attempts[]`, `attemptCount`, `lastAttemptAt`, `retriedFromId`/`retriedById`, `templateId`, `payload`, `payloadExpiresAt`; `logSend` creates the first row; `appendAttempt` never throws; `clearExpiredPayloads` unsets expired `payload` only (limit 50)
|
|
25
|
+
- Files: `comms/src/models/commsMessage.ts`, `comms/src/modelTypes.ts` + tests
|
|
26
|
+
- Depends on: 1.2
|
|
27
|
+
- Acceptance: send logging survives a forced model error (logged, not thrown); a second attempt appends without a second row; Mongo TTL index is not used
|
|
28
|
+
- Status: model, `errorCode`/`errorClass`, and non-throwing `logSend` shipped; listed fields remain
|
|
29
|
+
- [x] **Task 1.5**: Channel-wide transient retry + no rethrow
|
|
30
|
+
- Description: wrap provider throws as `{accepted: false, errorClass: "transient", errorCode: "provider-throw"}`; retry once on transient for `sendMail`, `sendSms`, `startVerification`; for `sendPushToUser`, retry only tokens whose first result is transient; do not retry `checkVerification`; prune tokens when `errorClass === "permanent"` or `isPermanentFailure === true`
|
|
31
|
+
- Status: mail retry shipped; SMS/push/verification still rethrow; prune is `isPermanentFailure` only
|
|
37
32
|
- Files: `comms/src/commsService.ts` + tests
|
|
33
|
+
- Depends on: 1.2, 1.3, 1.4
|
|
34
|
+
- Acceptance: unit tests cover happy path + unconfigured channel in both env modes; permanent/config failures do not retry; SMS throw returns a `SendResult` instead of rejecting
|
|
35
|
+
- [x] **Task 1.6**: Lifecycle hooks + event intake
|
|
36
|
+
- Description: `beforeSend` (mutate/cancel, once before first attempt; throwing beforeSend = no cancel); `onSend`/`onError`/`onRetry` (keep `(context, result)`, set `context.attempt`); `recordDeliveryEvent` / `recordOptOut` invoke `onDeliveryEvent` / `onOptOut` and update the log row by `providerMessageId` when present; wrap every hook
|
|
37
|
+
- Files: `comms/src/commsService.ts`, `comms/src/types.ts` + tests
|
|
38
38
|
- Depends on: 1.5
|
|
39
|
-
- Acceptance: one test per hook (fires with correct context) plus one throwing-hook test per hook
|
|
40
|
-
- [
|
|
41
|
-
- Description: `retainPayloadDays` (default 30)
|
|
39
|
+
- Acceptance: one test per hook (fires with correct context) plus one throwing-hook test per hook; cancelled send has `status: "cancelled"` and zero provider calls
|
|
40
|
+
- [x] **Task 1.7**: Payload retention + redaction
|
|
41
|
+
- Description: `retainPayloadDays` (default 30) stores the channel payload after `redactPayload`; `retainPayloadDays: 0` stores nothing; push payload omits tokens; verification start stores `{channel}` only; `clearExpiredPayloads` runs best-effort from `logSend`/`appendAttempt`
|
|
42
42
|
- Files: `comms/src/commsService.ts`, `comms/src/models/commsMessage.ts` + tests
|
|
43
|
-
- Depends on: 1.4, 1.5
|
|
44
|
-
- Acceptance: payload stored redacted; expired payload cleared; `retainPayloadDays: 0` stores nothing
|
|
43
|
+
- Depends on: 1.4, 1.5, 1.6
|
|
44
|
+
- Acceptance: payload stored redacted; expired payload cleared without deleting the row; `retainPayloadDays: 0` stores nothing
|
|
45
45
|
|
|
46
46
|
## Phase 2 — CommsApp + routes
|
|
47
47
|
|
|
@@ -70,6 +70,7 @@ IP: [comms-abstraction](../implementationPlans/comms-abstraction.md)
|
|
|
70
70
|
- Files: `comms/src/commsService.ts` + tests
|
|
71
71
|
- Depends on: 2.1, 1.5
|
|
72
72
|
- Acceptance: dead token is `active: false` after a failed send
|
|
73
|
+
- Note: remaining prune-by-`errorClass` work is in Task 1.5
|
|
73
74
|
|
|
74
75
|
## Phase 3 — Integration + docs
|
|
75
76
|
|
|
@@ -88,3 +89,8 @@ IP: [comms-abstraction](../implementationPlans/comms-abstraction.md)
|
|
|
88
89
|
- Files: `.github/workflows/comms-ci.yml`, `.github/workflows/publish-on-tag.yml`
|
|
89
90
|
- Depends on: 1.x
|
|
90
91
|
- Acceptance: CI green on the PR
|
|
92
|
+
- [x] **Task 3.4**: Docs refresh for gap-fill APIs
|
|
93
|
+
- Description: document `beforeSend`, `recordDeliveryEvent`/`recordOptOut`, attempt history, payload retention, channel-wide retry, and the `onRetry`/`isPermanentFailure` aliases in reference docs + comms rule
|
|
94
|
+
- Files: `docs/reference/comms.md`, `.rulesync/rules/comms/00-comms.md`
|
|
95
|
+
- Depends on: 1.6, 1.7
|
|
96
|
+
- Acceptance: `bun run rules:check` passes; docs match the Approved IP
|
|
@@ -4,22 +4,22 @@ IP: [comms-adapter-sendgrid](../implementationPlans/comms-adapter-sendgrid.md)
|
|
|
4
4
|
|
|
5
5
|
## Phase 1 — Send path
|
|
6
6
|
|
|
7
|
-
- [
|
|
7
|
+
- [x] **Task 1.1**: `SendGridMailProvider` with config + sandbox mode
|
|
8
8
|
- Description: constructor/env config, from-address fallback chain, sandbox default under test
|
|
9
9
|
- Files: `comms/src/adapters/sendgrid.ts`
|
|
10
10
|
- Depends on: comms-abstraction Phase 1
|
|
11
11
|
- Acceptance: mocked-client tests for text/html/template sends
|
|
12
|
-
- [
|
|
12
|
+
- [x] **Task 1.2**: Error classification
|
|
13
13
|
- Description: HTTP status → `errorCode`/`errorClass` per the IP table (400 permanent, 401/403 config, 429/5xx transient); full response body into `CommsMessage.metadata`; never throws
|
|
14
14
|
- Files: `comms/src/adapters/sendgrid.ts`
|
|
15
15
|
- Depends on: 1.1
|
|
16
16
|
- Acceptance: unverified-sender (config), bad-address (permanent), and 429 (transient) fixtures assert `errorClass`; permanent skips the inline retry
|
|
17
|
-
- [
|
|
17
|
+
- [x] **Task 1.3**: Dashboard metadata + hooks coverage
|
|
18
18
|
- Description: capture `x-message-id`; `metadata.consoleUrl` Email Activity deep link; `onError` fires with the classified `SendResult`
|
|
19
19
|
- Files: `comms/src/adapters/sendgrid.ts` + tests
|
|
20
20
|
- Depends on: 1.2
|
|
21
21
|
- Acceptance: accepted-send test asserts message id + consoleUrl; failed-send test asserts onError invocation
|
|
22
|
-
- [
|
|
22
|
+
- [x] **Task 1.4**: Peer dep + registration + docs
|
|
23
23
|
- Description: optional peer `@sendgrid/mail`; env-gated example-backend registration with fail-fast; reference + env docs incl. sender-verification checklist
|
|
24
24
|
- Files: `comms/package.json`, `example-backend/src/server.ts`, `docs/reference/comms.md`, `docs/reference/environment-variables.md`
|
|
25
25
|
- Depends on: 1.1
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Task List: Consent Forms System
|
|
2
2
|
|
|
3
|
+
**Status:** Closed (2026-08-20) — IP complete. Shipped in `@terreno/api` (`ConsentApp`) and `@terreno/ui`. Open tasks below were not executed.
|
|
4
|
+
|
|
3
5
|
*Structured task breakdown for automated implementation. Each task should be independently implementable and testable.*
|
|
4
6
|
|
|
5
7
|
## Phase 1: Models + API
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# Feature Flags — Task List
|
|
2
2
|
|
|
3
|
+
**Status:** Closed (2026-08-20) — IP deferred; superseded by [feature-flags-openfeature.md](./feature-flags-openfeature.md). Open tasks below will not be executed.
|
|
4
|
+
|
|
3
5
|
## Phase 1: Backend + Evaluation Engine
|
|
4
6
|
|
|
5
7
|
- [ ] **Task 1.1**: Create `feature-flags/` package with FeatureFlag model (including archived field)
|
|
@@ -19,14 +19,16 @@ Research: [`docs/implementationPlans/migrate-cicd-to-circleci-research.md`](../i
|
|
|
19
19
|
- Files: `docs/how-to/circleci.md` (stub OK)
|
|
20
20
|
- Depends on: none (human prerequisite)
|
|
21
21
|
- Acceptance: a manual “hello” pipeline can be triggered from the project; dynamic config is enabled.
|
|
22
|
+
- Note: hello scaffold merged (#1052). Dynamic config + org slug still need maintainer confirmation.
|
|
22
23
|
|
|
23
24
|
- [ ] **Task 0.2**: Create CircleCI Contexts (empty shells)
|
|
24
25
|
- Description: Create contexts named in the IP (`terreno-npm`, `terreno-netlify`, `terreno-expo`, `terreno-gcp`, `terreno-e2e`, `terreno-release`, `terreno-agentic`, `terreno-github-api`). Document which GitHub secrets map into each. Do not paste secret values into the repo.
|
|
25
26
|
- Files: `docs/how-to/circleci.md`
|
|
26
27
|
- Depends on: Task 0.1
|
|
27
28
|
- Acceptance: contexts exist; mapping table is complete; access restrictions noted for `terreno-release`.
|
|
29
|
+
- Note: mapping table documented in how-to; contexts themselves are still a human step.
|
|
28
30
|
|
|
29
|
-
- [
|
|
31
|
+
- [x] **Task 0.3**: Inventory required GitHub checks
|
|
30
32
|
- Description: List current branch-protection required checks and map each to the GHA job `name:` and the future CircleCI job name. Start from `docs/explanation/repository-settings.md` and live settings.
|
|
31
33
|
- Files: `docs/how-to/circleci.md` or a short table in the IP
|
|
32
34
|
- Depends on: none
|
|
@@ -34,43 +36,45 @@ Research: [`docs/implementationPlans/migrate-cicd-to-circleci-research.md`](../i
|
|
|
34
36
|
|
|
35
37
|
## Phase 1: Foundation
|
|
36
38
|
|
|
37
|
-
- [
|
|
39
|
+
- [x] **Task 1.1**: Add setup + continue config skeleton
|
|
38
40
|
- Description: Create `.circleci/config.yml` with `setup: true` using `circleci/path-filtering` (and `circleci/continuation`). Create `.circleci/continue-config.yml` with parameters for each package/area and a no-op `config-ok` job that always runs.
|
|
39
41
|
- Files: `.circleci/config.yml`, `.circleci/continue-config.yml`
|
|
40
42
|
- Depends on: Task 0.1
|
|
41
43
|
- Acceptance: push triggers setup → continuation; `config-ok` is green.
|
|
42
44
|
|
|
43
|
-
- [
|
|
45
|
+
- [x] **Task 1.2**: Shared Bun + cache commands
|
|
44
46
|
- Description: Add reusable commands (inline or orb) for installing Bun via `circleci/node`, `bun install --frozen-lockfile`, and cache keys equivalent to today’s GHA bun cache. Pin Bun policy (`latest` vs pin) consistently with EAS jobs that need a pin.
|
|
45
47
|
- Files: `.circleci/continue-config.yml`
|
|
46
48
|
- Depends on: Task 1.1
|
|
47
49
|
- Acceptance: a sample job restores cache on second run; install is frozen-lockfile.
|
|
48
50
|
|
|
49
|
-
- [
|
|
51
|
+
- [x] **Task 1.3**: Path-filter mapping
|
|
50
52
|
- Description: Encode path → parameter mapping for api, ai, ui, rtk, comms, mcp-server, admin-*, example-*, demo, docs/website, terraform, e2e-relevant sets, matching current workflow path filters.
|
|
51
53
|
- Files: `.circleci/config.yml`
|
|
52
54
|
- Depends on: Task 1.1
|
|
53
55
|
- Acceptance: a docs-only change sets docs/deploy params without setting `run-api`.
|
|
56
|
+
- Note: deploy path params omitted until Phase 4+.
|
|
54
57
|
|
|
55
58
|
## Phase 2: Package CI + policy
|
|
56
59
|
|
|
57
|
-
- [
|
|
60
|
+
- [x] **Task 2.1**: Port package CI jobs
|
|
58
61
|
- Description: Port api/ai/rtk/ui/ui-demo/comms/mcp-server/example-frontend/example-backend(+script)/admin-spa CI to CircleCI jobs gated by path params. Include Mongo service where GHA used it. Fix mcp branch filter to `master`.
|
|
59
62
|
- Files: `.circleci/continue-config.yml`, possibly package scripts unchanged
|
|
60
63
|
- Depends on: Task 1.2, Task 1.3
|
|
61
64
|
- Acceptance: dual-run green for each package on a change that touches it; GHA still required.
|
|
62
65
|
|
|
63
|
-
- [
|
|
66
|
+
- [x] **Task 2.2**: Port Docker build-only job
|
|
64
67
|
- Description: Port `example-backend-docker.yml` to CircleCI remote Docker / machine with layer caching replacement for `type=gha`.
|
|
65
68
|
- Files: `.circleci/continue-config.yml`
|
|
66
69
|
- Depends on: Task 2.1
|
|
67
70
|
- Acceptance: PR touching `example-backend/**` builds the image without pushing.
|
|
68
71
|
|
|
69
|
-
- [
|
|
72
|
+
- [x] **Task 2.3**: Port repo-policies + rulesync + DCO
|
|
70
73
|
- Description: Port `repo-policies.yml`, `rulesync-check.yml`, and fork DCO checks. DCO must use GitHub API via `terreno-github-api` context.
|
|
71
74
|
- Files: `.circleci/continue-config.yml`
|
|
72
75
|
- Depends on: Task 0.2, Task 1.2
|
|
73
76
|
- Acceptance: intentional barrel-import / dirty rulesync / missing DCO on a fork PR fails the CircleCI job.
|
|
77
|
+
- Note: DCO skips cleanly if `GITHUB_TOKEN` unset until context is created.
|
|
74
78
|
|
|
75
79
|
- [ ] **Task 2.4**: Dual-run cutover for Phase 2
|
|
76
80
|
- Description: Add CircleCI checks to branch protection; remove GHA package/policy workflows once trusted; delete corresponding `.github/workflows/*-ci.yml` and policy workflows.
|
|
@@ -80,7 +84,7 @@ Research: [`docs/implementationPlans/migrate-cicd-to-circleci-research.md`](../i
|
|
|
80
84
|
|
|
81
85
|
## Phase 3: Playwright E2E
|
|
82
86
|
|
|
83
|
-
- [
|
|
87
|
+
- [x] **Task 3.1**: Port `e2e-ci` and `admin-spa-integration`
|
|
84
88
|
- Description: Mongo replica set, E2E secrets context, Playwright browsers, artifact store for reports. Skip Dependabot-equivalent if applicable.
|
|
85
89
|
- Files: `.circleci/continue-config.yml`
|
|
86
90
|
- Depends on: Task 2.1, Task 0.2
|
|
@@ -209,7 +213,7 @@ Research: [`docs/implementationPlans/migrate-cicd-to-circleci-research.md`](../i
|
|
|
209
213
|
- Acceptance: `rg -n "GitHub Actions" docs/explanation/repository-settings.md` and deploy docs reflect CircleCI as source of truth.
|
|
210
214
|
|
|
211
215
|
- [ ] **Task 10.2**: Final GHA workflow purge + IP close
|
|
212
|
-
- Description: Ensure `.github/workflows` has no CI/CD yml left (except intentionally empty dir or README).
|
|
213
|
-
- Files: `.github/workflows/`, `docs/implementationPlans/
|
|
216
|
+
- Description: Ensure `.github/workflows` has no CI/CD yml left (except intentionally empty dir or README). Set the IP `**Status:**` to Complete and archive the IP.
|
|
217
|
+
- Files: `.github/workflows/`, `docs/implementationPlans/migrate-cicd-to-circleci.md`
|
|
214
218
|
- Depends on: Task 9.3, Task 10.1, Task 8.2
|
|
215
219
|
- Acceptance: `ls .github/workflows/*.yml` is empty (or only an agreed stub); IP status Complete.
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
# modelRouter Actions — Task List
|
|
2
2
|
|
|
3
|
+
**Status:** Closed (2026-08-20) — IP deferred. Open tasks below will not be executed.
|
|
4
|
+
|
|
3
5
|
## Phase 1: Foundation (types + runtime + per-route OpenAPI middleware)
|
|
4
6
|
|
|
5
7
|
- [ ] **Task 1.1**: Add `zod ^4.3.6` as a **peerDependency** of `@terreno/api` (also pin `^4.3.6` in `devDependencies` so the package compiles/tests on its own) and `@asteasolutions/zod-to-openapi ^8.5.0` as a regular `dependency` (it bundles its own usage). Use Bun catalog for Zod if a catalog version exists.
|