Skip to content

Commit 49f224a

Browse files
Jonathan D.A. Jewellclaude
andcommitted
docs: update metadata to 95% completion, add v1.0 shipping entries
STATE.scm bumped to 95%, production-hardening marked complete, v1.0-shipping milestone added. ECOSYSTEM.scm gains verisimdb-data and wordpress adapter. TOPOLOGY.md adds signature scheme rows and wordpress-adapter/deployment components. README adds signature scheme config, WordPress dashboard adapter, deployment guide, and hack-me challenge sections. CHANGELOG adds v1.0 shipping preparation block. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 2e2c80a commit 49f224a

5 files changed

Lines changed: 90 additions & 7 deletions

File tree

.machine_readable/ECOSYSTEM.scm

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,6 @@
1414
(project "panic-attacker" (relationship quality-tool) (description "Security scanning for weak points"))
1515
(project "echidna" (relationship quality-tool) (description "Formal proofing and fuzzing"))
1616
(project "hypatia" (relationship ci-cd-tool) (description "Neurosymbolic CI/CD security intelligence"))
17-
(project "gitbot-fleet" (relationship automation) (description "Bot orchestration: rhodibot, echidnabot, sustainabot, glambot, seambot, finishbot"))))
17+
(project "gitbot-fleet" (relationship automation) (description "Bot orchestration: rhodibot, echidnabot, sustainabot, glambot, seambot, finishbot"))
18+
(project "verisimdb-data" (relationship quality-data) (description "Security scan data ingestion for weak point tracking"))
19+
(project "wordpress" (relationship adapter-target) (description "Primary CMS adapter — GPL-2.0 dashboard plugin in adapters/wordpress-wharf/"))))

.machine_readable/STATE.scm

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@
33
(project-context
44
(name "project-wharf")
55
(purpose "Sovereign Web Hypervisor — immutable CMS infrastructure with offline admin (Wharf) and online runtime (Yacht)")
6-
(completion-percentage 90))
6+
(completion-percentage 95))
77
(route-to-mvp
88
(milestone "crypto-overhaul" (status complete) (description "Ed448 + ML-DSA-87 hybrid signatures, SHAKE3-512, XChaCha20-Poly1305, HKDF, Argon2id"))
99
(milestone "http-mooring-client" (status complete) (description "MooringClient HTTP API: init → verify → rsync → commit"))
1010
(milestone "identity-file" (status complete) (description "SSH identity resolution: yacht → fleet → ~/.ssh/id_ed448 → agent"))
1111
(milestone "container-compliance" (status complete) (description "Chainguard bases, Containerfile naming, selur-compose orchestration"))
1212
(milestone "demo-script" (status complete) (description "End-to-end mooring + SQL injection blocking + file tampering detection"))
13-
(milestone "production-hardening" (status in-progress) (description "Production hardening milestone")
13+
(milestone "production-hardening" (status complete) (description "Production hardening milestone")
1414
(sub-milestone "keypair-persistence" (status complete) (description "Persistent hybrid keypairs for CLI and yacht-agent with file permissions"))
1515
(sub-milestone "ebpf-loader" (status complete) (description "Full XDP kernel program + userspace loader in crates/wharf-ebpf/"))
1616
(sub-milestone "database-proxy" (status complete) (description "Full AST parser via sqlparser 0.39 in db_policy.rs"))
@@ -19,6 +19,14 @@
1919
(sub-milestone "http-resilience" (status complete) (description "Timeouts, connection pooling on mooring HTTP client"))
2020
(sub-milestone "integrity-verification" (status complete) (description "Yacht agent mooring verify wired to BLAKE3 manifest verification"))
2121
(sub-milestone "ed448-audit" (status pending) (description "ed448-goldilocks v0.14.0-pre.10 needs third-party audit before production"))))
22+
(milestone "v1.0-shipping" (status complete) (description "V1.0 shipping preparation")
23+
(sub-milestone "signature-scheme-flag" (status complete) (description "Feature-flag ed448: MlDsa87Only default, Hybrid opt-in"))
24+
(sub-milestone "sqli-smoke-tests" (status complete) (description "19 integration tests proving AST proxy blocks WordPress attack patterns"))
25+
(sub-milestone "deployment-package" (status complete) (description "setup.sh, DEPLOY.adoc, selur-compose orchestration"))
26+
(sub-milestone "hack-me-challenge" (status complete) (description "HACK-ME-CHALLENGE.adoc with rules of engagement and technical details"))
27+
(sub-milestone "wordpress-adapter" (status complete) (description "GPL-2.0 PHP plugin for wp-admin dashboard widget + admin bar indicator"))
28+
(sub-milestone "systemd-packaging" (status complete) (description "yacht-agent.service with full systemd hardening"))
29+
(sub-milestone "tooling-enrollment" (status complete) (description "Bot directives, panic-attacker workflow, AI manifest updated"))))
2230
(components
2331
(component "wharf-core" (path "crates/wharf-core") (role "shared library: crypto, fleet, integrity, mooring, sync"))
2432
(component "wharf-cli" (path "bin/wharf-cli") (role "offline admin CLI: moor, integrity, fleet management"))

CHANGELOG.adoc

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1919
- Comprehensive Justfile with 50+ recipes
2020
- RSR (Rhodium Standard Repository) compliance documentation
2121

22+
=== V1.0 Shipping Preparation (2026-02-14)
23+
- *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.
24+
- *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)
25+
- *Deployment package*: `deploy/setup.sh` first-run script + `deploy/DEPLOY.adoc` step-by-step guide with podman/selur-compose orchestration
26+
- *Hack-me challenge*: `docs/HACK-ME-CHALLENGE.adoc` with rules of engagement, attack surface table, and technical details for security researchers
27+
- *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
28+
- *systemd unit*: `infra/systemd/yacht-agent.service` with DynamicUser, ProtectSystem=strict, MemoryDenyWriteExecute, and CAP_BPF
29+
- *Tooling enrollment*: Bot directives for gitbot-fleet (8 bots), panic-attacker security scan workflow, AI manifest updated
30+
- *K9 contractiles*: Nickel configuration templates (Kennel/Yard/Hunt levels) for deployment automation
31+
2232
=== Production Hardening (2026-02-14)
2333
- *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)
2434
- *Keypair serialization*: Custom binary format with `WHRF` magic, versioning, and optional password encryption via HKDF-SHAKE512 + XChaCha20-Poly1305
@@ -61,7 +71,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6171

6272
| Version | Date | Highlights |
6373
|---------|------|------------|
64-
| Unreleased | 2026-02-14 | Production hardening: persistent keypairs, eBPF, metrics, integrity verification |
74+
| Unreleased | 2026-02-14 | V1.0 shipping: signature scheme flag, SQLi tests, deployment package, WordPress adapter, hack-me challenge |
6575
| 0.1.0 | 2025-11-26 | Initial release |
6676

6777
== Upgrade Guide

README.adoc

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,30 @@ cp adapters/wordpress/db.php /var/www/html/wp-content/db.php
228228
echo "include_once '/opt/wharf/adapters/drupal/settings.php';" >> sites/default/settings.php
229229
----
230230

231+
=== WordPress Dashboard Adapter
232+
233+
A thin GPL-2.0 plugin that displays Wharf protection status in wp-admin:
234+
235+
[source,bash]
236+
----
237+
# Copy the adapter plugin into your WordPress plugins directory
238+
cp -r adapters/wordpress-wharf /var/www/html/wp-content/plugins/wharf-adapter
239+
----
240+
241+
Features:
242+
243+
* Dashboard widget showing query stats (allowed/blocked), firewall mode, signature scheme
244+
* Admin bar indicator (green = protected, grey = agent unreachable)
245+
* 30-second response caching via WordPress transients
246+
* Zero security logic — all enforcement handled by yacht-agent
247+
248+
Configure the agent URL in `wp-config.php` if non-default:
249+
250+
[source,php]
251+
----
252+
define('WHARF_AGENT_URL', 'http://agent:9001');
253+
----
254+
231255
=== Others
232256

233257
* Joomla (adapter included)
@@ -236,6 +260,26 @@ echo "include_once '/opt/wharf/adapters/drupal/settings.php';" >> sites/default/
236260

237261
== Security Model
238262

263+
=== Signature Scheme Configuration
264+
265+
Wharf supports two signature modes, selectable at startup:
266+
267+
|===
268+
| Scheme | Flag | Description
269+
270+
| *ML-DSA-87 Only* (default) | `--signature-scheme ml-dsa-87-only` | FIPS 204 post-quantum only. Production-safe, peer-reviewed.
271+
| *Hybrid* | `--signature-scheme hybrid` | Ed448 + ML-DSA-87 dual signatures. Requires ed448-goldilocks audit.
272+
|===
273+
274+
Set in TOML config (`yacht-agent.toml` or `wharf-cli.toml`):
275+
276+
[source,toml]
277+
----
278+
signature_scheme = "ml-dsa-87-only" # or "hybrid"
279+
----
280+
281+
The default (`ml-dsa-87-only`) is recommended for production until the ed448-goldilocks library completes its third-party audit.
282+
239283
=== Cryptographic Primitives
240284

241285
Wharf uses a *post-quantum hybrid* signature scheme and modern cryptographic primitives:
@@ -353,6 +397,21 @@ just gen-email-records # Generate SPF/DKIM/DMARC
353397
just deploy-yacht # Deploy agent to server
354398
----
355399

400+
== Deployment
401+
402+
See link:deploy/DEPLOY.adoc[Deployment Guide] for a 5-minute quick start with Podman.
403+
404+
[source,bash]
405+
----
406+
cd deploy && sudo ./setup.sh --domain example.com
407+
sudo podman compose -f ../infra/selur-compose.yaml up -d
408+
curl http://localhost:9001/health
409+
----
410+
411+
== Security Challenge
412+
413+
**Think you can break it?** See link:docs/HACK-ME-CHALLENGE.adoc[Hack This WordPress Site] — a fully documented challenge for security researchers to test the Wharf architecture.
414+
356415
== Contributing
357416

358417
Contributions are welcome! Please ensure:

TOPOLOGY.md

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,20 +64,24 @@
6464
| - mooring protocol | `[██████████]` 100% | Init/verify/commit/abort, canonical signing |
6565
| - mooring_client | `[██████████]` 100% | HTTP client with timeouts + pooling |
6666
| - fleet/sync/config | `[██████████]` 100% | Fleet TOML, rsync, config hierarchy |
67-
| **wharf-cli** | `[█████████░]` 90% | Near-complete |
67+
| **wharf-cli** | `[█████████░]` 95% | Near-complete |
6868
| - moor operations | `[██████████]` 100% | Full mooring flow, persistent keypairs |
6969
| - fleet management | `[██████████]` 100% | Add/remove/list yachts |
7070
| - integrity audit | `[████████░░]` 80% | Local + remote SSH, API mode pending |
71-
| **yacht-agent** | `[█████████░]` 90% | Near-complete |
71+
| - signature scheme | `[██████████]` 100% | MlDsa87Only (default) / Hybrid (opt-in) |
72+
| **yacht-agent** | `[█████████░]` 95% | Near-complete |
7273
| - DB proxy | `[██████████]` 100% | MySQL + PostgreSQL wire protocol |
7374
| - mooring API | `[██████████]` 100% | Init/verify/commit with sig verification |
7475
| - integrity verify | `[██████████]` 100% | BLAKE3 manifest verification wired |
7576
| - firewall (nftables) | `[██████████]` 100% | Rule generation, validation, runtime updates |
7677
| - metrics/stats | `[██████████]` 100% | Prometheus + JSON with real counters |
7778
| - keypair persistence | `[██████████]` 100% | /etc/wharf/keys/yacht.key |
79+
| - signature scheme | `[██████████]` 100% | CLI flag --signature-scheme, config support |
7880
| **wharf-ebpf** | `[████████░░]` 80% | XDP program + loader, needs production testing |
7981
| **nebula.rs** | `[██████████]` 100% | CA, cert signing, IP allocation, revocation |
80-
| **Overall** | `[█████████░]` 90% | ed448 audit pending |
82+
| **wordpress-adapter** | `[██████████]` 100% | GPL-2.0 dashboard widget + admin bar indicator |
83+
| **deployment** | `[██████████]` 100% | setup.sh, DEPLOY.adoc, systemd unit, selur-compose |
84+
| **Overall** | `[█████████░]` 95% | ed448 audit pending, otherwise shipping |
8185

8286
## Key Dependencies
8387

0 commit comments

Comments
 (0)