Knowledge Publishing Architecture Wiki
A living knowledge base of design decisions, trade-offs, and architectural patterns for ListHub and WikiHub β two products that share DNA but optimize for different things.
What this is
This is a Karpathy-style LLM wiki: a markdown knowledge base that grows over time as we make decisions, discover patterns, and learn from implementation. Each article captures a specific trade-off or decision with enough context for a future agent or human to understand why.
Index
Architecture
- [[beads-vs-wikihub-architecture]] β Steve Yegge's Beads (SQLiteβJSONL) vs WikiHub (gitβPostgres): why they flip source-of-truth direction
- [[git-source-of-truth-rationale]] β Why git is the source of truth for public content in WikiHub (not Postgres)
- [[no-content-duplication]] β Public content lives in git only, private in Postgres only, never both
- [[two-bare-repos-per-wiki]] β Authoritative + public mirror architecture
- [[post-receive-vs-plumbing]] β No-loop sync invariant: hooks fire one way, plumbing the other
Data Model
- [[acl-codeowners-pattern]] β
.wikihub/aclglob-based permissions, most-specific wins - [[private-bands]] β
<!-- private -->HTML comment sections as lightweight sub-file privacy - [[visibility-modes]] β The 8-mode vocabulary: private, public, public-edit, unlisted, unlisted-edit, signed-in, link-share, shared
- [[frontmatter-acl-specificity]] β Frontmatter wins for its file, ACL globs below, repo default at bottom
ListHub Specific
- [[listhub-db-git-mirror-pattern]] β DB source-of-truth + one-way per-user bare git mirrors
- [[listhub-sqlite-vs-postgres]] β Why ListHub uses SQLite (single-server, simple) vs WikiHub's Postgres
- [[bare-repo-provisioning-bug]] β jacobcole has no bare repo β signup never calls
git init --bare
Open Questions
- [[milkdown-editor]] β Rich editor choice (pending)
- [[quartz-style-reference]] β Style reference only, don't fork
- [[deployment-domain]] β wikihub.globalbr.ai? New Lightsail? Cohabit with ListHub?
- [[concurrent-edit-posture]] β Last-write-wins vs git-merge vs optimistic-lock
- [[events-jsonl-scope]] β v1 or v2? Content+permission mutations only, not stars/views
How to contribute
Each article should follow this pattern:
1. Decision/trade-off in the title
2. Context β what problem are we solving?
3. Options considered β what did we evaluate?
4. Decision β what did we pick and why?
5. Consequences β what does this enable or constrain?
Products covered
| Product | Repo | Live | Stack |
|---|---|---|---|
| ListHub | ~/listhub (Mac mini) | listhub.globalbr.ai | Flask + SQLite + Jinja |
| WikiHub | ~/code/wikihub | (local dev) | Flask + Postgres + Jinja + bare git |