{"slug": "determinant-a-human-auditable-deterministic-layer-between-llms-and-code", "title": "Determinant: A human-auditable deterministic layer between LLMs and code", "summary": "Determinant introduces AAL (Auditable Application Language), a deterministic layer between LLMs and code that contains AI uncertainty within a human-auditable boundary, after which compilation to TypeScript/Node.js proceeds without LLM involvement. The project, led by an unnamed developer, aims to test whether the deterministic boundary in AI coding can be moved upward, reducing the scope of uncertainty and giving it an explicit endpoint.", "body_md": "Most AI coding workflows are still probabilistic all the way from requirements to final implementation.\n\nEven if a SPEC is extremely detailed and carefully written, the generated code may still differ because of a different model, different context, different memory, different tools, different context compression, or simply because the same task is run again at a different time.\n\nI want to experiment with moving that boundary.\n\n```\nNatural language\n→ LLM\n→ AAL\n→ Human review\n════════════════════\n→ Deterministic compilation\n→ TypeScript / Node.js\n```\n\nAAL stands for **Auditable Application Language**.\n\nDeterminant does not try to make the LLM itself deterministic.\n\nThe same natural-language requirement may still produce different AAL when generated by different models, under different contexts, or with different tools.\n\nThat uncertainty does not disappear, because it is inherent to LLMs.\n\nWhat Determinant tries to do is:\n\nContain that uncertainty inside a smaller, more human-auditable boundary, and make it stop there.\n\nAI may generate and modify AAL, but once a human accepts the AAL, the compilation path no longer uses an LLM.\n\nA very small AAL example:\n\n```\napplication: InventoryApp\n\nobject: Inventory\n\n    quantity: integer\n\nflow: DeductInventory\n\n    input:\n        inventory: Inventory\n        quantity: integer\n\n    if inventory's quantity < quantity:\n        failure: Insufficient inventory\n\n    change:\n        inventory's quantity = inventory's quantity - quantity\n\n    output:\n        remainingInventory = inventory's quantity\n```\n\nWhat the human needs to review is:\n\nwhen inventory is considered insufficient;\n\nwhether the inventory is actually changed;\n\nwhat the result is after that change.\n\nThe compiler is free to decide how this is implemented in TypeScript.\n\nThe human does not need to review the generated class structure, local variables, Promise usage, or other implementation details.\n\nOnce the AAL is accepted, the current compilation path is:\n\n```\nAAL\n↓\nParser\n↓\nAST\n↓\nSemantic Check\n↓\nBinding\n↓\nCompiler\n↓\nTypeScript\n↓\nNode.js\n```\n\nThis path does not call an LLM.\n\nThe intended boundary is:\n\n```\nsame AAL\n+ same language version and dialect\n+ same Binding\n+ same compiler version\n+ same runtime and dependencies\n= same program semantics\n```\n\nSo Determinant does not eliminate uncertainty from AI-assisted development.\n\nMore precisely, it tries to:\n\nReduce the scope of uncertainty and give it an explicit endpoint.\n\nA typical AI coding workflow looks more like:\n\n```\nRequirement\n↓\nAI\n↓\nLarge amount of implementation code\n↓\nHuman reviews code\n```\n\nDeterminant experiments with:\n\n```\nRequirement\n↓\nAI\n↓\nSmaller, auditable AAL\n↓\nHuman reviews behavior\n↓\nDeterministic compilation\n↓\nImplementation code\n```\n\nThis idea is intentionally built on existing software engineering concepts such as DSLs, model-driven development, intermediate representations, and deterministic compilers.\n\nI am not trying to reinvent DSLs or deterministic compilation.\n\nThe actual question I want to test is:\n\nCan we move the deterministic boundary upward in AI coding?\n\nIn other words, let probabilistic AI produce a smaller, executable, human-auditable description, and once that description is accepted, move the rest of program generation back into traditional deterministic software engineering.\n\nAAL currently keeps only two primary concepts:\n\n```\nObject\nFlow\n```\n\nAn Object describes what exists in the application world.\n\nA Flow describes what happens in the application world.\n\nThe language tries to avoid exposing ordinary implementation structures such as classes, methods, `this`\n\n, dot-based property access, or framework-specific calls, and instead focuses on business behavior, conditions, explicit state changes, and results.\n\nThere is also a separate Binding layer that connects human-facing audit names, stable internal identities, and program-facing names.\n\nThis lets AAL keep names that are easier for humans to review without forcing TypeScript, database, or external-system naming conventions directly into the audit language.\n\nThe current repository already contains a minimal deterministic compilation loop with:\n\nObjects and typed fields\n\nFlows\n\nConditions and explicit failures\n\nCalculations\n\nExplicit state changes\n\nFlow composition\n\nExplicit money types\n\nBinding\n\nEnglish and Chinese AAL dialects\n\nTypeScript code generation\n\nExecutable success and failure tests\n\nThe first target runtime is:\n\n```\nNode.js + TypeScript\n```\n\nHTTP and CRUD are planned as the next iteration and are not part of the current implementation yet.\n\nGitHub:\n\nThis project is still a very early experiment.\n\nThe main question I want to test is simple:\n\nIf AI is already doing most of the implementation work, should humans still review hundreds or thousands of lines of AI-generated code line by line?\n\nOr should human review move to a much smaller, executable language that explicitly describes what the software is allowed to do?\n\nThe core idea of Determinant can be summarized in one sentence:\n\nBefore review, AI may be probabilistic. After review, the software should not remain probabilistic.\n\nFeedback and criticism are very welcome, especially around whether this review boundary is actually useful in practice, and whether AAL can remain readable while covering enough real application behavior.", "url": "https://wpnews.pro/news/determinant-a-human-auditable-deterministic-layer-between-llms-and-code", "canonical_source": "https://discuss.huggingface.co/t/determinant-a-human-auditable-deterministic-layer-between-llms-and-code/179238#post_1", "published_at": "2026-08-25 16:40:18+00:00", "updated_at": "2026-08-25 16:45:05.058578+00:00", "lang": "en", "topics": ["developer-tools", "artificial-intelligence", "ai-tools"], "entities": ["Determinant", "AAL", "TypeScript", "Node.js"], "alternates": {"html": "https://wpnews.pro/news/determinant-a-human-auditable-deterministic-layer-between-llms-and-code", "markdown": "https://wpnews.pro/news/determinant-a-human-auditable-deterministic-layer-between-llms-and-code.md", "text": "https://wpnews.pro/news/determinant-a-human-auditable-deterministic-layer-between-llms-and-code.txt", "jsonld": "https://wpnews.pro/news/determinant-a-human-auditable-deterministic-layer-between-llms-and-code.jsonld"}}