dec-0073

Vista generada de dec-0073: ABI rules v0 candidate

ImplementadoSin versión del tren todavía· generada desde docs/decisions/dec-0073-abi-rules-v0-candidate.md
track/docsdec-0124track/docs:DC10

Vista generada desde docs/decisions/dec-0073-abi-rules-v0-candidate.md. No se edita a mano: bun run docs:gen la regenera y bun run docs:check falla si difiere. El estado aquí es el del model: si discrepa con otra página, manda el model.

CampoValor
EstadoLOCKED (migrado de un rNN por gate-3: el fichero no declara estado)
Referencia legadar56-D4.2
Ficherodocs/decisions/dec-0073-abi-rules-v0-candidate.md

Por qué importa (del frontmatter del ADR):

TKT-040 M3: 'ABI memory rules | spec formal... cubriendo los 8 puntos de r56 D4.2'. AC-D4.2 a AC-D4.6 dependen literalmente de estas reglas. r57 asume la forma del ABI del client core; r59 asume consumer WASM/native con estas reglas.

Nodos del roadmap que lo citan en refs: ninguno.

Páginas de la documentación que lo citan: ninguna todavía.

Texto del ADR

Leído de docs/decisions/dec-0073-abi-rules-v0-candidate.md, el fichero canónico.

ABI rules v0 candidate

ABI rules v0 candidate: opaque handles, fixed-width integers, caller-owned buffers, no allocator ownership crossing la ABI, no Zig structs en layout público, structured status/error codes, conformance fixtures compartidas byte-idénticas WASM+native, version negotiation obligatoria vía styx_client_abi_version().

Por qué pasa gate-3

  • Hard-to-reverse: Revertir requería romper el contrato C ABI y cambiar las reglas de memoria/ownership en la frontera
  • Surprising sin contexto: No es obvio sin el ADR que handles deben ser opacos, que los buffers son caller-owned, o que los allocators no cruzan la ABI
  • Trade-off real: Se rechazó exponer structs Zig directamente en el ABI público (alternativa implícita) en favor de POD + opaque handles

Procedencia

Split de docs/decisions/r56-portable-client-core-abi-2026-07-15.md (lock r56-D4.2) durante PASO 7 (2026-07-16). Ver el fichero padre para el contexto completo del pack original.