Snider
520d0f5728
fix: tidy deps after dappco.re migration
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-04 16:25:15 +01:00
Snider
c823c46bb2
fix: migrate module paths from forge.lthn.ai to dappco.re
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-04 16:21:13 +01:00
Virgil
56bd30d3d2
fix(node): add load-or-create identity helper and TTL-aware deduplication
...
Security Scan / security (push) Has been cancelled
Test / test (push) Has been cancelled
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-03 05:10:11 +00:00
Virgil
3eeaf90d38
fix(node): enforce private key file permissions
...
Security Scan / security (push) Successful in 9s
Test / test (push) Successful in 1m24s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 09:52:42 +00:00
Virgil
d5a962996b
fix(peer): allow empty peer names
...
Security Scan / security (push) Successful in 10s
Test / test (push) Successful in 1m23s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 06:35:43 +00:00
Virgil
572970d255
fix(peer): reject empty peer names
...
Security Scan / security (push) Successful in 12s
Test / test (push) Failing after 46s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 06:27:20 +00:00
Virgil
ee623a7343
feat(node): persist peer allowlist
...
Security Scan / security (push) Successful in 9s
Test / test (push) Failing after 55s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 06:03:11 +00:00
Virgil
8d1caa3a59
fix(node): support timestamped remote log queries
...
Security Scan / security (push) Successful in 8s
Test / test (push) Successful in 3m38s
Expose a Since-aware remote log helper on the controller and plumb the filter through the worker's miner log lookup so the payload field is honoured end-to-end.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-04-01 05:39:56 +00:00
727b5fdb8d
Merge pull request '[agent/claude] Migrate module path to dappco.re/go/core/p2p. Update go.mod ...' ( #5 ) from agent/migrate-module-path-to-dappco-re-go-core into main
Security Scan / security (push) Successful in 9s
Test / test (push) Successful in 57s
2026-03-22 02:07:18 +00:00
Snider
6fd3fe1cd2
refactor(node): migrate module path to dappco.re/go/core/p2p
...
Security Scan / security (pull_request) Successful in 8s
Test / test (pull_request) Successful in 2m2s
Update go.mod module line from forge.lthn.ai/core/go-p2p to
dappco.re/go/core/p2p. Migrate core dependency paths: go-log to
dappco.re/go/core/log v0.1.0, go-io to dappco.re/go/core/io v0.2.0.
Update all .go import paths across 18 source files. Borg, Poindexter,
and Enchantrix dependencies remain on forge.lthn.ai as they have not
been migrated upstream.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-22 02:06:51 +00:00
Snider
23994a66ac
chore: sync dependencies for v0.1.7
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-17 17:54:07 +00:00
Snider
eaa919af89
chore: sync dependencies for v0.1.6
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-17 17:50:23 +00:00
3f1f9a7d60
Merge pull request '[agent/claude:opus] Fix CodeRabbit findings. Verify each against current code, f...' ( #4 ) from agent/fix-coderabbit-findings--verify-each-aga into main
Security Scan / security (push) Successful in 10s
Test / test (push) Successful in 1m11s
2026-03-17 16:24:04 +00:00
Snider
b334cb4909
fix(bundle): document why os.OpenFile is used instead of coreio in extractTarball
...
Security Scan / security (pull_request) Successful in 9s
Test / test (pull_request) Successful in 1m25s
The coreio abstraction hardcodes file permissions (0644) and has no
OpenFile equivalent. os.OpenFile is needed here to preserve tar header
mode bits — executable binaries require 0755.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-17 16:23:35 +00:00
36f0582bfc
Merge pull request '[agent/claude:opus] DX audit and fix. 1) Review CLAUDE.md — update any outdate...' ( #3 ) from agent/dx-audit-and-fix--1--review-claude-md into main
Security Scan / security (push) Successful in 7s
Test / test (push) Successful in 1m16s
2026-03-17 08:40:16 +00:00
Snider
3ea407c115
fix(node): DX audit — document conventions, wrap raw errors
...
Security Scan / security (pull_request) Successful in 8s
Test / test (pull_request) Successful in 1m14s
Add coreerr.E() and coreio.Local conventions to CLAUDE.md coding
standards. Wrap two raw os.OpenFile/io.Copy errors in extractTarball
with coreerr.E for consistent error context.
Coverage: logging 86%, node 86%, levin 87%, ueps 92%.
No fmt.Errorf or os.ReadFile/os.WriteFile in production code.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-17 08:39:36 +00:00
Snider
bc47006152
chore: sync dependencies for v0.1.5
...
Security Scan / security (push) Successful in 7s
Test / test (push) Successful in 1m56s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-16 22:18:29 +00:00
Snider
66bc0b862f
refactor: replace fmt.Errorf/os.* with go-log/go-io conventions
...
Security Scan / security (push) Successful in 9s
Test / test (push) Successful in 2m7s
Replace all fmt.Errorf and errors.New in production code with
coreerr.E("caller.Method", "message", err) from go-log. Replace
os.ReadFile/os.WriteFile/os.MkdirAll/os.Remove with coreio.Local
equivalents from go-io. Test files left untouched.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-16 20:38:55 +00:00
Snider
c2d2d5d126
chore: sync go.mod dependencies
...
Security Scan / security (push) Successful in 8s
Test / test (push) Failing after 1m16s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-15 15:28:59 +00:00
Snider
6da95f3ed4
chore: add .core/ and .idea/ to .gitignore
Security Scan / security (push) Successful in 6s
Test / test (push) Successful in 57s
2026-03-15 10:17:50 +00:00
Snider
39049106c1
docs: add CLAUDE.md project instructions
...
Security Scan / security (push) Successful in 9s
Test / test (push) Successful in 56s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-13 13:38:02 +00:00
Snider
e24df2c9fa
docs: add human-friendly documentation
...
Security Scan / security (push) Successful in 7s
Test / test (push) Successful in 55s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 13:02:39 +00:00
Snider
2561c6615d
fix: improve UEPS reader error handling and test coverage
...
Security Scan / security (push) Successful in 8s
Test / test (push) Successful in 1m26s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 08:32:59 +00:00
Snider
fe04cf93aa
fix: improve UEPS packet validation and worker error handling
...
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-09 08:30:59 +00:00
Snider
9ad643df90
chore: add .core/ build and release configs
...
Security Scan / security (push) Successful in 10s
Test / test (push) Successful in 50s
Add go-devops build system configuration for standardised
build, test, and release workflows across the Go ecosystem.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-06 18:52:37 +00:00
Snider
94000593c5
chore: remove boilerplate Taskfile
...
Security Scan / security (push) Successful in 8s
Test / test (push) Successful in 1m59s
All tasks (test, build, lint, fmt, vet, cov) are handled natively
by `core go` commands. Taskfile was redundant wrapper.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-06 14:45:49 +00:00
8f049dd29c
Merge pull request 'chore: Go 1.26 modernization' ( #2 ) from chore/go-1.26-modernization into main
Security Scan / security (push) Successful in 14s
Test / test (push) Successful in 1m11s
2026-02-24 18:01:44 +00:00
Claude
030834905e
chore: use slices.Sorted(maps.Keys()) for ordered iteration
...
Security Scan / security (pull_request) Successful in 14s
Test / test (pull_request) Successful in 2m5s
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 16:14:50 +00:00
Claude
564b1860f9
chore: use min()/max() builtins (Go 1.21+)
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 16:13:44 +00:00
Claude
2ac2974ec2
chore: extract repeated sentinel errors to package vars
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 16:13:09 +00:00
Claude
bee4e23a75
chore: fmt.Errorf(static) → errors.New
...
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 16:11:41 +00:00
Snider
c447855415
chore: add Go repo norms (badges, contributing, lint, taskfile, editorconfig)
...
Security Scan / security (push) Successful in 13s
Test / test (push) Successful in 1m19s
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-23 06:45:43 +00:00
Snider
50a6e12cf4
feat: modernise to Go 1.26 iterators and stdlib helpers
...
Security Scan / security (push) Successful in 14s
Test / test (push) Successful in 2m51s
Add Peers, AllowedPublicKeys, ConnectedPeers, PeersByScore iterators
on PeerManager. Add Handlers on Dispatcher, Connections on Transport.
Use slices.Collect, maps.Keys/Values, slices.SortFunc internally.
Co-Authored-By: Gemini <noreply@google.com>
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-23 06:07:49 +00:00
Claude
e3a8d5b2d8
ci: add Forgejo Actions test and security scan workflows
...
Security Scan / security (push) Successful in 11s
Test / test (push) Failing after 29s
Uses reusable workflows from core/go-devops for Go testing
(with race detector and coverage) and security scanning
(govulncheck, gitleaks, trivy).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 03:28:08 +00:00
Claude
df56e7569e
chore: migrate Snider deps from github.com to forge.lthn.ai
...
Update Borg, Poindexter, and Enchantrix dependency paths from
github.com/Snider/ to forge.lthn.ai/Snider/ across go.mod and imports.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 21:42:39 +00:00
Snider
ca04a88e35
refactor: apply go fix modernizers for Go 1.26
...
Automated fixes: interface{} → any, range-over-int, t.Context(),
wg.Go(), strings.SplitSeq, strings.Builder, slices.Contains,
maps helpers, min/max builtins.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-22 21:00:16 +00:00
Snider
fe6667f1b1
chore: bump go directive to 1.26.0
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-22 20:34:57 +00:00
Claude
f80166251b
feat(levin): connection with framed TCP packet I/O
...
Co-Authored-By: Charon <charon@lethean.io>
2026-02-20 19:29:41 +00:00
Claude
101ef37985
feat(levin): portable storage section encode/decode
...
Co-Authored-By: Charon <charon@lethean.io>
2026-02-20 19:27:31 +00:00
Claude
abc88f5c7a
feat(levin): portable storage varint encode/decode
...
Co-Authored-By: Charon <charon@lethean.io>
2026-02-20 19:23:28 +00:00
Claude
7089e0990c
feat(levin): header encode/decode (33-byte Levin packet framing)
...
Co-Authored-By: Charon <charon@lethean.io>
2026-02-20 19:23:24 +00:00
Snider
712fe326ff
docs: add README with quick start and docs links
...
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-20 15:11:19 +00:00
Snider
6cf51fe8b0
Merge remote-tracking branch 'origin/main'
...
# Conflicts:
# FINDINGS.md
# TODO.md
2026-02-20 15:02:56 +00:00
Snider
3dd204705a
docs: graduate TODO/FINDINGS into production documentation
...
Replace internal task tracking (TODO.md, FINDINGS.md) with structured
documentation in docs/. Trim CLAUDE.md to agent instructions only.
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-20 15:01:55 +00:00
Claude
3ce0ce0455
docs: mark Phase 5 complete in TODO.md with commit hash
...
Co-Authored-By: Charon <developers@lethean.io>
2026-02-20 11:53:57 +00:00
Claude
bf4ea4b215
test: add Phase 5 integration tests, benchmarks, and bufpool tests
...
- Full integration test: two nodes on localhost exercising identity
creation, handshake, encrypted message exchange, UEPS packet routing
via dispatcher, and graceful shutdown
- Benchmarks: identity key generation, ECDH shared secret derivation,
KD-tree peer scoring (10/100/1000 peers), message serialisation,
SMSG encrypt/decrypt, challenge-response, UEPS marshal/unmarshal
- bufpool.go tests: buffer reuse verification, oversized buffer
discard, concurrent access, MarshalJSON correctness and safety
- Coverage: node/ 72.1% -> 87.5%, ueps/ 88.5% -> 93.1%
Co-Authored-By: Charon <developers@lethean.io>
2026-02-20 11:53:26 +00:00
Snider
c437fb3246
test: Phase 5 — integration tests, benchmarks, bufpool tests
...
- Integration: two-node localhost handshake + encrypted message exchange
+ controller ping/pong + UEPS packet routing via dispatcher + threat
circuit breaker + graceful shutdown (3 test functions)
- Benchmarks: 13 benchmarks across node/ and ueps/ — identity keygen,
ECDH shared secret, message serialise, SMSG encrypt/decrypt, HMAC
challenge sign/verify, KD-tree peer scoring, UEPS marshal/unmarshal,
bufpool throughput, challenge generation
- bufpool: 9 tests — get/put round-trip, buffer reuse, large buffer
eviction, concurrent access (race-safe), buffer independence,
MarshalJSON correctness + concurrency
Co-Authored-By: Virgil <virgil@lethean.io>
2026-02-20 06:09:21 +00:00
Claude
1ded31f61b
test(ueps): cover writeTLV error paths and ReadAndVerify edge cases
...
Push coverage from 88.5% to 93.1% by testing:
- writeTLV failures at each Write call (tag, length, value)
- ReadAndVerify io.ReadAll failure after 0xFF tag
- writeTLV and ReadAndVerify now at 100% function coverage
Co-Authored-By: Charon <charon@lethean.io>
2026-02-20 03:13:42 +00:00
Claude
ac70d879a1
test(node): push coverage from 72.4% to 87.4%
...
Add comprehensive tests for previously uncovered controller, worker,
peer, bundle, transport, identity and message functions:
- Controller: StartRemoteMiner, StopRemoteMiner, GetRemoteLogs (0% -> 80%+),
ConnectToPeer success path, handleResponse edge cases, PingPeer no-identity
- Worker: handleStartMiner with config/profile/errors (9% -> 91%),
handleStopMiner success/failure (20% -> 90%), handleGetLogs with
limits/not-found (14% -> 93%), handleDeploy miner/full bundles (24% -> 89%),
HandleMessage unknown type and integration via WebSocket, handleGetStats
with miner manager and no-identity
- Peer: safeKeyPrefix all branches (40% -> 100%), validatePeerName direct,
scheduleSave timer firing (35% -> 94%), saveNow/Close dirty data,
edge cases for Record*/Update*/Select* with non-existent peers
- Bundle: extractTarball path traversal/symlink/directory/empty,
ExtractMinerBundle checksum mismatch, CreateMinerBundle errors,
ReadBundle invalid JSON, StreamBundle empty bundle
- Transport: Broadcast with sender exclusion (0% -> 83%), Start/Stop
lifecycle (0% -> 83%), CheckOrigin validation, ConnectedPeers
- Identity: DeriveSharedSecret/GetIdentity without identity, Delete no files
- Message: nil payload, ParsePayload nil, NewErrorMessage
Co-Authored-By: Charon <charon@lethean.io>
2026-02-20 02:33:54 +00:00
Claude
276445515e
docs: mark Phase 4 complete in TODO.md and FINDINGS.md
...
Update task checklist with commit a60dfdf , resolve known issues #1 and
#5 (dispatcher stub and threat score semantics), add Phase 4 design
decisions to FINDINGS.md.
Co-Authored-By: Charon <developers@lethean.io>
2026-02-20 00:24:57 +00:00