Hello clojure community! happy to share a prototype that I was working/researching for the last months https://github.com/semantic-namespace/atlas: A Semantic Registry for Expressive Architecture The problem to solve > "There is no reason to limit our specifications to what we can prove, yet that is primarily what type systems do. There is so much more we want to communicate and verify about our systems." > — https://clojure.org/about/spec#_expressivity_proof Have you wondered why it’s so hard to maintain shared understanding in a project? To anticipate the consequences of a change? To onboard new team members? To keep documentation aligned with reality? We developers are the authors of our systems, yet we struggle to express their meaning in a way that others can discover, understand, and safely extend. LLMs amplify this problem. They generate plausible code quickly, but they are unconstrained: they do not understand architectural intent, invariants, or boundaries. Today, most architectures live in diagrams and documents—but they are not enforced, not queryable, and they drift. As systems grow, intent becomes fragmented across files, conventions, and conversations. The design proposal Atlas explores a different approach: treating clojure namespaced keywords as first-class architectural semantics. Atlas lets you define system identities that express constraints and context—such as tiers, compliance requirements, execution models, and failure characteristics—and treat them as data. These identities can be validated, queried, and analyzed directly. All identities conform a semantic registry that makes system intent explicit and machine-readable, allowing both humans and tools to reason about, validate, and constrain changes. Architecture becomes a shared reference point rather than an implicit assumption. Atlas also includes tooling (Emacs and browser UI) to discover semantics, validate registries, query architectural intent, and generate documentation—turning architecture into a living, navigable system rather than a static description. • Status Early release (v0.1). Core concepts are stable; APIs may evolve. • Link https://github.com/semantic-namespace/atlas • examples In test folder you can find and play with some system examples: calendar system, shopping cart, pet shop Feedback very welcome! PS: Attached some images of emacs support and atlas-ui
thanks for sharing I have to look at it, I've been using business rules and invariants a lot lately while coding with AI
Interesting work. This kind of tool requires great discipline and/or great automation, but the benefits are worth it in my view, especially in terms of impact analysis, simulation/testing, and also because of the increasing use of AI to generate code. I can relate it to some tool I built in the past to project the impact of GraphQL clients on back-end systems: given a list of features (screens, API calls, GraphQL queries, etc.) and their dependencies (e.g. A uses B twice), derive the number of calls to the underlying back-ends and determine the impact of client changes as early as possible. Dependencies of GraphQL queries were automatically derived from GraphQL logs. I can imagine now that AI could also be used to derive dependencies. Input and output were EDN or spreadsheet files, and the tool could run on the JVM or Node.js (cljc). The tool was run manually but my intent was to include it in CI, though I moved on to another role before I had a chance to do that.
@fmjrey thanks for the feedback! > This kind of tool requires great discipline and/or great automation, totally agree and struggled with! 🙂 , atlas, in relation to automation, offers "https://github.com/semantic-namespace/atlas/blob/main/src/atlas/invariant.cljc#L196-L214" to check that system definitions keep consistent. Regarding discipline current direction is offering ways of keeping ontology understanding "easy" via IDE support (https://github.com/semantic-namespace/atlas/blob/main/emacs/semantic-ns-v2.el#L2140-L2202), visualisations (atlas-ui) and atlas.query (eg: https://github.com/semantic-namespace/atlas/blob/main/docs/api-reference.md#semantic-similarity) > benefits are worth it in my view, especially in terms of impact analysis, simulation/testing, absolutely agree! there are currently WIP testing executor https://github.com/semantic-namespace/atlas/blob/main/test/app/calendar_availability_executor_test.clj#L438-L442 > and also because of the increasing use of AI to generate code. more than to generate code I tried LLMs with https://gist.github.com/tangrammer/d7e818408407fd4f8949f040c85d7313 to check how definitions logically fit but also to generate "pseudo-deterministic" docs. (https://claude.ai/share/7726a2ef-d77b-4d83-a036-78f7d6836605)
Take a look at https://github.com/soulspace-org/overarch. It's a graph based architecture description and tooling to generate diagrams and documentation. I suppose there is enough overlap to be of interest.
Here are some examples https://github.com/soulspace-org/my-bank-model of the model.
@lsolbach Thanks for sharing that project, I'd already found it recently 🙂 . Atlas project follows semantics on a different direction, very influenced by clojure.spec regarding namespaced-keywords and global mutable registry but also trying compound identities to solve the clojure.spec "maybe not' problem.
@yenda1 great to hear that 🙂 in relation to invariants I'm modularising the ontology part so each ontology has its atlas definition and invariants related, coming soon together with atlas-ui-v2
Announcing https://github.com/lukaszkorecki/fusion-http - a Ring adapter for Fusion Auth's java-http package. Why another Ring adapter you ask? This one has a couple of interesting features:
• java-http is written in plain java, no external dependencies
• it's quite fast as it relies on virtual threads only
• battle tested by Fusion Auth
fusion-http smooths out a couple of rough spots by providing a slf4j logging bridge and Component support. I'm using it in a couple of backend services and tools compiled using native image.
https://github.com/lukaszkorecki/fusion-http