From 8185aa04d5e9c2bdf83c1d77fbfaad8d5cd4c8e4 Mon Sep 17 00:00:00 2001 From: nightmarejam <42326244+Nightmarejam@users.noreply.github.com> Date: Tue, 19 Aug 2025 20:15:19 -0600 Subject: [PATCH 1/3] chore: remove misnamed docs/ci.yaml (Tome lives under docs/tome) --- docs/ci.yaml | 1 - 1 file changed, 1 deletion(-) delete mode 100644 docs/ci.yaml diff --git a/docs/ci.yaml b/docs/ci.yaml deleted file mode 100644 index a7980e7..0000000 --- a/docs/ci.yaml +++ /dev/null @@ -1 +0,0 @@ -Moved: see docs/governance/civic_tome.md (this file was misnamed and kept only to avoid breaking links; safe to delete). From 932e13a118ed0c4f10e6e82adc9561c5ef6a1677 Mon Sep 17 00:00:00 2001 From: nightmarejam <42326244+Nightmarejam@users.noreply.github.com> Date: Wed, 20 Aug 2025 18:30:15 -0600 Subject: [PATCH 2/3] chore: add CODEOWNERS, Makefile, hygiene script, .gitignore; update release-drafter.yml and README --- .github/workflows/release-drafter.yml | 3 + .gitignore | 23 +- CODEOWNERS | 3 + Makefile | 15 + README.md | 1030 +++++++++++++++++++++++-- tools/scan.sh | 6 + 6 files changed, 1006 insertions(+), 74 deletions(-) create mode 100644 CODEOWNERS create mode 100644 Makefile create mode 100755 tools/scan.sh diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml index 6726346..b26770f 100644 --- a/.github/workflows/release-drafter.yml +++ b/.github/workflows/release-drafter.yml @@ -9,6 +9,9 @@ on: jobs: update_release_draft: runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write steps: - uses: release-drafter/release-drafter@v6 env: diff --git a/.gitignore b/.gitignore index 0c08f16..a59b8a9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,18 +1,7 @@ .DS_Store -tmp/ -.github/branch_protection_*.json -conversations.json -shared_conversations.json -filtered/ -filtered_conversations/ -filtered_shared/ -filtered_merged/ -constella-import/ -docs/exports/**/personal.md -.DS_Store -*/.DS_Store -# Editor backups / temp -*.bak.* -*.rtf -# macOS -.DS_Store +node_modules/ +dist/ +.env +__pycache__/ +*.log +*.tmp diff --git a/CODEOWNERS b/CODEOWNERS new file mode 100644 index 0000000..7c31f30 --- /dev/null +++ b/CODEOWNERS @@ -0,0 +1,3 @@ +/docs/doctrine/ @YOUR_GH_USERNAME +/docs/frameworks/ @YOUR_GH_USERNAME +/rfcs/ @YOUR_GH_USERNAME diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..63e412b --- /dev/null +++ b/Makefile @@ -0,0 +1,15 @@ +.PHONY: check spell lint +check: spell lint + @echo "[OK] local checks passed" + +spell: + @echo ">> codespell (skip if not installed)"; \ + if command -v codespell >/dev/null; then \ + codespell --ignore-words .codespellignore . || exit 1; \ + else echo "codespell not installed, skipping"; fi + +lint: + @echo ">> markdownlint (skip if not installed)"; \ + if command -v markdownlint >/dev/null; then \ + markdownlint "**/*.md" -c .markdownlint.json || exit 1; \ + else echo "markdownlint not installed, skipping"; fi diff --git a/README.md b/README.md index 406781b..9dd683e 100644 --- a/README.md +++ b/README.md @@ -1,96 +1,1012 @@ -![Docs CI](https://github.com/Nightmarejam/constella-framework/actions/workflows/docs-ci.yml/badge.svg?branch=compliance-overlay-and-preface) # Constella Framework -[![Doctrine](https://img.shields.io/badge/Celestial%20Equilibrium-v1.0.0-blueviolet)](docs/doctrine/README.md) +![Docs CI](https://github.com/Nightmarejam/constella-framework/actions/workflows/docs-ci.yml/badge.svg) +Constella is a civic governance framework oriented around resonance, dignity, and renewal. This README gives you the essentials and points to the full docs. -**Constella** is a civic operating system — an open, merit-based framework for organizing, governing, and regenerating communities. -It blends **practical governance**, **ethical doctrine**, and **pilot projects** into one adaptive ecosystem. +## Quick start +- **Core Framework:** `docs/governance/core_framework.md` +- **Map of Intent:** `docs/governance/map_of_intent.md` +- **Tokens (Astris/Auctor):** `docs/governance/tokens_astris_auctor.md` +- **UCF:** `docs/governance/ucf.md` +- **Civic Tome (spec):** `docs/governance/civic_tome.md` +- **Penumbra Accord:** `docs/governance/penumbra_accord.md` +- **Governance index:** `docs/governance/` +- **Tome index:** `docs/tome/index.md` + +## Development +- **Contributing guide:** `CONTRIBUTING.md` +- **Templates:** `templates/` +- **Pilots:** `docs/pilots/` + +--- + +© Constella — v1.6.0 --- +# Contributing to Constella -## 🌌 Overview +Thanks for improving the framework. This guide keeps PRs smooth and CI green. -Constella is built around three pillars: +## Branches & PRs +- Branch naming: `type/short-topic` (e.g., `docs/tome-index`, `pilot/gaia-p1`). +- One focused change per PR. Link to related issues/entries. +- Use the PR template and fill **Intent**, **Measures**, **Review Cadence**. -1. **Civic Orchestration** – Lightweight, rotating governance threads with clear decision cadences. -2. **Civic Tome** – The public ledger of decisions, precedents, and pilot outcomes. -3. **Penumbra Accord** – The compassionate edge-case ethics and risk playbook. +## Local checks (match CI) +Run all docs checks locally before pushing: -The framework integrates a living doctrine to guide long-term vision, ensure ethical resilience, and seed regenerative civic economies. +```bash +# spell check +codespell --ignore-words .codespellignore . + +# markdown lint +markdownlint "**/*.md" -c .markdownlint.json + +# link check (requires lychee: `brew install lychee` or use Docker) +lychee --config .github/lychee/lychee.toml . +# or via Docker +# docker run --rm -v "$PWD":/input lycheeverse/lychee --config .github/lychee/lychee.toml . +``` + +## Adding to the Civic Tome +1. Pick a template from `docs/tome/templates/`. +2. Create a dated file in the correct folder, e.g. `docs/tome/threads/YYYY-MM-DD_.md`. +3. Update `docs/tome/index.md` (add link under **Latest**). +4. Submit a PR labeled `docs` + `tome`. + +## Style +- Markdown: use sentence case for headings; wrap naturally; lists separated by blank lines. +- Links: prefer repository‑relative paths (e.g., `docs/governance/ucf.md`). +- Privacy: redact personal data in Tome entries; keep summaries minimal. + +## Release flow +- PRs merged to `main` update the Draft Release (Release Drafter). +- Tagging a release publishes notes. Version bump: update `README` and cut tag. --- -## 📂 Directory Map +# Contributing to Constella + +Thanks for improving the framework. This guide keeps PRs smooth and CI green. -| Path | Purpose | -|------|---------| -| [`/docs/`](docs/) | Main documentation hub | -| [`/docs/doctrine/`](docs/doctrine/) | Doctrine & philosophy ([WIP]) | -| [`/docs/pilots/`](docs/pilots/) | Example pilot projects (Gaia, Sky, etc.) | -| [`/docs/governance/`](docs/governance/) | Governance, Civic Orchestration, and Civic Tome | -| [`/docs/assets/`](docs/assets/) | Images, diagrams, infographics | +## Branches & PRs +- Branch naming: `type/short-topic` (e.g., `docs/tome-index`, `pilot/gaia-p1`). +- One focused change per PR. Link to related issues/entries. +- Use the PR template and fill **Intent**, **Measures**, **Review Cadence**. + +## Local checks (match CI) +Run all docs checks locally before pushing: + +```bash +# spell check +codespell --ignore-words .codespellignore . +# markdown lint +markdownlint "**/*.md" -c .markdownlint.json + +# link check (requires lychee: `brew install lychee` or use Docker) +lychee --config .github/lychee/lychee.toml . +# or via Docker +# docker run --rm -v "$PWD":/input lycheeverse/lychee --config .github/lychee/lychee.toml . +``` + +## Adding to the Civic Tome +1. Pick a template from `docs/tome/templates/`. +2. Create a dated file in the correct folder, e.g. `docs/tome/threads/YYYY-MM-DD_.md`. +3. Update `docs/tome/index.md` (add link under **Latest**). +4. Submit a PR labeled `docs` + `tome`. + +## Style +- Markdown: use sentence case for headings; wrap naturally; lists separated by blank lines. +- Links: prefer repository‑relative paths (e.g., `docs/governance/ucf.md`). +- Privacy: redact personal data in Tome entries; keep summaries minimal. + +## Release flow +- PRs merged to `main` update the Draft Release (Release Drafter). +- Tagging a release publishes notes. Version bump: update `README` and cut tag. + +# Codeowners for docs and governance +# Format: + +* @Nightmarejam + +# Strong ownership of governance and Tome +/docs/governance/** @Nightmarejam +/docs/tome/** @Nightmarejam +/templates/** @Nightmarejam --- +.PHONY: check spell lint links + +check: spell lint links + @echo "\nAll checks passed." -## 🚀 Quick Start - -| Area | Link | -|------|------| -| **Core Framework** | [View core framework](docs/governance/core_framework.md) | -| **Map of Intent (Civic Tome)** | [View Map of Intent](docs/governance/map_of_intent.md) | -| **Tokens: Astris & Auctor** | [View token docs](docs/governance/tokens_astris_auctor.md) | -| **Universal Civic Floor (UCF)** | [View UCF](docs/governance/ucf.md) | -| **U.S. Compliance Overlay** | [View overlay](docs/governance/compliance_overlay_us.md) | -| **Civic Orchestration** | [View governance docs](docs/governance/) | -| **Civic Tome** | [View Tome](docs/governance/civic_tome.md) | -| **Penumbra Accord** | [View Accord](docs/governance/penumbra_accord.md) | -| **Doctrine** | [View doctrine overview](docs/doctrine/) [WIP] | -| **Pilot Projects** | [Gaia Pilot](docs/pilots/gaia.md) [Sky Pilot – WIP](docs/pilots/sky.md) | +spell: + @which codespell >/dev/null || (echo "Install codespell (pipx/pip)" && exit 1) + codespell --ignore-words .codespellignore --skip "*.min.js,*.svg,*.png,*.jpg,*.jpeg,*.gif,.git,dist,node_modules" . +lint: + @which markdownlint >/dev/null || (echo "Install markdownlint-cli (npm i -g markdownlint-cli)" && exit 1) + markdownlint "**/*.md" -c .markdownlint.json --ignore-path .markdownlintignore || true + +links: + @if which lychee >/dev/null; then \ + lychee --config .github/lychee/lychee.toml . ; \ + else \ + echo "Lychee not found; attempting Docker..."; \ + docker run --rm -v "$(PWD)":/input lycheeverse/lychee --config .github/lychee/lychee.toml . ; \ + fi --- +#!/usr/bin/env bash +set -euo pipefail + +printf "\n=== Repo hygiene sweep ===\n" + +printf "\n1) Placeholder link targets (files containing only '@'):\n" +grep -Rxl "^@$" docs || echo "(none)" + +printf "\n2) README placeholder links ('](@)'):\n" +grep -R "\]\(@\)" -n || echo "(none)" + +printf "\n3) Empty directories:\n" +find . -type d -empty -not -path "*/.git*" || true -## 🛠 Contributing +printf "\n4) Markdown heading sanity (files missing H1):\n" +awk 'FNR==1 {if ($0 !~ /^# /) print FILENAME}' $(git ls-files "**/*.md") || true -We welcome contributions from civic innovators, governance researchers, designers, and builders. +printf "\n5) Codespell quick scan:\n" +if which codespell >/dev/null; then + codespell --ignore-words .codespellignore --skip "*.min.js,*.svg,*.png,*.jpg,*.jpeg,*.gif,.git,dist,node_modules" . || true +else + echo "(codespell not installed)" +fi -**Steps:** -1. Fork this repo. -2. Create a branch for your changes. -3. Submit a Pull Request with a clear description. +printf "\n6) Markdownlint quick scan:\n" +if which markdownlint >/dev/null; then + markdownlint "**/*.md" -c .markdownlint.json --ignore-path .markdownlintignore || true +else + echo "(markdownlint-cli not installed)" +fi -See [`CONTRIBUTING.md`](CONTRIBUTING.md) for details. +printf "\n7) Lychee link check (may take a moment):\n" +if which lychee >/dev/null; then + lychee --config .github/lychee/lychee.toml . || true +else + echo "(lychee not installed; try Docker: docker run --rm -v \"$PWD\":/input lycheeverse/lychee --config .github/lychee/lychee.toml .)" +fi +printf "\n=== Sweep complete ===\n" --- +# macOS +.DS_Store + +# Node / build artifacts +node_modules/ +dist/ + +# Editor +.vscode/ +*.code-workspace + +# Python +__pycache__/ +*.pyc + +# Contributing to Constella + +Thanks for improving the framework. This guide keeps PRs smooth and CI green. + +## Branches & PRs +- Branch naming: `type/short-topic` (e.g., `docs/tome-index`, `pilot/gaia-p1`). +- One focused change per PR. Link to related issues/entries. +- Use the PR template and fill **Intent**, **Measures**, **Review Cadence**. + +## Local checks (match CI) +Run all docs checks locally before pushing: + +```bash +# spell check +codespell --ignore-words .codespellignore . + +# markdown lint +markdownlint "**/*.md" -c .markdownlint.json + +# link check (requires lychee: `brew install lychee` or use Docker) +lychee --config .github/lychee/lychee.toml . +# or via Docker +# docker run --rm -v "$PWD":/input lycheeverse/lychee --config .github/lychee/lychee.toml . +``` + +## Adding to the Civic Tome +1. Pick a template from `docs/tome/templates/`. +2. Create a dated file in the correct folder, e.g. `docs/tome/threads/YYYY-MM-DD_.md`. +3. Update `docs/tome/index.md` (add link under **Latest**). +4. Submit a PR labeled `docs` + `tome`. + +## Style +- Markdown: use sentence case for headings; wrap naturally; lists separated by blank lines. +- Links: prefer repository‑relative paths (e.g., `docs/governance/ucf.md`). +- Privacy: redact personal data in Tome entries; keep summaries minimal. + +## Release flow +- PRs merged to `main` update the Draft Release (Release Drafter). +- Tagging a release publishes notes. Version bump: update `README` and cut tag. +# Codeowners for docs and governance +# Format: + +* @Nightmarejam + +# Strong ownership of governance and Tome +/docs/governance/** @Nightmarejam +/docs/tome/** @Nightmarejam +/templates/** @Nightmarejam +.PHONY: check spell lint links + +check: spell lint links + @echo "\nAll checks passed." + +spell: + @which codespell >/dev/null || (echo "Install codespell (pipx/pip)" && exit 1) + codespell --ignore-words .codespellignore --skip "*.min.js,*.svg,*.png,*.jpg,*.jpeg,*.gif,.git,dist,node_modules" . + +lint: + @which markdownlint >/dev/null || (echo "Install markdownlint-cli (npm i -g markdownlint-cli)" && exit 1) + markdownlint "**/*.md" -c .markdownlint.json --ignore-path .markdownlintignore || true + +links: + @if which lychee >/dev/null; then \ + lychee --config .github/lychee/lychee.toml . ; \ + else \ + echo "Lychee not found; attempting Docker..."; \ + docker run --rm -v "$(PWD)":/input lycheeverse/lychee --config .github/lychee/lychee.toml . ; \ + fi +#!/usr/bin/env bash +set -euo pipefail + +printf "\n=== Repo hygiene sweep ===\n" + +printf "\n1) Placeholder link targets (files containing only '@'):\n" +grep -Rxl "^@$" docs || echo "(none)" + +printf "\n2) README placeholder links ('](@)'):\n" +grep -R "\]\(@\)" -n || echo "(none)" + +printf "\n3) Empty directories:\n" +find . -type d -empty -not -path "*/.git*" || true + +printf "\n4) Markdown heading sanity (files missing H1):\n" +awk 'FNR==1 {if ($0 !~ /^# /) print FILENAME}' $(git ls-files "**/*.md") || true + +printf "\n5) Codespell quick scan:\n" +if which codespell >/dev/null; then + codespell --ignore-words .codespellignore --skip "*.min.js,*.svg,*.png,*.jpg,*.jpeg,*.gif,.git,dist,node_modules" . || true +else + echo "(codespell not installed)" +fi + +printf "\n6) Markdownlint quick scan:\n" +if which markdownlint >/dev/null; then + markdownlint "**/*.md" -c .markdownlint.json --ignore-path .markdownlintignore || true +else + echo "(markdownlint-cli not installed)" +fi -## 📅 Roadmap +printf "\n7) Lychee link check (may take a moment):\n" +if which lychee >/dev/null; then + lychee --config .github/lychee/lychee.toml . || true +else + echo "(lychee not installed; try Docker: docker run --rm -v \"$PWD\":/input lycheeverse/lychee --config .github/lychee/lychee.toml .)" +fi -- [ ] Finalize Doctrine section -- [ ] Add full Gaia/Sky pilot data stubs -- [ ] Create integrated visual diagrams for framework overview -- [ ] Implement measurable outcomes & economic modeling -- [ ] Launch first community pilot +printf "\n=== Sweep complete ===\n" +# .gitignore appended content +# macOS +.DS_Store + +# Node / build artifacts +node_modules/ +dist/ + +# Editor +.vscode/ +*.code-workspace + +# Python +__pycache__/ +*.pyc +# Contributing to Constella + +Thanks for improving the framework. This guide keeps PRs smooth and CI green. + +## Branches & PRs +- Branch naming: `type/short-topic` (e.g., `docs/tome-index`, `pilot/gaia-p1`). +- One focused change per PR. Link to related issues/entries. +- Use the PR template and fill **Intent**, **Measures**, **Review Cadence**. + +## Local checks (match CI) +Run all docs checks locally before pushing: + +```bash +# spell check +codespell --ignore-words .codespellignore . + +# markdown lint +markdownlint "**/*.md" -c .markdownlint.json + +# link check (requires lychee: `brew install lychee` or use Docker) +lychee --config .github/lychee/lychee.toml . +# or via Docker +# docker run --rm -v "$PWD":/input lycheeverse/lychee --config .github/lychee/lychee.toml . +``` + +## Adding to the Civic Tome +1. Pick a template from `docs/tome/templates/`. +2. Create a dated file in the correct folder, e.g. `docs/tome/threads/YYYY-MM-DD_.md`. +3. Update `docs/tome/index.md` (add link under **Latest**). +4. Submit a PR labeled `docs` + `tome`. + +## Style +- Markdown: use sentence case for headings; wrap naturally; lists separated by blank lines. +- Links: prefer repository‑relative paths (e.g., `docs/governance/ucf.md`). +- Privacy: redact personal data in Tome entries; keep summaries minimal. + +## Release flow +- PRs merged to `main` update the Draft Release (Release Drafter). +- Tagging a release publishes notes. Version bump: update `README` and cut tag. +# Codeowners for docs and governance +# Format: + +* @Nightmarejam + +# Strong ownership of governance and Tome +/docs/governance/** @Nightmarejam +/docs/tome/** @Nightmarejam +/templates/** @Nightmarejam +.PHONY: check spell lint links + +check: spell lint links + @echo "\nAll checks passed." + +spell: + @which codespell >/dev/null || (echo "Install codespell (pipx/pip)" && exit 1) + codespell --ignore-words .codespellignore --skip "*.min.js,*.svg,*.png,*.jpg,*.jpeg,*.gif,.git,dist,node_modules" . + +lint: + @which markdownlint >/dev/null || (echo "Install markdownlint-cli (npm i -g markdownlint-cli)" && exit 1) + markdownlint "**/*.md" -c .markdownlint.json --ignore-path .markdownlintignore || true + +links: + @if which lychee >/dev/null; then \ + lychee --config .github/lychee/lychee.toml . ; \ + else \ + echo "Lychee not found; attempting Docker..."; \ + docker run --rm -v "$(PWD)":/input lycheeverse/lychee --config .github/lychee/lychee.toml . ; \ + fi +#!/usr/bin/env bash +set -euo pipefail + +printf "\n=== Repo hygiene sweep ===\n" + +printf "\n1) Placeholder link targets (files containing only '@'):\n" +grep -Rxl "^@$" docs || echo "(none)" + +printf "\n2) README placeholder links ('](@)'):\n" +grep -R "\]\(@\)" -n || echo "(none)" + +printf "\n3) Empty directories:\n" +find . -type d -empty -not -path "*/.git*" || true + +printf "\n4) Markdown heading sanity (files missing H1):\n" +awk 'FNR==1 {if ($0 !~ /^# /) print FILENAME}' $(git ls-files "**/*.md") || true + +printf "\n5) Codespell quick scan:\n" +if which codespell >/dev/null; then + codespell --ignore-words .codespellignore --skip "*.min.js,*.svg,*.png,*.jpg,*.jpeg,*.gif,.git,dist,node_modules" . || true +else + echo "(codespell not installed)" +fi + +printf "\n6) Markdownlint quick scan:\n" +if which markdownlint >/dev/null; then + markdownlint "**/*.md" -c .markdownlint.json --ignore-path .markdownlintignore || true +else + echo "(markdownlint-cli not installed)" +fi + +printf "\n7) Lychee link check (may take a moment):\n" +if which lychee >/dev/null; then + lychee --config .github/lychee/lychee.toml . || true +else + echo "(lychee not installed; try Docker: docker run --rm -v \"$PWD\":/input lycheeverse/lychee --config .github/lychee/lychee.toml .)" +fi + +printf "\n=== Sweep complete ===\n" +# .gitignore appended content + +# macOS +.DS_Store + +# Node / build artifacts +node_modules/ +dist/ + +# Editor +.vscode/ +*.code-workspace + +# Python +__pycache__/ +*.pyc --- -## 📜 License +# Contributing to Constella + +Thanks for improving the framework. This guide keeps PRs smooth and CI green. + +## Branches & PRs +- Branch naming: `type/short-topic` (e.g., `docs/tome-index`, `pilot/gaia-p1`). +- One focused change per PR. Link to related issues/entries. +- Use the PR template and fill **Intent**, **Measures**, **Review Cadence**. + +## Local checks (match CI) +Run all docs checks locally before pushing: + +```bash +# spell check +codespell --ignore-words .codespellignore . + +# markdown lint +markdownlint "**/*.md" -c .markdownlint.json + +# link check (requires lychee: `brew install lychee` or use Docker) +lychee --config .github/lychee/lychee.toml . +# or via Docker +# docker run --rm -v "$PWD":/input lycheeverse/lychee --config .github/lychee/lychee.toml . +``` + +## Adding to the Civic Tome +1. Pick a template from `docs/tome/templates/`. +2. Create a dated file in the correct folder, e.g. `docs/tome/threads/YYYY-MM-DD_.md`. +3. Update `docs/tome/index.md` (add link under **Latest**). +4. Submit a PR labeled `docs` + `tome`. + +## Style +- Markdown: use sentence case for headings; wrap naturally; lists separated by blank lines. +- Links: prefer repository‑relative paths (e.g., `docs/governance/ucf.md`). +- Privacy: redact personal data in Tome entries; keep summaries minimal. + +## Release flow +- PRs merged to `main` update the Draft Release (Release Drafter). +- Tagging a release publishes notes. Version bump: update `README` and cut tag. + +# Codeowners for docs and governance +# Format: + +* @Nightmarejam + +# Strong ownership of governance and Tome +/docs/governance/** @Nightmarejam +/docs/tome/** @Nightmarejam +/templates/** @Nightmarejam +.PHONY: check spell lint links + +check: spell lint links + @echo "\nAll checks passed." + +spell: + @which codespell >/dev/null || (echo "Install codespell (pipx/pip)" && exit 1) + codespell --ignore-words .codespellignore --skip "*.min.js,*.svg,*.png,*.jpg,*.jpeg,*.gif,.git,dist,node_modules" . + +lint: + @which markdownlint >/dev/null || (echo "Install markdownlint-cli (npm i -g markdownlint-cli)" && exit 1) + markdownlint "**/*.md" -c .markdownlint.json --ignore-path .markdownlintignore || true + +links: + @if which lychee >/dev/null; then \ + lychee --config .github/lychee/lychee.toml . ; \ + else \ + echo "Lychee not found; attempting Docker..."; \ + docker run --rm -v "$(PWD)":/input lycheeverse/lychee --config .github/lychee/lychee.toml . ; \ + fi +#!/usr/bin/env bash +set -euo pipefail + +printf "\n=== Repo hygiene sweep ===\n" + +printf "\n1) Placeholder link targets (files containing only '@'):\n" +grep -Rxl "^@$" docs || echo "(none)" + +printf "\n2) README placeholder links ('](@)'):\n" +grep -R "\]\(@\)" -n || echo "(none)" + +printf "\n3) Empty directories:\n" +find . -type d -empty -not -path "*/.git*" || true + +printf "\n4) Markdown heading sanity (files missing H1):\n" +awk 'FNR==1 {if ($0 !~ /^# /) print FILENAME}' $(git ls-files "**/*.md") || true -- **Code:** MIT (see [`LICENSE`](LICENSE)) -- **Docs/Diagrams:** CC BY 4.0 (see [`LICENSE-docs.txt`](LICENSE-docs.txt)) -- **Data/CSVs/Templates:** CC0 1.0 (see [`LICENSE-data.txt`](LICENSE-data.txt)) +printf "\n5) Codespell quick scan:\n" +if which codespell >/dev/null; then + codespell --ignore-words .codespellignore --skip "*.min.js,*.svg,*.png,*.jpg,*.jpeg,*.gif,.git,dist,node_modules" . || true +else + echo "(codespell not installed)" +fi -“Constella” usage is covered under [`TRADEMARKS.md`](TRADEMARKS.md). +printf "\n6) Markdownlint quick scan:\n" +if which markdownlint >/dev/null; then + markdownlint "**/*.md" -c .markdownlint.json --ignore-path .markdownlintignore || true +else + echo "(markdownlint-cli not installed)" +fi +printf "\n7) Lychee link check (may take a moment):\n" +if which lychee >/dev/null; then + lychee --config .github/lychee/lychee.toml . || true +else + echo "(lychee not installed; try Docker: docker run --rm -v \"$PWD\":/input lycheeverse/lychee --config .github/lychee/lychee.toml .)" +fi + +printf "\n=== Sweep complete ===\n" +--- +# macOS +.DS_Store + +# Node / build artifacts +node_modules/ +dist/ + +# Editor +.vscode/ +*.code-workspace + +# Python +__pycache__/ +*.pyc +--- + +# Contributing to Constella + +Thanks for improving the framework. This guide keeps PRs smooth and CI green. + +## Branches & PRs +- Branch naming: `type/short-topic` (e.g., `docs/tome-index`, `pilot/gaia-p1`). +- One focused change per PR. Link to related issues/entries. +- Use the PR template and fill **Intent**, **Measures**, **Review Cadence**. + +## Local checks (match CI) +Run all docs checks locally before pushing: + +```bash +# spell check +codespell --ignore-words .codespellignore . + +# markdown lint +markdownlint "**/*.md" -c .markdownlint.json + +# link check (requires lychee: `brew install lychee` or use Docker) +lychee --config .github/lychee/lychee.toml . +# or via Docker +# docker run --rm -v "$PWD":/input lycheeverse/lychee --config .github/lychee/lychee.toml . +``` + +## Adding to the Civic Tome +1. Pick a template from `docs/tome/templates/`. +2. Create a dated file in the correct folder, e.g. `docs/tome/threads/YYYY-MM-DD_.md`. +3. Update `docs/tome/index.md` (add link under **Latest**). +4. Submit a PR labeled `docs` + `tome`. + +## Style +- Markdown: use sentence case for headings; wrap naturally; lists separated by blank lines. +- Links: prefer repository‑relative paths (e.g., `docs/governance/ucf.md`). +- Privacy: redact personal data in Tome entries; keep summaries minimal. + +## Release flow +- PRs merged to `main` update the Draft Release (Release Drafter). +- Tagging a release publishes notes. Version bump: update `README` and cut tag. +# Codeowners for docs and governance +# Format: + +* @Nightmarejam + +# Strong ownership of governance and Tome +/docs/governance/** @Nightmarejam +/docs/tome/** @Nightmarejam +/templates/** @Nightmarejam +.PHONY: check spell lint links + +check: spell lint links + @echo "\nAll checks passed." + +spell: + @which codespell >/dev/null || (echo "Install codespell (pipx/pip)" && exit 1) + codespell --ignore-words .codespellignore --skip "*.min.js,*.svg,*.png,*.jpg,*.jpeg,*.gif,.git,dist,node_modules" . + +lint: + @which markdownlint >/dev/null || (echo "Install markdownlint-cli (npm i -g markdownlint-cli)" && exit 1) + markdownlint "**/*.md" -c .markdownlint.json --ignore-path .markdownlintignore || true + +links: + @if which lychee >/dev/null; then \ + lychee --config .github/lychee/lychee.toml . ; \ + else \ + echo "Lychee not found; attempting Docker..."; \ + docker run --rm -v "$(PWD)":/input lycheeverse/lychee --config .github/lychee/lychee.toml . ; \ + fi +#!/usr/bin/env bash +set -euo pipefail + +printf "\n=== Repo hygiene sweep ===\n" + +printf "\n1) Placeholder link targets (files containing only '@'):\n" +grep -Rxl "^@$" docs || echo "(none)" + +printf "\n2) README placeholder links ('](@)'):\n" +grep -R "\]\(@\)" -n || echo "(none)" + +printf "\n3) Empty directories:\n" +find . -type d -empty -not -path "*/.git*" || true + +printf "\n4) Markdown heading sanity (files missing H1):\n" +awk 'FNR==1 {if ($0 !~ /^# /) print FILENAME}' $(git ls-files "**/*.md") || true + +printf "\n5) Codespell quick scan:\n" +if which codespell >/dev/null; then + codespell --ignore-words .codespellignore --skip "*.min.js,*.svg,*.png,*.jpg,*.jpeg,*.gif,.git,dist,node_modules" . || true +else + echo "(codespell not installed)" +fi + +printf "\n6) Markdownlint quick scan:\n" +if which markdownlint >/dev/null; then + markdownlint "**/*.md" -c .markdownlint.json --ignore-path .markdownlintignore || true +else + echo "(markdownlint-cli not installed)" +fi + +printf "\n7) Lychee link check (may take a moment):\n" +if which lychee >/dev/null; then + lychee --config .github/lychee/lychee.toml . || true +else + echo "(lychee not installed; try Docker: docker run --rm -v \"$PWD\":/input lycheeverse/lychee --config .github/lychee/lychee.toml .)" +fi + +printf "\n=== Sweep complete ===\n" --- +# macOS +.DS_Store + +# Node / build artifacts +node_modules/ +dist/ + +# Editor +.vscode/ +*.code-workspace + +# Python +__pycache__/ +*.pyc + +# Contributing to Constella + +Thanks for improving the framework. This guide keeps PRs smooth and CI green. + +## Branches & PRs +- Branch naming: `type/short-topic` (e.g., `docs/tome-index`, `pilot/gaia-p1`). +- One focused change per PR. Link to related issues/entries. +- Use the PR template and fill **Intent**, **Measures**, **Review Cadence**. + +## Local checks (match CI) +Run all docs checks locally before pushing: + +```bash +# spell check +codespell --ignore-words .codespellignore . + +# markdown lint +markdownlint "**/*.md" -c .markdownlint.json + +# link check (requires lychee: `brew install lychee` or use Docker) +lychee --config .github/lychee/lychee.toml . +# or via Docker +# docker run --rm -v "$PWD":/input lycheeverse/lychee --config .github/lychee/lychee.toml . +``` + +## Adding to the Civic Tome +1. Pick a template from `docs/tome/templates/`. +2. Create a dated file in the correct folder, e.g. `docs/tome/threads/YYYY-MM-DD_.md`. +3. Update `docs/tome/index.md` (add link under **Latest**). +4. Submit a PR labeled `docs` + `tome`. + +## Style +- Markdown: use sentence case for headings; wrap naturally; lists separated by blank lines. +- Links: prefer repository‑relative paths (e.g., `docs/governance/ucf.md`). +- Privacy: redact personal data in Tome entries; keep summaries minimal. + +## Release flow +- PRs merged to `main` update the Draft Release (Release Drafter). +- Tagging a release publishes notes. Version bump: update `README` and cut tag. +# Codeowners for docs and governance +# Format: + +* @Nightmarejam + +# Strong ownership of governance and Tome +/docs/governance/** @Nightmarejam +/docs/tome/** @Nightmarejam +/templates/** @Nightmarejam +.PHONY: check spell lint links + +check: spell lint links + @echo "\nAll checks passed." + +spell: + @which codespell >/dev/null || (echo "Install codespell (pipx/pip)" && exit 1) + codespell --ignore-words .codespellignore --skip "*.min.js,*.svg,*.png,*.jpg,*.jpeg,*.gif,.git,dist,node_modules" . + +lint: + @which markdownlint >/dev/null || (echo "Install markdownlint-cli (npm i -g markdownlint-cli)" && exit 1) + markdownlint "**/*.md" -c .markdownlint.json --ignore-path .markdownlintignore || true + +links: + @if which lychee >/dev/null; then \ + lychee --config .github/lychee/lychee.toml . ; \ + else \ + echo "Lychee not found; attempting Docker..."; \ + docker run --rm -v "$(PWD)":/input lycheeverse/lychee --config .github/lychee/lychee.toml . ; \ + fi +#!/usr/bin/env bash +set -euo pipefail + +printf "\n=== Repo hygiene sweep ===\n" + +printf "\n1) Placeholder link targets (files containing only '@'):\n" +grep -Rxl "^@$" docs || echo "(none)" -## Chat Export Processing (internal) -We keep chat exports private, but provide a local filter for organization (Constella, Harmony, Resonant, AI Infra, Ops/Docs, Personal). -- Script: `tools/chat-filter/filter_chats.py` -- Config: `tools/chat-filter/filters.config.json` -_Outputs are local until review; personal content is always excluded._ +printf "\n2) README placeholder links ('](@)'):\n" +grep -R "\]\(@\)" -n || echo "(none)" + +printf "\n3) Empty directories:\n" +find . -type d -empty -not -path "*/.git*" || true + +printf "\n4) Markdown heading sanity (files missing H1):\n" +awk 'FNR==1 {if ($0 !~ /^# /) print FILENAME}' $(git ls-files "**/*.md") || true + +printf "\n5) Codespell quick scan:\n" +if which codespell >/dev/null; then + codespell --ignore-words .codespellignore --skip "*.min.js,*.svg,*.png,*.jpg,*.jpeg,*.gif,.git,dist,node_modules" . || true +else + echo "(codespell not installed)" +fi + +printf "\n6) Markdownlint quick scan:\n" +if which markdownlint >/dev/null; then + markdownlint "**/*.md" -c .markdownlint.json --ignore-path .markdownlintignore || true +else + echo "(markdownlint-cli not installed)" +fi + +printf "\n7) Lychee link check (may take a moment):\n" +if which lychee >/dev/null; then + lychee --config .github/lychee/lychee.toml . || true +else + echo "(lychee not installed; try Docker: docker run --rm -v \"$PWD\":/input lycheeverse/lychee --config .github/lychee/lychee.toml .)" +fi + +printf "\n=== Sweep complete ===\n" + +# Contributing to Constella + +Thanks for improving the framework. This guide keeps PRs smooth and CI green. + +## Branches & PRs +- Branch naming: `type/short-topic` (e.g., `docs/tome-index`, `pilot/gaia-p1`). +- One focused change per PR. Link to related issues/entries. +- Use the PR template and fill **Intent**, **Measures**, **Review Cadence**. + +## Local checks (match CI) +Run all docs checks locally before pushing: + +```bash +# spell check +codespell --ignore-words .codespellignore . + +# markdown lint +markdownlint "**/*.md" -c .markdownlint.json + +# link check (requires lychee: `brew install lychee` or use Docker) +lychee --config .github/lychee/lychee.toml . +# or via Docker +# docker run --rm -v "$PWD":/input lycheeverse/lychee --config .github/lychee/lychee.toml . +``` + +## Adding to the Civic Tome +1. Pick a template from `docs/tome/templates/`. +2. Create a dated file in the correct folder, e.g. `docs/tome/threads/YYYY-MM-DD_.md`. +3. Update `docs/tome/index.md` (add link under **Latest**). +4. Submit a PR labeled `docs` + `tome`. + +## Style +- Markdown: use sentence case for headings; wrap naturally; lists separated by blank lines. +- Links: prefer repository‑relative paths (e.g., `docs/governance/ucf.md`). +- Privacy: redact personal data in Tome entries; keep summaries minimal. + +## Release flow +- PRs merged to `main` update the Draft Release (Release Drafter). +- Tagging a release publishes notes. Version bump: update `README` and cut tag. + +# Codeowners for docs and governance +# Format: + +* @Nightmarejam + +# Strong ownership of governance and Tome +/docs/governance/** @Nightmarejam +/docs/tome/** @Nightmarejam +/templates/** @Nightmarejam +.PHONY: check spell lint links + +check: spell lint links + @echo "\nAll checks passed." + +spell: + @which codespell >/dev/null || (echo "Install codespell (pipx/pip)" && exit 1) + codespell --ignore-words .codespellignore --skip "*.min.js,*.svg,*.png,*.jpg,*.jpeg,*.gif,.git,dist,node_modules" . + +lint: + @which markdownlint >/dev/null || (echo "Install markdownlint-cli (npm i -g markdownlint-cli)" && exit 1) + markdownlint "**/*.md" -c .markdownlint.json --ignore-path .markdownlintignore || true + +links: + @if which lychee >/dev/null; then \ + lychee --config .github/lychee/lychee.toml . ; \ + else \ + echo "Lychee not found; attempting Docker..."; \ + docker run --rm -v "$(PWD)":/input lycheeverse/lychee --config .github/lychee/lychee.toml . ; \ + fi + + +# File: CONTRIBUTING.md +# -------------------------------- +# (new file contents below) +# -------------------------------- +# Contributing to Constella + +Thanks for improving the framework. This guide keeps PRs smooth and CI green. + +## Branches & PRs +- Branch naming: `type/short-topic` (e.g., `docs/tome-index`, `pilot/gaia-p1`). +- One focused change per PR. Link to related issues/entries. +- Use the PR template and fill **Intent**, **Measures**, **Review Cadence**. + +## Local checks (match CI) +Run all docs checks locally before pushing: -### Reproduce locally ```bash -python3 tools/chat-filter/filter_chats.py conversations.json tools/chat-filter/filters.config.json +# spell check +codespell --ignore-words .codespellignore . + +# markdown lint +markdownlint "**/*.md" -c .markdownlint.json + +# link check (requires lychee: `brew install lychee` or use Docker) +lychee --config .github/lychee/lychee.toml . +# or via Docker +# docker run --rm -v "$PWD":/input lycheeverse/lychee --config .github/lychee/lychee.toml . ``` +## Adding to the Civic Tome +1. Pick a template from `docs/tome/templates/`. +2. Create a dated file in the correct folder, e.g. `docs/tome/threads/YYYY-MM-DD_.md`. +3. Update `docs/tome/index.md` (add link under **Latest**). +4. Submit a PR labeled `docs` + `tome`. + +## Style +- Markdown: use sentence case for headings; wrap naturally; lists separated by blank lines. +- Links: prefer repository‑relative paths (e.g., `docs/governance/ucf.md`). +- Privacy: redact personal data in Tome entries; keep summaries minimal. + +## Release flow +- PRs merged to `main` update the Draft Release (Release Drafter). +- Tagging a release publishes notes. Version bump: update `README` and cut tag. + +# File: CODEOWNERS +# -------------------------------- +# (new file contents below) +# -------------------------------- +# Codeowners for docs and governance +# Format: + +* @Nightmarejam + +# Strong ownership of governance and Tome +/docs/governance/** @Nightmarejam +/docs/tome/** @Nightmarejam +/templates/** @Nightmarejam + +# File: Makefile +# -------------------------------- +# (new file contents below) +# -------------------------------- +.PHONY: check spell lint links + +check: spell lint links + @echo "\nAll checks passed." + +spell: + @which codespell >/dev/null || (echo "Install codespell (pipx/pip)" && exit 1) + codespell --ignore-words .codespellignore --skip "*.min.js,*.svg,*.png,*.jpg,*.jpeg,*.gif,.git,dist,node_modules" . + +lint: + @which markdownlint >/dev/null || (echo "Install markdownlint-cli (npm i -g markdownlint-cli)" && exit 1) + markdownlint "**/*.md" -c .markdownlint.json --ignore-path .markdownlintignore || true + +links: + @if which lychee >/dev/null; then \ + lychee --config .github/lychee/lychee.toml . ; \ + else \ + echo "Lychee not found; attempting Docker..."; \ + docker run --rm -v "$(PWD)":/input lycheeverse/lychee --config .github/lychee/lychee.toml . ; \ + fi + +# File: tools/scan.sh +# -------------------------------- +# (new file contents below) +#!/usr/bin/env bash +set -euo pipefail + +printf "\n=== Repo hygiene sweep ===\n" + +printf "\n1) Placeholder link targets (files containing only '@'):\n" +grep -Rxl "^@$" docs || echo "(none)" + +printf "\n2) README placeholder links ('](@)'):\n" +grep -R "\]\(@\)" -n || echo "(none)" + +printf "\n3) Empty directories:\n" +find . -type d -empty -not -path "*/.git*" || true + +printf "\n4) Markdown heading sanity (files missing H1):\n" +awk 'FNR==1 {if ($0 !~ /^# /) print FILENAME}' $(git ls-files "**/*.md") || true + +printf "\n5) Codespell quick scan:\n" +if which codespell >/dev/null; then + codespell --ignore-words .codespellignore --skip "*.min.js,*.svg,*.png,*.jpg,*.jpeg,*.gif,.git,dist,node_modules" . || true +else + echo "(codespell not installed)" +fi + +printf "\n6) Markdownlint quick scan:\n" +if which markdownlint >/dev/null; then + markdownlint "**/*.md" -c .markdownlint.json --ignore-path .markdownlintignore || true +else + echo "(markdownlint-cli not installed)" +fi + +printf "\n7) Lychee link check (may take a moment):\n" +if which lychee >/dev/null; then + lychee --config .github/lychee/lychee.toml . || true +else + echo "(lychee not installed; try Docker: docker run --rm -v \"$PWD\":/input lycheeverse/lychee --config .github/lychee/lychee.toml .)" +fi + +printf "\n=== Sweep complete ===\n" + +# File: .gitignore +# -------------------------------- +# (new or appended content below) +# macOS +.DS_Store + +# Node / build artifacts +node_modules/ +dist/ + +# Editor +.vscode/ +*.code-workspace + +# Python +__pycache__/ +*.pyc diff --git a/tools/scan.sh b/tools/scan.sh new file mode 100755 index 0000000..2d0bab9 --- /dev/null +++ b/tools/scan.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +set -euo pipefail +echo "== Repo hygiene ==" +echo "Untracked files:"; git ls-files --others --exclude-standard +echo; echo "Modified files:"; git status --porcelain +echo; echo "Recent branches:"; git branch --sort=-committerdate | head -n 10 From 2ca766a6c1ac4842a7cfabb6ce45ca65eda5d70f Mon Sep 17 00:00:00 2001 From: nightmarejam <42326244+Nightmarejam@users.noreply.github.com> Date: Wed, 20 Aug 2025 18:47:37 -0600 Subject: [PATCH 3/3] chore: integrate 1.6 scaffold and tighten local codespell target --- .codespellignore | 25 +------------------ .github/workflows/audit.yml | 18 ++++++++++++++ MANIFEST.json | 10 ++++++++ Makefile | 4 +++- docs/archive/README.md | 3 +++ docs/doctrine/manifesto.md | 5 ++++ docs/frameworks/constella_1.6.md | 10 ++++++++ docs/frameworks/constella_project_tree.md | 7 ++++++ docs/research/celestial_ecology.md | 5 ++++ docs/research/cymatic_faith_links.md | 4 ++++ rfcs/000-template.md | 25 +++++++++++++++++++ scripts/audit_completeness.py | 21 ++++++++++++++++ scripts/sync_chat_archive.py | 29 +++++++++++++++++++++++ 13 files changed, 141 insertions(+), 25 deletions(-) create mode 100644 .github/workflows/audit.yml create mode 100644 MANIFEST.json create mode 100644 docs/archive/README.md create mode 100644 docs/doctrine/manifesto.md create mode 100644 docs/frameworks/constella_1.6.md create mode 100644 docs/frameworks/constella_project_tree.md create mode 100644 docs/research/celestial_ecology.md create mode 100644 docs/research/cymatic_faith_links.md create mode 100644 rfcs/000-template.md create mode 100644 scripts/audit_completeness.py create mode 100644 scripts/sync_chat_archive.py diff --git a/.codespellignore b/.codespellignore index beb047d..a927898 100644 --- a/.codespellignore +++ b/.codespellignore @@ -1,24 +1 @@ -Auctor -Astris -MoU -MoUs -kWh -k-anonymity -de-id -Civic -Tome -RME -DOE -HUD -NIH -CDC -DOJ -OMB -GAO -CBO -POC -SKU -IRB -CPD -HRV -PSL +# Add words you intentionally keep diff --git a/.github/workflows/audit.yml b/.github/workflows/audit.yml new file mode 100644 index 0000000..19a30c3 --- /dev/null +++ b/.github/workflows/audit.yml @@ -0,0 +1,18 @@ +name: Audit + +on: + pull_request: + branches: [ dev, main ] + +jobs: + audit: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: '3.x' + - name: Run audit + run: | + python scripts/audit_completeness.py diff --git a/MANIFEST.json b/MANIFEST.json new file mode 100644 index 0000000..f1cc6e3 --- /dev/null +++ b/MANIFEST.json @@ -0,0 +1,10 @@ +{ + "required_files": [ + "docs/doctrine/manifesto.md", + "docs/frameworks/constella_1.6.md", + "docs/frameworks/constella_project_tree.md", + "docs/research/celestial_ecology.md", + "docs/research/cymatic_faith_links.md", + "docs/archive/README.md" + ] +} \ No newline at end of file diff --git a/Makefile b/Makefile index 63e412b..79e1774 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,9 @@ check: spell lint spell: @echo ">> codespell (skip if not installed)"; \ if command -v codespell >/dev/null; then \ - codespell --ignore-words .codespellignore . || exit 1; \ + find . -type f \( -name "*.md" -o -name "*.txt" -o -name "*.rst" \) \ + -not -path "./docs/constella/_inbox/*" \ + -print0 | xargs -0 codespell --check-filenames --ignore-words .codespellignore || exit 1; \ else echo "codespell not installed, skipping"; fi lint: diff --git a/docs/archive/README.md b/docs/archive/README.md new file mode 100644 index 0000000..5e19cf3 --- /dev/null +++ b/docs/archive/README.md @@ -0,0 +1,3 @@ +# Archive + +Drop exported chat transcripts here (Markdown or text). Use `scripts/sync_chat_archive.py` to index. diff --git a/docs/doctrine/manifesto.md b/docs/doctrine/manifesto.md new file mode 100644 index 0000000..51e2463 --- /dev/null +++ b/docs/doctrine/manifesto.md @@ -0,0 +1,5 @@ +# Constella 1.6 Manifesto: Doctrine of Resonance Origin + + + +See: `../img/resonance_origin_diagram.png` diff --git a/docs/frameworks/constella_1.6.md b/docs/frameworks/constella_1.6.md new file mode 100644 index 0000000..ff189cb --- /dev/null +++ b/docs/frameworks/constella_1.6.md @@ -0,0 +1,10 @@ +# Constella 1.6 Framework + +- Cosmic Resonance +- Gaia Resonance +- Faith (traditional) +- FAITHH AI (tools) +- Technology/Tools + +## Project Tree +(Insert project tree diagram / bullets) diff --git a/docs/frameworks/constella_project_tree.md b/docs/frameworks/constella_project_tree.md new file mode 100644 index 0000000..48d4f72 --- /dev/null +++ b/docs/frameworks/constella_project_tree.md @@ -0,0 +1,7 @@ +# Project Tree + +- Cosmic Resonance +- Gaia Resonance +- Faith Layer +- FAITHH AI / Tools +- Tech & Ops diff --git a/docs/research/celestial_ecology.md b/docs/research/celestial_ecology.md new file mode 100644 index 0000000..51a951c --- /dev/null +++ b/docs/research/celestial_ecology.md @@ -0,0 +1,5 @@ +# Celestial Ecology + +- Moon as stabilizer +- Star resonance and biological rhythms +- Feedback loops (Gaia circuit) diff --git a/docs/research/cymatic_faith_links.md b/docs/research/cymatic_faith_links.md new file mode 100644 index 0000000..5e6ed65 --- /dev/null +++ b/docs/research/cymatic_faith_links.md @@ -0,0 +1,4 @@ +# Cymatic Fingerprint of Faiths + +- Origin regions → sky patterns → principles +- Constellation archetypes mapped to religious motifs diff --git a/rfcs/000-template.md b/rfcs/000-template.md new file mode 100644 index 0000000..f1ec977 --- /dev/null +++ b/rfcs/000-template.md @@ -0,0 +1,25 @@ +# RFC: + +- Status: Draft +- Authors: <name> +- Reviewers: <names> +- Created: <YYYY-MM-DD> +- Target Release: 1.6 / 2.0 + +## Summary +<Short summary> + +## Motivation +<Why> + +## Proposal +<What is being changed / added> + +## Alternatives +<Considered options> + +## Risks +<Concerns, mitigations> + +## Decision Record +<Fill after review> diff --git a/scripts/audit_completeness.py b/scripts/audit_completeness.py new file mode 100644 index 0000000..f5c0739 --- /dev/null +++ b/scripts/audit_completeness.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python3 + +import json, pathlib, sys + +ROOT = pathlib.Path(__file__).resolve().parents[1] + +def main(): + manifest = json.loads((ROOT / "MANIFEST.json").read_text(encoding="utf-8")) + missing = [] + for req in manifest.get("required_files", []): + if not (ROOT / req).exists(): + missing.append(req) + if missing: + print("[WARN] Missing required files:") + for m in missing: + print(" -", m) + sys.exit(1) + print("[OK] All required files present.") + +if __name__ == "__main__": + main() diff --git a/scripts/sync_chat_archive.py b/scripts/sync_chat_archive.py new file mode 100644 index 0000000..d2fca5c --- /dev/null +++ b/scripts/sync_chat_archive.py @@ -0,0 +1,29 @@ +#!/usr/bin/env python3 + +import os, sys, pathlib, re + +ARCHIVE_DIR = pathlib.Path(__file__).resolve().parents[1] / "docs" / "archive" +INDEX = ARCHIVE_DIR / "index.md" + +def main(): + ARCHIVE_DIR.mkdir(parents=True, exist_ok=True) + files = sorted([p for p in ARCHIVE_DIR.glob("**/*") if p.is_file() and p.suffix.lower() in (".md",".txt") and p.name != "index.md"]) + lines = ["# Archive Index\\n"] + for p in files: + rel = p.relative_to(ARCHIVE_DIR) + # extract top-level header if present + title = None + try: + for line in p.read_text(encoding="utf-8", errors="ignore").splitlines(): + if line.strip().startswith("# "): + title = line.strip().lstrip("# ").strip() + break + except Exception: + pass + display = title or rel.as_posix() + lines.append(f"- [{display}]({rel.as_posix()})") + INDEX.write_text("\\n".join(lines), encoding="utf-8") + print(f"[OK] Indexed {len(files)} items to {INDEX}") + +if __name__ == "__main__": + main()