@ericrisco/rsc 1.3.4 → 1.3.5

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/manifest.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "1.3.4",
2
+ "version": "1.3.5",
3
3
  "counts": {
4
4
  "skills": 272,
5
5
  "agents": 33,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ericrisco/rsc",
3
- "version": "1.3.4",
3
+ "version": "1.3.5",
4
4
  "description": "A guided harness builder that turns your goal into a minimal, verified AI-agent setup using strict best practices.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -335,7 +335,10 @@ export function missingHarnessFloor(cwd = process.cwd(), plan = {}) {
335
335
  // Un camino que no se puede usar se reporta como NO satisfecho, nunca como satisfecho, y sin
336
336
  // repetir su contenido: es dato ajeno y va a un canal que lee un agente.
337
337
  if (!usable) { missing.push('missing harness floor <invalid declaration>'); continue; }
338
- if (!floorSatisfied(cwd, path)) missing.push(`missing harness floor ${floorKey(path)}/`);
338
+ // La barra sólo si el camino declarado la traía: el suelo condicional es un FICHERO, y decir
339
+ // `constitution.md/` invita a buscar un directorio que no existe.
340
+ const shown = String(path).endsWith('/') ? `${floorKey(path)}/` : floorKey(path);
341
+ if (!floorSatisfied(cwd, path)) missing.push(`missing harness floor ${shown}`);
339
342
  }
340
343
  return missing;
341
344
  }
@@ -80,6 +80,14 @@ export function scanProject(root = process.cwd()) {
80
80
  // con él el reintento que la documentación pide tras reparar el suelo. Los proveedores reales
81
81
  // que el usuario añada bajo `01-TOOLS/` sí siguen contando: son suyos, no nuestros.
82
82
  if (rel === '01-TOOLS/_TEMPLATE' || rel.startsWith('01-TOOLS/_TEMPLATE/')) continue;
83
+ // Y los artefactos de la propia cadena SDD, por el mismo invariante y por una razón que costó
84
+ // un release descubrir: la constitución es un `.md`, así que contaba como evidencia de
85
+ // proyecto. Eso movía la identidad del plan justo después de que el agente la escribiera —
86
+ // obedeciendo a `site/llms.txt`, que le manda reparar el suelo y reintentar hasta obtener
87
+ // READY— y hacía ese reintento imposible. Arreglar sólo `01-TOOLS/_TEMPLATE/` tapó la mitad
88
+ // del agujero: la que produce el instalador, no la que produce la reparación.
89
+ // `inbox/` y `raw/` NO se excluyen: eso es material del usuario y sí es evidencia.
90
+ if (rel === '02-DOCS/wiki/sdd' || rel.startsWith('02-DOCS/wiki/sdd/')) continue;
83
91
  if (entry.isDirectory()) { visit(path); continue; }
84
92
  if (!entry.isFile()) continue;
85
93
  let isSignal = manifests.has(entry.name) || entry.name.endsWith('.md');