rename the project to khosra, initialise the module

Naming is free before a module is published, a URL is shared, or a binary is
deployed; every day it waits costs more. Swept every form: module path, binary,
cmd/ directory, KHOSRA_SITE, the feature-loop skill directory, and the prose in
earlier ADRs — which describe this project under its old name, not a different
project. Recorded as ADR-0030.

go mod init lands here rather than with the first feature because the module
path is what the rename is about. x/text and yaml.v3 are required but not yet
imported, so both are indirect and no direct dependency is claimed yet.
This commit is contained in:
Claude Opus 5
2026-07-30 01:14:01 +06:00
committed by bdeshi
parent 126fdbc861
commit 9d817dcadf
14 changed files with 78 additions and 18 deletions
+3 -3
View File
@@ -8,7 +8,7 @@ goes through an ADR, not a diff.
- `net/http`, `html/template`, `log/slog`, `os`, `io/fs`, `embed`. Routing is `http.ServeMux` with Go
1.22+ patterns — `GET /{section}/{slug}/` and `{path...}` for multi-segment slugs — so no router
library is needed. No web framework, ORM, or config library — flags plus environment variables, parsed in one place. The site root
(`-site`, `ATELIER_SITE`) is the only required setting; default templates are `embed`ded so a bare
(`-site`, `KHOSRA_SITE`) is the only required setting; default templates are `embed`ded so a bare
site root renders (ADR-0011).
- New dependency = ADR + human approval + `scripts/allowed-deps.txt`. `verify.sh` enforces it.
- Prefer 40 lines of obvious code over a dependency doing it in one call — unless the 40 lines would be
@@ -16,7 +16,7 @@ goes through an ADR, not a diff.
## Package layout
```
cmd/atelier/ main, flag parsing, explicit wiring — the only place things are assembled
cmd/khosra/ main, flag parsing, explicit wiring — the only place things are assembled
internal/content/ bundles, frontmatter, slugs, queries — knows the disk, not HTTP
internal/render/ markdown, transforms, templates — knows content, not HTTP
internal/web/ handlers, routing, headers, caching — knows both, exposes neither
@@ -26,7 +26,7 @@ Dependencies point inward. `internal/content` imports nothing from the others; `
and is imported by nothing. A feature under `internal/ext/` may import `internal/content` and
`internal/render`, and must not import `internal/web`, `cmd/`, or **another feature** — sibling imports
are what make an agent's read set compound (ADR-0027). Every `internal/ext/*` package carries a `doc.go`;
`verify.sh` fails without one. Routes reach `web` by assembly in `cmd/atelier/wire.go`, so `web` never
`verify.sh` fails without one. Routes reach `web` by assembly in `cmd/khosra/wire.go`, so `web` never
learns features exist. No `utils`, `helpers`, `common`, `shared`, `manager`, `base`,
`impl`, `core` — a package name not describing a domain is a smell. Flat until a package exceeds
`FILE_LOC_WARN`; do not pre-partition, and a single-file package therefore warns at the same point it