Reconcile callers with actual function signatures after merging IO
migration branches. Some functions gained io.Medium params (repos.*),
others kept their original signatures (release.*, cache.*, container.*).
- Add io.Local to repos.LoadRegistry/FindRegistry/ScanDirectory callers
- Remove extra io.Local from release.ConfigExists/LoadConfig/WriteConfig callers
- Fix cache.New call (remove nil Medium arg)
- Add missing IsCPPProject to build discovery
- Add missing fields to mcp.Service struct (subsystems, logger, etc.)
- Add DefaultTCPAddr constant to mcp transport
- Fix node.go interface check (coreio.Medium, not coreio.Node)
- Fix container.linuxkit LoadState/EnsureLogsDir arg counts
- Fix vm templates to use package-level functions
- Remove unused Medium field from DaemonOptions
Co-Authored-By: Virgil <virgil@lethean.io>
Fill all 568 missing translation keys in en_GB.json (765→1357 lines):
- 97 --help description keys (collect, ci, docs, dev, php, pkg, sdk, vm)
- 471 runtime keys (labels, errors, hints, progress, status messages)
- Add common.flag.follow, common.flag.tag, common.prompt.abort
Add completeness_test.go that scans all T() calls in source code and
verifies every cmd.*/common.* key exists using ModeStrict (panics on
missing). Catches translation gaps at test time instead of showing raw
keys in the CLI.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
WP v3 ignores root .woodpecker.yml when .woodpecker/ directory exists.
Move it into the directory so both core and bugseti pipelines are discovered.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add dappco.re vanity import handler (cmd/vanity-import/) that serves
go-import meta tags, enabling `go get dappco.re/core` to resolve to
forge.lthn.ai/host-uk/core. Deployed as a Docker container behind
Traefik on snider-linux.
Add Woodpecker CI pipeline (.woodpecker/bugseti.yml) for BugSETI
cross-platform builds. Phase 1: Linux amd64 with CGO, triggered on
bugseti-v* tags and main branch pushes to cmd/bugseti/.
Closes#3, closes#9
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
AppServiceProvider runs migrate --force on first request.
Sessions and cache tables created automatically in SQLite.
Removed synthetic HTTP migration approach in favour of pure
PHP service provider — cleaner, works with Octane workers.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- add MCP marketplace client for plugin/ethics discovery\n- resolve seed-agent-developer via marketplace and sanitize context\n- apply ethics guardrails for notifications and PR metadata\n- add bugseti tests for sanitization and skill lookup\n- include mcp-go dependency for BugSETI
Implement two new storage backends for the io.Medium interface:
- pkg/io/s3: S3-backed Medium using AWS SDK v2 with interface-based
mocking for tests. Supports prefix-based namespacing via WithPrefix
option. All 18 Medium methods implemented with proper S3 semantics
(e.g. EnsureDir is no-op, IsDir checks prefix existence).
- pkg/io/sqlite: SQLite-backed Medium using modernc.org/sqlite (pure Go,
no CGo). Uses a single table schema with path, content, mode, is_dir,
and mtime columns. Supports custom table names via WithTable option.
All tests use :memory: databases.
Both packages include comprehensive test suites following the _Good/_Bad/_Ugly
naming convention with 87 tests total (36 S3, 51 SQLite).
Co-authored-by: Claude <developers@lethean.io>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>