No description
  • Python 97.3%
  • Shell 1.3%
  • Jinja 0.8%
  • HCL 0.5%
  • Just 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-28 14:19:48 -05:00
.github Preserve independent Connect secret while rebinding cleanup policy 2026-10-27 08:16:29 +00:00
config Support exact archive retirement with permanent frozen-fixture fencing 2026-10-19 04:22:58 +00:00
docs Preserve independent Connect secret while rebinding cleanup policy 2026-10-27 08:16:29 +00:00
infra/opentofu fix(convergence): qualify current keys and isolate backup processes before installation 2026-09-13 00:34:11 +00:00
packages Separate archive parsing limits from provider proof waits (#250) 2026-10-18 22:26:16 +00:00
platform M3.7: add the staged two-zone production edge (#61) 2026-08-31 03:37:36 -05:00
schemas/static-publication/v1alpha1 Fix executor rejection replay during host restore (#177) 2026-09-26 12:15:33 +00:00
scripts Accept SDK URL encoding in custody inventory guard (#260) 2026-10-28 14:19:48 -05:00
services deps: bump the python-dependencies group with 4 updates 2026-09-02 19:44:47 -05:00
tests Accept SDK URL encoding in custody inventory guard (#260) 2026-10-28 14:19:48 -05:00
tools Separate archive parsing limits from provider proof waits (#250) 2026-10-18 22:26:16 +00:00
.ansible-lint Establish Milestone 0 repository foundation (#1) 2026-08-20 15:08:38 -05:00
.editorconfig Establish Milestone 0 repository foundation (#1) 2026-08-20 15:08:38 -05:00
.gitattributes Establish Milestone 0 repository foundation (#1) 2026-08-20 15:08:38 -05:00
.gitignore feat: add Milestone 3 platform qualification gate (#11) 2026-08-24 17:56:26 -05:00
.gitleaks.toml Establish Milestone 0 repository foundation (#1) 2026-08-20 15:08:38 -05:00
.lychee.toml Simplify M3.11 credential lifecycle with durable lease inventory (#237) 2026-10-10 18:48:36 -05:00
.markdownlint-cli2.yaml feat: add Milestone 1 DigitalOcean foundation (#2) 2026-08-20 19:38:18 -05:00
.pre-commit-config.yaml Establish Milestone 0 repository foundation (#1) 2026-08-20 15:08:38 -05:00
.python-version Establish Milestone 0 repository foundation (#1) 2026-08-20 15:08:38 -05:00
.tflint.hcl feat: add Milestone 1 DigitalOcean foundation (#2) 2026-08-20 19:38:18 -05:00
CODE_OF_CONDUCT.md Establish Milestone 0 repository foundation (#1) 2026-08-20 15:08:38 -05:00
CONTRIBUTING.md Simplify M3.11 credential lifecycle with durable lease inventory (#237) 2026-10-10 18:48:36 -05:00
justfile Simplify M3.11 credential lifecycle with durable lease inventory (#237) 2026-10-10 18:48:36 -05:00
LICENSE Establish Milestone 0 repository foundation (#1) 2026-08-20 15:08:38 -05:00
mise.lock Run M3.11 qualification unattended with independent credential cleanup (#199) 2026-10-04 04:39:02 -05:00
mise.toml Run M3.11 qualification unattended with independent credential cleanup (#199) 2026-10-04 04:39:02 -05:00
pyproject.toml Accept SDK URL encoding in custody inventory guard (#260) 2026-10-28 14:19:48 -05:00
README.md docs: plan Milestone 3 implementation (#10) 2026-08-23 23:04:34 -05:00
renovate.json ci: enable CodeQL and bounded Dependabot updates (#73) 2026-09-02 01:43:46 -05:00
SECURITY.md Establish Milestone 0 repository foundation (#1) 2026-08-20 15:08:38 -05:00
uv.lock Budget unattended cleanup requests and cache immutable journal reads 2026-10-04 11:23:38 +00:00

Lower Duck Pond Hosting

Lower Duck Pond Hosting is a free, community-scale web host for participants in the r/HaveWeMet role-playing community. It is intended for small, handmade sites belonging to fictional residents, businesses, clubs, campaigns, and civic departments.

The project is currently pre-alpha. Milestones 0–2 are complete: the repository and DigitalOcean foundation are reproducible, and the production Ubuntu host passes idempotence, HTTPS, backup, restore, and reboot acceptance checks. Milestone 3, the static tenant MVP, is the current implementation target.

Start here

  1. Install mise 2026.7.14 or newer.
  2. Install the pinned project tools with mise install.
  3. Prepare the locked development environment with just setup.
  4. Run the complete validation suite with just check.

just check runs the same checks required by continuous integration. Some pre-commit hygiene hooks apply safe whitespace or end-of-file fixes before reporting failure; rerun the command after reviewing those changes.

Repository map

  • docs/architecture.md describes the product vision, security boundaries, and scaling path.
  • docs/roadmap.md defines the implementation milestones and exit criteria.
  • docs/adr/ records accepted architecture decisions.
  • docs/threat-model/ records attacker assumptions, security invariants, and required security evidence.
  • services/control-plane/ contains the public FastAPI application boundary.
  • services/provisioner/ contains the separately executable provisioner boundary.
  • infra/opentofu/ and config/ansible/ contain infrastructure and host configuration foundations.
  • docs/operations/infrastructure.md describes state bootstrap, protected plans, applies, and required secrets.
  • docs/operations/host-configuration.md describes protected host convergence, backup recovery checks, and runtime credential boundaries.

Trusted platform services use lowerduckpond.net; untrusted tenant aliases and immutable content origins use lowerduckpond.com. A future platform-owned reference site will live in a separate repository and use the same ordinary tenant interface as resident sites.

Contributing and security

See CONTRIBUTING.md before proposing a change. Please report security problems privately according to SECURITY.md; do not put credentials, tenant information, or vulnerability details in a public issue.

Original project code is licensed under the Apache License 2.0.