@lifeaitools/rdc-skills 0.24.41 → 0.24.42

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rdc",
3
- "version": "0.24.41",
3
+ "version": "0.24.42",
4
4
  "description": "RDC typed-agent dispatch skill suite for Claude Code — plan, build, review, overnight unattended builds with work-item tracking and TDD enforcement.",
5
5
  "author": {
6
6
  "name": "LIFEAI",
package/git-sha.json CHANGED
@@ -1,3 +1,3 @@
1
1
  {
2
- "sha": "408b38eb25e28bd69cb76439e37730b077f3841e"
2
+ "sha": "3bc908e850bac783d6c90ab040d081e4c763274a"
3
3
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lifeaitools/rdc-skills",
3
- "version": "0.24.41",
3
+ "version": "0.24.42",
4
4
  "description": "RDC typed-agent dispatch skill suite for Claude Code - plan, build, review, overnight builds",
5
5
  "keywords": [
6
6
  "claude-code",
@@ -199,15 +199,15 @@ The audit must name what was inspected, the evidence found or missing, the concl
199
199
 
200
200
  ### 3. Architectural report and interview gate
201
201
 
202
- After the synthesis artifacts are complete, write the full architectural report for every `still-open` architectural cluster. For each one include the decision to make, affected systems, options and tradeoffs, recommendation, unresolved risks, and the result of the resolution audit. This produces the complete decision table, but does **not** interrupt the simple remediation batch.
202
+ After the synthesis artifacts are complete, write the full architectural report for every `still-open` architectural cluster. For each one include the decision to make, affected systems, options and tradeoffs, recommendation, unresolved risks, and the result of the resolution audit. This produces the complete decision table and is the required gate before every routed fix.
203
203
 
204
- Create a complete interview list from that report before changing any architectural file. In attended mode, execute and verify the correlated simple batches first, then ask every required architectural question via `AskUserQuestion`, one question at a time, and record the question, answer, decision, rationale, and affected cluster. Do not start architectural fixes until all interview questions have answers or the corresponding cluster is explicitly deferred. Silence is not approval.
204
+ Create a complete interview list from that report before changing any file. In attended mode, ask every required architectural question via `AskUserQuestion`, one question at a time, and record the question, answer, decision, rationale, and affected cluster. Do not start simple or architectural fixes until all interview questions have answers or the corresponding cluster is explicitly deferred. Silence is not approval.
205
205
 
206
206
  If there are no architectural decisions, record `Architectural interview: none required` in the report before continuing. In unattended mode, do not guess: create the equivalent `human_items` decision records for every unresolved architectural question, link a work item, and defer those clusters.
207
207
 
208
- ### 4. Route only still-open work through RDC
208
+ ### 4. Route only still-open, approved work through RDC
209
209
 
210
- After the resolution audit, route every simple executable cluster through an RDC lifecycle with a complete work item, required checklist evidence, implementation report, review status, validator closure, commit, and push. Direct edits outside an RDC work item are forbidden. Route architectural clusters only after the complete architectural interview.
210
+ After the resolution audit and the complete architectural interview, route every approved executable cluster through an RDC lifecycle with a complete work item, required checklist evidence, implementation report, review status, validator closure, commit, and push. Direct edits outside an RDC work item are forbidden.
211
211
 
212
212
  - `scope: simple` — invoke `rdc:fixit` when the change is genuinely under five files and thirty minutes; `rdc:fixit` creates and completes the sole work item. Include the cluster and lesson ids in its description and action-register entry. Otherwise use `rdc:plan` followed by `rdc:build`.
213
213
  - `scope: architectural` — use `rdc:plan` followed by `rdc:build` unless the approved change is genuinely within the `rdc:fixit` threshold. The plan must contain the approved interview decision and acceptance checks.
@@ -227,7 +227,7 @@ Add a `## Weekly Lessons Triage` section to `.rdc/reports/YYYY-MM-DD-housekeepin
227
227
 
228
228
  ### Attended mode (default — a human is present)
229
229
 
230
- The attended run follows sections 1, 2, and 4 for all simple clusters first, then section 3 for the complete architectural interview, then section 4 for approved architectural work, and finally section 5. Set `lesson_status: applied` only after the routed work item has passed review, the commit is pushed, required dev deployment evidence is recorded, and the commit is linked.
230
+ The attended run follows sections 1 through 5 in order. The full interview list and all answers are collected before the first routed fix starts; then batch approved fixes by lifecycle and target. Set `lesson_status: applied` only after the routed work item has passed review, the commit is pushed, required dev deployment evidence is recorded, and the commit is linked.
231
231
 
232
232
  ### Unattended mode (no human — overnight / cron / `rdc:overnight`)
233
233
 
@@ -18,7 +18,7 @@ function mustAppearInOrder(text, fragments, name) {
18
18
  }
19
19
  }
20
20
 
21
- assert.match(skill, /lesson_status: open/, 'housekeeping must read the current lesson status field');
21
+ assert.match(skill, /canonical `lesson_status`/, 'housekeeping must normalize to the current lesson status field');
22
22
  assert.doesNotMatch(skill, /(?:set|mark) `status: (?:open|triaged|applied|wont-fix)/, 'housekeeping must use lesson_status for triage outcomes');
23
23
  assert.match(skill, /do not create new work/i, 'the audit must prevent duplicate work');
24
24
  assert.doesNotMatch(skill, /scope: simple.*apply the fix directly/s, 'simple lessons cannot bypass RDC routing');
@@ -19,8 +19,9 @@ assert.match(guide, /`status` and no `lesson_status`/);
19
19
  const housekeeping = readFileSync(join(root, 'skills', 'housekeeping', 'SKILL.md'), 'utf8');
20
20
  assert.match(housekeeping, /When invoked with `--lessons`, skip every non-lessons maintenance section/);
21
21
  assert.match(housekeeping, /including Directory Structure Verification/);
22
- const legacyNormalization = housekeeping.indexOf('normalize every legacy lesson that has `status` but no `lesson_status`');
23
- const openFilter = housekeeping.indexOf('Then read all `.rdc/lessons/*.md` with `lesson_status: open`');
24
- assert.ok(legacyNormalization >= 0 && openFilter > legacyNormalization, 'legacy lessons must be normalized before the open-status filter');
22
+ const legacyNormalization = housekeeping.search(/normalize every\s+legacy lesson that has `status` but no `lesson_status`/i);
23
+ const clustering = housekeeping.search(/### 1\. Cluster/);
24
+ assert.ok(legacyNormalization >= 0 && clustering > legacyNormalization, 'legacy lessons must be normalized before clustering');
25
+ assert.match(housekeeping, /all answers are collected before the first routed fix starts/i);
25
26
 
26
27
  console.log('lessons pipeline contract test passed');