Skip to content

Publish the OpenWiki specification: a wiki that is a folder of Markdown files - #189

Merged
ralyodio merged 1 commit into
masterfrom
spec/openwiki
Sep 13, 2026
Merged

ralyodio merged 1 commit into
masterfrom
spec/openwiki

Conversation

@ralyodio

Copy link
Copy Markdown
Contributor

Anthony: "we need an openwiki on logicsrc that stores native wiki data as markdown. we have goviral.wiki we can use it on: Markdown with wikilinks, the [[Page]] convention Obsidian, Logseq and most modern note tools share, with no formal spec and no agreed front matter."

OpenWiki 0.1 at /openwiki and /docs/openwiki, in the catalog beside OpenWebring.

  • The page: one Markdown file; front matter with a fixed optional vocabulary (title, aliases, tags, summary, author, made_by, disclosure, created, updated, license, lang, redirect); absent is unstated.
  • Wikilinks: [[Page]], [[Page|label]], [[Page#Section]], ![[Page]]; resolution order exact, loose (case and space/hyphen/underscore), alias, path, wanted.
  • The URL: /going-viral rendered, /going-viral.md as stored (ETag = revision id), ?rev=<id>, /going-viral.history.json with author, made_by, summary and parent per revision.
  • The wiki: /.well-known/openwiki.json (pages_url, changes Atom, repo, edit, editors open|accounts|closed, accepts), and pages.json with the link graph and wanted pages.
  • Editing: PUT <page>.md with If-Match; 412 means read and retry; X-OpenWiki-Made-By; OpenAccess scope openwiki:edit.
  • Discovery, directories, what is deliberately absent (no markup of its own, no verification of made_by, no registry, no user model, no engine), running one, related standards, version history, CC BY 4.0.

Compatibility is the point: an Obsidian or Logseq folder is already the page format; the two JSON files make it a host. goviral.wiki is named as the first host, being built.

🤖 Generated with Claude Code

https://claude.ai/code/session_01XYae2mH3khdwiXUVzcVMDw

…wn files

OpenWiki writes down what the [[Page]] convention already is in practice,
so a wiki can be moved, mirrored, read by a directory and edited by an
agent without reading any engine's source. One Markdown file per page
with a small optional front matter (title, aliases, tags, summary,
author, made_by, disclosure, created, updated, license, lang, redirect);
wikilinks resolved by exact name, loose name, alias, path, then wanted;
one address with three representations (rendered, .md, .md?rev=) and a
history.json per page; a descriptor at /.well-known/openwiki.json with
pages_url, changes (Atom), repo, edit, editors and accepts; editing as
PUT of the same file with If-Match on the revision; discovery; what a
directory owes a wiki. Every revision says who made it: human, ai or
both, the same word OpenWebring uses.

A folder that follows it opens unchanged in Obsidian and Logseq, and any
such folder becomes an OpenWiki by adding the two files. The first host,
goviral.wiki, is being built on it.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XYae2mH3khdwiXUVzcVMDw
@github-actions

Copy link
Copy Markdown

ThreatCrush Security Scan

22 finding(s)

HIGH/CRITICAL: 3 | MEDIUM: 10 | LOW: 9

Severity Rule Location
HIGH secret-private-key plugins/credential-sharing/src/providers/ssh.ts:129
HIGH js-host-header-trust apps/commandboard-web/server.js:27
HIGH js-ssrf-outbound-request apps/pwa/public/sw.js:45
MEDIUM js-unescaped-html-sink apps/commandboard-web/src/main.ts:19
MEDIUM js-unescaped-html-sink apps/logicsrc-web/src/app/[[...slug]]/page.tsx:71
MEDIUM js-unescaped-html-sink apps/logicsrc-web/src/app/layout.tsx:88
MEDIUM js-unescaped-html-sink apps/logicsrc-web/src/app/pricing/page.tsx:46
MEDIUM js-unescaped-html-sink apps/logicsrc-web/src/components/breadcrumbs.tsx:43
MEDIUM js-unescaped-html-sink apps/logicsrc-web/src/components/site-shell.tsx:34
MEDIUM redos-nested-quantifier packages/opencontext/src/ids.ts:10
MEDIUM redos-nested-quantifier packages/opencontext/src/ids.ts:11
MEDIUM js-timing-unsafe-mac-compare packages/opencontext/src/validate.ts:208
MEDIUM redos-nested-quantifier packages/openontology/src/ids.ts:20
LOW secret-generic-credential apps/pwa/test/appbar.test.mjs:10
LOW secret-aws-access-key packages/opencontext/src/permissions.test.ts:260
LOW secret-private-key packages/opencontext/src/permissions.test.ts:261
LOW secret-stripe-key packages/opencontext/src/permissions.test.ts:262
LOW secret-aws-access-key packages/opencontext/src/security.test.ts:228
LOW secret-private-key plugins/credential-sharing/src/providers/ssh.test.ts:7
LOW secret-database-url plugins/credential-sharing/src/rekey.test.ts:33
LOW secret-openai-key plugins/credential-sharing/src/vault-encryption.test.ts:21
LOW secret-generic-credential plugins/credential-sharing/src/vault-encryption.test.ts:21

Snippets are redacted; ThreatCrush never prints matched credential material.

@ralyodio
ralyodio merged commit 0395ff1 into master Sep 13, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant