@lifeaitools/rdc-skills 0.35.18 → 0.35.21

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.
@@ -17,7 +17,8 @@ description: rdc:edit (target) — open the local website editor for a target
17
17
  **This skill is the designated handler `rdc-harness` dispatches to.**
18
18
  `packages/work/src/editors.mjs`'s `BY_CLASS` table maps `site-html`/`site-ts`
19
19
  product classes to editor id `'rdc:edit'` — when an agent calls
20
- `node C:/Dev/rdc-harness/bin/rdc-harness.mjs edit <slug>` against a website
20
+ `npx --package=@lifeai/rdc-harness rdc-harness edit <slug>` (the published
21
+ package; see `guides/agent-bootstrap.md` for registry setup) against a website
21
22
  target, its receipt names `editorId: 'rdc:edit'` and an `editableBoundary`.
22
23
  This skill IS that handler: resolve the same target, launch/reuse the editor
23
24
  host, use the harness's `editableBoundary` as the save boundary if the call
@@ -99,10 +100,16 @@ launch if it is dead.
99
100
  - `RDC_TEST=1`: do not force a foreground browser action; report the exact editor URL and whether the target was resolved.
100
101
 
101
102
  ### 5. Report the result
103
+ - For a changed UI route, run the target project's pinned headless `test:ui`
104
+ command (or its named route test) after saving. Install Chromium through that
105
+ project with `pnpm exec playwright install chromium` only if it is absent.
106
+ The editor preview is an authoring surface, not verification. A route `200`
107
+ is not visual evidence; retain the Playwright pass/failure artifact.
102
108
  - Return a concise line with:
103
109
  - the resolved target
104
110
  - the editor URL
105
111
  - whether the page was opened or only prepared in test mode
112
+ - the visual-test command and result for a changed UI route
106
113
 
107
114
  ## Guardrails
108
115
  - Do not turn this into a full design audit.
@@ -9,6 +9,59 @@ description: rdc:open ([slug]) — orient before working; answers where you are
9
9
 
10
10
  # rdc:open — you are here, this is the thing, use this shape
11
11
 
12
+ ## Run the script. Do not re-derive this by hand.
13
+
14
+ `rdc-harness` ships as a published package — `@lifeai/rdc-harness` on GitHub
15
+ Packages, not npmjs (see `guides/agent-bootstrap.md` for the registry
16
+ precondition). Invoke it through the installed `bin`, never a
17
+ machine-specific checkout path:
18
+
19
+ ```bash
20
+ npx --package=@lifeai/rdc-harness rdc-harness open <slug>
21
+ ```
22
+
23
+ Only if you are actively developing the harness itself (working ON
24
+ `C:/Dev/rdc-harness`, not just using it) does `node bin/rdc-harness.mjs open
25
+ <slug>` from inside that checkout apply — never bake a `C:/Dev/rdc-harness/...`
26
+ path into this skill as the default invocation; that path exists on exactly
27
+ one machine and defeats the point of a published package.
28
+
29
+ **This file used to describe what `open` answers without ever naming the tool
30
+ that answers it** — zero mentions of `rdc-harness` in 128 lines — so every agent
31
+ reading it re-implemented orientation with `git rev-parse` and `git status`,
32
+ which is precisely the 6%-of-all-tool-calls waste the next section measures. The
33
+ verb has existed the whole time. Corrected 2026-08-31 on operator instruction:
34
+ "open is supposed to be a script, the skill says call the script." Corrected
35
+ again 2026-09-06: the invocation itself was still a single-machine path even
36
+ after the tool was published — fixed to resolve via the installed package.
37
+
38
+ It returns one JSON object. Read it; do not reconstruct it:
39
+
40
+ ```
41
+ opened: true
42
+ handle: hnd_… binding: bnd_…
43
+ permittedActions: ["read","write","edit","save"]
44
+ sourceBoundary: C:/Dev/clauth
45
+ productClass: package workModel: standalone
46
+ delivery: {production:"registry-release", deploy:false, release:true}
47
+ weDoNotHold: ["subtree","runtime_contract","deployment_record"]
48
+ boundaryNote: "C:/Dev/clauth is the SHARED checkout for a worktree-pooled repo
49
+ — work belongs in a lane under C:/Dev/clauth.wt, not here"
50
+ ```
51
+
52
+ That is a **scoped grant**, not a readout: `permittedActions` and
53
+ `sourceBoundary` say what you may touch and where. `boundaryNote` is the answer
54
+ to "which checkout do I work in" — it already knows pooled repos want a lane.
55
+
56
+ **Unresolved is a result, not an error.** `open regen-root` returns
57
+ `weDoNotHold: ["product_class"]`; `open fsm` returns `unknown_slug`. Register the
58
+ target, then open it again — never guess a default and never fall back to
59
+ hand-rolled git.
60
+
61
+ **Two targets at once is two calls.** Each returns its own `bindingId` and its
62
+ own `sourceBoundary`; nothing is exclusive. Working `clauth` and `rdc-harness`
63
+ together is two opens and two bindings.
64
+
12
65
  ## Why this exists
13
66
 
14
67
  Orientation ran **3.4× production work** across a measured 36-hour window —
@@ -90,12 +143,16 @@ Downstream verbs re-resolve from the registry by slug.
90
143
 
91
144
  ## Steps
92
145
 
93
- 1. **Position.** Resolve repo, worktree, branch @ sha, upstream, dirty count.
94
- Relative paths from here are correct by construction; a hardcoded
95
- `C:/Dev/regen-root/...` from a lane points at a *different checkout*.
96
- 2. **Target.** Resolve the slug through the registry, printing runtime, port,
97
- host, deploy path and dependents. `monorepo_path` NULL means a standalone
98
- repo, not in this tree.
146
+ 0. **Call `rdc-harness open <slug>`.** Steps 1–2 are what it returns, not a
147
+ procedure to perform. Only hand-resolve if the harness is genuinely
148
+ unavailable, and say so explicitly when you do.
149
+ 1. **Position.** Read `sourceBoundary` and `boundaryNote` from the result they
150
+ already account for pooled repos and lanes. Relative paths from there are
151
+ correct by construction; a hardcoded `C:/Dev/regen-root/...` from a lane
152
+ points at a *different checkout*.
153
+ 2. **Target.** Read `productClass`, `workModel`, `delivery` and `weDoNotHold`
154
+ from the same result. `monorepo_path` NULL means a standalone repo, not in
155
+ this tree. Do not re-query the registry for facts the handle already carries.
99
156
  3. **Harness.** Name the shape the target's class implies:
100
157
 
101
158
  | class | build | dev | prod |
@@ -105,7 +162,15 @@ Downstream verbs re-resolve from the registry by slug.
105
162
  | `sites/`, `models/` | static/vite | PM2 @ Vultr | Coolify |
106
163
  | standalone | its own tooling | — | Coolify |
107
164
 
108
- 4. **State the ground in one line** and start. Do not re-derive it later in the
165
+ 4. **Visual-test contract (for an app/site with UI work).** Read the target
166
+ `package.json` and name its `test:ui` command and Playwright config. A
167
+ project-owned `@playwright/test` dependency, a headless browser install, and
168
+ named UI-route tests are required before later work can claim rendered
169
+ evidence. A global CLI, a route probe, or an editor iframe does not satisfy
170
+ this contract. If the contract is absent, record it as a build requirement;
171
+ do not silently substitute a manual visual assertion.
172
+
173
+ 5. **State the ground in one line** and start. Do not re-derive it later in the
109
174
  turn.
110
175
 
111
176
  ## Checklist
@@ -115,6 +180,7 @@ Downstream verbs re-resolve from the registry by slug.
115
180
  [ ] target resolved from the registry (or: no slug given, position only)
116
181
  [ ] unresolved fields named explicitly, never defaulted
117
182
  [ ] harness shape named for the target's class
183
+ [ ] UI target: project-owned Playwright command/config identified (or absence recorded)
118
184
  [ ] blockers noted — behind upstream, dirty tree, service down
119
185
  ```
120
186
 
@@ -215,7 +215,7 @@ description: rdc:plan (topic) — produce architecture, decisions and an epic wi
215
215
  |------|---------------|-------------------|---------|
216
216
  | `assert` | Logic is correct | Write a vitest test — input → expected output | `extractCode("```tsx\nfoo\n```") returns "foo"` |
217
217
  | `smoke` | It runs without crashing | Run command, check exit code / HTTP status | `tsc --noEmit passes`, `GET /api/layout/scan returns 200` |
218
- | `visual` | It looks right | Delegate to UI audit tool with specific checkpoints | `"/layout page renders container tree, not login screen"` |
218
+ | `visual` | It looks right | Add/run a project-owned, pinned, headless Playwright assertion with a route, state, viewport, and visible expectation | `"/layout desktop loaded state renders container tree, not login screen"` |
219
219
  | `contract` | Interface matches spec | Check exports, prop types, response shape | `ScanResult has { roots: ContainerNode[] }` |
220
220
 
221
221
  **Rules for writing test plan items:**
@@ -94,10 +94,11 @@ monorepo subtree, not a standalone repo like this one),
94
94
  "Tests/self-test passed" through "Local install/update executed" rows safely:
95
95
  real `npm pack`, isolated-prefix install (never the real global store), real
96
96
  verify, and `--live` explicitly gating the actual publish. Where applicable,
97
- `node C:/Dev/rdc-harness/bin/rdc-harness.mjs deploy <slug> [--live]` can supply
98
- that evidence directly instead of hand-rolling the same pack/install/verify
99
- cycle. It does **not** replace version bump, tag or push — the harness CLI does
100
- none of those.
97
+ `npx --package=@lifeai/rdc-harness rdc-harness deploy <slug> [--live]` (the
98
+ published package; see `guides/agent-bootstrap.md` for registry setup) can
99
+ supply that evidence directly instead of hand-rolling the same
100
+ pack/install/verify cycle. It does **not** replace version bump, tag or push
101
+ — the harness CLI does none of those.
101
102
 
102
103
  ## Resolution Order
103
104
 
@@ -165,6 +165,17 @@ description: rdc:review () - [--unattended] — post-build gate over tsc, tests,
165
165
  substitutes; missing evidence means `HAS_ISSUES`, never `CLEAN`.
166
166
  If verify fails → do NOT emit CLEAN. Loop back, fix, re-run verify.
167
167
 
168
+ 9a. **Rendered UI gate — execute, do not delegate:**
169
+
170
+ For every changed UI route, inspect the target's `package.json` for a
171
+ project-owned `test:ui` command and pinned `@playwright/test` dependency,
172
+ then run that command headlessly. It must exercise the named route and state
173
+ against a fresh app-owned server or documented deploy-equivalent target.
174
+ A global CLI, route `200`, source inspection, or editor preview is not a
175
+ substitute. Missing harness or a red route assertion means `HAS_ISSUES`.
176
+ Preserve Playwright screenshots/traces on failure and quote the passing
177
+ route-level receipt in the review report.
178
+
168
179
  10. **Fix issues found:**
169
180
  - Failing tests → fix and commit
170
181
  - Export conflicts → resolve and commit
@@ -1,5 +1,4 @@
1
1
  ---
2
- name: rpms-filemap
3
2
  description: "Generated RPMS file map — RULE #1, canonical homes, and Context Export pointers served from regen-root manifest."
4
3
  slash: "rdc:rpms-filemap"
5
4
  category: "tooling"
@@ -13,9 +12,6 @@ triggers:
13
12
  - "where should pm artifacts go"
14
13
  ---
15
14
  # RPMS File Map
16
- > **⚠️ OUTPUT CONTRACT (READ FIRST):** `guides/output-contract.md`
17
- > Return the requested file-map guidance directly; do not dump raw manifests or logs.
18
-
19
15
  > GENERATED FILE - DO NOT HAND-EDIT.
20
16
  > Source of truth: `docs/architecture/rpms.locations.json`
21
17
  > Regenerate: `pnpm rpms:gen-filemap`
@@ -48,8 +44,8 @@ If you are touching an entity, read its generated `_context.md` before any local
48
44
  |----------|------|----|-----|-------------|-------|--------|
49
45
  | `session-start.claude-ai.root` | `CLAUDE.ai.md` | `read_only` | One Door | `block_wrong_home`<br />`path_conformance` | repo-root | `active` |
50
46
  | `session-start.claude.root` | `CLAUDE.md` | `read_only` | One Door | `block_wrong_home`<br />`path_conformance` | repo-root | `active` |
51
- | `session-start.decision.spine-lock` | `.rdc/plans/project-relationship-graph-approval.md` | `read_only` | One Spine, One Door | `block_wrong_home`<br />`path_conformance` | .rdc/plans/project-relationship-graph-approval.md | `active` |
52
- | `session-start.decision.cs2-lock` | `.rdc/plans/mdk-knowledge-decisions-and-workitems-2026-06-02.md` | `read_only` | One Direction, One Door | `block_wrong_home`<br />`path_conformance` | .rdc/plans/mdk-knowledge-decisions-and-workitems-2026-06-02.md | `active` |
47
+ | `session-start.decision.spine-lock` | `.rdc/areas/rdc/project/plans/project-relationship-graph-approval.md` | `read_only` | One Spine, One Door | `block_wrong_home`<br />`path_conformance` | .rdc/areas/rdc/project/plans/project-relationship-graph-approval.md | `active` |
48
+ | `session-start.decision.cs2-lock` | `.rdc/areas/cs2/mdk/plans/mdk-knowledge-decisions-and-workitems-2026-06-02.md` | `read_only` | One Direction, One Door | `block_wrong_home`<br />`path_conformance` | .rdc/areas/cs2/mdk/plans/mdk-knowledge-decisions-and-workitems-2026-06-02.md | `active` |
53
49
  | `session-start.glossary.layer-model` | `docs/systems/cs2/LAYER-MODEL-AND-VOCABULARY.md` | `read_only` | One Door | `block_wrong_home`<br />`path_conformance` | docs/systems/cs2/LAYER-MODEL-AND-VOCABULARY.md | `active` |
54
50
 
55
51
  ### Database Gates
@@ -92,7 +88,8 @@ If you are touching an entity, read its generated `_context.md` before any local
92
88
 
93
89
  | Artifact | Home | RW | Law | Enforcement | Owner | Status |
94
90
  |----------|------|----|-----|-------------|-------|--------|
95
- | `operational-door.rdc.plans` | `.rdc/plans/**` | `authored` | One Home Per Fact, One Direction | `allow_declared_home`<br />`path_conformance` | RDC planning workflow | `active` |
91
+ | `operational-door.rdc.plans` | `.rdc/areas/**/{plans,research,reports,decisions,logs,arch,guides}/**` | `authored` | One Home Per Fact, One Direction | `allow_declared_home`<br />`path_conformance` | RDC planning workflow | `active` |
92
+ | `operational-door.rdc.plans.compatibility` | `.rdc/plans/**` | `generated` | One Home Per Fact, One Direction | `allow_declared_home`<br />`path_conformance`<br />Retire only through the approved area-first-v1 activation receipt. | RDC path migration compiler | `active` |
96
93
  | `operational-door.rdc.reports` | `.rdc/reports/**` | `generated` | One Direction | `allow_declared_home`<br />`path_conformance` | rdc:report | `active` |
97
94
  | `operational-door.rdc.lessons` | `.rdc/lessons/**` | `append_only` | One Direction, One Home Per Fact | `allow_declared_home`<br />`path_conformance` | RDC lesson capture workflow | `active` |
98
95
  | `operational-door.rpms-filemap.rule` | `.claude/rules/rpms-filemap.md`<br />created_by: `scripts/rpms/gen-filemap.ts` | `generated` | One Home Per Fact, One Direction, One Door | `block_manual_edit`<br />`projection_drift` | scripts/rpms/gen-filemap.ts | `active` |
@@ -102,6 +99,16 @@ If you are touching an entity, read its generated `_context.md` before any local
102
99
  | Artifact | Home | RW | Law | Enforcement | Owner | Status |
103
100
  |----------|------|----|-----|-------------|-------|--------|
104
101
  | `session-start.app-guide` | `apps/*/CLAUDE.md` | `read_only` | One Door | `block_wrong_home`<br />`path_conformance` | app-local architecture guides | `active` |
102
+ | `session-start.package-guide` | `packages/*/CLAUDE.md` | `authored` | One Home Per Fact, One Door | `allow_declared_home`<br />`path_conformance` | package-local architecture guides | `active` |
103
+ | `session-start.site-guide` | `sites/*/CLAUDE.md` | `authored` | One Home Per Fact, One Door | `allow_declared_home`<br />`path_conformance` | site-local guides | `active` |
104
+ | `session-start.model-guide` | `models/*/CLAUDE.md` | `authored` | One Home Per Fact, One Door | `allow_declared_home`<br />`path_conformance` | model-local guides | `active` |
105
+ | `session-start.mcp-server-guide` | `mcp-servers/*/CLAUDE.md` | `authored` | One Home Per Fact, One Door | `allow_declared_home`<br />`path_conformance` | mcp-server guides | `active` |
106
+ | `session-start.worker-guide` | `workers/*/CLAUDE.md` | `authored` | One Home Per Fact, One Door | `allow_declared_home`<br />`path_conformance` | worker guides | `active` |
107
+ | `session-start.vendor-guide` | `vendor/*/CLAUDE.md` | `authored` | One Home Per Fact, One Door | `allow_declared_home`<br />`path_conformance` | vendored third-party — we do not govern its contents | `active` |
108
+ | `docs.index.root` | `docs/INDEX.md` | `authored` | One Home Per Fact, One Door | `allow_declared_home`<br />`path_conformance` | docs maintainers | `active` |
109
+ | `docs.index.marketing-segments` | `apps/rdc-marketing-engine/docs/segments/INDEX.md` | `authored` | One Home Per Fact, One Door | `allow_declared_home`<br />`path_conformance` | rdc-marketing-engine | `active` |
110
+ | `session-start.prototype-guide` | `apps/rdc-website/docs/prototypes/web-of-relation/CLAUDE.md` | `authored` | One Home Per Fact, One Door | `allow_declared_home`<br />`path_conformance` | rdc-website prototypes | `active` |
111
+ | `docs.index.codeflow-research` | `docs/systems/codeflow/research-papers/INDEX.md` | `authored` | One Home Per Fact, One Door | `allow_declared_home`<br />`path_conformance` | codeflow research | `active` |
105
112
 
106
113
  ## Projection Contract
107
114
 
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  name: rpms-filemap
3
+ description: "Generated RPMS file map — RULE #1, canonical homes, and Context Export pointers served from regen-root manifest."
3
4
  slash: "rdc:rpms-filemap"
4
5
  category: "tooling"
5
6
  usage: "rdc:rpms-filemap"
@@ -10,12 +11,13 @@ triggers:
10
11
  - "context export"
11
12
  - "where does this file belong"
12
13
  - "where should pm artifacts go"
13
- description: "rdc:rpms-filemap () — Generated RPMS file map — RULE #1, canonical homes, and Context Export pointers served from regen-root mani..."
14
14
  ---
15
- # RPMS File Map
15
+
16
16
  > **⚠️ OUTPUT CONTRACT (READ FIRST):** `guides/output-contract.md`
17
- > Return the requested file-map guidance directly; do not dump raw manifests or logs.
17
+ > Checklist-only output. No tool-call narration. No raw MCP/JSON/log dumps.
18
+ > One checklist upfront, updated in place, shown again at end with a 1-line verdict.
18
19
 
20
+ # RPMS File Map
19
21
  > GENERATED FILE - DO NOT HAND-EDIT.
20
22
  > Source of truth: `docs/architecture/rpms.locations.json`
21
23
  > Regenerate: `pnpm rpms:gen-filemap`
@@ -48,8 +50,8 @@ If you are touching an entity, read its generated `_context.md` before any local
48
50
  |----------|------|----|-----|-------------|-------|--------|
49
51
  | `session-start.claude-ai.root` | `CLAUDE.ai.md` | `read_only` | One Door | `block_wrong_home`<br />`path_conformance` | repo-root | `active` |
50
52
  | `session-start.claude.root` | `CLAUDE.md` | `read_only` | One Door | `block_wrong_home`<br />`path_conformance` | repo-root | `active` |
51
- | `session-start.decision.spine-lock` | `.rdc/plans/project-relationship-graph-approval.md` | `read_only` | One Spine, One Door | `block_wrong_home`<br />`path_conformance` | .rdc/plans/project-relationship-graph-approval.md | `active` |
52
- | `session-start.decision.cs2-lock` | `.rdc/plans/mdk-knowledge-decisions-and-workitems-2026-06-02.md` | `read_only` | One Direction, One Door | `block_wrong_home`<br />`path_conformance` | .rdc/plans/mdk-knowledge-decisions-and-workitems-2026-06-02.md | `active` |
53
+ | `session-start.decision.spine-lock` | `.rdc/areas/rdc/project/plans/project-relationship-graph-approval.md` | `read_only` | One Spine, One Door | `block_wrong_home`<br />`path_conformance` | .rdc/areas/rdc/project/plans/project-relationship-graph-approval.md | `active` |
54
+ | `session-start.decision.cs2-lock` | `.rdc/areas/cs2/mdk/plans/mdk-knowledge-decisions-and-workitems-2026-06-02.md` | `read_only` | One Direction, One Door | `block_wrong_home`<br />`path_conformance` | .rdc/areas/cs2/mdk/plans/mdk-knowledge-decisions-and-workitems-2026-06-02.md | `active` |
53
55
  | `session-start.glossary.layer-model` | `docs/systems/cs2/LAYER-MODEL-AND-VOCABULARY.md` | `read_only` | One Door | `block_wrong_home`<br />`path_conformance` | docs/systems/cs2/LAYER-MODEL-AND-VOCABULARY.md | `active` |
54
56
 
55
57
  ### Database Gates
@@ -92,7 +94,8 @@ If you are touching an entity, read its generated `_context.md` before any local
92
94
 
93
95
  | Artifact | Home | RW | Law | Enforcement | Owner | Status |
94
96
  |----------|------|----|-----|-------------|-------|--------|
95
- | `operational-door.rdc.plans` | `.rdc/plans/**` | `authored` | One Home Per Fact, One Direction | `allow_declared_home`<br />`path_conformance` | RDC planning workflow | `active` |
97
+ | `operational-door.rdc.plans` | `.rdc/areas/**/{plans,research,reports,decisions,logs,arch,guides}/**` | `authored` | One Home Per Fact, One Direction | `allow_declared_home`<br />`path_conformance` | RDC planning workflow | `active` |
98
+ | `operational-door.rdc.plans.compatibility` | `.rdc/plans/**` | `generated` | One Home Per Fact, One Direction | `allow_declared_home`<br />`path_conformance`<br />Retire only through the approved area-first-v1 activation receipt. | RDC path migration compiler | `active` |
96
99
  | `operational-door.rdc.reports` | `.rdc/reports/**` | `generated` | One Direction | `allow_declared_home`<br />`path_conformance` | rdc:report | `active` |
97
100
  | `operational-door.rdc.lessons` | `.rdc/lessons/**` | `append_only` | One Direction, One Home Per Fact | `allow_declared_home`<br />`path_conformance` | RDC lesson capture workflow | `active` |
98
101
  | `operational-door.rpms-filemap.rule` | `.claude/rules/rpms-filemap.md`<br />created_by: `scripts/rpms/gen-filemap.ts` | `generated` | One Home Per Fact, One Direction, One Door | `block_manual_edit`<br />`projection_drift` | scripts/rpms/gen-filemap.ts | `active` |
@@ -102,6 +105,16 @@ If you are touching an entity, read its generated `_context.md` before any local
102
105
  | Artifact | Home | RW | Law | Enforcement | Owner | Status |
103
106
  |----------|------|----|-----|-------------|-------|--------|
104
107
  | `session-start.app-guide` | `apps/*/CLAUDE.md` | `read_only` | One Door | `block_wrong_home`<br />`path_conformance` | app-local architecture guides | `active` |
108
+ | `session-start.package-guide` | `packages/*/CLAUDE.md` | `authored` | One Home Per Fact, One Door | `allow_declared_home`<br />`path_conformance` | package-local architecture guides | `active` |
109
+ | `session-start.site-guide` | `sites/*/CLAUDE.md` | `authored` | One Home Per Fact, One Door | `allow_declared_home`<br />`path_conformance` | site-local guides | `active` |
110
+ | `session-start.model-guide` | `models/*/CLAUDE.md` | `authored` | One Home Per Fact, One Door | `allow_declared_home`<br />`path_conformance` | model-local guides | `active` |
111
+ | `session-start.mcp-server-guide` | `mcp-servers/*/CLAUDE.md` | `authored` | One Home Per Fact, One Door | `allow_declared_home`<br />`path_conformance` | mcp-server guides | `active` |
112
+ | `session-start.worker-guide` | `workers/*/CLAUDE.md` | `authored` | One Home Per Fact, One Door | `allow_declared_home`<br />`path_conformance` | worker guides | `active` |
113
+ | `session-start.vendor-guide` | `vendor/*/CLAUDE.md` | `authored` | One Home Per Fact, One Door | `allow_declared_home`<br />`path_conformance` | vendored third-party — we do not govern its contents | `active` |
114
+ | `docs.index.root` | `docs/INDEX.md` | `authored` | One Home Per Fact, One Door | `allow_declared_home`<br />`path_conformance` | docs maintainers | `active` |
115
+ | `docs.index.marketing-segments` | `apps/rdc-marketing-engine/docs/segments/INDEX.md` | `authored` | One Home Per Fact, One Door | `allow_declared_home`<br />`path_conformance` | rdc-marketing-engine | `active` |
116
+ | `session-start.prototype-guide` | `apps/rdc-website/docs/prototypes/web-of-relation/CLAUDE.md` | `authored` | One Home Per Fact, One Door | `allow_declared_home`<br />`path_conformance` | rdc-website prototypes | `active` |
117
+ | `docs.index.codeflow-research` | `docs/systems/codeflow/research-papers/INDEX.md` | `authored` | One Home Per Fact, One Door | `allow_declared_home`<br />`path_conformance` | codeflow research | `active` |
105
118
 
106
119
  ## Projection Contract
107
120
 
@@ -1,101 +1,101 @@
1
- {
2
- "manifest_version": 1,
3
- "skill": "rdc:onramp",
4
- "description": "Tier-2 self-test for rdc:onramp enrollment skill",
5
- "tier": 2,
6
- "sandbox": true,
7
- "env": {
8
- "RDC_TEST": "1"
9
- },
10
- "invocation": {
11
- "slug": "onramp-selftest",
12
- "name": "Onramp Self Test",
13
- "flags": ["--archetype", "working-landscapes", "--dry-run"]
14
- },
15
- "fixture": {
16
- "prompt": "rdc:onramp onramp-selftest --name \"Onramp Self Test\" --archetype working-landscapes --dry-run",
17
- "env": { "RDC_\u0054EST": "1" },
18
- "slow": true
19
- },
20
- "assertions": {
21
- "exit_code": 0,
22
- "stdout_contains": ["Preflight", "Resolve drift"]
23
- },
24
- "acceptance": {
25
- "output_contains": ["Preflight", "Resolve drift", "disk-ahead", "already-enrolled"],
26
- "output_not_contains": ["hand-edit _context.md", "raw insert"]
27
- },
28
- "legacy_assertions": [
29
- {
30
- "type": "exit_code",
31
- "expect": 0,
32
- "description": "Skill exits cleanly under RDC_TEST with --dry-run"
33
- },
34
- {
35
- "type": "stdout_contains",
36
- "pattern": "Preflight",
37
- "description": "Checklist begins with Preflight step"
38
- },
39
- {
40
- "type": "stdout_contains",
41
- "pattern": "Resolve drift",
42
- "description": "Drift resolution step is emitted"
43
- },
44
- {
45
- "type": "stdout_contains",
46
- "pattern": "\\[RDC_TEST\\]",
47
- "description": "Sandbox short-circuit marker present — confirms external calls were skipped"
48
- },
49
- {
50
- "type": "file_absent",
51
- "path": "places/onramp-selftest/_context.md",
52
- "description": "Scaffolder MUST NOT write _context.md — projection-drift violation gate"
53
- }
54
- ],
55
- "door_contracts": [
56
- {
57
- "name": "enroll_place_signature",
58
- "description": "enroll_place RPC must accept (text, text, jsonb, text) and return jsonb",
59
- "type": "rpc_introspection",
60
- "project_id": "uvojezuorjgqzmhhgluu",
61
- "query": "SELECT p.proname, pg_get_function_identity_arguments(p.oid) AS args, pg_get_function_result(p.oid) AS returns FROM pg_proc p WHERE p.proname = 'enroll_place';",
62
- "expect_args_contains": ["text", "jsonb"],
63
- "expect_returns": "jsonb"
64
- },
65
- {
66
- "name": "insert_work_item_accepts_project_node_id",
67
- "description": "insert_work_item must accept p_project_node_id parameter",
68
- "type": "rpc_introspection",
69
- "project_id": "uvojezuorjgqzmhhgluu",
70
- "query": "SELECT proname, pg_get_function_identity_arguments(oid) FROM pg_proc WHERE proname = 'insert_work_item';",
71
- "expect_args_contains": ["p_project_node_id"]
72
- }
73
- ],
74
- "disk_ahead_test": {
75
- "description": "disk-ahead state must STOP and open a reconciliation work item",
76
- "setup": "mkdir -p places/disk-ahead-test",
77
- "invocation_slug": "disk-ahead-test",
78
- "invocation_name": "Disk Ahead Test",
79
- "assertions": [
80
- {
81
- "type": "stdout_contains",
82
- "pattern": "disk-ahead",
83
- "description": "Skill identifies the disk-ahead state"
84
- },
85
- {
86
- "type": "stdout_contains",
87
- "pattern": "STOP",
88
- "description": "Skill STOPs on disk-ahead"
89
- },
90
- {
91
- "type": "exit_nonzero",
92
- "description": "Skill exits non-zero on disk-ahead (not a clean enrollment)"
93
- }
94
- ],
95
- "teardown": "rmdir places/disk-ahead-test 2>/dev/null || true"
96
- },
97
- "idempotency_test": {
98
- "description": "Running rdc:onramp twice for already-enrolled should produce zero new writes",
99
- "note": "Under RDC_TEST=1 this is verified by checking that [RDC_TEST] skipping markers appear (not real insert calls) and the checklist reports already-enrolled"
100
- }
101
- }
1
+ {
2
+ "manifest_version": 1,
3
+ "skill": "rdc:onramp",
4
+ "description": "Tier-2 self-test for rdc:onramp enrollment skill",
5
+ "tier": 2,
6
+ "sandbox": true,
7
+ "env": {
8
+ "RDC_TEST": "1"
9
+ },
10
+ "invocation": {
11
+ "slug": "onramp-selftest",
12
+ "name": "Onramp Self Test",
13
+ "flags": ["--archetype", "working-landscapes", "--dry-run"]
14
+ },
15
+ "fixture": {
16
+ "prompt": "rdc:onramp onramp-selftest --name \"Onramp Self Test\" --archetype working-landscapes --dry-run",
17
+ "env": { "RDC_\u0054EST": "1" },
18
+ "slow": true
19
+ },
20
+ "assertions": {
21
+ "exit_code": 0,
22
+ "stdout_contains": ["Preflight", "Resolve drift"]
23
+ },
24
+ "acceptance": {
25
+ "output_contains": ["Preflight", "Resolve drift", "disk-ahead", "already-enrolled"],
26
+ "output_not_contains": ["hand-edit _context.md", "raw insert"]
27
+ },
28
+ "legacy_assertions": [
29
+ {
30
+ "type": "exit_code",
31
+ "expect": 0,
32
+ "description": "Skill exits cleanly under RDC_TEST with --dry-run"
33
+ },
34
+ {
35
+ "type": "stdout_contains",
36
+ "pattern": "Preflight",
37
+ "description": "Checklist begins with Preflight step"
38
+ },
39
+ {
40
+ "type": "stdout_contains",
41
+ "pattern": "Resolve drift",
42
+ "description": "Drift resolution step is emitted"
43
+ },
44
+ {
45
+ "type": "stdout_contains",
46
+ "pattern": "\\[RDC_TEST\\]",
47
+ "description": "Sandbox short-circuit marker present — confirms external calls were skipped"
48
+ },
49
+ {
50
+ "type": "file_absent",
51
+ "path": "places/onramp-selftest/_context.md",
52
+ "description": "Scaffolder MUST NOT write _context.md — projection-drift violation gate"
53
+ }
54
+ ],
55
+ "door_contracts": [
56
+ {
57
+ "name": "enroll_place_signature",
58
+ "description": "enroll_place RPC must accept (text, text, jsonb, text) and return jsonb",
59
+ "type": "rpc_introspection",
60
+ "project_id": "uvojezuorjgqzmhhgluu",
61
+ "query": "SELECT p.proname, pg_get_function_identity_arguments(p.oid) AS args, pg_get_function_result(p.oid) AS returns FROM pg_proc p WHERE p.proname = 'enroll_place';",
62
+ "expect_args_contains": ["text", "jsonb"],
63
+ "expect_returns": "jsonb"
64
+ },
65
+ {
66
+ "name": "insert_work_item_accepts_project_node_id",
67
+ "description": "insert_work_item must accept p_project_node_id parameter",
68
+ "type": "rpc_introspection",
69
+ "project_id": "uvojezuorjgqzmhhgluu",
70
+ "query": "SELECT proname, pg_get_function_identity_arguments(oid) FROM pg_proc WHERE proname = 'insert_work_item';",
71
+ "expect_args_contains": ["p_project_node_id"]
72
+ }
73
+ ],
74
+ "disk_ahead_test": {
75
+ "description": "disk-ahead state must STOP and open a reconciliation work item",
76
+ "setup": "mkdir -p places/disk-ahead-test",
77
+ "invocation_slug": "disk-ahead-test",
78
+ "invocation_name": "Disk Ahead Test",
79
+ "assertions": [
80
+ {
81
+ "type": "stdout_contains",
82
+ "pattern": "disk-ahead",
83
+ "description": "Skill identifies the disk-ahead state"
84
+ },
85
+ {
86
+ "type": "stdout_contains",
87
+ "pattern": "STOP",
88
+ "description": "Skill STOPs on disk-ahead"
89
+ },
90
+ {
91
+ "type": "exit_nonzero",
92
+ "description": "Skill exits non-zero on disk-ahead (not a clean enrollment)"
93
+ }
94
+ ],
95
+ "teardown": "rmdir places/disk-ahead-test 2>/dev/null || true"
96
+ },
97
+ "idempotency_test": {
98
+ "description": "Running rdc:onramp twice for already-enrolled should produce zero new writes",
99
+ "note": "Under RDC_TEST=1 this is verified by checking that [RDC_TEST] skipping markers appear (not real insert calls) and the checklist reports already-enrolled"
100
+ }
101
+ }
@@ -1,12 +1,12 @@
1
- {
2
- "manifest_version": 1,
3
- "skill": "rdc:env",
4
- "description": "Environment status is read-only and reports installed version.",
5
- "fixture": { "prompt": "rdc:env status", "env": { "RDC_\u0054EST": "1" }, "slow": false },
6
- "assertions": { "exit_code": 0, "stdout_contains": ["Environment"] },
7
- "acceptance": {
8
- "output_contains": ["version", "status"],
9
- "output_not_contains": ["force", "delete environment"]
10
- },
11
- "teardown": { "reset_branch": true }
12
- }
1
+ {
2
+ "manifest_version": 1,
3
+ "skill": "rdc:env",
4
+ "description": "Environment status is read-only and reports installed version.",
5
+ "fixture": { "prompt": "rdc:env status", "env": { "RDC_\u0054EST": "1" }, "slow": false },
6
+ "assertions": { "exit_code": 0, "stdout_contains": ["Environment"] },
7
+ "acceptance": {
8
+ "output_contains": ["version", "status"],
9
+ "output_not_contains": ["force", "delete environment"]
10
+ },
11
+ "teardown": { "reset_branch": true }
12
+ }
@@ -1,12 +1,12 @@
1
- {
2
- "manifest_version": 1,
3
- "skill": "rdc:new-model",
4
- "description": "New-model registration begins with the canonical gate.",
5
- "fixture": { "prompt": "rdc:new-model example-model", "env": { "RDC_\u0054EST": "1" }, "slow": true },
6
- "assertions": { "exit_code": 0, "stdout_contains": ["New Model"] },
7
- "acceptance": {
8
- "output_contains": ["canonical", "registration"],
9
- "output_not_contains": ["raw insert", "skip gate"]
10
- },
11
- "teardown": { "reset_branch": true }
12
- }
1
+ {
2
+ "manifest_version": 1,
3
+ "skill": "rdc:new-model",
4
+ "description": "New-model registration begins with the canonical gate.",
5
+ "fixture": { "prompt": "rdc:new-model example-model", "env": { "RDC_\u0054EST": "1" }, "slow": true },
6
+ "assertions": { "exit_code": 0, "stdout_contains": ["New Model"] },
7
+ "acceptance": {
8
+ "output_contains": ["canonical", "registration"],
9
+ "output_not_contains": ["raw insert", "skip gate"]
10
+ },
11
+ "teardown": { "reset_branch": true }
12
+ }
@@ -1,29 +1,29 @@
1
- {
2
- "manifest_version": 1,
3
- "skill": "rdc:refactor",
4
- "description": "Refactor preserves evidence and isolates all dispatched writers.",
5
- "fixture": {
6
- "prompt": "rdc:refactor hook-scope --takeover \"corrective consolidation\"",
7
- "env": { "RDC_\u0054EST": "1" },
8
- "slow": true
9
- },
10
- "assertions": {
11
- "exit_code": 0,
12
- "commits_made": { "min": 0 },
13
- "stdout_contains": ["RDC Refactor"]
14
- },
15
- "acceptance": {
16
- "output_contains": [
17
- "consolidate_work_items_into_epic",
18
- "unique leased worktree",
19
- "collaboration manifest",
20
- "validator"
21
- ],
22
- "output_not_contains": [
23
- "raw update",
24
- "shared working directory",
25
- "archive all"
26
- ]
27
- },
28
- "teardown": { "reset_branch": true }
29
- }
1
+ {
2
+ "manifest_version": 1,
3
+ "skill": "rdc:refactor",
4
+ "description": "Refactor preserves evidence and isolates all dispatched writers.",
5
+ "fixture": {
6
+ "prompt": "rdc:refactor hook-scope --takeover \"corrective consolidation\"",
7
+ "env": { "RDC_\u0054EST": "1" },
8
+ "slow": true
9
+ },
10
+ "assertions": {
11
+ "exit_code": 0,
12
+ "commits_made": { "min": 0 },
13
+ "stdout_contains": ["RDC Refactor"]
14
+ },
15
+ "acceptance": {
16
+ "output_contains": [
17
+ "consolidate_work_items_into_epic",
18
+ "unique leased worktree",
19
+ "collaboration manifest",
20
+ "validator"
21
+ ],
22
+ "output_not_contains": [
23
+ "raw update",
24
+ "shared working directory",
25
+ "archive all"
26
+ ]
27
+ },
28
+ "teardown": { "reset_branch": true }
29
+ }