Rename Castle -> Wild PC across the repo

Repo-side rename only (Phases 1-3 of the migration plan); the live box
(~/.castle, systemd units, /data/castle, domains) is a separate cutover.

- Slug `castle` -> `wildpc`: CLI command, module names (wildpc_core/cli/api),
  dist names, entry point `wildpc = wildpc_cli.main:main`.
- Identifiers: CastleConfig/NATSClient/DirError/MDNS -> Wildpc*.
- Env/constants: CASTLE_* -> WILDPC_*; ~/.castle -> ~/.wildpc, castle.yaml ->
  wildpc.yaml, /data/castle -> /data/wildpc.
- Systemd UNIT_PREFIX castle- -> wildpc-; own programs castle-api/gateway/etc.
- Display prose "Castle" -> "Wild PC" in docs, agent-guide files, README, frontend.
- Package dirs and bootstrap yaml renamed via git mv; lockfiles regenerated;
  redundant nested uv.lock files dropped (workspace root lock is authoritative).

Tests: core 273, cli 47, wildpc-api 120 all pass. Frontend type-checks + builds.
Fixed a stale test fixture (secret_env_path kind arg) broken pre-rename.
This commit is contained in:
2026-07-18 22:55:08 -07:00
parent 25d7a522cc
commit 05b28cb584
190 changed files with 2428 additions and 3337 deletions

224
uv.lock generated
View File

@@ -4,10 +4,10 @@ requires-python = ">=3.13"
[manifest]
members = [
"castle-api",
"castle-cli",
"castle-core",
"castle-workspace",
"wildpc-api",
"wildpc-cli",
"wildpc-core",
"wildpc-workspace",
]
[[package]]
@@ -49,114 +49,6 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl", hash = "sha256:c647aa4a12dfbad9333ca4e71fe62ddc36f4e63b2d260a37a8b83d2f043ac309", size = 67548, upload-time = "2026-03-19T14:22:23.645Z" },
]
[[package]]
name = "castle-api"
version = "0.1.0"
source = { editable = "castle-api" }
dependencies = [
{ name = "castle-core" },
{ name = "fastapi" },
{ name = "httpx" },
{ name = "nats-py" },
{ name = "pydantic-settings" },
{ name = "uvicorn", extra = ["standard"] },
{ name = "zeroconf" },
]
[package.dev-dependencies]
dev = [
{ name = "httpx" },
{ name = "pytest" },
{ name = "pytest-asyncio" },
{ name = "pyyaml" },
]
[package.metadata]
requires-dist = [
{ name = "castle-core", editable = "core" },
{ name = "fastapi", specifier = ">=0.115.0" },
{ name = "httpx", specifier = ">=0.27.0" },
{ name = "nats-py", specifier = ">=2.9.0" },
{ name = "pydantic-settings", specifier = ">=2.0.0" },
{ name = "uvicorn", extras = ["standard"], specifier = ">=0.34.0" },
{ name = "zeroconf", specifier = ">=0.131.0" },
]
[package.metadata.requires-dev]
dev = [
{ name = "httpx", specifier = ">=0.27.0" },
{ name = "pytest", specifier = ">=7.0.0" },
{ name = "pytest-asyncio", specifier = ">=0.23.0" },
{ name = "pyyaml", specifier = ">=6.0.0" },
]
[[package]]
name = "castle-cli"
version = "0.1.0"
source = { editable = "cli" }
dependencies = [
{ name = "castle-core" },
{ name = "jinja2" },
{ name = "pydantic" },
{ name = "pyyaml" },
]
[package.dev-dependencies]
dev = [
{ name = "pyright" },
{ name = "pytest" },
{ name = "ruff" },
]
[package.metadata]
requires-dist = [
{ name = "castle-core", editable = "core" },
{ name = "jinja2", specifier = ">=3.1.0" },
{ name = "pydantic", specifier = ">=2.0.0" },
{ name = "pyyaml", specifier = ">=6.0.0" },
]
[package.metadata.requires-dev]
dev = [
{ name = "pyright", specifier = ">=1.1.0" },
{ name = "pytest", specifier = ">=7.0.0" },
{ name = "ruff", specifier = ">=0.11.0" },
]
[[package]]
name = "castle-core"
version = "0.1.0"
source = { editable = "core" }
dependencies = [
{ name = "jsonschema" },
{ name = "pydantic" },
{ name = "pyyaml" },
]
[package.dev-dependencies]
dev = [
{ name = "pytest" },
{ name = "pyyaml" },
]
[package.metadata]
requires-dist = [
{ name = "jsonschema", specifier = ">=4.0.0" },
{ name = "pydantic", specifier = ">=2.0.0" },
{ name = "pyyaml", specifier = ">=6.0.0" },
]
[package.metadata.requires-dev]
dev = [
{ name = "pytest", specifier = ">=7.0.0" },
{ name = "pyyaml", specifier = ">=6.0.0" },
]
[[package]]
name = "castle-workspace"
version = "0.0.0"
source = { virtual = "." }
[[package]]
name = "certifi"
version = "2026.1.4"
@@ -910,6 +802,114 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/6f/28/258ebab549c2bf3e64d2b0217b973467394a9cea8c42f70418ca2c5d0d2e/websockets-16.0-py3-none-any.whl", hash = "sha256:1637db62fad1dc833276dded54215f2c7fa46912301a24bd94d45d46a011ceec", size = 171598, upload-time = "2026-01-10T09:23:45.395Z" },
]
[[package]]
name = "wildpc-api"
version = "0.1.0"
source = { editable = "wildpc-api" }
dependencies = [
{ name = "fastapi" },
{ name = "httpx" },
{ name = "nats-py" },
{ name = "pydantic-settings" },
{ name = "uvicorn", extra = ["standard"] },
{ name = "wildpc-core" },
{ name = "zeroconf" },
]
[package.dev-dependencies]
dev = [
{ name = "httpx" },
{ name = "pytest" },
{ name = "pytest-asyncio" },
{ name = "pyyaml" },
]
[package.metadata]
requires-dist = [
{ name = "fastapi", specifier = ">=0.115.0" },
{ name = "httpx", specifier = ">=0.27.0" },
{ name = "nats-py", specifier = ">=2.9.0" },
{ name = "pydantic-settings", specifier = ">=2.0.0" },
{ name = "uvicorn", extras = ["standard"], specifier = ">=0.34.0" },
{ name = "wildpc-core", editable = "core" },
{ name = "zeroconf", specifier = ">=0.131.0" },
]
[package.metadata.requires-dev]
dev = [
{ name = "httpx", specifier = ">=0.27.0" },
{ name = "pytest", specifier = ">=7.0.0" },
{ name = "pytest-asyncio", specifier = ">=0.23.0" },
{ name = "pyyaml", specifier = ">=6.0.0" },
]
[[package]]
name = "wildpc-cli"
version = "0.1.0"
source = { editable = "cli" }
dependencies = [
{ name = "jinja2" },
{ name = "pydantic" },
{ name = "pyyaml" },
{ name = "wildpc-core" },
]
[package.dev-dependencies]
dev = [
{ name = "pyright" },
{ name = "pytest" },
{ name = "ruff" },
]
[package.metadata]
requires-dist = [
{ name = "jinja2", specifier = ">=3.1.0" },
{ name = "pydantic", specifier = ">=2.0.0" },
{ name = "pyyaml", specifier = ">=6.0.0" },
{ name = "wildpc-core", editable = "core" },
]
[package.metadata.requires-dev]
dev = [
{ name = "pyright", specifier = ">=1.1.0" },
{ name = "pytest", specifier = ">=7.0.0" },
{ name = "ruff", specifier = ">=0.11.0" },
]
[[package]]
name = "wildpc-core"
version = "0.1.0"
source = { editable = "core" }
dependencies = [
{ name = "jsonschema" },
{ name = "pydantic" },
{ name = "pyyaml" },
]
[package.dev-dependencies]
dev = [
{ name = "pytest" },
{ name = "pyyaml" },
]
[package.metadata]
requires-dist = [
{ name = "jsonschema", specifier = ">=4.0.0" },
{ name = "pydantic", specifier = ">=2.0.0" },
{ name = "pyyaml", specifier = ">=6.0.0" },
]
[package.metadata.requires-dev]
dev = [
{ name = "pytest", specifier = ">=7.0.0" },
{ name = "pyyaml", specifier = ">=6.0.0" },
]
[[package]]
name = "wildpc-workspace"
version = "0.0.0"
source = { virtual = "." }
[[package]]
name = "zeroconf"
version = "0.148.0"