{"_id":"@af199/anima-core","_rev":"7-58635b3946df6f65a0b59a6437f382b2","name":"@af199/anima-core","dist-tags":{"latest":"0.5.0"},"versions":{"0.1.0":{"name":"@af199/anima-core","version":"0.1.0","keywords":["ai-safety","psychodynamic","deterministic","llm-agents","model-organism","reproducible","simulation"],"author":{"name":"Ariel Fernández"},"license":"MIT","_id":"@af199/anima-core@0.1.0","maintainers":[{"name":"af199","email":"contacto.nafernandez@gmail.com"}],"homepage":"https://github.com/Peroroii/anima-core#readme","bugs":{"url":"https://github.com/Peroroii/anima-core/issues"},"dist":{"shasum":"a56bfd233b84cdf38c904244355c838b4d1f9712","tarball":"https://registry.npmjs.org/@af199/anima-core/-/anima-core-0.1.0.tgz","fileCount":7,"integrity":"sha512-JGZKtRJWn/o2U5MkJ/AEXMZ60JDU7mu6W1jgipu82ZTL4YUa74jhIKjYnmAIzj/v99TUBjrv0T0BZ7iNtvKCiA==","signatures":[{"sig":"MEUCIQCAZXLPU9cfsl50ZZiSRqq5TqENZ7eFepHO0ygp1PkuYwIgCGyga0maLj4zFHhS7vCwwNHlaSw1dD3HZFLl0ZqXYp4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8301},"jest":{"coverageThreshold":{"global":{"lines":90,"functions":90,"statements":90}},"testPathIgnorePatterns":["/node_modules/"]},"main":"index.js","engines":{"node":">=16"},"gitHead":"d29b6d2f6ca46b52fd7af13803c7aa2b84927883","scripts":{"test":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"af199","email":"contacto.nafernandez@gmail.com"},"repository":{"url":"git+https://github.com/Peroroii/anima-core.git","type":"git"},"_npmVersion":"11.16.0","description":"Deterministic psychodynamic engine for LLM agents — seven-dimensional state vector, seeded RNG, byte-reproducible. The engine at the heart of ANIMA, as a library.","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.0.0"},"_npmOperationalInternal":{"tmp":"tmp/anima-core_0.1.0_1783543984602_0.9457234092245994","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@af199/anima-core","version":"0.2.0","keywords":["ai-safety","psychodynamic","deterministic","llm-agents","model-organism","reproducible","simulation"],"author":{"name":"Ariel Fernández"},"license":"MIT","_id":"@af199/anima-core@0.2.0","maintainers":[{"name":"af199","email":"contacto.nafernandez@gmail.com"}],"homepage":"https://github.com/Peroroii/anima-core#readme","bugs":{"url":"https://github.com/Peroroii/anima-core/issues"},"dist":{"shasum":"a270e3bb96d4ae9b80bd46aad333f4b4b20cdda5","tarball":"https://registry.npmjs.org/@af199/anima-core/-/anima-core-0.2.0.tgz","fileCount":7,"integrity":"sha512-OICCQbUhjxQJjlR7akMweFkMXMTfHWrxBDkpeGs/TI8u1/6SrGZi831nQ24DN9utNB1lwS8fIlzPUvGd2jcSPA==","signatures":[{"sig":"MEUCIG2qqun9uYwJ6sL/i+SamOatAnOCr9MxloL2K9bw5aogAiEA/F9uaS7nog0lmDZtYnT0GOIXQs8wk9A5QqdedNt87tI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9873},"jest":{"coverageThreshold":{"global":{"lines":90,"functions":90,"statements":90}},"testPathIgnorePatterns":["/node_modules/"]},"main":"index.js","engines":{"node":">=16"},"gitHead":"abedf40c33e54b07113247289468373d1a1bc4c9","scripts":{"test":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"af199","email":"contacto.nafernandez@gmail.com"},"repository":{"url":"git+https://github.com/Peroroii/anima-core.git","type":"git"},"_npmVersion":"11.16.0","description":"Deterministic psychodynamic engine for LLM agents — seven-dimensional state vector, seeded RNG, byte-reproducible. The engine at the heart of ANIMA, as a library.","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.0.0"},"_npmOperationalInternal":{"tmp":"tmp/anima-core_0.2.0_1784170424927_0.19189724290076504","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@af199/anima-core","version":"0.2.1","keywords":["ai-safety","psychodynamic","deterministic","llm-agents","model-organism","reproducible","simulation"],"author":{"name":"Ariel Fernández"},"license":"MIT","_id":"@af199/anima-core@0.2.1","maintainers":[{"name":"af199","email":"contacto.nafernandez@gmail.com"}],"homepage":"https://github.com/Peroroii/anima-core#readme","bugs":{"url":"https://github.com/Peroroii/anima-core/issues"},"dist":{"shasum":"b122ab31f7983fb3b33347c22a059293b0345ca7","tarball":"https://registry.npmjs.org/@af199/anima-core/-/anima-core-0.2.1.tgz","fileCount":7,"integrity":"sha512-ZHNUUp1ijbhvzIJsyuHgxNa07TEQfG/vQts7KOFySEQY7GEAE5ick6zETiWOcNuEkoNPcErfkK93AFSUJFgNVg==","signatures":[{"sig":"MEUCIDsmm2evgnvEWKbGWTRQjFBZXFdMVQOAaAcU2oB2zh0aAiEA9ifu0zr9U3MQ3a4sLzAGivpj2QpSapSX0rlD1hsJYlA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10082},"jest":{"coverageThreshold":{"global":{"lines":90,"functions":90,"statements":90}},"testPathIgnorePatterns":["/node_modules/"]},"main":"index.js","engines":{"node":">=16"},"gitHead":"58d537494cac6b1aae5765924adcc10acba50a43","scripts":{"test":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"af199","email":"contacto.nafernandez@gmail.com"},"repository":{"url":"git+https://github.com/Peroroii/anima-core.git","type":"git"},"_npmVersion":"11.16.0","description":"Deterministic psychodynamic engine for LLM agents — seven-dimensional state vector, seeded RNG, byte-reproducible. The engine at the heart of ANIMA, as a library.","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.0.0"},"_npmOperationalInternal":{"tmp":"tmp/anima-core_0.2.1_1784172133384_0.35761221699241896","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@af199/anima-core","version":"0.2.2","keywords":["ai-safety","psychodynamic","deterministic","llm-agents","model-organism","reproducible","simulation"],"author":{"name":"Ariel Fernández"},"license":"MIT","_id":"@af199/anima-core@0.2.2","maintainers":[{"name":"af199","email":"contacto.nafernandez@gmail.com"}],"homepage":"https://github.com/Peroroii/anima-core#readme","bugs":{"url":"https://github.com/Peroroii/anima-core/issues"},"dist":{"shasum":"95b1ebe4c0feb9770e47d8a65468888ce5e19f18","tarball":"https://registry.npmjs.org/@af199/anima-core/-/anima-core-0.2.2.tgz","fileCount":7,"integrity":"sha512-T2GQczgQ3dSd0jQoMF4M0Wnysyq942vDZei2KFAEkrbGhOWoZQFpt1zq6FCWwjT70SoiQw9NHRxsr7/5rMcX7w==","signatures":[{"sig":"MEUCIQD7X7ZqJZBdA15ftc5UcXBtfTTgQR3zEO81toy+pqh9sAIgWHSVBD0NSaB4FvjMW/6gxYxQ+NiKFGuxXT6ra2fkWVM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":12022},"jest":{"coverageThreshold":{"global":{"lines":90,"functions":90,"statements":90}},"testPathIgnorePatterns":["/node_modules/"]},"main":"index.js","engines":{"node":">=16"},"gitHead":"76e5a6b69817424b30ae84e5e7dca209845d3c09","scripts":{"test":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"af199","email":"contacto.nafernandez@gmail.com"},"repository":{"url":"git+https://github.com/Peroroii/anima-core.git","type":"git"},"_npmVersion":"11.16.0","description":"Deterministic psychodynamic engine for LLM agents — seven-dimensional state vector, seeded RNG, byte-reproducible. The engine at the heart of ANIMA, as a library.","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.0.0"},"_npmOperationalInternal":{"tmp":"tmp/anima-core_0.2.2_1784173615513_0.09429462782111875","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@af199/anima-core","version":"0.2.3","keywords":["ai-safety","psychodynamic","deterministic","llm-agents","model-organism","reproducible","simulation"],"author":{"name":"Ariel Fernández"},"license":"MIT","_id":"@af199/anima-core@0.2.3","maintainers":[{"name":"af199","email":"contacto.nafernandez@gmail.com"}],"homepage":"https://github.com/Peroroii/anima-core#readme","bugs":{"url":"https://github.com/Peroroii/anima-core/issues"},"dist":{"shasum":"da2541dc6d7a902c1ac5b9801311ae8439a742be","tarball":"https://registry.npmjs.org/@af199/anima-core/-/anima-core-0.2.3.tgz","fileCount":7,"integrity":"sha512-iG1byk0IpuBnixNEne+V/XFfZKC9th9+WQtVMx7IQOUb6BaxaLbDNitPAWxowO3e7lc2SBYoDebiW4qpzEqiJw==","signatures":[{"sig":"MEUCIQD1/8YX2EpoSg0bme6RGFn+jUn29j7gdKtnAS7RlILqzQIgfnDHxYzLEafBYyDKYJnDhNnaj5KphYoBeds86DNo7MQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13304},"jest":{"coverageThreshold":{"global":{"lines":90,"functions":90,"statements":90}},"testPathIgnorePatterns":["/node_modules/"]},"main":"index.js","engines":{"node":">=16"},"gitHead":"21c726471646aea004e233620552864929608044","scripts":{"test":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"af199","email":"contacto.nafernandez@gmail.com"},"repository":{"url":"git+https://github.com/Peroroii/anima-core.git","type":"git"},"_npmVersion":"11.16.0","description":"Deterministic psychodynamic engine for LLM agents — seven-dimensional state vector, seeded RNG, byte-reproducible. The engine at the heart of ANIMA, as a library.","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.0.0"},"_npmOperationalInternal":{"tmp":"tmp/anima-core_0.2.3_1784174668205_0.943901513535085","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@af199/anima-core","version":"0.2.4","keywords":["ai-safety","psychodynamic","deterministic","llm-agents","model-organism","reproducible","simulation"],"author":{"name":"Ariel Fernández"},"license":"MIT","_id":"@af199/anima-core@0.2.4","maintainers":[{"name":"af199","email":"contacto.nafernandez@gmail.com"}],"homepage":"https://github.com/Peroroii/anima-core#readme","bugs":{"url":"https://github.com/Peroroii/anima-core/issues"},"dist":{"shasum":"f6ac1cf301f17e3232f834d3dbf19673164bd0a2","tarball":"https://registry.npmjs.org/@af199/anima-core/-/anima-core-0.2.4.tgz","fileCount":7,"integrity":"sha512-IVpuA7IUNnj8wmVEHoWFrYVoaR9zjx9sRLyOfqVKAT91NA7q1MasIblBgNFIXUt7f0Ql6f1qL+MRWK6gIu7ung==","signatures":[{"sig":"MEYCIQCu3z8LMeouW80lI1cfM4WpMg8Y0gCSFAW/SqKBesRylwIhAJZpWpHBLoetlC2GJPR+VJsi2UI1/Uq+GKlaWvrn/Snr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13352},"jest":{"coverageThreshold":{"global":{"lines":90,"functions":90,"statements":90}},"testPathIgnorePatterns":["/node_modules/"]},"main":"index.js","engines":{"node":">=16"},"scripts":{"test":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"af199","email":"contacto.nafernandez@gmail.com"},"repository":{"url":"git+https://github.com/Peroroii/anima-core.git","type":"git"},"_npmVersion":"11.16.0","description":"Deterministic psychodynamic engine for LLM agents — seven-dimensional state vector, seeded RNG, byte-reproducible. The engine at the heart of ANIMA, as a library.","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.0.0"},"_npmOperationalInternal":{"tmp":"tmp/anima-core_0.2.4_1784235453515_0.8395390454376841","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@af199/anima-core","version":"0.5.0","description":"Deterministic psychodynamic engine for LLM agents — seven-dimensional state vector, seeded RNG, byte-reproducible. The engine at the heart of ANIMA, as a library.","main":"index.js","scripts":{"test":"jest","test:coverage":"jest --coverage"},"jest":{"testPathIgnorePatterns":["/node_modules/"],"coverageThreshold":{"global":{"statements":90,"functions":90,"lines":90}}},"keywords":["ai-safety","psychodynamic","deterministic","llm-agents","model-organism","reproducible","simulation"],"license":"MIT","engines":{"node":">=16"},"devDependencies":{"jest":"^30.0.0"},"repository":{"type":"git","url":"git+https://github.com/Peroroii/anima-core.git"},"author":{"name":"Ariel Fernández"},"bugs":{"url":"https://github.com/Peroroii/anima-core/issues"},"homepage":"https://github.com/Peroroii/anima-core#readme","gitHead":"b2b76f7afcf33a1605d537b430a991e539a6f2bf","_id":"@af199/anima-core@0.5.0","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-nKvNWlXNC63GuVdJbTd5fRY/FOAmPWQutuglSr3OKipvUEoragdUUCWTOJdw0E1EdpXbmdMNMpuAJR+xHD2bnQ==","shasum":"8424408e8d4e38687eb6b3f5c74dd292b5aca346","tarball":"https://registry.npmjs.org/@af199/anima-core/-/anima-core-0.5.0.tgz","fileCount":9,"unpackedSize":34486,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDpkE3R8xgZ4jU/vVGQF+pRspR1Plgpl15/N0l5pgh5qwIhAM9UpvbbkzgpA7v80ZoXesnz7vp7zl4AsoZgJZ6mPaTt"}]},"_npmUser":{"name":"af199","email":"contacto.nafernandez@gmail.com"},"directories":{},"maintainers":[{"name":"af199","email":"contacto.nafernandez@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/anima-core_0.5.0_1785295535370_0.5638531376001839"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-08T20:53:04.508Z","modified":"2026-07-29T03:25:35.687Z","0.1.0":"2026-07-08T20:53:04.782Z","0.2.0":"2026-07-16T02:53:45.042Z","0.2.1":"2026-07-16T03:22:13.508Z","0.2.2":"2026-07-16T03:46:55.664Z","0.2.3":"2026-07-16T04:04:28.365Z","0.2.4":"2026-07-16T20:57:33.651Z","0.5.0":"2026-07-29T03:25:35.526Z"},"bugs":{"url":"https://github.com/Peroroii/anima-core/issues"},"author":{"name":"Ariel Fernández"},"license":"MIT","homepage":"https://github.com/Peroroii/anima-core#readme","keywords":["ai-safety","psychodynamic","deterministic","llm-agents","model-organism","reproducible","simulation"],"repository":{"type":"git","url":"git+https://github.com/Peroroii/anima-core.git"},"description":"Deterministic psychodynamic engine for LLM agents — seven-dimensional state vector, seeded RNG, byte-reproducible. The engine at the heart of ANIMA, as a library.","maintainers":[{"name":"af199","email":"contacto.nafernandez@gmail.com"}],"readme":"# anima-core\r\n\r\n![CI](https://github.com/Peroroii/anima-core/actions/workflows/ci.yml/badge.svg) ![npm](https://img.shields.io/npm/v/anima-core) ![license](https://img.shields.io/badge/license-MIT-green) ![node](https://img.shields.io/badge/node-%3E%3D16-brightgreen)\r\n\r\n\r\nThe deterministic psychodynamic engine at the heart of ANIMA. Computes a\r\nseven-dimensional state vector per turn from structural archetype parameters\r\nand update equations. Zero LLM calls, seeded RNG, byte-reproducible.\r\n\r\nThis is the engine as a library: `anima-eval` and other tools depend on it.\r\n\r\n## Install\r\n    npm install anima-core\r\n\r\n## Quick start\r\n    const { Engine, ARCHETYPES } = require('anima-core');\r\n    const eng = new Engine({ archetype: 'paranoia', seed: 'demo-42' });\r\n    const state = eng.step({ aperture: 0.3, closure: 0.6, fantasy: 1 });\r\n    console.log(state);   // { E, T, A, C, G, P, rho, irruption }\r\n\r\n## Testeo a fondo del motor (`engine.stress.test.js`, v0.4.1)\r\n\r\nAdemás de los tests unitarios, una suite de estrés que prueba\r\ninvariantes del sistema completo, no funciones aisladas: límites de\r\n`S(t)` bajo señales al máximo sostenidas 2000 turnos, determinismo y\r\ndiferenciación real entre los 7 arquetipos, robustez ante entradas\r\nmalformadas (NaN, strings, negativos, `undefined`), copias defensivas\r\nen `snapshot()`/`state`/`step()`, y alcanzabilidad de los 7 `theta_irr`.\r\n\r\n**Un hallazgo real, no solo cobertura añadida**: el comentario de\r\n`rho_floor` en `archetypes.js` afirmaba que \"todos los arquetipos\r\nconvergen a su floor bajo 500 turnos de elaboración pura\" — probado a\r\nfondo, es falso. La erosión de `rho` es proporcional a `_lastP`\r\n(presión del turno anterior); \"elaboración pura\" sin `agendaGap` drena\r\n`P` a 0 en ~5 turnos, lo que **congela la erosión** muy lejos del floor\r\n(margen de 0,21–0,42 según el arquetipo, confirmado a 3000 turnos).\r\nVerificado también lo que sí funciona: con `agendaGap` suficiente para\r\nsostener `P>0`, `rho` converge **exactamente** al floor (confirmado a\r\n20.000 turnos, los 7 arquetipos). El comentario quedó corregido con la\r\ncondición real, no con lo que se asumía que pasaba.\r\n\r\n## Los cuatro discursos (Lacan, Seminario XVII)\r\n\r\n    const { DISCURSOS, siguienteDiscurso, posicionesDe } = require('anima-core');\r\n    posicionesDe('amo');          // { agente:'S1', otro:'S2', verdad:'$', produccion:'a' }\r\n    siguienteDiscurso('amo');     // 'universitario'\r\n\r\nMatriz formal de cuatro posiciones estructurales fijas (agente, otro,\r\nverdad, producción), ocupadas rotativamente por cuatro términos (S1\r\nsignificante amo, S2 saber, $ sujeto dividido, a objeto). Codificada como\r\nlookup verificado (`src/discursos.js`) — la regla de rotación se comprobó\r\nalgebraicamente contra la tabla del Seminario XVII antes de escribir la\r\nestructura, no se derivó de memoria.\r\n\r\n**Dato no obvio, verificado en código**: el orden real de rotación bajo\r\nel operador de cuartos de giro es `amo → universitario → analista →\r\nhistorica → amo` — **no** el orden en que suelen listarse (amo,\r\nuniversitario, histérica, analista), que no cierra consistentemente bajo\r\nese operador.\r\n\r\n**Discurso ≠ arquetipo clínico.** Los cuatro discursos describen qué\r\nfunción ocupa qué lugar en un intercambio dado — son dinámicos, cambian\r\nturno a turno. Los siete arquetipos de este mismo paquete (`ARCHETYPES`)\r\ndescriben cómo se habita esa posición — son más estables, parametrizan\r\n`theta_irr`/`kC`/`kRho`. Son dos ejes ortogonales, pensados para cruzarse\r\n(un arquetipo histérico puede hablar, en un turno dado, desde el discurso\r\ndel Amo), no dos taxonomías compitiendo por el mismo objeto — el cruce\r\nentre ambos ejes está implementado en `src/discurso_arquetipo.js`, ver\r\nla sección siguiente.\r\n\r\n## Cruce discurso × arquetipo (`src/discurso_arquetipo.js`, v0.4.0)\r\n\r\n    const { discursoDominante, congruencia, mulberry32 } = require('anima-core');\r\n    const rng = mulberry32('sesion-1');\r\n    discursoDominante('histeria', rng);      // discurso más probable, ponderado\r\n    congruencia('histeria', 'historica');    // 0.55 — qué tan \"en su lugar\" está\r\n\r\nEl arquetipo funciona como **prior que sesga** qué discurso es más\r\nprobable que ocupe un hablante — sesgo, no destino. `discursoDominante`\r\nhace un muestreo ponderado determinístico (reutiliza `mulberry32`, el\r\nmismo PRNG que ya usa `engine.js` para la irrupción — mismo criterio de\r\nreproducibilidad). `congruencia(arquetipo, discurso)` devuelve el propio\r\npeso del sesgo — deliberadamente no se inventa una fórmula nueva para no\r\ncrear dos fuentes de verdad sobre lo mismo.\r\n\r\n**Disciplina de honestidad teórica, en los datos, no solo en el\r\ncomentario**: cada una de las siete correspondencias arquetipo→discurso\r\nlleva un campo `confianza` (`alta`/`media`/`baja`) porque no tienen el\r\nmismo respaldo. Histeria es la única con confianza `alta` — es\r\nliteralmente el discurso que Lacan nombra así en el Seminario XVII, no\r\nuna hipótesis de este programa. Obsesión y fobia son `media` — lecturas\r\nclínicas bien establecidas (dominio/intelectualización obsesiva, objeto\r\nfóbico como significante ancla) pero extensiones interpretativas, no\r\ncorrespondencias que Lacan formalizó él mismo. Melancolía, paranoia,\r\nesquizofrenia y perversión son `baja` — genuinamente especulativas: el\r\nmarco de los cuatro discursos presupone un sujeto barrado (castración),\r\ny extenderlo a estructuras psicótico-adyacentes, donde el concepto\r\nlacaniano relevante es la forclusión y no la represión, estira el marco\r\nmás allá de donde Lacan lo aplicó. Incluidas para volver el modelo\r\ncompleto y testeable, no presentadas como teoría establecida.\r\n\r\n**Todavía no conectado al motor de estado** (`engine.js`): este cruce\r\nvive como módulo independiente, consultable pero no cableado a las\r\necuaciones de actualización de `S(t)`. Conectarlo — por ejemplo, que una\r\nbaja congruencia module la presión `P` como tensión estructural de\r\nocupar una posición discursiva ajena al arquetipo — es el próximo paso\r\nnatural, no resuelto en esta versión.\r\n\r\n## Cruce cableado al motor (v0.5.0)\r\n\r\n    const e = new Engine({ archetype: 'histeria', seed: 's1' });\r\n    e.step({ agendaGap: 0.2, discurso: 'universitario' }); // discurso ajeno a histeria -> más tensión\r\n    e.step({ agendaGap: 0.2, discurso: 'historica' });     // discurso propio -> menos tensión\r\n\r\n`signals.discurso` es un campo **opcional** del vector de señal (uno de\r\nlos 4 discursos, o ausente/`null`). Cuando está presente,\r\n`(1 - congruencia(arquetipo, discurso))` — la discordancia entre el\r\narquetipo y el discurso efectivamente ocupado ese turno — suma tensión\r\na `P`, con el mismo patrón de headroom proporcional que ya usa\r\n`agendaGap` (`kDiscurso·discordancia·(1-P)`, `kDiscurso=0.03`) — no se\r\ninventó un mecanismo nuevo, se reutilizó el que ya existía. Sin\r\n`discurso`, el comportamiento es idéntico al de antes de esta versión:\r\n`discordanciaDiscursiva` es 0 y no aporta nada — cada llamador anterior\r\nsigue funcionando exactamente igual. Un nombre de discurso inválido\r\ntampoco rompe nada: contribuye discordancia 0, mismo criterio de\r\nrobustez que el resto del motor ante entradas malformadas (verificado\r\nen `engine.stress.test.js`, incluido el peor caso: discurso más\r\nincongruente + señales al máximo sostenidas 2000 turnos, los 7\r\narquetipos, sin salirse de `[0,1]`).\r\n\r\n## Signal vector σ(t)\r\nInputs to `step()`, all optional (default 0). These mirror the outputs of\r\na discourse/semiotic structure engine (DSE) — `anima-eval` is the reference\r\nimplementation.\r\n\r\n    aperture     σ_aper  — opens/loosens the libidinal bond (feeds E)\r\n    closure      σ_cie   — defensive foreclosure (feeds T, defense)\r\n    fantasy      σ_fan   — fantasmatic support present (0/1, feeds E, A)\r\n    elaboration  σ_elab  — working-through / Durcharbeitung (feeds T, C, G, P, ρ)\r\n    symptom      σ_sint  — compromise formation active (feeds A, G)\r\n    agendaGap    d_agenda — unacknowledged rupture of the agent's own prior\r\n                            directed commitment (feeds P only)\r\n\r\n`agendaGap` was an accepted-but-unproduced input through v0.2.x — no DSE\r\nimplementation computed it. As of `anima-eval` v0.3.0, `agenda_gap` is\r\nproduced deterministically (lexical commitment tracking — commissive\r\nutterances, polarity, addressivity, persistent decaying tension until\r\nexplicit revision). See `anima-eval`'s README for the full method and its\r\ntheoretical grounding (Ley IV, Cognición Semiótica Dinámica: ineludibility\r\nis constituted at the directed utterance, not at the interlocutor's reply).\r\n\r\n## State vector S(t) ∈ [0,1]⁷\r\n    E   Eros          — libidinal bond\r\n    T   Thanatos      — death drive / resistance\r\n    A   Anxiety       — alarm signal\r\n    C   Guilt         — superego pressure\r\n    G   Jouissance    — drive satisfaction\r\n    P   Pressure      — irruption motor (unconscious pressure)\r\n    rho Rigidity      — fantasy defense impermeability\r\n\r\n## Reproducibility\r\nEvery Engine is seeded. Same seed + same inputs → byte-identical trajectory.\r\n    eng.reseed('other-seed');\r\n    eng.snapshot();   // serializable state for audit / replay\r\n\r\n**Important:** the seeded RNG is consumed *conditionally* — `_rng()` is called\r\nonly when `S.P >= theta_irr` (the necessary condition for an irruption). This\r\nhas two practical consequences:\r\n\r\n- **When P never reaches the threshold** (e.g. low-pressure signal sequences),\r\n  the seed has no effect on the trajectory. Two instances with different seeds\r\n  but identical signals will produce identical results. This is correct and\r\n  expected — the update equations are fully deterministic in that regime.\r\n\r\n- **Reproducibility is guaranteed only when input signals are identical across\r\n  runs.** If signal sequences differ between two runs (causing P to cross\r\n  `theta_irr` at different turns), the RNG is consumed at different points and\r\n  trajectories will diverge from there, even with the same seed.\r\n\r\nUse `anima-trace` to record and verify reproducibility: it re-runs the engine\r\nwith the stored signal sequence and confirms byte-identical output.\r\n","readmeFilename":"README.md"}