Thesis
Glyph should be built under its own conceptual constraints as early as possible. Until Glyph can track itself, this workspace is a pre-Glyph workspace: a plain filesystem directory containing canonical specs and design artifacts. It must not be initialized as a Git repository merely for convenience. Glyph’s first meaningful act of self-hosting should be to import this workspace as its genesis source graph.Problem
It is easy to design a replacement for Git while quietly depending on Git-shaped habits:- Commits as the default unit of thought
- Branches as the default unit of parallel work
- Worktrees as the default unit of isolation
- Repository boundaries as the default unit of visibility
- Push/pull as the default publication model
- Git history as the default project memory
Goals
- Avoid initializing Git for the Glyph workspace.
- Treat specs as canonical source artifacts during the bootstrap phase.
- Preserve enough project memory to import into Glyph later.
- Make design decisions explicit without requiring commits.
- Define when Glyph is mature enough to track itself.
- Keep the process lightweight enough that it does not become ceremonial.
Non-Goals
- Replacing version control manually with a pile of scripts.
- Creating a perfect audit log before Glyph exists.
- Designing the final Glyph storage engine.
- Defining every CLI command.
- Supporting multiple collaborators before the first prototype.
Bootstrap Rule
Until Glyph reaches self-hosting readiness:- Do not run
git initin this workspace. - Do not create a Git repository elsewhere as the canonical Glyph project history.
- Treat files under
docs/specs/as canonical project source. - Treat working notes outside
docs/specs/as non-canonical unless promoted into a spec. - Prefer append-only or clearly superseding edits for major design changes.
- Record important design changes in spec status sections or decision records.
- When Glyph can import a directory, this workspace becomes the genesis source graph.
Canonical Artifacts
Specs
Specs live indocs/specs/ and are numbered.
Numbering:
000-*: bootstrap, process, and project constitution001-*onward: product and system specs
- Status
- Date
- Accepted-By, when status is
Accepted - Accepted-Date, when status is
Accepted - Thesis
- Problem
- Goals
- Non-goals
- Concepts or architecture
- Workflows where relevant
- Invariants where relevant
- Decisions or prototype defaults
- Prototype defaults where useful
- Success criteria
Decision Records
Small decisions can live inside the relevant spec. Large cross-cutting decisions should become separate specs or decision records underdocs/decisions/ once needed.
Examples:
- Naming and trademark direction
- Storage engine choice
- Policy language choice
- Git compatibility boundary
- Self-hosting readiness declaration
Notes
Exploratory notes may live underdocs/notes/.
Notes are not canonical unless referenced or promoted by a spec.
Bootstrap Manifest
The bootstrap workspace should include a smallglyph.yaml manifest.
The manifest is not a replacement for Glyph storage. It is a stable entrypoint for the future genesis importer.
It should record:
- Project name
- Spec directory
- Default public realm
- Bootstrap identity
- Genesis import include rules
- Genesis import exclude rules
Prototype Code
Prototype code may be added before Glyph can track itself, but it is not the canonical project history. During bootstrap, code is an implementation artifact under active design control by the specs. Once Glyph can import the workspace, prototype code becomes part of the genesis graph alongside the specs.Spec Status
Specs use simple statuses:Draft: useful but still changingAccepted: current design basisSuperseded: replaced by a newer specRejected: intentionally not pursued
Draft.
Once a spec is Accepted, major changes should either:
- Add a dated amendment section
- Create a superseding spec
- Create a decision record that updates interpretation
Identity Model During Bootstrap
All users and agents should have stable IDs and providers. User providers may be:self: a self-asserted local identity- An organization identity provider
- A hosted Glyph identity provider, if one exists later
codexclaude-codecursor- Other coding-agent runtimes
Project Memory Before Glyph
Because there is no Git history, project memory must be carried in the documents themselves. Each important spec should make these visible:- What decision is being made
- Why it matters
- What alternatives were considered
- What remains unresolved
- What would prove the design wrong
Naming During Bootstrap
The working project and CLI name is Glyph.realm is no longer the product name. It is a core primitive inside Glyph.
A realm is a permissioned projection over a source graph.
This avoids overloading product identity and system vocabulary.
Genesis Source Graph
Glyph’s first self-hosted import should create a genesis source graph from this workspace. The genesis import should include:docs/specs/docs/decisions/, if presentdocs/notes/, if present- Prototype source code, if present
- Tests, if present
- Build and package files, if present
- Import timestamp
- Files included
- Content hashes for included files
- Files excluded
- Import actor identity
- Manifest path
- Initial realm policy
- Initial public projection
- Initial maintainer projection
- Known lack of pre-import fine-grained history
.glyph/audit/events.jsonl and include:
Self-Hosting Readiness
Glyph is ready to track itself when it can:- Import this workspace into a source graph.
- Materialize at least one filesystem projection.
- Preserve file contents and paths across import/export.
- Represent at least two realms, such as
publicandmaintainers. - Prevent a private file from appearing in the public projection.
- Record a publication event from one realm to another.
- Expose a simple file read/write API for an agent.
- Export the public projection into a normal directory or Git repository.
- Produce a readable audit record for import and publication events.
Bootstrap Workflow
Create Or Update A Spec
- Discuss the concept.
- Agree on the intended scope.
- Write or update the spec file.
- Self-review for placeholders, contradictions, vague language, and scope creep.
- Mark the spec
Acceptedonly when it is stable enough to guide implementation.
Make A Major Design Change
- Identify which spec owns the concept.
- If the spec is
Draft, edit it directly. - If the spec is
Accepted, add an amendment or create a superseding spec. - Update affected later-spec references.
Start Prototype Work
Prototype work can begin once the specs define:- Realms and projections
- Work graph model
- Storage object model
- Agent file API
- Minimum CLI or API surface
- Self-hosting import path
Invariants
- No Git by default Git must not become Glyph’s hidden project substrate during bootstrap.
- Specs are source The spec corpus is the authoritative project memory until Glyph can track itself.
- Dogfooding pressure stays visible Any step that would be easier with Git should be treated as design input for Glyph.
- Self-hosting is a milestone, not a slogan Glyph tracks itself only after it can satisfy the readiness checklist.
- No fake history The genesis import should not fabricate commit history. It should honestly record that prior history lived in the spec documents.
- Compatibility is downstream Git export matters, but it must not dictate the bootstrap process.
Prototype Defaults
- No Git repository is initialized.
- Specs are written as Markdown.
- Canonical specs live in
docs/specs/. - A minimal
glyph.yamlmanifest exists before self-hosting. - Accepted specs require
Accepted-ByandAccepted-Date. - Bootstrap identities include both an actor type and provider.
- The current product and CLI name is
Glyph. - The first public realm will include specs by default.
- The first public export target is a Git repository.
- A hosted Glyph projection is deferred until after the first compatibility export.
- The genesis import includes files only by default.
- The genesis import audit format is append-only JSONL.
- Any future private notes or experiments must be explicitly excluded by genesis import policy.
- Self-hosting begins only after the readiness checklist passes.
Success Criteria
This spec is successful if:- The project can progress through specs without Git.
- The team can tell which files are canonical.
- Major decisions remain understandable without commit history.
- The first Glyph prototype has a clear dogfooding target.
- The genesis import can honestly represent how the project began.