33a3deaf
feat: foundation — go.mod with every dependency, and the core/ domain
Phase 1 foundation commit. Two things, so that later parallel waves write
disjoint directories and never touch go.mod:
- go.mod / go.sum carrying every external dependency the whole module will
need (go-git, bleve, goldmark, chi, lib/pq, yaml.v3, the MCP SDK, brant,
auxilia, testify, and the sr-ht-core fork). Populated by building a
throwaway blank-import file, which is then deleted; `go mod tidy` runs
once, at the very end of the build-out.
- core/, the pure domain: owner/space names, safe relative paths, the
globally-unique document ID grammar, frontmatter parsing and schema
validation, `.spec.yml` policy with auto_merge glob matching, and the
proposal state machine. Standard library plus yaml.v3, nothing else.
Two design invariants are enforced here rather than documented and hoped for:
"approved" is not a status (it is a property of the branch a document is
reachable from), and the proposal machine has exactly open/merged/rejected.
A per-space `.spec.yml` cannot reintroduce either.
Note on the sr-ht-core pin: the design calls for a `replace` onto
git.srht.bigb.es/~bigbes/core-go at c2c2f38, but that commit's go.mod still
declares `module git.sr.ht/~sircmpwn/core-go`, so Go rejects the replacement.
Both siblings pin the later dd418a20 under the canonical path with no
replace; this does the same.
Eugene Blikh <bigbes@gmail.com> — 2026-07-22 07:58:57 UTC
Commit 33a3deafbd02e8f74b9cd588d48867e0c9f77a69 —
view raw patch
Parent(s):
a7336236
| File | Status | + | − |
|---|---|---|---|
.gitignore
|
A | +17 | |
Makefile
|
A | +79 | |
core/errors.go
|
A | +69 | |
core/frontmatter.go
|
A | +276 | |
core/frontmatter_test.go
|
A | +405 | |
core/id.go
|
A | +101 | |
core/id_test.go
|
A | +101 | |
core/names.go
|
A | +220 | |
core/names_test.go
|
A | +216 | |
core/policy.go
|
A | +240 | |
core/policy_test.go
|
A | +321 | |
core/proposal.go
|
A | +93 | |
core/proposal_test.go
|
A | +147 | |
go.mod
|
A | +107 | |
go.sum
|
A | +358 |