diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 2777a72..afe9590 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1,28 +1,8 @@ # Code of Conduct - - ## Our Pledge -We as members, contributors, and leaders pledge to make participation in {{PROJECT_NAME}} a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, colour, religion, or sexual identity and orientation. +We as members, contributors, and leaders pledge to make participation in noteg-ssg a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, colour, religion, or sexual identity and orientation. We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community. @@ -136,7 +116,7 @@ If you experience or witness unacceptable behaviour, or have any other concerns, | Method | Details | Best For | |--------|---------|----------| -| **Email** | {{CONDUCT_EMAIL}} | Detailed reports, sensitive matters | +| **Email** | conduct@hyperpolymath.dev | Detailed reports, sensitive matters | | **Private Message** | Contact any maintainer directly | Quick questions, minor issues | | **Anonymous Form** | [Link to form if available] | When you need anonymity | @@ -152,8 +132,8 @@ If you experience or witness unacceptable behaviour, or have any other concerns, **What Happens Next** -1. You will receive acknowledgment within **{{RESPONSE_TIME}}** -2. The {{CONDUCT_TEAM}} will review the report +1. You will receive acknowledgment within **48 hours** +2. The conduct team will review the report 3. We may ask for additional information 4. We will determine appropriate action 5. We will inform you of the outcome (respecting others' privacy) @@ -169,7 +149,7 @@ All reports will be handled with discretion: ### Conflicts of Interest -If a {{CONDUCT_TEAM}} member is involved in an incident: +If a conduct team member is involved in an incident: - They will recuse themselves from the process - Another maintainer or external party will handle the report @@ -179,7 +159,7 @@ If a {{CONDUCT_TEAM}} member is involved in an incident: ## Enforcement Guidelines -The {{CONDUCT_TEAM}} will follow these guidelines in determining consequences: +The conduct team will follow these guidelines in determining consequences: ### 1. Correction @@ -231,13 +211,13 @@ For contributors with elevated access (Perimeter 2 or 1): If you believe an enforcement decision was made in error: 1. **Wait 7 days** after the decision (cooling-off period) -2. **Email** {{CONDUCT_EMAIL}} with subject line "Appeal: [Original Report ID]" +2. **Email** conduct@hyperpolymath.dev with subject line "Appeal: [Original Report ID]" 3. **Explain** why you believe the decision should be reconsidered 4. **Provide** any new information not previously available **Appeals Process** -- Appeals are reviewed by a different {{CONDUCT_TEAM}} member than the original +- Appeals are reviewed by a different conduct team member than the original - You will receive a response within 14 days - The appeals decision is final - You may only appeal once per incident @@ -310,8 +290,8 @@ We thank these communities for their leadership in creating welcoming spaces. If you have questions about this Code of Conduct: -- Open a [Discussion](https://{{FORGE}}/{{OWNER}}/{{REPO}}/discussions) (for general questions) -- Email {{CONDUCT_EMAIL}} (for private questions) +- Open a [Discussion](https://github.com/hyperpolymath/noteg-ssg/discussions) (for general questions) +- Email conduct@hyperpolymath.dev (for private questions) - Contact any maintainer directly --- @@ -324,4 +304,4 @@ We're all here because we care about this project. Let's make it a place where e --- -Last updated: {{CURRENT_YEAR}} · Based on Contributor Covenant 2.1 +Last updated: 2025 · Based on Contributor Covenant 2.1 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 5457337..b6722ee 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,13 +1,13 @@ # Clone the repository -git clone https://{{FORGE}}/{{OWNER}}/{{REPO}}.git -cd {{REPO}} +git clone https://github.com/hyperpolymath/noteg-ssg.git +cd noteg-ssg # Using Nix (recommended for reproducibility) nix develop # Or using toolbox/distrobox -toolbox create {{REPO}}-dev -toolbox enter {{REPO}}-dev +toolbox create noteg-ssg-dev +toolbox enter noteg-ssg-dev # Install dependencies manually # Verify setup @@ -17,7 +17,7 @@ just test # Run test suite ### Repository Structure ``` -{{REPO}}/ +noteg-ssg/ ├── src/ # Source code (Perimeter 1-2) ├── lib/ # Library code (Perimeter 1-2) ├── extensions/ # Extensions (Perimeter 2) @@ -53,7 +53,7 @@ just test # Run test suite **Before reporting**: 1. Search existing issues -2. Check if it's already fixed in `{{MAIN_BRANCH}}` +2. Check if it's already fixed in `main` 3. Determine which perimeter the bug affects **When reporting**: @@ -86,10 +86,10 @@ Use the [feature request template](.github/ISSUE_TEMPLATE/feature_request.md) an Look for issues labelled: -- [`good first issue`](https://{{FORGE}}/{{OWNER}}/{{REPO}}/labels/good%20first%20issue) — Simple Perimeter 3 tasks -- [`help wanted`](https://{{FORGE}}/{{OWNER}}/{{REPO}}/labels/help%20wanted) — Community help needed -- [`documentation`](https://{{FORGE}}/{{OWNER}}/{{REPO}}/labels/documentation) — Docs improvements -- [`perimeter-3`](https://{{FORGE}}/{{OWNER}}/{{REPO}}/labels/perimeter-3) — Community sandbox scope +- [`good first issue`](https://github.com/hyperpolymath/noteg-ssg/labels/good%20first%20issue) — Simple Perimeter 3 tasks +- [`help wanted`](https://github.com/hyperpolymath/noteg-ssg/labels/help%20wanted) — Community help needed +- [`documentation`](https://github.com/hyperpolymath/noteg-ssg/labels/documentation) — Docs improvements +- [`perimeter-3`](https://github.com/hyperpolymath/noteg-ssg/labels/perimeter-3) — Community sandbox scope --- diff --git a/ECOSYSTEM.scm b/ECOSYSTEM.scm index e3aa0fb..1a74841 100644 --- a/ECOSYSTEM.scm +++ b/ECOSYSTEM.scm @@ -1,12 +1,12 @@ ;; SPDX-License-Identifier: AGPL-3.0-or-later ;; SPDX-FileCopyrightText: 2025 Jonathan D.A. Jewell -;; ECOSYSTEM.scm — template-repo +;; ECOSYSTEM.scm — noteg-ssg (ecosystem (version "1.0.0") - (name "template-repo") - (type "project") - (purpose "Project in the hyperpolymath ecosystem") + (name "noteg-ssg") + (type "satellite") + (purpose "MCP adapter collection for 28 static site generators") (position-in-ecosystem "Part of hyperpolymath ecosystem. Follows RSR guidelines.") @@ -24,5 +24,5 @@ (url "https://github.com/hyperpolymath/rhodium-standard-repositories") (relationship "standard"))) - (what-this-is "Project in the hyperpolymath ecosystem") - (what-this-is-not "- NOT exempt from RSR compliance")) + (what-this-is "Satellite SSG implementation providing Deno/JS MCP adapters for 28 static site generators") + (what-this-is-not "- NOT the central hub (that's poly-ssg-mcp)\n - NOT exempt from RSR compliance")) diff --git a/META.scm b/META.scm index 136c02a..1656bd9 100644 --- a/META.scm +++ b/META.scm @@ -1,8 +1,8 @@ ;; SPDX-License-Identifier: AGPL-3.0-or-later ;; SPDX-FileCopyrightText: 2025 Jonathan D.A. Jewell -;;; META.scm — template-repo +;;; META.scm — noteg-ssg -(define-module (template-repo meta) +(define-module (noteg-ssg meta) #:export (architecture-decisions development-practices design-rationale)) (define architecture-decisions @@ -10,7 +10,7 @@ (title . "RSR Compliance") (status . "accepted") (date . "2025-12-15") - (context . "Project in the hyperpolymath ecosystem") + (context . "Satellite SSG adapter collection for poly-ssg-mcp hub") (decision . "Follow Rhodium Standard Repository guidelines") (consequences . ("RSR Gold target" "SHA-pinned actions" "SPDX headers" "Multi-platform CI"))))) diff --git a/README.adoc b/README.adoc index 8b13789..6b5fe4e 100644 --- a/README.adoc +++ b/README.adoc @@ -1 +1,183 @@ += noteg-ssg +:toc: macro +:toc-title: Contents +:toclevels: 2 +:icons: font +:source-highlighter: highlight.js +image:https://img.shields.io/badge/license-MIT%20OR%20AGPL--3.0-blue[License] +image:https://img.shields.io/badge/RSR-compliant-gold[RSR Compliant] +image:https://img.shields.io/badge/MCP-adapters-green[MCP Adapters] + +Satellite SSG implementation providing Deno/JavaScript MCP adapters for 28 static site generators. + +toc::[] + +== Overview + +**noteg-ssg** is a satellite project in the https://github.com/hyperpolymath[hyperpolymath] ecosystem that provides Model Context Protocol (MCP) adapters for 28 different static site generators across multiple programming languages. + +This project integrates with the https://github.com/hyperpolymath/poly-ssg-mcp[poly-ssg-mcp] hub to provide a unified interface for working with various SSGs. + +=== Key Features + +* **28 SSG Adapters** - Support for SSGs written in Rust, Haskell, Elixir, Julia, Scala, and more +* **MCP Protocol** - Standardised Model Context Protocol interface +* **Deno Runtime** - All adapters run on Deno for consistent cross-platform execution +* **RSR Compliant** - Follows Rhodium Standard Repository guidelines + +== Supported Static Site Generators + +[cols="1,1,2"] +|=== +|Adapter |Language |Description + +|babashka |Clojure |Babashka-based SSG +|cobalt |Rust |Static site generator in Rust +|coleslaw |Common Lisp |Lisp-based SSG +|cryogen |Clojure |Static site generator for Clojure +|documenter |Julia |Julia documentation generator +|ema |Haskell |Haskell static site generator +|fornax |F# |F# static site generator +|franklin |Julia |Julia-based SSG with live editing +|frog |Racket |Racket static blog generator +|hakyll |Haskell |Hakyll static site generator +|laika |Scala |Scala documentation tool +|marmot |Crystal |Crystal-based SSG +|mdbook |Rust |Rust book/documentation generator +|nimble-publisher |Elixir |Nimble-based Elixir publisher +|nimrod |Nim |Nim static site generator +|orchid |Kotlin |Kotlin documentation generator +|perun |Clojure |Clojure static site generator +|pollen |Racket |Racket publishing system +|publish |Swift |Swift static site generator +|reggae |D |D language SSG +|scalatex |Scala |Scala text processor +|serum |Elixir |Simple static site generator for Elixir +|staticwebpages |Julia |Julia static web pages +|tableau |Elixir |Elixir static site generator +|wub |Tcl |Tcl web framework +|yocaml |OCaml |OCaml static site generator +|zola |Rust |Fast static site generator in Rust +|zotonic |Erlang |Erlang CMS and framework +|=== + +== Installation + +=== Prerequisites + +* https://deno.land/[Deno] runtime (v1.40+) +* The specific SSG you want to use must be installed on your system + +=== Setup + +[source,bash] +---- +# Clone the repository +git clone https://github.com/hyperpolymath/noteg-ssg.git +cd noteg-ssg +---- + +== Usage + +Each adapter provides a standard MCP interface with common tools: + +[source,javascript] +---- +// Example: Using the Zola adapter +import { connect, tools } from './adapters/zola.js'; + +// Connect to verify Zola is installed +await connect(); + +// Use available tools +const result = await tools.find(t => t.name === 'init').execute({ name: 'my-site' }); +---- + +=== Common Tools + +All adapters typically provide these tools: + +* `init` - Initialize a new site +* `build` - Build the static site +* `serve` - Start a development server +* `check` - Validate site configuration +* `version` - Get the SSG version + +== Architecture + +[source] +---- +noteg-ssg (satellite) + | + +-- adapters/ # 28 MCP adapter implementations + | +-- zola.js + | +-- hakyll.js + | +-- ... + | + +-- Integrates with: poly-ssg-mcp (hub) +---- + +=== Ecosystem Position + +* **This project**: Satellite SSG adapter implementations +* **poly-ssg-mcp**: Central hub providing unified MCP server +* **rhodium-standard-repositories**: RSR compliance standard + +== Development + +=== Prerequisites + +* Deno runtime +* (Optional) https://github.com/casey/just[just] task runner +* (Optional) Nix for reproducible environments + +=== Running Tests + +[source,bash] +---- +# Run all adapter tests +deno test adapters/ + +# Test a specific adapter +deno test adapters/zola.js +---- + +=== Adding New Adapters + +1. Create a new file in `adapters/` following the existing pattern +2. Export: `name`, `language`, `description` +3. Implement: `connect()`, `disconnect()`, `isConnected()`, `tools[]` +4. Add tests + +See link:CONTRIBUTING.md[CONTRIBUTING.md] for full guidelines. + +== Security + +Please report security vulnerabilities through GitHub Security Advisories: +https://github.com/hyperpolymath/noteg-ssg/security/advisories/new + +See link:SECURITY.md[SECURITY.md] for our full security policy. + +== License + +This project is dual-licensed under: + +* MIT License +* AGPL-3.0-or-later + +See link:LICENSE.txt[LICENSE.txt] for details. + +== Contributing + +Contributions are welcome! Please read our link:CONTRIBUTING.md[Contributing Guidelines] and link:CODE_OF_CONDUCT.md[Code of Conduct] before submitting. + +== Links + +* https://github.com/hyperpolymath/noteg-ssg[GitHub Repository] +* https://github.com/hyperpolymath/poly-ssg-mcp[poly-ssg-mcp Hub] +* https://github.com/hyperpolymath[hyperpolymath Organization] + +--- + +_Part of the https://github.com/hyperpolymath[hyperpolymath] ecosystem_ diff --git a/SECURITY.md b/SECURITY.md index 7dd7b29..80aa0e0 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -1,23 +1,5 @@ # Security Policy - - We take security seriously. We appreciate your efforts to responsibly disclose vulnerabilities and will make every effort to acknowledge your contributions. ## Table of Contents @@ -40,7 +22,7 @@ We take security seriously. We appreciate your efforts to responsibly disclose v The preferred method for reporting security vulnerabilities is through GitHub's Security Advisory feature: -1. Navigate to [Report a Vulnerability](https://github.com/{{OWNER}}/{{REPO}}/security/advisories/new) +1. Navigate to [Report a Vulnerability](https://github.com/hyperpolymath/noteg-ssg/security/advisories/new) 2. Click **"Report a vulnerability"** 3. Complete the form with as much detail as possible 4. Submit — we'll receive a private notification @@ -52,28 +34,11 @@ This method ensures: - Coordinated disclosure tooling - Automatic credit when the advisory is published -### Alternative: Encrypted Email - -If you cannot use GitHub Security Advisories, you may email us directly: +### Alternative: Email -| | | -|---|---| -| **Email** | {{SECURITY_EMAIL}} | -| **PGP Key** | [Download Public Key]({{PGP_KEY_URL}}) | -| **Fingerprint** | `{{PGP_FINGERPRINT}}` | +If you cannot use GitHub Security Advisories, you may email us directly at the email address listed in the repository profile. -```bash -# Import our PGP key -curl -sSL {{PGP_KEY_URL}} | gpg --import - -# Verify fingerprint -gpg --fingerprint {{SECURITY_EMAIL}} - -# Encrypt your report -gpg --armor --encrypt --recipient {{SECURITY_EMAIL}} report.txt -``` - -> **⚠️ Important:** Do not report security vulnerabilities through public GitHub issues, pull requests, discussions, or social media. +> **Important:** Do not report security vulnerabilities through public GitHub issues, pull requests, discussions, or social media. --- @@ -199,17 +164,17 @@ If we cannot reach agreement on disclosure timing, we default to 90 days from yo ## Scope -### In Scope ✅ +### In Scope The following are within scope for security research: -- This repository (`{{OWNER}}/{{REPO}}`) and all its code +- This repository (`hyperpolymath/noteg-ssg`) and all its code - Official releases and packages published from this repository - Documentation that could lead to security issues - Build and deployment configurations in this repository - Dependencies (report here, we'll coordinate with upstream) -### Out of Scope ❌ +### Out of Scope The following are **not** in scope: @@ -226,28 +191,20 @@ The following are **not** in scope: We're particularly interested in: - Remote code execution -- SQL injection, command injection, code injection -- Authentication/authorisation bypass -- Cross-site scripting (XSS) and cross-site request forgery (CSRF) -- Server-side request forgery (SSRF) +- Command injection, code injection - Path traversal / local file inclusion - Information disclosure (credentials, PII, secrets) - Cryptographic weaknesses - Deserialisation vulnerabilities - Memory safety issues (buffer overflows, use-after-free, etc.) - Supply chain vulnerabilities (dependency confusion, etc.) -- Significant logic flaws +- Significant logic flaws in adapter implementations ### Non-Qualifying Issues The following generally do not qualify as security vulnerabilities: - Missing security headers on non-sensitive pages -- Clickjacking on pages without sensitive actions -- Self-XSS (requires victim to paste code) -- Missing rate limiting (unless it enables a specific attack) -- Username/email enumeration (unless high-risk context) -- Missing cookie flags on non-sensitive cookies - Software version disclosure - Verbose error messages (unless exposing secrets) - Best practice deviations without demonstrable impact @@ -262,11 +219,11 @@ We support security research conducted in good faith. If you conduct security research in accordance with this policy: -- ✅ We will not initiate legal action against you -- ✅ We will not report your activity to law enforcement -- ✅ We will work with you in good faith to resolve issues -- ✅ We consider your research authorised under the Computer Fraud and Abuse Act (CFAA), UK Computer Misuse Act, and similar laws -- ✅ We waive any potential claim against you for circumvention of security controls +- We will not initiate legal action against you +- We will not report your activity to law enforcement +- We will work with you in good faith to resolve issues +- We consider your research authorised under the Computer Fraud and Abuse Act (CFAA), UK Computer Misuse Act, and similar laws +- We waive any potential claim against you for circumvention of security controls ### Good Faith Requirements @@ -279,7 +236,7 @@ To qualify for safe harbour, you must: - Not exploit vulnerabilities beyond proof-of-concept - Not use vulnerabilities for profit (beyond bug bounties where offered) -> **⚠️ Important:** This safe harbour does not extend to third-party systems. Always check their policies before testing. +> **Important:** This safe harbour does not extend to third-party systems. Always check their policies before testing. --- @@ -289,7 +246,7 @@ We believe in recognising security researchers who help us improve. ### Hall of Fame -Researchers who report valid vulnerabilities will be acknowledged in our [Security Acknowledgments](SECURITY-ACKNOWLEDGMENTS.md) (unless they prefer anonymity). +Researchers who report valid vulnerabilities will be acknowledged in our security acknowledgments (unless they prefer anonymity). Recognition includes: @@ -300,16 +257,16 @@ Recognition includes: ### What We Offer -- ✅ Public credit in security advisories -- ✅ Acknowledgment in release notes -- ✅ Entry in our Hall of Fame -- ✅ Reference/recommendation letter upon request (for significant findings) +- Public credit in security advisories +- Acknowledgment in release notes +- Entry in our Hall of Fame +- Reference/recommendation letter upon request (for significant findings) ### What We Don't Currently Offer -- ❌ Monetary bug bounties -- ❌ Hardware or swag -- ❌ Paid security research contracts +- Monetary bug bounties +- Hardware or swag +- Paid security research contracts > **Note:** We're a community project with limited resources. Your contributions help everyone who uses this software. @@ -321,9 +278,9 @@ Recognition includes: To stay informed about security updates: -- **Watch this repository**: Click "Watch" → "Custom" → Select "Security alerts" -- **GitHub Security Advisories**: Published at [Security Advisories](https://github.com/{{OWNER}}/{{REPO}}/security/advisories) -- **Release notes**: Security fixes noted in [CHANGELOG](CHANGELOG.md) +- **Watch this repository**: Click "Watch" -> "Custom" -> Select "Security alerts" +- **GitHub Security Advisories**: Published at [Security Advisories](https://github.com/hyperpolymath/noteg-ssg/security/advisories) +- **Release notes**: Security fixes noted in CHANGELOG ### Update Policy @@ -335,20 +292,17 @@ To stay informed about security updates: ### Supported Versions - - | Version | Supported | Notes | |---------|-----------|-------| -| `main` branch | ✅ Yes | Latest development | -| Latest release | ✅ Yes | Current stable | -| Previous minor release | ✅ Yes | Security fixes backported | -| Older versions | ❌ No | Please upgrade | +| `main` branch | Yes | Latest development | +| Latest release | Yes | Current stable | +| Older versions | No | Please upgrade | --- ## Security Best Practices -When using {{PROJECT_NAME}}, we recommend: +When using noteg-ssg, we recommend: ### General @@ -370,9 +324,7 @@ When using {{PROJECT_NAME}}, we recommend: ## Additional Resources -- [Our PGP Public Key]({{PGP_KEY_URL}}) -- [Security Advisories](https://github.com/{{OWNER}}/{{REPO}}/security/advisories) -- [Changelog](CHANGELOG.md) +- [Security Advisories](https://github.com/hyperpolymath/noteg-ssg/security/advisories) - [Contributing Guidelines](CONTRIBUTING.md) - [CVE Database](https://cve.mitre.org/) - [CVSS Calculator](https://www.first.org/cvss/calculator/3.1) @@ -383,9 +335,9 @@ When using {{PROJECT_NAME}}, we recommend: | Purpose | Contact | |---------|---------| -| **Security issues** | [Report via GitHub](https://github.com/{{OWNER}}/{{REPO}}/security/advisories/new) or {{SECURITY_EMAIL}} | -| **General questions** | [GitHub Discussions](https://github.com/{{OWNER}}/{{REPO}}/discussions) | -| **Other enquiries** | See [README](README.md) for contact information | +| **Security issues** | [Report via GitHub](https://github.com/hyperpolymath/noteg-ssg/security/advisories/new) | +| **General questions** | [GitHub Discussions](https://github.com/hyperpolymath/noteg-ssg/discussions) | +| **Other enquiries** | See [README](README.adoc) for contact information | --- @@ -399,8 +351,8 @@ This security policy may be updated from time to time. Significant changes will --- -*Thank you for helping keep {{PROJECT_NAME}} and its users safe.* 🛡️ +*Thank you for helping keep noteg-ssg and its users safe.* --- -Last updated: {{CURRENT_YEAR}} · Policy version: 1.0.0 +Last updated: 2025 · Policy version: 1.0.0 diff --git a/STATE.scm b/STATE.scm index 326a48e..caa0731 100644 --- a/STATE.scm +++ b/STATE.scm @@ -1,22 +1,33 @@ -;;; STATE.scm — template-repo +;;; STATE.scm — noteg-ssg ;; SPDX-License-Identifier: AGPL-3.0-or-later ;; SPDX-FileCopyrightText: 2025 Jonathan D.A. Jewell (define metadata - '((version . "0.1.0") (updated . "2025-12-15") (project . "template-repo"))) + '((version . "0.1.0") (updated . "2025-12-17") (project . "noteg-ssg"))) (define current-position - '((phase . "v0.1 - Initial Setup") - (overall-completion . 25) - (components ((rsr-compliance ((status . "complete") (completion . 100))))))) + '((phase . "v0.2 - Security & Documentation") + (overall-completion . 50) + (components ((rsr-compliance ((status . "complete") (completion . 100))) + (scm-files ((status . "complete") (completion . 100))) + (security-policy ((status . "complete") (completion . 100))) + (documentation ((status . "complete") (completion . 100))) + (adapter-testing ((status . "pending") (completion . 0))) + (ci-cd-verification ((status . "pending") (completion . 0))))))) (define blockers-and-issues '((critical ()) (high-priority ()))) (define critical-next-actions - '((immediate (("Verify CI/CD" . high))) (this-week (("Expand tests" . medium))))) + '((immediate (("Verify adapter tests" . high) ("Test CI/CD pipeline" . high))) + (this-week (("Add integration tests" . medium) ("Document adapter APIs" . medium))) + (roadmap (("v0.3 - Adapter testing" . "Add comprehensive tests for all 28 adapters") + ("v0.4 - CI/CD hardening" . "Verify and enhance GitHub Actions workflows") + ("v0.5 - Hub integration" . "Full integration testing with poly-ssg-mcp") + ("v1.0 - Stable release" . "Production-ready with full documentation"))))) (define session-history - '((snapshots ((date . "2025-12-15") (session . "initial") (notes . "SCM files added"))))) + '((snapshots ((date . "2025-12-15") (session . "initial") (notes . "SCM files added")) + ((date . "2025-12-17") (session . "security-review") (notes . "Fixed SCM files, security policy, documentation"))))) (define state-summary - '((project . "template-repo") (completion . 25) (blockers . 0) (updated . "2025-12-15"))) + '((project . "noteg-ssg") (completion . 50) (blockers . 0) (updated . "2025-12-17")))