{"id":51244663,"url":"https://github.com/its-not-rocket-science/ananke","last_synced_at":"2026-06-29T03:03:17.432Z","repository":{"id":337877893,"uuid":"1154909693","full_name":"its-not-rocket-science/ananke","owner":"its-not-rocket-science","description":"Core ontology and world model for the Ananke world-building system. Parent repo for all ananke-* packages.","archived":false,"fork":false,"pushed_at":"2026-06-12T01:03:38.000Z","size":16681,"stargazers_count":0,"open_issues_count":9,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-12T03:05:40.864Z","etag":null,"topics":["game-engine","ontology","procedural-generation","simulation","world-building"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/its-not-rocket-science.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":"docs/support-boundaries.md","governance":"docs/governance/2026-04-06.md","roadmap":"ROADMAP-v2.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":"docs/maintainers.md","copyright":null,"agents":"AGENTS.md","dco":null,"cla":null},"funding":{"github":["its-not-rocket-science"],"custom":["https://github.com/sponsors/its-not-rocket-science"]}},"created_at":"2026-02-10T22:58:44.000Z","updated_at":"2026-06-12T01:03:42.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/its-not-rocket-science/ananke","commit_stats":null,"previous_names":["its-not-rocket-science/ananke"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/its-not-rocket-science/ananke","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/its-not-rocket-science%2Fananke","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/its-not-rocket-science%2Fananke/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/its-not-rocket-science%2Fananke/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/its-not-rocket-science%2Fananke/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/its-not-rocket-science","download_url":"https://codeload.github.com/its-not-rocket-science/ananke/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/its-not-rocket-science%2Fananke/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34911135,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-29T02:00:05.398Z","response_time":58,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["game-engine","ontology","procedural-generation","simulation","world-building"],"created_at":"2026-06-29T03:03:16.640Z","updated_at":"2026-06-29T03:03:17.420Z","avatar_url":"https://github.com/its-not-rocket-science.png","language":"TypeScript","funding_links":["https://github.com/sponsors/its-not-rocket-science"],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"ananke-social-preview.png\" alt=\"Ananke — Deterministic Simulation Kernel\" width=\"100%\"\u003e\n\n# Ananke\n\n![CI](../../actions/workflows/ci.yml/badge.svg)\n![Determinism](https://img.shields.io/badge/Determinism-%E2%9C%85%2010%2C000%2F10%2C000%20seeds%20passed%20(last%20run%3A%202026--04--03)-brightgreen)\n![TypeScript](https://img.shields.io/badge/TypeScript-first-7dd3fc)\n![MIT licence](https://img.shields.io/badge/licence-MIT-fbbf24)\n\n\u003e Package: `@its-not-rocket-science/ananke`  \n\u003e Stable API contract: [`STABLE_API.md`](STABLE_API.md)  \n\u003e Status: active engineering project; stable root API, exploratory submodules\n\nAnanke is a deterministic simulation kernel for host applications.\n\nIt is designed for projects that need a world state to evolve reproducibly while leaving rendering, persistence, networking, content authoring, and deployment under the control of the host application.\n\n## Core contract\n\nGiven the same:\n\n- initial world state,\n- command stream,\n- tick count, and\n- engine version,\n\nAnanke should produce the same outcome.\n\nThat makes it useful for replay, debugging, deterministic tests, lockstep-style simulation, audit trails, and host-controlled narrative or game systems.\n\n## Use Ananke when\n\n- you need a reproducible simulation loop;\n- you want host-owned rendering and persistence;\n- you need deterministic fixtures for tests or replays;\n- you want a stable root import surface for long-lived integrations;\n- you are comfortable treating advanced subpath modules as version-pinned or experimental.\n\n## Do not use Ananke if\n\n- you want a complete game engine;\n- you need a visual editor;\n- you want turnkey networking;\n- you need a no-code simulation builder;\n- you expect every exported internal module to be semver-stable.\n\n## 10-minute success path\n\n```bash\nnpm install\nnpm run build\nnpm run example:first-hour\nnpm run test:first-hour-smoke\n```\n\nThen follow the first-hour adopter path:\n\n```text\ndocs/first-hour-adopter-path.md\n```\n\n## Minimal deterministic loop\n\n```ts\nimport {\n  createWorld,\n  q,\n  stepWorld,\n  type CommandMap,\n} from \"@its-not-rocket-science/ananke\";\n\nconst world = createWorld(1337, [\n  {\n    id: 1,\n    teamId: 1,\n    seed: 10,\n    archetype: \"KNIGHT_INFANTRY\",\n    weaponId: \"wpn_longsword\",\n    armourId: \"arm_mail\",\n    x_m: -1.2,\n  },\n  {\n    id: 2,\n    teamId: 2,\n    seed: 11,\n    archetype: \"HUMAN_BASE\",\n    weaponId: \"wpn_club\",\n    x_m: 1.2,\n  },\n]);\n\nconst commands: CommandMap = new Map([\n  [1, [{ kind: \"attackNearest\", mode: \"strike\", intensity: q(1.0) }]],\n  [2, [{ kind: \"attackNearest\", mode: \"strike\", intensity: q(1.0) }]],\n]);\n\nstepWorld(world, commands, { tractionCoeff: q(0.9) });\n```\n\n## Stable API promise\n\nFor semver stability, import from the package root only:\n\n```ts\nimport {\n  createWorld,\n  stepWorld,\n  q,\n  type CommandMap,\n} from \"@its-not-rocket-science/ananke\";\n```\n\nTier-1 root exports are documented in:\n\n- [`STABLE_API.md`](STABLE_API.md)\n- [`docs/public-contract.md`](docs/public-contract.md)\n- [`docs/stable-api-manifest.json`](docs/stable-api-manifest.json)\n\nSubpath modules are shipped and supported, but are not part of the Tier-1 semver contract unless explicitly called out as stable.\n\n## What is stable today\n\nStable today means Tier-1 root exports from `@its-not-rocket-science/ananke`:\n\n- fixed-point primitives and helpers (`q`, `SCALE`, related conversion and maths utilities);\n- host-facing types (`Entity`, `WorldState`, `Command`, `CommandMap`, `KernelContext`);\n- deterministic world and scenario entry points (`createWorld`, `loadScenario`, `validateScenario`);\n- deterministic stepping (`stepWorld`);\n- replay helpers (`ReplayRecorder`, `replayTo`, `serializeReplay`, `deserializeReplay`);\n- bridge snapshot extraction (`extractRigSnapshots`, `deriveAnimationHints`).\n\nIf you need long-term compatibility, keep production integrations on this root Tier-1 surface.\n\n## What is shipped but not semver-stable\n\nThese surfaces are available, but outside the Tier-1 stability promise unless separately documented:\n\n- most subpath modules in `package.json#exports`, including `./combat`, `./character`, `./tier2`, `./tier3`, `./netcode`, and `./host-loop`;\n- emerging or advanced modules that may change shape between minor releases;\n- exploratory integration helpers and higher-order systems.\n\nTreat these areas as adopt-with-version-pinning.\n\n## Useful next files\n\n- [`docs/PROJECT_STATUS.md`](docs/PROJECT_STATUS.md) — plain-English status for visitors\n- [`docs/host-contract.md`](docs/host-contract.md) — host integration contract\n- [`docs/bridge-contract.md`](docs/bridge-contract.md) — renderer bridge contract\n- [`docs/support-boundaries.md`](docs/support-boundaries.md) — maintainer commitments and support boundaries\n- [`docs/engineering-guarantees.md`](docs/engineering-guarantees.md) — explicit engineering guarantees\n\n## Boundaries note\n\nFirst-hour checks verify setup and basic deterministic behaviour. They do not validate your production integration. Host applications should keep their own regression suite and pin versions where deterministic behaviour is part of their product contract.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fits-not-rocket-science%2Fananke","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fits-not-rocket-science%2Fananke","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fits-not-rocket-science%2Fananke/lists"}