- PowerShell 73.2%
- C++ 19%
- TypeScript 6.1%
- SCSS 1.7%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
|
||
| .epiphany | ||
| .github/workflows | ||
| Kalsa | ||
| scripts | ||
| seed | ||
| site | ||
| workshop | ||
| .gitattributes | ||
| .gitignore | ||
| AGENTS.md | ||
| CLAUDE.md | ||
| LICENSE | ||
| README.md | ||
Kalsa
Kalsa is a high-fantasy setting for Ghostlight Dungeon: gods, prophets, shamans, old miracles, sacred machinery, fallen cities, and peoples trying to live among explanations that do not agree.
This repository is the complete open author vault. It contains setting-level and dungeon spoilers in plain text. They are not secret, but they are not the intended first encounter either. The public reader surface is deliberately smaller so that people can choose when to inspect the machine.
Open Kalsa/—not the repository root—as the Obsidian vault. Its file explorer
shows the reader section and one explicitly named spoiler section.
Problem it solves: Kalsa began as a teenage seed. It is being turned into a causally dense setting that Ghostlight Dungeon can use for play, while keeping author truth, reader lore, and what a character may know in separate owners, so spoilers stay opt-in.
Live versus planned: live are the vault (Kalsa/Public/ for readers, Kalsa/Spoilers/ for authors and GMs), the spoiler-safe Quartz site built from Kalsa/Public/ alone (https://gamecult.github.io/Kalsa/), and the iterative deepening system in workshop/deepening/ (queue.md is the live plan and ledger.md the audit trail). Planned or blocked, per the queue: the Kalsa world-compiler integration owned by Ghostlight (KALSA-027), a source-grounded Intuition polity (KALSA-023), more situated magical traditions (KALSA-031), and the kalsa.gamecult.org domain, an external DNS and Pages step this repo does not assert as done.
Start here
- Readers and players: begin with
Kalsa/Public/index.md. The Quartz site publishes only this spoiler-safe surface. - Vault explorers:
Kalsa/index.mdis a navigation-only gate between the reader path and the warned spoiler section. - Deliberate spoiler readers and writers: continue through
Kalsa/Spoilers/index.md. - Writers: read
workshop/Direction and Constraints.md, thenKalsa/Spoilers/Reference/Canon and Provenance.md. - Maintainers: the iterative repair system lives under
workshop/deepening/; site-specific Quartz configuration lives undersite/.
Authority map
Kalsa/Public/: inhabitant-facing common knowledge, attributed scholarship, and situated sources; the only Quartz content rootKalsa/Spoilers/: complete open author canon and GM material; deliberately entered repository/Obsidian sectionKalsa/index.md: navigation only; owns no setting claimsKalsa/.obsidian/: stable configuration for the canonical vault; session and cache state remain local and ignoredseed/original/: immutable source witnessesseed/manifest.md: source hashes and witness mapworkshop/: critique, proposals, contradictions, and repair evidence; never automatic canon.epiphany/: durable agent judgment and continuity; never setting truthsite/: Kalsa-specific Quartz projectionscripts/: build and verification toolsquartz-site/public/: generated output, ignored by Git
Obsidian is the authoring interface. Quartz is the reader projection. Neither owns lore. Public prose lets players explore what Kalsan cultures, schools, offices, and witnesses understand and dispute; it is not a shortened author encyclopedia. Public prose does not overrule its canonical subject owner, and author truth does not enter a character's knowledge merely because both exist in one open repository.
Local site
The shared engine is the sibling GameCult-Quartz repository. Install that engine's dependencies once, then run:
.\scripts\quartz\quartz.ps1 build
For local development:
.\scripts\quartz\quartz.ps1 dev
Set GAMECULT_QUARTZ_ROOT when the shared engine is not checked out beside this repository. The launcher stages the engine under .quartz-build/engine and writes the static site to quartz-site/public.
The intended custom domain is kalsa.gamecult.org. DNS and the GitHub Pages domain binding are an external deployment step; repository configuration does not pretend that step has already happened.
Deepening standard
The target is causal density comparable to AetheriaLore, not a matching heap of nouns. A mature institution exposes its origin, authority, material base, recruitment and succession, ordinary procedure, beneficiaries and costs, dependencies, internal contradiction, organized resistance, failure modes, and consequences for play. Each repair wave is modeled, challenged by an unfamiliar reader, grounded against named sources, changed in a bounded diff, and verified before its ledger entry closes.