Commit graph

667 commits

Author SHA1 Message Date
Claude
09f6f12f08
ax(node): fix TestProtocol_ValidateResponse_Ugly comment and assertion
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
ValidateResponse wraps type-mismatch in *ProtocolError (correct behaviour).
The docstring example showed the wrong negation and the assertion fired on
every run. Both the comment (AX §2 — comments as accurate usage examples)
and the guard were inverted; corrected to !IsProtocolError.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:56:38 +01:00
Claude
1e5af44364
ax(mining): replace prose comments with usage examples in service.go
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Three middleware helper functions had comments that restated the function
name in prose (AX principle 2 violation). Replaced with concrete call-site
examples showing how each middleware is installed and what it does.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:55:07 +01:00
Claude
aa69d9c933
ax(node): add Good and Ugly test variants for GetChainInfo, DiscoverPools, DiscoverGateways
AX principle 10 requires all three test categories (Good, Bad, Ugly).
lethean_test.go only had Bad variants for the three discovery functions;
added Good (happy-path via httptest.Server) and Ugly (edge-case filtering
and malformed JSON) for each, using a local test server to avoid live daemon dependency.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:54:59 +01:00
Claude
0e5956f57d
ax(node): replace path with filepath for filesystem path joining
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
The "path" package uses forward-slash separators and is intended for
URL paths; filesystem paths require "path/filepath" for OS-correct
behaviour. Fixes worker.go handleDeploy to use filepath.Join when
constructing the miners installation directory.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:53:35 +01:00
Claude
670401c750
ax(mining): replace prose comments with usage examples on middleware funcs
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
securityHeadersMiddleware and contentTypeValidationMiddleware had comments
that restated the signature in prose — AX Principle 2 requires usage
examples showing how the function is called, not descriptions of what it does.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:52:31 +01:00
Claude
b4cef1305e
ax(node): expand nm abbreviation to nodeManager in usage comments
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
AX Principle 1: predictable names over short names. The `nm` shorthand
in seven comment examples was inconsistent with the full `nodeManager`
name used in actual call-site code and the `manager` receiver name
throughout the file.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:51:54 +01:00
Claude
f78be454e4
ax(mining): replace prose DTO comments with usage examples in node_service.go
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Eight struct type comments restated what the name already said (AX Principle 2
violation). Replaced all with concrete HTTP request/response examples showing
actual field values, so agents can learn call shape from context alone.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:50:55 +01:00
Claude
1b021a073b
ax(node): rename ack to acknowledgement in Worker message handlers
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
AX-1: predictable names over short names. The variable `ack` is an
abbreviation for `acknowledgement` — renamed in all six callsites
within handleStartMiner, handleStopMiner, and handleDeploy so the
name is self-describing without a comment.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:50:13 +01:00
Claude
d798248ed8
ax(mining): replace prose comment with usage example on logWithRequestID
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
AX Principle 2: comments show HOW with real values, not WHAT the
function name already says. Prose description deleted; two concrete
call-site examples added.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:49:16 +01:00
Claude
ea9eb19e5b
ax(node): replace prose constant comments with usage examples in message.go
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
AX Principle 2: comments show usage, not prose descriptions. The
ProtocolVersion/MinProtocolVersion block comment and SupportedProtocolVersions
doc comment restated what the names already say; replaced with concrete
call-site examples.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:48:39 +01:00
Claude
871dc781f1
ax(mining): replace prose GetType comment with usage example
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:48:10 +01:00
Claude
d8dffa398b
ax(mining): replace prose field comments with usage examples in ContainerConfig
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
ContainerConfig had five "X is the Y" prose field comments that restated
the type signature (AX §2 violation). Container had three section-divider
labels ("Core services", "Database store", "Initialization state") that
describe what is self-evident from the field names. Both patterns are
explicitly banned — delete prose, show usage.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:47:16 +01:00
Claude
07ba7b7e62
ax(node): replace banned fmt import in peer.go with ProtocolError
Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:47:06 +01:00
Claude
485411912a
ax(node): replace banned fmt import in worker.go with ProtocolError
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
All fmt.Errorf calls replaced with &ProtocolError{Code, Message} using
the package-native error type, removing the banned fmt import entirely.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:44:42 +01:00
Claude
82781c6f95
ax(mining): remove prose comment that restates constant name
LetheanTestnetPool is self-documenting; the prose description
"is the default pool endpoint for testnet mining" adds zero
information over the name. Per AX principle 2, deleted and kept
only the usage example.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:44:39 +01:00
Claude
b4c73147fe
ax(node): replace direct encoding/json with package-level UnmarshalJSON wrapper
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
worker.go imported encoding/json directly and called json.Unmarshal at two
call sites. bufpool.go already provided MarshalJSON as the package wrapper;
add matching UnmarshalJSON and route both worker.go call sites through it,
removing the encoding/json import from worker.go.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:42:45 +01:00
Claude
3c9ff897f2
ax(mining): replace prose comments with usage examples on TTMiner methods
GetLatestVersion, Install, and Uninstall had prose comments restating
their signatures. Replaced with concrete call-site examples per AX
Principle 2 (comments as usage examples, not descriptions).

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:42:43 +01:00
Claude
695a62b61a
ax(node): remove banned fmt import from controller.go
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Replace all fmt.Errorf calls with typed *ProtocolError values using the
native node error type — consistent with how protocol.go was cleaned up.
Error wrapping cases (failed to create message) now surface the original
error directly, preserving the call chain without fmt.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:41:30 +01:00
Claude
dd9f5cfcaf
ax(mining): replace banned errors.New with ErrUnsupportedMiner in xmrig.go
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
The `errors` package is banned; all errors must use the package's own
error constructors. Replace `errors.New("unsupported operating system")`
with `ErrUnsupportedMiner(runtime.GOOS)` which also surfaces the actual
OS name in the error message.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:41:15 +01:00
Claude
f71d551cdd
ax(mining): replace banned errors import in ttminer_start.go with project-native constructors
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Replace errors.New() calls with ErrMinerExists() and ErrInvalidConfig() from the
project's own errors.go, removing the banned errors import (AX banned imports rule).

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:39:53 +01:00
Claude
7d5074bf3b
ax(mining): replace prose comment on requestTimeoutMiddleware with usage example
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
AX Principle 2: comments show HOW with real values, not WHAT the function does.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:38:52 +01:00
Claude
68fbe70c54
ax(node): rename ack to acknowledgement in controller (AX Principle 1)
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:38:18 +01:00
Claude
abd4335935
ax(mining): replace prose comment with usage example on respondWithMiningError
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
AX Principle 2 — comments show HOW with real values, not WHAT the function does.
"sends a structured error response" restates the signature; replaced with
two concrete call-site examples showing realistic arguments.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:37:20 +01:00
Claude
acef50ad62
ax(node): rename tt loop variable to testCase in lethean_test.go
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
AX Principle #1 — predictable names over short names. The `tt` loop variable
is a two-letter abbreviation with no defined exception in the AX naming rules
(only `i`, `_`, `t`, `c` are acceptable short names). Renamed to `testCase`
throughout TestParseComment_{Good,Bad,Ugly}.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:36:41 +01:00
Claude
00025dd324
ax(mining): remove prose description comments from circuit_breaker_test
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
AX Principle 2: comments must show usage examples, not restate what the
function name already conveys. Deleted 13 redundant "verifies that..."
lines; kept only the concrete usage-example lines below each.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:35:50 +01:00
Claude
676d7b13a9
ax(node): remove prose description lines from PeerRegistry method comments
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
AX Principle 2: comments show usage examples, not prose descriptions.
Five methods (AddPeer, UpdatePeer, RemovePeer, UpdateMetrics, UpdateScore)
had a redundant "Note: Persistence is debounced..." prose line appended
after the usage example. The usage example already communicates intent;
the prose line restated implementation detail without adding value.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:33:20 +01:00
Claude
9933c8e5aa
ax(mining): replace prose comments with usage examples in service.go
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
AX Principle 2 — comments show HOW with real values, not restate what
the type signature already says. Three prose-style doc comments on
DefaultRequestTimeout, HealthResponse, and StdinInput replaced with
concrete call-site examples.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:33:00 +01:00
Claude
b0c1d0e05c
ax(mining): replace banned encoding/json import in lethean.go with project-native MarshalJSON
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Use the package-local MarshalJSON helper (bufpool.go) instead of calling
json.Marshal directly, eliminating the banned encoding/json import per AX conventions.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:31:42 +01:00
Claude
81f4fc9d96
ax(node): replace prose constant comments with usage examples
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Score constants had comments restating the name in prose
("Increment for successful interaction") rather than showing
how they are used. AX Principle 2: comments are usage examples,
not descriptions.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:31:11 +01:00
Claude
10dd88281b
ax(mining): remove banned fmt import from simulated_miner.go
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Replace fmt.Errorf with typed MiningError constructors (ErrMinerExists,
ErrMinerNotRunning) and fmt.Sprintf log lines with string concatenation
using strconv, eliminating the banned fmt import per AX conventions.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:30:03 +01:00
Claude
152952e101
ax(node): rename allowedPublicKeyMutex to allowedPublicKeysMutex
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Mutex name was singular (allowedPublicKeyMutex) while the field it
protects is plural (allowedPublicKeys). AX Principle 1 requires
predictable names — the mutex name must mirror the field it guards.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:29:43 +01:00
Claude
4d1695a50c
ax(mining): replace prose comment with usage example on containsShellChars
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
AX principle 2: comments must show usage with concrete values, not restate
the function name in prose. The leading description line was deleted;
the two call-site examples that follow are sufficient.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:27:46 +01:00
Claude
e06f8de589
ax(node): rename buf to buffer in bundle_test for predictable naming
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
AX Principle 1 — predictable names over short names. `buf` is an
abbreviation that requires a comment to understand; `buffer` is
self-describing.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:26:37 +01:00
Claude
8bfb425fda
ax(mining): replace prose comment with usage example on isRetryableError
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
AX principle 2: comments show HOW with real values, not WHAT the
function does — the signature already says that.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:25:43 +01:00
Claude
8fe169aeb6
ax(node): replace prose comment with usage example on bufferPool
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
RFC-025 Principle 2: comments must show HOW with real values, not
restate what the variable does in prose.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:24:39 +01:00
Claude
1518ddd0d8
ax(mining): replace banned strings import in manager.go with local helpers
Removes the banned "strings" import from manager.go by introducing two
package-local helpers — equalFold and hasPrefix — backed by bytes.EqualFold
and slice comparison respectively.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:24:28 +01:00
Claude
58701498ea
ax(node): rename w/r HTTP handler params to responseWriter/request
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Single-letter parameter names w and r violate AX Principle 1
(predictable names over short names). Only i, _, t, and c are
permitted as single-letter names per the AX spec.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:23:25 +01:00
Claude
62d27a8da3
ax(mining): replace prose comments with usage examples in xmrig.go
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
GetLatestVersion, Install, and Uninstall had prose comments restating
their signatures; replaced with concrete call-site examples per AX
principle 2 (comments as usage examples, not descriptions).

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:22:20 +01:00
Claude
e263fe7f1e
ax(node): rename loop variable p to peer in peer_test.go
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
AX Principle 1 — Predictable names over short names.
The single-letter `p` in `for _, p := range peers` is not listed
in the allowed exceptions (only `i`, `_`, `t`, `c` are permitted).
Rename to `peer` for semantic clarity.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:21:34 +01:00
Claude
cdf9525afd
ax(mining): replace prose comments with usage examples in service.go
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
AX Principle 2: comments must show a concrete call, not describe behaviour.
Three functions had prose descriptions ("controls whether...", "filters
potentially sensitive...", "sends a structured error response") — replaced
with usage-example comments showing realistic call sites.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:20:40 +01:00
Claude
39ebb63eac
ax(node): replace prose comment with usage example on peerNamePattern
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
AX Principle 2: comments show HOW with real values, not WHAT the code does.
The old comment restated the variable name; the new comment shows concrete
validatePeerName calls that demonstrate valid and invalid inputs.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:19:45 +01:00
Claude
7a5c54c36f
ax(mining): rename abbreviated mu field to mutex in LatencyHistogram
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
AX principle 1: predictable names over short names. The mu field
abbreviation requires the reader to infer it means sync.Mutex.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:19:13 +01:00
Claude
956f8de643
ax(node): replace prose comment with usage example in NewController
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
AX-2: comments must show concrete usage, not restate what the code does.
The "Register message handler for responses" prose comment was replaced
with a usage-example comment that shows the actual call pattern.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:18:23 +01:00
Claude
a96af6adb2
ax(mining): replace banned fmt.Errorf with project-native error constructors in profile_manager
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Removes the banned `fmt` import from profile_manager.go. All four
fmt.Errorf calls are replaced with ErrInternal/ErrProfileNotFound,
consistent with the error pattern used throughout the rest of the
mining package.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:17:33 +01:00
Claude
cdeb66b82d
ax(node): rename pe to protocolError in GetProtocolErrorCode
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
AX Principle 1: pe is an abbreviation requiring a comment to explain.
Renamed to protocolError throughout, including the usage example comment.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:16:44 +01:00
Claude
4638a34ffa
ax(mining): rename minLen to minimumLength in compareVersions
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
AX principle 1 — predictable names over short names.
`minLen` requires inference; `minimumLength` is self-describing.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:16:07 +01:00
Claude
d5d60d39e1
ax(node): rename ChainInfo.Aliases to AliasCount for type clarity
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
The field Aliases int was ambiguous — agents and readers expect Aliases
to be a slice, not a count. AliasCount makes the int type self-evident
without requiring a comment (AX Principle 1: predictable names).

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:15:07 +01:00
Claude
8e1dffe649
ax(mining): replace prose comment with usage example on GetStats
AX Principle 2: comments must show HOW with real values, not restate
the type signature. "GetStats retrieves the performance statistics from
the running XMRig miner." added zero information beyond the name.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:14:50 +01:00
Claude
2cccc32375
ax(mining): fix test naming and comment style in dual_mining_test.go
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Rename flat test functions to TestFilename_Function_{Good,Bad,Ugly} pattern
and replace prose description comments with usage-example comments per AX
principles 1 and 2.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:13:48 +01:00
Claude
53654cffbc
ax(node): replace prose type comments with usage examples in bundle.go
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
BundleType, Bundle, and BundleManifest had comments restating what the
type signature already says (AX Principle 2 violation). Replaced with
concrete usage examples showing how each type is constructed and used.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 16:13:16 +01:00