|
| 1 | +// SPDX-License-Identifier: PMPL-1.0-or-later |
| 2 | += Changelog |
| 3 | + |
| 4 | +All notable changes to Project Wharf will be documented in this file. |
| 5 | + |
| 6 | +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), |
| 7 | +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
| 8 | + |
| 9 | +== [Unreleased] |
| 10 | + |
| 11 | +=== Added |
| 12 | +- Initial project structure |
| 13 | +- Rust workspace with wharf-core, wharf-cli, and yacht-agent crates |
| 14 | +- DNS zone templates (simple, shared, standard, maximalist) |
| 15 | +- Nickel configuration schemas for security policies |
| 16 | +- Database policy engine with AST-based SQL filtering (sqlparser 0.39) |
| 17 | +- CMS adapters for WordPress, Drupal, Joomla, Moodle |
| 18 | +- Shell scripts for zone rendering, auditing, and deployment |
| 19 | +- Comprehensive Justfile with 50+ recipes |
| 20 | +- RSR (Rhodium Standard Repository) compliance documentation |
| 21 | + |
| 22 | +=== Local Deployment Proof (2026-02-14) |
| 23 | +- *Local compose stack*: `deploy/compose.yaml` with 3-service podman compose (MariaDB, yacht-agent proxy, OpenLiteSpeed+WordPress). Full end-to-end proof. |
| 24 | +- *Containerfile bug fixes*: `Containerfile.agent` fixed Wolfi package names (musl→glibc), main `Containerfile` fixed yacht-agent runtime stage (static→wolfi-base to avoid glibc segfault) |
| 25 | +- *WordPress adapter fix*: `wharf-adapter.php` now fetches both `/stats` and `/status` endpoints, mapping nested JSON to flat format the widget expects |
| 26 | +- *OLS container*: `deploy/Containerfile.ols-local` wrapping litespeedtech/openlitespeed:1.8.5-lsphp83 with WordPress-required PHP extensions |
| 27 | +- *Automated setup*: `deploy/local-test.sh` downloads WordPress, fetches real salt keys, generates wp-config.php with `DB_HOST=agent:3306`, copies adapter plugin, builds and starts stack |
| 28 | +- *SQL injection verification*: `deploy/verify-sqli.sh` proves 6/6 attacks blocked (SELECT passes, INSERT wp_users/DROP/ALTER/TRUNCATE/UNION all blocked), with live agent stats |
| 29 | + |
| 30 | +=== V1.0 Shipping Preparation (2026-02-14) |
| 31 | +- *Signature scheme feature flag*: Ed448 now opt-in via `SignatureScheme::Hybrid`; default is `MlDsa87Only` (FIPS 204 peer-reviewed). Configurable via `--signature-scheme` CLI arg and TOML config. |
| 32 | +- *SQL injection smoke tests*: 19 integration tests proving AST-based proxy blocks real WordPress attack patterns (user creation, options manipulation, content defacement, DDL, stacked injection) |
| 33 | +- *Deployment package*: `deploy/setup.sh` first-run script + `deploy/DEPLOY.adoc` step-by-step guide with podman/selur-compose orchestration |
| 34 | +- *Hack-me challenge*: `docs/HACK-ME-CHALLENGE.adoc` with rules of engagement, attack surface table, and technical details for security researchers |
| 35 | +- *WordPress adapter plugin*: `adapters/wordpress-wharf/` — GPL-2.0-or-later PHP plugin providing dashboard widget (query stats, firewall mode, signature scheme) and admin bar indicator |
| 36 | +- *systemd unit*: `infra/systemd/yacht-agent.service` with DynamicUser, ProtectSystem=strict, MemoryDenyWriteExecute, and CAP_BPF |
| 37 | +- *Tooling enrollment*: Bot directives for gitbot-fleet (8 bots), panic-attacker security scan workflow, AI manifest updated |
| 38 | +- *K9 contractiles*: Nickel configuration templates (Kennel/Yard/Hunt levels) for deployment automation |
| 39 | + |
| 40 | +=== Production Hardening (2026-02-14) |
| 41 | +- *Persistent hybrid keypairs*: Wharf CLI (`~/.wharf/keys/wharf.key`) and Yacht Agent (`/etc/wharf/keys/yacht.key`) now persist Ed448 + ML-DSA-87 keypairs across restarts with proper file permissions (0600 private, 0644 public) |
| 42 | +- *Keypair serialization*: Custom binary format with `WHRF` magic, versioning, and optional password encryption via HKDF-SHAKE512 + XChaCha20-Poly1305 |
| 43 | +- *eBPF XDP firewall*: Full kernel-level packet filtering with XDP programs and userspace loader (`crates/wharf-ebpf/`) |
| 44 | +- *Certificate management*: Complete Nebula certificate lifecycle — CA creation, cert signing, IP allocation, and revocation (`nebula.rs`) |
| 45 | +- *Prometheus metrics*: Real-time counters for queries (allowed/blocked/audited), mooring sessions, integrity checks, and moored status at `GET /metrics` |
| 46 | +- *Statistics endpoint*: `GET /stats` now returns actual counters instead of placeholder zeros |
| 47 | +- *File integrity verification*: Yacht Agent mooring verify phase now checks BLAKE3 manifests against on-disk files when `site_root` is configured |
| 48 | +- *HTTP client resilience*: Mooring client configured with 30s timeout, 10s connect timeout, and connection pooling (2 idle per host) |
| 49 | +- *Configuration*: Added `key_store_dir` (CLI + agent) and `site_root` (agent) config options |
| 50 | + |
| 51 | +=== Security |
| 52 | +- Implemented AST-based SQL query analysis (not regex) |
| 53 | +- Added HTTP header airlock configuration |
| 54 | +- Defined filesystem immutability policies |
| 55 | +- Configured Nebula mesh network policies |
| 56 | +- Added FIDO2/WebAuthn authentication framework |
| 57 | + |
| 58 | +=== Known Issues |
| 59 | +- `ed448-goldilocks` v0.14.0-pre.10 is unaudited — needs third-party audit before production deployment |
| 60 | + |
| 61 | +== [0.1.0] - 2025-11-26 |
| 62 | + |
| 63 | +=== Added |
| 64 | +- Initial release of Project Wharf |
| 65 | +- Core architecture: Wharf (offline controller) + Yacht (runtime enforcer) |
| 66 | +- Database "Virtual Sharding" concept |
| 67 | +- Zero Trust networking via Nebula |
| 68 | +- Support for WordPress, Drupal, Joomla, Moodle |
| 69 | + |
| 70 | +=== Documentation |
| 71 | +- README.adoc with full architecture overview |
| 72 | +- SECURITY.md with vulnerability reporting process |
| 73 | +- CONTRIBUTING.adoc with TPCF contribution framework |
| 74 | +- GOVERNANCE.adoc with decision-making process |
| 75 | + |
| 76 | +--- |
| 77 | + |
| 78 | +== Version History Summary |
| 79 | + |
| 80 | +| Version | Date | Highlights | |
| 81 | +|---------|------|------------| |
| 82 | +| Unreleased | 2026-02-14 | Local E2E deployment proof, Containerfile fixes, WordPress adapter stats fix, compose stack, SQLi verification | |
| 83 | +| 0.1.0 | 2025-11-26 | Initial release | |
| 84 | + |
| 85 | +== Upgrade Guide |
| 86 | + |
| 87 | +=== Upgrading to 0.1.0 |
| 88 | + |
| 89 | +This is the initial release. No upgrade path required. |
| 90 | + |
| 91 | +== Deprecation Notices |
| 92 | + |
| 93 | +*None at this time.* |
| 94 | + |
| 95 | +== Security Advisories |
| 96 | + |
| 97 | +*None at this time.* |
| 98 | + |
| 99 | +--- |
| 100 | + |
| 101 | +[Unreleased]: https://gitlab.com/hyperpolymath/wharf/-/compare/v0.1.0...HEAD |
| 102 | +[0.1.0]: https://gitlab.com/hyperpolymath/wharf/-/releases/v0.1.0 |
0 commit comments