@lifeaitools/rdc-skills 0.24.41 → 0.25.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/.claude/settings.json +15 -15
- package/.claude-plugin/marketplace.json +21 -21
- package/.claude-plugin/plugin.json +1518 -1371
- package/.github/workflows/publish.yml +34 -34
- package/.github/workflows/self-test.yml +58 -58
- package/CHANGELOG.md +310 -310
- package/LICENSE +21 -21
- package/MANIFEST.md +221 -221
- package/README.md +375 -376
- package/README.sandbox.md +3 -3
- package/assets/watcher/viewer.html +164 -164
- package/bin/rdc-skills-mcp.mjs +316 -316
- package/commands/build.md +183 -183
- package/commands/collab.md +180 -180
- package/commands/deploy.md +152 -152
- package/commands/design.md +31 -31
- package/commands/edit.md +28 -28
- package/commands/fixit.md +150 -124
- package/commands/handoff.md +173 -173
- package/commands/help.md +95 -95
- package/commands/overnight.md +220 -220
- package/commands/plan.md +158 -158
- package/commands/preplan.md +131 -131
- package/commands/prototype.md +145 -145
- package/commands/release.md +49 -49
- package/commands/report.md +99 -99
- package/commands/review.md +120 -120
- package/commands/self-test.md +113 -113
- package/commands/status.md +86 -86
- package/commands/watch.md +98 -98
- package/commands/workitems.md +137 -137
- package/git-sha.json +1 -1
- package/guides/agent-bootstrap.md +295 -295
- package/guides/agents/backend.md +104 -104
- package/guides/agents/content.md +94 -94
- package/guides/agents/cs2.md +56 -56
- package/guides/agents/data.md +87 -87
- package/guides/agents/design.md +77 -77
- package/guides/agents/frontend.md +92 -92
- package/guides/agents/infrastructure.md +81 -81
- package/guides/agents/setup.md +281 -281
- package/guides/agents/verify.md +151 -151
- package/guides/agents/viz.md +106 -106
- package/guides/backend.md +146 -146
- package/guides/content.md +147 -147
- package/guides/cs2.md +190 -190
- package/guides/data.md +123 -123
- package/guides/design.md +116 -116
- package/guides/engineering-behavior.md +43 -43
- package/guides/escalation-protocol.md +125 -125
- package/guides/frontend.md +151 -151
- package/guides/history-md-spec.md +297 -297
- package/guides/infrastructure.md +179 -179
- package/guides/lessons-learned-spec.md +145 -151
- package/guides/output-contract.md +108 -108
- package/guides/publish-md-spec.md +289 -289
- package/guides/rdc-skills-startup.md +30 -30
- package/guides/verify.md +11 -11
- package/hooks/check-cwd.js +31 -31
- package/hooks/check-rdc-environment.js +164 -164
- package/hooks/check-services.js +6 -6
- package/hooks/check-stale-work-items.js +19 -19
- package/hooks/foreground-process-gate.js +128 -128
- package/hooks/gate-watchdog-selfcheck.js +257 -257
- package/hooks/hook-logger.js +25 -25
- package/hooks/lib/run-evidence-gate.mjs +241 -241
- package/hooks/no-stop-open-epics.js +127 -127
- package/hooks/post-tool-batch-gate.js +203 -203
- package/hooks/post-work-check.js +21 -21
- package/hooks/postcompact-log.js +13 -13
- package/hooks/precompact-log.js +13 -13
- package/hooks/rate-limit-retry.js +46 -46
- package/hooks/rdc-invocation-marker.js +157 -157
- package/hooks/rdc-output-contract-gate.js +94 -94
- package/hooks/require-work-item-on-commit.js +294 -294
- package/hooks/restart-brief.js +19 -19
- package/hooks/run-hidden-hook.ps1 +47 -47
- package/hooks/task-completed-gate.js +274 -274
- package/hooks/work-item-exit-gate.js +944 -944
- package/lib/catalog.mjs +236 -236
- package/lib/cloud-rewrite.mjs +155 -155
- package/package.json +57 -57
- package/rules/work-items-rpc.md +520 -520
- package/scaffold/templates/HISTORY.md.template +39 -39
- package/scaffold/templates/PUBLISH.md.template +21 -21
- package/scaffold/templates/brochure-studio-default.html +70 -70
- package/scripts/acceptance.mjs +502 -502
- package/scripts/fixtures/guides/bad-guide.md +15 -15
- package/scripts/fixtures/guides-clean/good-guide.md +16 -16
- package/scripts/install-rdc-skills.js +1289 -1289
- package/scripts/install.ps1 +202 -202
- package/scripts/install.sh +132 -132
- package/scripts/lib/assertions.mjs +287 -287
- package/scripts/lib/manifest-schema.mjs +754 -754
- package/scripts/lib/runner.mjs +465 -465
- package/scripts/lib/sandbox.mjs +435 -435
- package/scripts/prepack.mjs +32 -32
- package/scripts/rdc-brochure.mjs +482 -482
- package/scripts/rdc-design-cli.mjs +134 -134
- package/scripts/rebuild-mcp.mjs +107 -107
- package/scripts/self-test.mjs +1460 -1460
- package/scripts/stamp-git-sha.mjs +29 -29
- package/scripts/test-guide-validator.mjs +196 -196
- package/scripts/test-rdc-hooks.mjs +145 -145
- package/scripts/uninstall.ps1 +77 -77
- package/scripts/uninstall.sh +69 -69
- package/scripts/update.ps1 +43 -43
- package/scripts/update.sh +43 -43
- package/scripts/validate-place-histories.js +461 -461
- package/scripts/validate-publish-manifests.js +502 -424
- package/scripts/watch-init.mjs +100 -100
- package/skills/brochure/SKILL.md +107 -107
- package/skills/build/SKILL.md +563 -563
- package/skills/channel-formatter/SKILL.md +538 -533
- package/skills/co-develop/SKILL.md +196 -196
- package/skills/collab/SKILL.md +239 -239
- package/skills/convert/SKILL.md +167 -140
- package/skills/deploy/SKILL.md +541 -541
- package/skills/design/SKILL.md +211 -211
- package/skills/design/reference/ownership.md +16 -16
- package/skills/design/reference/rampa.md +92 -92
- package/skills/design/reference/studio-model.md +153 -153
- package/skills/edit/SKILL.md +98 -98
- package/skills/fixit/SKILL.md +203 -165
- package/skills/fs-mcp/SKILL.md +148 -148
- package/skills/handoff/SKILL.md +236 -236
- package/skills/help/SKILL.md +143 -143
- package/skills/housekeeping/SKILL.md +160 -219
- package/skills/lifeai-brochure-author/SKILL.md +340 -340
- package/skills/onramp/SKILL.md +248 -0
- package/skills/overnight/SKILL.md +251 -251
- package/skills/plan/SKILL.md +345 -345
- package/skills/preplan/SKILL.md +90 -90
- package/skills/prototype/SKILL.md +150 -150
- package/skills/rdc-brochurify/SKILL.md +245 -245
- package/skills/rdc-extract-verifier-rules/SKILL.md +191 -191
- package/skills/release/SKILL.md +140 -140
- package/skills/report/SKILL.md +100 -100
- package/skills/review/SKILL.md +152 -152
- package/skills/rpms-filemap/SKILL.cloud.md +111 -111
- package/skills/rpms-filemap/SKILL.md +111 -111
- package/skills/self-test/SKILL.md +132 -132
- package/skills/status/SKILL.md +99 -99
- package/skills/terminal-config/SKILL.md +62 -62
- package/skills/tests/MATRIX.md +54 -54
- package/skills/tests/README.md +47 -47
- package/skills/tests/onramp.test.json +87 -0
- package/skills/tests/rdc-brochure.test.json +34 -34
- package/skills/tests/rdc-build.test.json +36 -36
- package/skills/tests/rdc-channel-formatter.test.json +45 -45
- package/skills/tests/rdc-co-develop.test.json +29 -29
- package/skills/tests/rdc-collab.test.json +29 -29
- package/skills/tests/rdc-convert.test.json +35 -35
- package/skills/tests/rdc-deploy.test.json +30 -30
- package/skills/tests/rdc-design.test.json +27 -27
- package/skills/tests/rdc-edit.test.json +29 -29
- package/skills/tests/rdc-fixit.test.json +36 -36
- package/skills/tests/rdc-fs-mcp.test.json +36 -36
- package/skills/tests/rdc-handoff.test.json +28 -28
- package/skills/tests/rdc-help.test.json +29 -29
- package/skills/tests/rdc-housekeeping.test.json +28 -32
- package/skills/tests/rdc-lifeai-brochure-author.test.json +35 -35
- package/skills/tests/rdc-overnight.test.json +37 -37
- package/skills/tests/rdc-plan.test.json +27 -27
- package/skills/tests/rdc-preplan.test.json +31 -31
- package/skills/tests/rdc-prototype.test.json +28 -28
- package/skills/tests/rdc-rdc-brochurify.test.json +23 -23
- package/skills/tests/rdc-rdc-extract-verifier-rules.test.json +34 -34
- package/skills/tests/rdc-release.test.json +29 -29
- package/skills/tests/rdc-report.test.json +28 -28
- package/skills/tests/rdc-review.test.json +29 -29
- package/skills/tests/rdc-rpms-filemap.test.json +28 -28
- package/skills/tests/rdc-self-test.test.json +24 -24
- package/skills/tests/rdc-status.test.json +29 -29
- package/skills/tests/rdc-terminal-config.test.json +29 -29
- package/skills/tests/rdc-watch.test.json +24 -24
- package/skills/tests/rdc-workitems.test.json +27 -27
- package/skills/watch/SKILL.md +97 -97
- package/skills/workitems/SKILL.md +151 -151
- package/tests/acceptance.test.mjs +59 -59
- package/tests/channel-formatter.contract.test.mjs +251 -251
- package/tests/curl-surface.test.mjs +289 -289
- package/tests/harness-gates.test.mjs +325 -325
- package/tests/help-surface.test.mjs +61 -61
- package/tests/install-rdc-skills.test.mjs +49 -49
- package/tests/manifest-contract-fields.test.mjs +78 -78
- package/tests/mcp.test.mjs +271 -271
- package/tests/rdc-brochure.test.mjs +125 -125
- package/tests/require-work-item-on-commit.test.mjs +162 -162
- package/tests/run-evidence-gate.test.mjs +82 -82
- package/tests/skill-test-matrix.test.mjs +66 -66
- package/tests/validate-skills.js +27 -27
- package/tests/work-item-exit-gate-l2.test.mjs +368 -368
- package/tests/work-item-exit-gate-l3.test.mjs +197 -197
- package/RELEASE.md +0 -42
- package/tests/housekeeping-lessons-triage.test.mjs +0 -49
- package/tests/lessons-pipeline-contract.test.mjs +0 -26
- package/tests/release-contract.test.mjs +0 -16
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rdc:onramp
|
|
3
|
+
description: "Usage `rdc:onramp <slug> --name \"<Display Name>\"` — Idempotent Phase-1 enrollment orchestrator for a new Place Fund project. Resolves drift state, then runs three ordered steps in strict sequence: (1) `enroll_place` Supabase RPC → creates DB spine (places + project_nodes + project_places); (2) `insert_work_item` → opens enrollment epic bound to the project_node_id; (3) `scripts/onramp-scaffold-place.mjs` → writes `places/<slug>/` disk tree. Never reimplements any door. Four drift states: fresh | already-enrolled | spine-ahead | disk-ahead (disk-ahead STOPs and opens a reconciliation work item)."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
> **⚠️ OUTPUT CONTRACT (READ FIRST):** `guides/output-contract.md`
|
|
7
|
+
> Checklist-only output. No tool-call narration. No raw MCP/JSON/log dumps.
|
|
8
|
+
> One checklist upfront, updated in place, shown again at end with a 1-line verdict.
|
|
9
|
+
|
|
10
|
+
> If dispatching subagents or running as a subagent: read `{PROJECT_ROOT}/.rdc/guides/agent-bootstrap.md` first, then `{PROJECT_ROOT}/.rdc/guides/engineering-behavior.md`.
|
|
11
|
+
|
|
12
|
+
> **Sandbox contract:** This skill honors `RDC_TEST=1` per `guides/agent-bootstrap.md` § RDC_TEST Sandbox Contract. All three external steps (enroll_place RPC, insert_work_item RPC, scaffolder) short-circuit under the flag. Drift resolution and arg validation run normally.
|
|
13
|
+
|
|
14
|
+
> **RPMS compliance:** Encodes the Four Laws (One Home Per Fact · One Direction · One Door · One Spine). Each fact is written to its one home. **⛔ NEVER write `places/<slug>/_context.md`** — it is a generated projection owned by `apps/studio/src/lib/context-export-writer.ts`. A post-scaffold gate asserts its absence; the skill halts if found.
|
|
15
|
+
|
|
16
|
+
> **Purely additive — no architectural-approval interview required** per plan D5 in `.rdc/plans/rdc-onramp-skill.md`: adds one new skill dir and one `skills_meta` key; changes no existing skill, schema, MCP tool, routing, or build/deploy config.
|
|
17
|
+
|
|
18
|
+
# rdc:onramp — Phase-1 Enrollment Orchestrator
|
|
19
|
+
|
|
20
|
+
## When to Use
|
|
21
|
+
|
|
22
|
+
- Enrolling a new Place Fund project for the first time (fresh state)
|
|
23
|
+
- Healing a spine-ahead state (DB row exists, disk tree missing)
|
|
24
|
+
- Checking current enrollment state without writing (`--dry-run`)
|
|
25
|
+
- Re-running enrollment to converge to a consistent state (idempotent)
|
|
26
|
+
|
|
27
|
+
## When NOT to Use — escalate to the right tool
|
|
28
|
+
|
|
29
|
+
- Research phase → paste [`corpus/_shared/onramp/STARTUP.md`](file:///C:/Dev/regen-root/corpus/_shared/onramp/STARTUP.md) into a claude.ai studio project
|
|
30
|
+
- Brand/design → `rdc:design`
|
|
31
|
+
- Site build → `rdc:build` (after research is complete)
|
|
32
|
+
- Any architectural change → `rdc:plan` + approval interview
|
|
33
|
+
|
|
34
|
+
## Argument Contract
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
rdc:onramp <slug> --name "<Display Name>" [--location <json>] [--archetype <archetype>]
|
|
38
|
+
[--owner <place-fund|rdc|jv|client>] [--history] [--dry-run]
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
| Arg / Flag | Required | Default | Description |
|
|
42
|
+
|------------|----------|---------|-------------|
|
|
43
|
+
| `slug` | **yes** | — | kebab-case, place-anchored (e.g. `spirit-bear-village`). Validated against `^[a-z0-9]+(-[a-z0-9]+)*$`. |
|
|
44
|
+
| `--name` | **yes** | — | Human display name. Passed verbatim to `enroll_place` and the scaffolder. |
|
|
45
|
+
| `--location` | no | `{}` | JSON object for `enroll_place p_location` (e.g. `{"state":"BC","country":"Canada"}`). Never guessed — omit entirely if unknown. |
|
|
46
|
+
| `--archetype` | no | `TBD` | Base-arc archetype. See [`corpus/_shared/onramp/ARCHETYPES.md`](file:///C:/Dev/regen-root/corpus/_shared/onramp/ARCHETYPES.md). |
|
|
47
|
+
| `--owner` | no | `place-fund` | `place-fund` \| `rdc` \| `jv` \| `client` |
|
|
48
|
+
| `--history` | no | off | Opt-in: also scaffold `places/<slug>/HISTORY.md`. See D4 in the plan for when to use. |
|
|
49
|
+
| `--dry-run` | no | off | Resolve drift + print plan; perform NO writes (no RPC, no scaffold, no work item). |
|
|
50
|
+
|
|
51
|
+
`--status` is not exposed — always `enrolling` (Phase-1 invariant; the Studio promotes to `active` later).
|
|
52
|
+
|
|
53
|
+
## Procedure
|
|
54
|
+
|
|
55
|
+
### 0. Preflight
|
|
56
|
+
|
|
57
|
+
Emit the full checklist below before any further action:
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
- [ ] Preflight — validate slug + --name; parse flags
|
|
61
|
+
- [ ] Resolve drift — classify: fresh | already-enrolled | spine-ahead | disk-ahead
|
|
62
|
+
- [ ] Spine — enroll_place RPC (Step 1)
|
|
63
|
+
- [ ] Epic — dup-guard + insert_work_item (Step 2)
|
|
64
|
+
- [ ] Disk tree — onramp-scaffold-place.mjs (Step 3)
|
|
65
|
+
- [ ] HISTORY advisory
|
|
66
|
+
- [ ] Report — structural facts + ONE next action
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Validate before any external call:
|
|
70
|
+
- `slug` matches `^[a-z0-9]+(-[a-z0-9]+)*$` — reject if not
|
|
71
|
+
- `--name` is present and non-empty — reject if not
|
|
72
|
+
- `--dry-run` set → print plan and exit after drift resolution, no writes
|
|
73
|
+
|
|
74
|
+
### 1. Resolve Drift State
|
|
75
|
+
|
|
76
|
+
Read-only DB probe (analytics SELECT is allowed per `.claude/rules/work-items-rpc.md`):
|
|
77
|
+
```sql
|
|
78
|
+
SELECT id, slug, name, status FROM places WHERE slug = '<slug>';
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Check disk:
|
|
82
|
+
```bash
|
|
83
|
+
test -d "places/<slug>/" && echo "disk:present" || echo "disk:absent"
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
| State | Detection | Action |
|
|
87
|
+
|-------|-----------|--------|
|
|
88
|
+
| **fresh** | No DB row AND no disk dir | Run all three steps in order |
|
|
89
|
+
| **already-enrolled** | DB row exists AND disk dir exists | `enroll_place` (idempotent, returns existing node); scaffolder skips existing files; epic dup-guarded. Report "already enrolled — no new writes." |
|
|
90
|
+
| **spine-ahead** | DB row exists, disk dir ABSENT | Re-call `enroll_place` (returns existing `project_node_id`); run scaffolder to create missing disk tree |
|
|
91
|
+
| **disk-ahead** | Disk dir exists, NO DB row | **⛔ STOP — colliding identity.** Open reconciliation work item; report; exit. Never proceed. |
|
|
92
|
+
|
|
93
|
+
**disk-ahead STOP protocol — run this, then exit:**
|
|
94
|
+
```sql
|
|
95
|
+
SELECT insert_work_item(
|
|
96
|
+
p_title := 'reconcile: disk-ahead conflict for <slug>',
|
|
97
|
+
p_item_type := 'bug',
|
|
98
|
+
p_priority := 'urgent',
|
|
99
|
+
p_source := 'onramp',
|
|
100
|
+
p_description := 'places/<slug>/ exists on disk but has no places DB row. A disk tree with no spine row is an unreconciled state. Manual reconciliation needed before enrollment can proceed — this may describe a different place. Do not auto-enroll.'
|
|
101
|
+
);
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Report the work-item id and the disk-ahead explanation, then exit. Never proceed to Step 1.
|
|
105
|
+
|
|
106
|
+
### 2. Step 1 — DB Spine (`enroll_place`)
|
|
107
|
+
|
|
108
|
+
This RPC is idempotent: calling it for an already-enrolled place returns the existing `project_node_id` without creating duplicate rows.
|
|
109
|
+
|
|
110
|
+
**Supabase MCP (preferred):**
|
|
111
|
+
```sql
|
|
112
|
+
SELECT enroll_place('<slug>', '<Display Name>', '<location_json>'::jsonb, 'enrolling');
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
`project_id = uvojezuorjgqzmhhgluu` is REQUIRED on every MCP call. An `InputValidationError` means it was omitted — pass it and retry; do not fall back to raw credentials.
|
|
116
|
+
|
|
117
|
+
**Subagent fallback** (if Supabase MCP is unavailable in this context):
|
|
118
|
+
```
|
|
119
|
+
Agent({
|
|
120
|
+
prompt: "Call Supabase RPC with Supabase MCP tool (mcp__claude_ai_Supabase__execute_sql).
|
|
121
|
+
project_id: uvojezuorjgqzmhhgluu
|
|
122
|
+
query: SELECT enroll_place('<slug>', '<name>', '{}'::jsonb, 'enrolling');
|
|
123
|
+
Return the project_node_id from the result JSON.
|
|
124
|
+
Never raw curl to *.supabase.co — hookify-blocked."
|
|
125
|
+
})
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
**GATE:** Capture `project_node_id` from the returned JSONB. If absent → emit the `BLOCKED:` template from `.claude/rules/infrastructure-contract.md`, stop. Never proceed without a `project_node_id`.
|
|
129
|
+
|
|
130
|
+
Under `RDC_TEST=1`:
|
|
131
|
+
```
|
|
132
|
+
[RDC_TEST] skipping enroll_place RPC — using placeholder project_node_id
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### 3. Step 2 — Enrollment Epic (`insert_work_item`)
|
|
136
|
+
|
|
137
|
+
**Dup-guard first** (raw SELECT allowed for analytics):
|
|
138
|
+
```sql
|
|
139
|
+
SELECT id, title FROM work_items
|
|
140
|
+
WHERE title = 'epic: enroll <slug>'
|
|
141
|
+
AND project_node_id = '<project_node_id>'::uuid
|
|
142
|
+
AND item_type = 'epic'
|
|
143
|
+
AND status NOT IN ('done', 'archived')
|
|
144
|
+
LIMIT 1;
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
If a row is returned: reuse the existing id — do NOT insert a duplicate.
|
|
148
|
+
|
|
149
|
+
If no row: create the epic:
|
|
150
|
+
```sql
|
|
151
|
+
SELECT insert_work_item(
|
|
152
|
+
p_title := 'epic: enroll <slug>',
|
|
153
|
+
p_item_type := 'epic',
|
|
154
|
+
p_priority := 'high',
|
|
155
|
+
p_source := 'onramp',
|
|
156
|
+
p_project_node_id := '<project_node_id>'::uuid
|
|
157
|
+
);
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
**GATE:** The epic id (new or reused) must be captured before proceeding to Step 3.
|
|
161
|
+
|
|
162
|
+
Under `RDC_TEST=1`:
|
|
163
|
+
```
|
|
164
|
+
[RDC_TEST] skipping insert_work_item — using placeholder epic id
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
### 4. Step 3 — Disk Tree (`onramp-scaffold-place.mjs`)
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
node scripts/onramp-scaffold-place.mjs --slug <slug> --name "<Display Name>" \
|
|
171
|
+
[--archetype <archetype>] [--owner <owner>] [--history (if --history flag was passed)]
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
The script is DB-free, idempotent (skips existing files), and writes NO `_context.md`. It produces:
|
|
175
|
+
`places/<slug>/PLACE.md · corpus/INDEX.md · arc/01–06/ · PRODUCT.md · DESIGN.md · HANDOFF.md · tracker/*`
|
|
176
|
+
|
|
177
|
+
**Post-run invariant gate (HARD — halt if violated):**
|
|
178
|
+
```bash
|
|
179
|
+
test ! -f "places/<slug>/_context.md" \
|
|
180
|
+
&& echo "_context.md absent: ✓" \
|
|
181
|
+
|| echo "FAIL: _context.md present — projection-drift violation"
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
If `_context.md` is found: **STOP immediately** and report a FAIL. The projection is owned by `context-export-writer.ts` — any hand-authored copy is a Law 3 violation. Do not proceed.
|
|
185
|
+
|
|
186
|
+
Under `RDC_TEST=1`:
|
|
187
|
+
```
|
|
188
|
+
[RDC_TEST] skipping onramp-scaffold-place.mjs
|
|
189
|
+
[RDC_TEST] skipping _context.md gate (no scaffold ran)
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
### 5. HISTORY Advisory
|
|
193
|
+
|
|
194
|
+
Always print:
|
|
195
|
+
|
|
196
|
+
```
|
|
197
|
+
ℹ️ HISTORY.md advisory
|
|
198
|
+
places/<slug>/HISTORY.md may be required once prt_projects.project_type is known.
|
|
199
|
+
Qualifying types: ranch · eco-hospitality · mixed · conservation · regenerative-agriculture · real-estate · development
|
|
200
|
+
Excluded types: credit · water · tech · regenerative-model
|
|
201
|
+
To scaffold now: pass --history on this run or re-run with it.
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
If `--history` was passed: the scaffolder above already included the flag. Confirm in output.
|
|
205
|
+
|
|
206
|
+
### 6. Report
|
|
207
|
+
|
|
208
|
+
Print the completed checklist (all rows checked), then a single verdict line:
|
|
209
|
+
|
|
210
|
+
```
|
|
211
|
+
✅ rdc:onramp — <slug> [<drift-state>]
|
|
212
|
+
|
|
213
|
+
DB spine: places.slug=<slug>
|
|
214
|
+
project_nodes.slug=prtnode-<slug>
|
|
215
|
+
project_node_id=<uuid>
|
|
216
|
+
Epic: <work-item-id> (<new|reused>)
|
|
217
|
+
Disk tree: places/<slug>/ (created=N skipped=M)
|
|
218
|
+
_context.md: absent ✓
|
|
219
|
+
|
|
220
|
+
─────────────────────────────────────────────
|
|
221
|
+
NEXT ACTION — RESEARCH PHASE:
|
|
222
|
+
Paste corpus/_shared/onramp/STARTUP.md
|
|
223
|
+
into a new claude.ai studio project
|
|
224
|
+
(PROJECT NAME = <slug>) to begin research.
|
|
225
|
+
─────────────────────────────────────────────
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
Every file path and URL must be a clickable markdown hyperlink per [`.claude/rules/clickable-output.md`](file:///C:/Dev/regen-root/.claude/rules/clickable-output.md).
|
|
229
|
+
|
|
230
|
+
## Convergence Guarantee
|
|
231
|
+
|
|
232
|
+
Every step is idempotent. Re-running `rdc:onramp <slug>` for an already-enrolled place performs zero new writes and reports "already enrolled." It never duplicates a spine row, an epic, or a disk file.
|
|
233
|
+
|
|
234
|
+
## Rules
|
|
235
|
+
|
|
236
|
+
- Validate `slug` and `--name` before any external call — reject invalid slugs immediately
|
|
237
|
+
- `enroll_place` is the ONLY door for spine rows — never raw INSERT into `places`, `project_nodes`, or `project_places`
|
|
238
|
+
- `insert_work_item` is the ONLY door for work items — never raw INSERT into `work_items`
|
|
239
|
+
- `onramp-scaffold-place.mjs` is the ONLY door for the disk tree — never hand-write `places/<slug>/` files outside the script
|
|
240
|
+
- Dup-guard the epic before inserting — one analytics SELECT, never two insert calls
|
|
241
|
+
- Assert `_context.md` ABSENT after scaffolding — hard stop if present
|
|
242
|
+
- disk-ahead → STOP, open reconciliation work item, never call `enroll_place` over an unknown disk tree
|
|
243
|
+
- `--status` is always `enrolling` — never exposed as a flag
|
|
244
|
+
- Under `RDC_TEST=1`: arg validation + drift resolution run; all three external steps short-circuit
|
|
245
|
+
|
|
246
|
+
## Capture Lessons
|
|
247
|
+
|
|
248
|
+
Before the final verdict, follow `.rdc/guides/lessons-learned-spec.md` § Capture procedure. If this run exposed a non-obvious gap — unexpected DB state, scaffolder behavior, drift edge case, RPC shape change — write one `.rdc/lessons/<YYYY-MM-DD>-onramp-<slug>.md`. Commit alongside the run's other commits. A run that taught nothing writes nothing.
|