@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.
- package/.claude-plugin/plugin.json +1 -1
- package/.github/workflows/self-test.yml +34 -34
- package/MANIFEST.md +224 -224
- package/VALIDATOR-ARCHITECTURE.md +18 -0
- package/bin/rdc-skills-mcp.mjs +47 -2
- package/clauth-plugin.json +2 -0
- package/guides/agent-bootstrap.md +26 -7
- package/guides/agents/backend.md +102 -102
- package/guides/agents/content.md +94 -94
- package/guides/agents/cs2.md +56 -56
- package/guides/agents/data.md +86 -86
- package/guides/agents/design.md +77 -77
- package/guides/agents/frontend.md +91 -91
- package/guides/agents/infrastructure.md +81 -81
- package/guides/agents/setup.md +272 -272
- package/guides/agents/verify.md +119 -119
- package/guides/agents/viz.md +106 -106
- package/guides/orchestration-epic.md +17 -17
- package/package.json +2 -1
- package/scripts/self-test.mjs +1459 -1459
- package/skills/behavior-audit/agents/openai.yaml +4 -4
- package/skills/build/SKILL.md +13 -2
- package/skills/deploy/SKILL.md +82 -533
- package/skills/edit/SKILL.md +8 -1
- package/skills/open/SKILL.md +73 -7
- package/skills/plan/SKILL.md +1 -1
- package/skills/release/SKILL.md +5 -4
- package/skills/review/SKILL.md +11 -0
- package/skills/rpms-filemap/SKILL.cloud.md +14 -7
- package/skills/rpms-filemap/SKILL.md +19 -6
- package/skills/tests/onramp.test.json +101 -101
- package/skills/tests/rdc-env.test.json +12 -12
- package/skills/tests/rdc-new-model.test.json +12 -12
- package/skills/tests/rdc-refactor.test.json +29 -29
- package/skills/tests/rdc-regen-media.test.json +29 -29
package/skills/edit/SKILL.md
CHANGED
|
@@ -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
|
-
`
|
|
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.
|
package/skills/open/SKILL.md
CHANGED
|
@@ -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
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
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. **
|
|
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
|
|
package/skills/plan/SKILL.md
CHANGED
|
@@ -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 |
|
|
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:**
|
package/skills/release/SKILL.md
CHANGED
|
@@ -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
|
-
`
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
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
|
|
package/skills/review/SKILL.md
CHANGED
|
@@ -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
|
-
|
|
15
|
+
|
|
16
16
|
> **⚠️ OUTPUT CONTRACT (READ FIRST):** `guides/output-contract.md`
|
|
17
|
-
>
|
|
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
|
+
}
|