Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# AGENTS.md

This repository follows Tinman Doctrine.
This repository follows project doctrine.

## Agent Operating Rules

Expand Down
31 changes: 15 additions & 16 deletions AI_CONTEXT.md
Original file line number Diff line number Diff line change
@@ -1,34 +1,33 @@
# AI Context

Status: Stable
Last Reviewed: 2026-02-28
Last Reviewed: 2026-06-04

Purpose: Provide consistent context to AI tools about identity, naming, and engineering practices.
Purpose: Provide contributor-neutral context to AI tools about repository standards, engineering practices, and safe public project defaults.

---

## Identity
## Public Context Boundary

Primary engineering identity: TinMan
Real/legal identity: George Gil
This file is safe to copy into public repositories.

Public authorship should default to TinMan unless explicitly personal/legal.
Do not add maintainer-private identity, legal identity, account ownership details, private contact details, credentials, private infrastructure names, or recovery information here.

---
Maintainer-specific preferences belong in a private/local overlay that is not copied into public templates or generated repositories.

## Authorship and Identity

## Naming Tiers
Follow the repository's visible author, license, contribution, and ownership metadata.

Use `usernames.md` as source of truth.
AI tools must not infer, invent, or add personal maintainer identity information. If authorship or account identity is ambiguous, leave it unchanged and ask a maintainer through the normal project workflow.

Choose identity first:
---

- TinMan ladder for engineering/public technical authorship.
- TinkerSpace ladder for studio/environment/workspace contexts.
## Naming

Then apply sequential fallback within that ladder only.
Avoid unrelated suffixes.
Follow `naming.md` for repository, code, module, and project naming.

---
Use project-local naming rules when they are more specific than doctrine defaults.

## Repository Standards

Expand All @@ -42,7 +41,7 @@ Follow:

## Technology Orientation

Primary domains:
Common domains in this ecosystem include:

- Systems programming
- Robotics
Expand Down
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,15 @@

All notable changes to this template are documented here.

## [Unreleased]

### Changed
- Refreshed the doctrine snapshot to the contributor-neutral public baseline.
- Added validation that rejects maintainer identity content in public template exports.

### Removed
- Maintainer identity and username-ladder doctrine files from the public snapshot.

## [0.1.0] - 2026-02-28

### Added
Expand Down
100 changes: 9 additions & 91 deletions docs/doctrine/README.md
Original file line number Diff line number Diff line change
@@ -1,98 +1,16 @@
# Doctrine
# Doctrine Snapshot

Status: Stable
Last Reviewed: 2026-02-28
This folder contains a local doctrine snapshot copied from the Doctrine repository.

Centralized engineering doctrine defining identity, naming, coding philosophy, and project standards.
## Source of Truth

This repository acts as a persistent reference for engineering decisions and conventions.
The canonical source remains the Doctrine repository.

---
## Refresh

## Navigation
Re-run bootstrap when doctrine updates are needed.

### Identity
## Export Boundary

- [Identity Structure](identity.md)
- [Username System](usernames.md)

### Naming

- [Naming Conventions](naming.md)

### Engineering

- [Coding Principles](coding.md)
- [Project Standards](project-standards.md)
- [C/C++ Template Family Doctrine](cpp-template-family.md)

### Repository Governance

- [Repo Governance Doctrine](repo-management.md)
- [Doctrine Governance](doctrine-governance.md)
- [Repo Visibility Note Template](templates/repo-visibility-note-template.md)
- [Doctrine Change Record Template](templates/doctrine-change-record-template.md)

### AI Usage

- [AI Context](AI_CONTEXT.md)

### Meta

- [Release Notes](RELEASE_NOTES.md)
- [Bootstrap Scripts](tools/README.md)

---

## How To Use Doctrine

Doctrine is not meant to be read sequentially.

Use it as a reference:

- Starting a project → check Project Standards
- Naming something → check Naming
- Writing code → check Coding
- Building template ecosystems → check C/C++ Template Family Doctrine
- Setting identity → check Identity/Usernames
- Using AI → provide AI Context
- Changing policy → check Doctrine Governance + DCR Template
- Preparing repo visibility decision → use Visibility Note Template

---

## Purpose

Doctrine exists to:

- Reduce decision fatigue
- Maintain consistency
- Preserve engineering identity
- Standardize project structure
- Improve long-term maintainability

---

## Bootstrap Any Repository

Use the bootstrap scripts in [`tools/`](tools/) to copy doctrine files into any project repo.

### macOS / Linux

```bash
./tools/doctrine-bootstrap.sh /path/to/target-repo
```

### Windows PowerShell

```powershell
.\tools\doctrine-bootstrap.ps1 -TargetRepo C:\path\to\target-repo
```

### Windows CMD

```cmd
tools\doctrine-bootstrap.cmd C:\path\to\target-repo
```

Use `--force` (Bash) or `-Force` (PowerShell) to overwrite existing doctrine files.
This snapshot contains the public doctrine baseline only.
Identity-specific files and maintainer-local overlays are intentionally not copied by default.
10 changes: 5 additions & 5 deletions docs/doctrine/doctrine-governance.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Doctrine Governance

Status: Draft
Last Reviewed: 2026-02-28
Last Reviewed: 2026-08-19

## Purpose

Expand All @@ -19,10 +19,9 @@ When two doctrine rules conflict, resolve in this order:
1. `repo-management.md`
2. `project-standards.md`
3. `coding.md`
4. `naming.md`
5. `identity.md`
6. `usernames.md`
7. `AI_CONTEXT.md`
4. `export-policy.md`
5. `naming.md`
6. `AI_CONTEXT.md`

Conflict handling:

Expand All @@ -36,6 +35,7 @@ Conflict handling:
2. Edit doctrine files and update `Last Reviewed`.
3. Add a Doctrine Change Record from template:
- `templates/doctrine-change-record-template.md`
- Store records under `change-records/`.
4. If the change affects existing repositories, include migration steps and deadline.
5. Update `RELEASE_NOTES.md` for the release that introduces the change.
6. Merge into `develop`, then release using the repo workflow in `repo-management.md`.
Expand Down
46 changes: 46 additions & 0 deletions docs/doctrine/export-policy.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Doctrine Export Policy

Status: Stable
Last Reviewed: 2026-08-19

## Purpose

Defines which doctrine files are safe to copy into public repositories, templates, and generated project snapshots.

## Default Export Rule

Default doctrine exports must be contributor-neutral and public-safe.

Exported files must not contain:

- maintainer legal identity or private account ownership details
- private contact, recovery, credential, infrastructure, or endpoint details
- personal notes that are not required for outside contributors
- project-specific decisions from an unrelated repository

## Public Export Allowlist

The default bootstrap tools may export:

- `templates/AGENTS.md` as `AGENTS.md`
- `AI_CONTEXT.md`
- `coding.md`
- `doctrine-governance.md`
- `export-policy.md`
- `naming.md`
- `project-standards.md`
- `repo-management.md`
- `templates/repo-visibility-note-template.md`
- `templates/doctrine-change-record-template.md`

## Non-Exported Identity Overlay

Identity-specific files, account naming ladders, and maintainer-local preferences belong only in a private maintainer overlay.

They must not be committed to public doctrine, copied into public templates, or generated into downstream repositories by default. If a downstream repository needs such material, document that decision locally and keep it out of reusable public template baselines unless it is contributor-neutral.

## Contamination Guard

Bootstrap and CI checks should fail when a public export contains maintainer-private identity markers or other explicitly non-exportable content.

When a guard fails, remove the non-exportable content from the exported file rather than weakening the guard.
110 changes: 0 additions & 110 deletions docs/doctrine/identity.md

This file was deleted.

Loading