Archmeta Application C4 L2 Kernel
Elements (13)
Cascade Enginec4:component
archmeta.kernel.cascade-enginePropagates authored data points through architect-declared hierarchies until nothing changes. Relationship edges and containment edges are interleaved rather than run in fixed phases, and both merge rules are monotone, so the sweep provably reaches a fixed point. Also computes the requirement-versus-capability gap report.
Diagnosticsc4:component
archmeta.kernel.diagnosticsCollects everything wrong with the model without stopping the load, and is the feedback channel the AI-first authoring loop depends on. Written to the report files and served over the API; deliberately absent from the generated site.
Loaderc4:component
archmeta.kernel.loaderWalks the repository, parses every source file and builds the graph. Deterministic in ordering as well as in content, so two loads of one commit produce byte-identical output. A syntax error costs the statement, not the file.
Metamodel Registryc4:component
archmeta.kernel.metamodel-registryResolves the metamodel profiles the repository declares — C4, ArchiMate, custom, side by side. Profiles are repository files scaffolded by archmeta init, never built into the Kernel, so a customer can ship a vocabulary the product has never seen.
Model Graphc4:component
archmeta.kernel.model-graphThe in-memory graph: elements and relationships, two universal node kinds and nothing else. All ontology lives in metamodel profiles rather than in syntax. A child has exactly one parent, and dotted-path containment always wins over a relationship-derived one.
REST APIc4:component
archmeta.kernel.rest-apiThe only way in. Point reads by id, search, and bounded neighbourhood fetches — there is no endpoint that returns the whole graph, because a client that could ask for it would eventually be built to.
Write-Backc4:component
archmeta.kernel.write-backTurns a batch of staged edits into file changes and one Git commit. Persists the authored string rather than the resolved path; regenerates .arch, .data and .view as projections of the model while treating .bpmn and .md as authoritative and never rewriting them. A round-trip guard compares what it wrote against what it meant to write.
Kernelc4:container
archmeta.kernelReads the repository into an in-memory graph and serves it over REST on port 7777. Never throws on model content: unresolved references, malformed attributes and rule violations become diagnostics, and the load always completes. A pure function of the repository — no clock, no randomness, no network during a load — so the same commit produces the same model and the same diagnostics forever.
ArchMetac4:softwaresystem
archmetaA platform for managing architecture documentation as code. Architects describe their organisation in a textual DSL stored in Git; the Kernel reads that repository into an in-memory graph and serves it over REST, the Viewer authors it, and the Publisher turns it into a static site. There is no database — Git is the source of truth, and the same commit always produces the same model.
Git Repositoryc4:externalsystem
git-repositoryThe model repository: .arch, .data, .view, .cascade, .metamodel, .bpmn and .md files. This IS the database. The Kernel reads it on load and commits to it on write-back; it never pushes, never pulls and never branches, and is silently inert when the directory is not a Git working tree.
LLM (Claude)c4:externalsystem
llmWhere .arch files come from in practice. The authoring loop is AI-first, which is why the DSL keeps uniform, predictable shapes a model can emit reliably and why the diagnostics and report files matter — they are the feedback channel back to the generator.
Model Repository Volumearchimate:node
deployment.volumes.model-repoThe Git working tree holding the .arch, .data, .view, .cascade, .metamodel, .bpmn and .md files, mounted read-write so the Kernel can commit. This is the database, and it is a directory.
Grammarc4:container
archmeta.grammarThe Langium grammars for .arch, .data, .view, .cascade and .metamodel, plus the generated parsers and TextMate syntaxes. Depends on nothing else in the product — deliberately, so the language can be reasoned about without the Kernel.
Relationships (22)Relationships (2)
archmeta.kernel.cascade-engine → archmeta.kernel.model-graphCascade Engine → Model Graphc4:uses
archmeta.kernel.cascade-engine → archmeta.kernel.model-grapharchmeta.kernel.loader → archmeta.grammarLoader → Grammarc4:dependson
archmeta.kernel.loader → archmeta.grammarReports every problem toc4:sendsto
archmeta.kernel.loader → archmeta.kernel.diagnosticsarchmeta.kernel.loader → archmeta.kernel.metamodel-registryLoader → Metamodel Registryc4:uses
archmeta.kernel.loader → archmeta.kernel.metamodel-registryBuildsc4:sendsto
archmeta.kernel.loader → archmeta.kernel.model-grapharchmeta.kernel.rest-api → archmeta.kernel.model-graphREST API → Model Graphc4:uses
archmeta.kernel.rest-api → archmeta.kernel.model-graphPOST /api/editsc4:uses
archmeta.kernel.rest-api → archmeta.kernel.write-backWrites files and commitsc4:sendsto
archmeta.kernel.write-back → git-repositoryParses every source file withc4:dependson
archmeta.kernel → archmeta.grammararchmeta.kernel → archmeta.kernel.cascade-engineKernel → Cascade Enginearchimate:composition
archmeta.kernel → archmeta.kernel.cascade-enginearchmeta.kernel → archmeta.kernel.diagnosticsKernel → Diagnosticsarchimate:composition
archmeta.kernel → archmeta.kernel.diagnosticsarchmeta.kernel → archmeta.kernel.loaderKernel → Loaderarchimate:composition
archmeta.kernel → archmeta.kernel.loaderarchmeta.kernel → archmeta.kernel.metamodel-registryKernel → Metamodel Registryarchimate:composition
archmeta.kernel → archmeta.kernel.metamodel-registryarchmeta.kernel → archmeta.kernel.model-graphKernel → Model Grapharchimate:composition
archmeta.kernel → archmeta.kernel.model-grapharchmeta.kernel → archmeta.kernel.rest-apiKernel → REST APIarchimate:composition
archmeta.kernel → archmeta.kernel.rest-apiarchmeta.kernel → archmeta.kernel.write-backKernel → Write-Backarchimate:composition
archmeta.kernel → archmeta.kernel.write-backUsec4:uses
archmeta.kernel → git-repositoryReads on load, commits on write-back — never pushes
archmeta → archmeta.grammarArchMeta → Grammararchimate:composition
archmeta → archmeta.grammararchmeta → archmeta.kernelArchMeta → Kernelarchimate:composition
archmeta → archmeta.kernelReads the modelc4:uses
archmeta → git-repositoryRealizearchimate:realization
deployment.volumes.model-repo → git-repositoryIs the working tree of
Writes generated .arch files intoc4:sendsto
llm → git-repository