Reconstrucción de memoria a partir de Leval, Souchy, Casanova, Ovejero y Redalyc, sin páginas a mano: certeza **A** en el principio (necesidad, no rendimiento), **B** en la forma del reparto y **C** en las cifras de las escalas, según la escala de `draft.md` §2. Todo lo que sigue es **[doctrina, sin verbatim]**. Confírmalo en Leval (*Colectividades libertarias en España*, capítulos de Aragón y Levante, donde reproduce escalas de pueblos concretos), en Souchy (familias de combatientes) y en Ovejero (§ sobre el salario familiar) antes de citar. **Puntos principales del tema «Salario familiar: distribución según necesidades» (reconstrucción)** | # | Tesis | Cert. | | --- | --- | --- | | 1 | **El salario familiar sustituye al salario individual**: se reparte por hogar y por necesidad, no por horas, rendimiento ni categoría. «De cada uno según sus facultades; a cada uno según sus necesidades» | A | | 2 | **Escala por composición del hogar**: una cantidad base para el cabeza de familia, incrementos por cónyuge y por cada hijo o dependiente; en muchos pueblos la escala era **decreciente** por miembro adicional. Las cifras varían pueblo a pueblo | B (escala) / C (cifras) | | 3 | **La necesidad no depende de la aportación**: enfermos, ancianos, viudas y las familias de los milicianos en el frente cobran el salario familiar íntegro sin haber trabajado | A/B | | 4 | **La escala la fija la asamblea** y la comisión administrativa la aplica y lleva el registro; las excepciones (un enfermo crónico, una familia numerosa) se votan | A | | 5 | **El trabajo es obligación de todos los aptos según sus facultades**, organizados en grupos; trabajar más no da más salario. Las horas se anotaban, pero para organizar el trabajo, no para cobrar | B | | 6 | **Forma del cobro**: en muchas colectividades el salario se pagaba en vales o carnet de consumo canjeables en el almacén de la colectividad, no en dinero; donde subsistía la peseta, en dinero | B | | 7 | **Bienes de primera necesidad fuera del salario**: pan, aceite, vivienda, luz, médico, escuela eran libres o gratuitos; el salario familiar cubría el resto. Con abundancia, consumo libre; con escasez, racionamiento por hogar | B | | 8 | **Unidad familiar = hogar de convivencia**, registrado en el carnet de familia; una persona pertenece a un solo hogar; el soltero es hogar de uno | B/C | | 9 | **Suelo garantizado y sin acumulación**: nadie por debajo del salario familiar; los vales no se atesoraban (caducidad o límite) y no había techo de riqueza porque no había riqueza individual que acumular | C | **Ficha de confirmación del mapeo** (fuente: [draftv0.md](../drafts/draftv0.md)) - **Mapeado:** tesis 1 → criterio 4 en [§3](../drafts/draftv0.md#L126), hallazgos [3](../drafts/draftv0.md#L13) y [4](../drafts/draftv0.md#L14), [C](../drafts/draftv0.md#L142) y [D](../drafts/draftv0.md#L146), parches [CL-3](../drafts/draftv0.md#L170) (`disposition: "needs"`) y [CL-4](../drafts/draftv0.md#L171) (`coef(hogar)` en lugar de `1 + karma/100`), tareas [TK-B'01](../drafts/draftv0.md#L224) y [TK-B'03](../drafts/draftv0.md#L226); tesis 2 → [TK-D'02](../drafts/draftv0.md#L193) (fórmula, default `1 + 0,5` por dependiente, alternativa por tramos de edad); tesis 4 → CL-3 (`subject: "distribute"` votable, ya corregido en la ficha 01) y el default de TK-D'02 («la escala la fija la asamblea de la tribu»); tesis 8 → [CL-9](../drafts/draftv0.md#L176), [TK-D'08](../drafts/draftv0.md#L199) y [TK-B'02](../drafts/draftv0.md#L231) (una persona, un solo hogar, validado por la asamblea), con el hallazgo [F](../drafts/draftv0.md#L154) como diagnóstico (`inhabitants_model.js:86-88`, un feed, una persona); tesis 6 y 7 → parcialmente, por [CL-6](../drafts/draftv0.md#L173), [TK-E'01](../drafts/draftv0.md#L237) (precio 0) y [TK-E'02](../drafts/draftv0.md#L238) (carnet de consumo por tribu), que pertenecen a la ficha 06 pero son la forma de cobro de este tema; tesis 9 → «[Lo que no se toca](../drafts/draftv0.md#L180)» conserva el suelo inmovible (`banking_model.js:941`, verificado: `Math.max(floorUbi, ...)`). - **Acierto no explicitado 1:** la escala de la RBU ya es paramétrica. `computeEpoch` recibe `rules` como argumento ([L920](vendor/oasis/src/models/banking_model.js#L920)) y lee de ahí techo y suelo ([L925](vendor/oasis/src/models/banking_model.js#L925), [L928](vendor/oasis/src/models/banking_model.js#L928)). La tesis 4 (la asamblea fija la escala) tiene costura: basta que la `tribeParliamentRule` de CL-5 suministre esas `rules` en vez de `DEFAULT_RULES` ([L14-L21](vendor/oasis/src/models/banking_model.js#L14-L21)). Draftv0 no lo dice. - **Acierto no explicitado 2:** el código ya lleva la cuenta de «cada uno según sus facultades». Una aportación `labor` exige horas positivas ([L827](vendor/oasis/src/models/industry_model.js#L827)), se indexa con sus horas ([L85](vendor/oasis/src/models/industry_model.js#L85)) y los planos declaran `laborHours` ([L288](vendor/oasis/src/models/industry_model.js#L288)). La tesis 5 pide conservar ese registro y desligarlo del cobro; CL-3 lo desliga pero no dice que se conserva, y TK-S'02 lo necesita para la jornada. - **Hueco 1 (grave):** la tesis 3 (cobrar sin haber aportado) no tiene parche ni tarea, y el código la niega dos veces. En la industria, `computeDistributionPlan` itera sobre `build.shares` y solo incluye a quien tiene importe positivo ([L966-L968](vendor/oasis/src/models/industry_model.js#L966-L968)); `distributeBuild` aborta si no hay puntos ([L984](vendor/oasis/src/models/industry_model.js#L984)) y solo cuenta aportaciones de miembros ([L372](vendor/oasis/src/models/industry_model.js#L372)): un miembro enfermo que no aportó al lote no existe para el reparto. CL-3 dice «proporcional a necesidades con suelo» sobre `:960-970`, pero no dice que la base pasa a ser el censo de miembros y no las aportaciones. En la RBU, el censo no es la tribu ni el hogar sino **el conjunto de feeds con dirección ECOin válida** ([L924](vendor/oasis/src/models/banking_model.js#L924)), y la asignación nace `UNCLAIMED` con un plazo de `graceDays` = 30 ([L20](vendor/oasis/src/models/banking_model.js#L20), [L982](vendor/oasis/src/models/banking_model.js#L982)): quien no reclama, no cobra. El salario familiar se cobraba sin trabajar y sin pedirlo. - **Hueco 2:** la tesis 2 (escala decreciente, parte fija más parte variable) y la tesis 3 no aparecían como preguntas en TK-D'02; tampoco la forma del cobro (tesis 6) ni el techo por hogar o por persona (tesis 9). Sin esas preguntas el default `1 + 0,5 por dependiente` es una escala lineal disfrazada. - **Hueco 3:** la tesis 8 (hogar de convivencia) se apoya en un censo que, además de individual, es **por actividad**: la lista de habitantes oculta por defecto a quien lleva seis meses sin publicar (`bucket: 'red'`, [L65-L72](vendor/oasis/src/models/inhabitants_model.js#L65-L72); filtro en [L120](vendor/oasis/src/models/inhabitants_model.js#L120)). El anciano silencioso del hallazgo D no solo cobra el suelo: deja de verse. CL-9 y TK-B'02 no dicen que el `household` no puede depender de la actividad de sus miembros. - **Contradicción 1 (interna a CL-4):** CL-4 conserva «suelo y techo». El techo es por feed y por época, `cap_user_epoch: 50` ([L19](vendor/oasis/src/models/banking_model.js#L19)), y entra en la fórmula como `min(pool × w / W, capUser)` ([L941](vendor/oasis/src/models/banking_model.js#L941)). Con `coef(hogar)` en `w`, un hogar de cinco y un soltero chocan contra el mismo techo de 50 en cuanto el fondo sea holgado: el coeficiente se anula justo cuando hay con qué pagarlo. Suelo y techo deben escalar con el hogar (`floor_user × miembros`, `cap_user_epoch × coef`). - **Contradicción 2 (con el código):** [§2.3](../drafts/draftv0.md#L81) afirma que «la misma fórmula de peso se repite» en el pago real (`:1413-1416`). No es así: el numerador usa el peso del reclamante, pero el denominador suma `clamp(1, wMin, wMax)` = 1 por cada dirección elegible ([L1414](vendor/oasis/src/models/banking_model.js#L1414)), no el peso de cada uno como en [L932](vendor/oasis/src/models/banking_model.js#L932). El importe pagado por `sendtoaddress` ([L1416](vendor/oasis/src/models/banking_model.js#L1416)) no coincide con el asignado en L941. TK-B'01 habla de «los tres cálculos» como si fueran uno; el tercero tiene otro denominador y hay que unificarlo, no solo sustituir el peso. - **Sin hueco:** tesis 4 (materia votable), cerrada por la corrección de CL-3 en la ficha 01; tesis 8 en su definición (una persona, un solo hogar), cubierta por TK-D'08. Veredicto: el salario familiar está mapeado en su fórmula (coeficiente de hogar, escala votada) y en su unidad (hogar declarado), no en su condición (cobrar sin aportar y sin reclamar) ni en sus límites (techo por hogar, censo que no dependa de la actividad); y el pago real de la RBU no ejecuta la fórmula que draftv0 cree corregir. --- **Correcciones aplicadas (2026-09-09)** - [draftv0.md TK-D'02](../drafts/draftv0.md#L193): añadidas las preguntas de cobro íntegro sin trabajar (enfermos, ancianos, viudas, familias de milicianos), parte fija más variable o escala decreciente, forma del cobro (dinero, vales, carnet) y techo por hogar o por persona (hueco 2); Souchy en fuentes; default: **la necesidad no depende de la aportación**, techo = `cap_user_epoch × coef(hogar)`, suelo = `floor_user × miembros`, pago en ECOin al hogar con vales como alternativa; desbloquea también CL-3, TK-B'03 y TK-B'06. - [draftv0.md CL-3](../drafts/draftv0.md#L170): el reparto `needs` se calcula sobre el censo de hogares de los miembros y no sobre las aportaciones (`industry_model.js:966-968`, `:984`); el registro de horas (`:827`) se conserva desligado del cobro (hueco 1, acierto 2). Costuras ampliadas. - [draftv0.md CL-4](../drafts/draftv0.md#L171): suelo y techo escalan con el hogar (`banking_model.js:19`); el denominador del pago real (`:1414`) se unifica con el del plan (`:941`); la escala entra como `rules` de `computeEpoch` (`:920`) votada por la asamblea, no como `DEFAULT_RULES` (contradicciones 1 y 2, acierto 1). Costuras ampliadas. - [draftv0.md hallazgo D](../drafts/draftv0.md#L148): añadido el tercer defecto, anterior a la fórmula: censo de la RBU por dirección ECOin (`banking_model.js:924`), asignación que caduca a los 30 días sin reclamar (`:982`), y en la industria solo cobra quien tiene puntos (`industry_model.js:966-968`, `:984`) (hueco 1). - [draftv0.md hallazgo F](../drafts/draftv0.md#L156): añadido que el censo es por actividad y oculta a quien lleva seis meses sin publicar (`inhabitants_model.js:65-72`, `:120`); el `household` no puede depender de la actividad (hueco 3). - [draftv0.md §2.3](../drafts/draftv0.md#L81): nota al margen fechada: en el pago real el denominador cuenta 1 por dirección elegible (`banking_model.js:1414`) y el importe pagado no coincide con el asignado en L941; TK-B'06 lo unifica (contradicción 2). - [draftv0.md «Lo que no se toca»](../drafts/draftv0.md#L180): añadidos el registro de horas por lote (`industry_model.js:827`, `:85`, `:288`) como cuenta de «cada uno según sus facultades» y el parámetro `rules` de `computeEpoch` (`banking_model.js:920`) como puerta de la escala votada (aciertos 1 y 2). - [draftv0.md TK-B'06](../drafts/draftv0.md#L231) (nueva, prioridad alta, tras TK-B'05): cobro sin reclamación ni aportación: RBU asignada por `household` y no por dirección ECOin, sin caducidad de 30 d para hogares validados, suelo y techo escalados por hogar, mismo denominador en plan y pago; depende de D'02, D'08, B'02; costuras `banking_model.js:19-20`, `:924`, `:982`, `:1414` (hueco 1, contradicciones 1 y 2). Añadida a la fila **Alta** del [resumen de prioridades](../drafts/draftv0.md#L274).