{"id":50388563,"url":"https://github.com/stablekernel/crucible","last_synced_at":"2026-05-30T17:00:25.760Z","repository":{"id":361168000,"uuid":"1252672028","full_name":"stablekernel/crucible","owner":"stablekernel","description":"Forge event-driven services in Go","archived":false,"fork":false,"pushed_at":"2026-05-29T12:32:16.000Z","size":54,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-29T13:21:49.757Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stablekernel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-28T18:53:58.000Z","updated_at":"2026-05-29T11:53:56.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/stablekernel/crucible","commit_stats":null,"previous_names":["stablekernel/crucible"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/stablekernel/crucible","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stablekernel%2Fcrucible","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stablekernel%2Fcrucible/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stablekernel%2Fcrucible/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stablekernel%2Fcrucible/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stablekernel","download_url":"https://codeload.github.com/stablekernel/crucible/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stablekernel%2Fcrucible/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33700863,"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-05-30T02:00:06.278Z","response_time":92,"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":[],"created_at":"2026-05-30T17:00:20.240Z","updated_at":"2026-05-30T17:00:25.753Z","avatar_url":"https://github.com/stablekernel.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Crucible\n\n[![License: Apache 2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](./LICENSE)\n\n**Forge event-driven services in Go.**\n\nCrucible is a multi-module Go toolkit for building event-driven services. Its\ndesign philosophy is **thin seams, no-op defaults, no forced dependencies**:\nevery cross-cutting concern (logging, tracing, metrics, IDs, time) is a small,\nconsumer-providable interface with a do-nothing default. You bring *your*\nlogger, *your* tracer, *your* clock — Crucible never makes you adopt its\nchoices, and never leaks a third-party type into a public signature.\n\nThe pure kernel (`state`) is the extreme end of this: **stdlib-only**, with no\ninjected IO at all. The IO modules carry the heavier seams via injection, but\nfollow the same rule — defaults are no-ops, nothing third-party is forced on the\nconsumer.\n\n## Modules\n\nEach module is independently versioned (per-module SemVer) and carries its own\nstability label.\n\n| Module    | What it is                                                                 | Status      |\n| --------- | -------------------------------------------------------------------------- | ----------- |\n| `state`     | Pure, abstract, domain-agnostic state machine kernel. Stdlib-only, no IO.  | experimental |\n| `telemetry` | Vendor-neutral tracing/metrics interface for the IO modules. Stdlib-only.  | experimental |\n| `broker`  | Message broker seam — publish/subscribe transport with injected adapters.  | planned     |\n| `store`   | Durable state/event store seam with graceful lifecycle.                    | planned     |\n| `sink`    | Effect dispatch / egress seam for emitted effects.                         | planned     |\n\nThe kernel emits effects as pure data; the IO modules are the thin seams that\ncarry those effects to real transports, stores, and sinks — each\n\"bring your own adapter,\" none forced on the consumer.\n\n## Status\n\nEarly and evolving. The `state` kernel is implemented — the builder and\ntransition engine, guards and actions, validation, path planning, batch\nhelpers, and JSON (de)serialization — with test coverage; treat its API as\nexperimental until a tagged release. The `broker`, `store`, and `sink` modules\nare planned.\n\n## Design \u0026 discussions\n\nDesign rationale and roadmaps live on the GitHub\n[Discussions board](https://github.com/stablekernel/crucible/discussions),\norganized into the **State Machine** and **Conventions** categories. Start with:\n\n- [Crucible Engineering Standards](https://github.com/stablekernel/crucible/discussions/9)\n  — the suite-wide baseline every module is held to.\n- [State Machine — Overview \u0026 Roadmap](https://github.com/stablekernel/crucible/discussions/1)\n- [State Machine — Kernel Core](https://github.com/stablekernel/crucible/discussions/2)\n\n## Contributing\n\nContributions are welcome. See [CONTRIBUTING.md](./CONTRIBUTING.md) for dev\nsetup, the [Mage](https://magefile.org) targets, conventional commits, and the\nDCO sign-off requirement. By participating you agree to the\n[Code of Conduct](./CODE_OF_CONDUCT.md).\n\n## License\n\nLicensed under the [Apache License, Version 2.0](./LICENSE). See\n[NOTICE](./NOTICE) for attribution.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstablekernel%2Fcrucible","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstablekernel%2Fcrucible","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstablekernel%2Fcrucible/lists"}