Commit graph

79 commits

Author SHA1 Message Date
Virgil
0893b0ef9e AX: clarify mining cache names and examples
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
2026-04-04 06:14:19 +00:00
Virgil
262987c10a AX cleanup for mining service names
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
2026-04-04 05:53:48 +00:00
Virgil
4e8283c84f Apply AX naming and comment cleanup
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
2026-04-04 05:36:07 +00:00
Virgil
68c826a3d8 Align mining AX naming and comments
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
2026-04-04 05:33:08 +00:00
Virgil
7c214f0c8b AX: make mining helpers more descriptive
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
2026-04-04 05:21:43 +00:00
Virgil
9102b25f55 Apply AX naming and comment cleanup
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
2026-04-04 04:16:13 +00:00
Virgil
e3986fb064 Refine AX naming and usage comments
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
2026-04-04 04:00:30 +00:00
Claude
95c602104f
ax(batch): rename abbreviated locals in source files
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
ns→nodeService, c→xmrigConfig, m→manager, k→minerKey, s→stringValue,
l→linesParam, ip→clientAddress, r→character, mgr→manager across
pkg/mining and cmd/mining source files.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 18:36:02 +01:00
Claude
6a8efa4776
ax(batch): expand remaining abbreviated variables in loop bodies and type assertions
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Renames: m->minerName (range over miners list), rm->xmrigInstance/ttInstance
(type assertion variables), dbPoints->databasePoints (database query result).

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 18:31:42 +01:00
Claude
0d1b20e177
ax(batch): replace prose comments with usage examples across all packages
Applies AX principle 2 (Comments as Usage Examples) — removes prose
descriptions that restate the function signature ("returns", "retrieves",
"creates", "wraps", etc.) and keeps or replaces with concrete usage
examples showing real calls with realistic values.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 18:28:16 +01:00
Claude
b12db10680
ax(batch): expand abbreviated parameter and local variable names across all packages
Applies AX principle 1 (Predictable Names Over Short Names) to function
signatures and local variables: s->input/raw, v->target/value, d->duration,
a,b->left,right, w->writer, r->reader, l->logger, p->part/databasePoint,
fn parameter names left as-is where they are callback conventions.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 18:27:21 +01:00
Claude
43e4b447ac
ax(batch): remove banned import references from comment examples
Replace all fmt.Println, fmt.Sprintf, log.Printf, log.Println, and
json.Unmarshal references in doc comments with logging.Info/logging.Warn
or direct value access patterns. Comments are examples that agents
learn from -- they must not demonstrate banned imports.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 18:07:35 +01:00
Claude
f4c7a91603
ax(mining): replace banned strings import in node_service with package-local containsStr
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Adds containsStr alongside existing equalFold/hasPrefix string helpers in manager.go,
then removes the banned "strings" import from node_service.go.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 17:27:29 +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
dbbc5c7d46
ax(mining): rename mu and eventHubMu to mutex and eventHubMutex in Manager
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. mu requires
knowledge of the convention to understand; mutex is self-describing.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 14:27:23 +01:00
Claude
fac2563aa2
ax(mining): replace prose comment with usage example on ShutdownTimeout
AX Principle 2 — comments as usage examples, not prose descriptions.
The previous comment restated what the constant name already communicates.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 14:05:00 +01:00
Claude
8e63d4d0bd
ax(mining): replace prose comments with usage examples in manager.go
Four internal methods had comments that restated prose descriptions
(e.g. "saves the autostart and last-used config for a miner") instead
of showing a concrete call site — violating AX Principle 2.

Replaced with usage-example comments showing realistic invocations with
argument values.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 13:00:23 +01:00
Claude
4f3141beb8
ax(mining): replace prose comment with usage example on autostartMiners
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
AX Principle 2: comments must show HOW with real values, not restate
what the function name already says.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 12:22:53 +01:00
Claude
15f45b9fbc
ax(mining): replace prose comments with usage examples in manager.go
initDatabase and startDBCleanup had comments that restated the function
name in prose — violating AX Principle 2 (comments as usage examples).
Replaced with concrete call-site examples showing caller context.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 12:11:56 +01:00
Claude
6f235183ff
ax(mining): replace prose comment with usage example on emitEvent
Some checks are pending
Test / test (push) Waiting to run
Security Scan / security (push) Successful in 30s
AX Principle 2: comments show HOW with real values, not WHAT in prose.
The emitEvent comment restated the function name rather than demonstrating
a concrete call.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 11:20:04 +01:00
Claude
14aab01af9
ax(mining): replace prose comment with usage example on syncMinersConfig
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
AX principle #2: comments that restate the function name add zero information.
Replace with a concrete call example showing what the method does at runtime.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 11:11:07 +01:00
Claude
58e5968b5f
ax(mining): replace prose comment on ManagerInterface with usage example
AX Principle 2 — comments show HOW with real values, not restate what the type name already says.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 11:06:14 +01:00
Claude
f15498756d
ax(mining): fix banned import in ListAvailableMiners usage example
Some checks failed
Security Scan / security (push) Successful in 44s
Test / test (push) Has been cancelled
Comment example used log.Println (banned import) as a usage pattern.
Replaced with logging.Info to align with AX Principle 2 (comments
as valid usage examples that match ecosystem conventions).

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 11:03:57 +01:00
Claude
4ff92dec1a
ax(mining): expand abbreviated db variable names to full predictable names
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
dbCtx→databaseContext, dbCancel→databaseCancel, dbPoint→databasePoint
in collectSingleMinerStats per AX principle 1 (predictable names over short names).

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 10:58:14 +01:00
Claude
2a43c0a39f
ax(mining): replace prose comment on UninstallMiner with usage examples
AX Principle 2: comments show HOW with real values, not WHAT the function does.
"stops, uninstalls, and removes" restates the signature — replaced with
concrete call examples showing both miner types.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 10:41:49 +01:00
Claude
0e31a6e99a
ax(mining): replace Manager prose comment with usage example
Some checks failed
Security Scan / security (push) Successful in 33s
Test / test (push) Has been cancelled
AX Principle 2: comments must show HOW with real values, not restate
what the type signature already says. Replaced the prose description
on Manager with a concrete call sequence.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 10:39:59 +01:00
Claude
5db57c38f0
ax(mining): rename mi to entry in collectMinerStats range loop (AX-1)
Some checks failed
Security Scan / security (push) Successful in 32s
Test / test (push) Has been cancelled
Short variable `mi` is ambiguous — `entry` matches the `minerInfo` struct
semantics and requires no abbreviation mapping.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 10:17:43 +01:00
Claude
f70e0b9f53
ax(mining): replace signature-restating comments with usage examples
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Five comments in Manager were restating what the function signature
already showed ("returns X for Y"). Replace with concrete call
examples per AX principle 2 (Comments as Usage Examples).

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 10:09:01 +01:00
Claude
3f93aa4a47
ax(mining): replace prose comment on ListAvailableMiners with usage example
AX Principle 2 — comments must show HOW with real values, not restate
what the type signature already says.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 10:01:59 +01:00
Claude
822ac004ea
ax(mining): remove banned fmt import from manager.go
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
Replace all fmt.Sprintf and fmt.Errorf calls with string concatenation
and the existing MiningError constructors (ErrMinerNotFound, ErrMinerExists,
ErrInvalidConfig, ErrInternal, ErrDatabaseError). Adds strconv for integer
formatting. No fmt import remains in the file.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 09:34:11 +01:00
Claude
a862480862
ax(mining): replace prose comment on Stop with usage example
AX principle 2: comments show HOW with concrete usage, not WHAT
the signature already says. The old two-line prose comment restated
the function name verbatim; replaced with a defer call example.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 09:29:25 +01:00
Claude
d6c684df4c
ax(mining): replace prose comment on StopMiner 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
signature already says. Prose restating the method signature deleted;
concrete call examples with realistic miner names substituted.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 09:24:36 +01:00
Claude
865a690853
ax(mining): replace prose comment with usage example on RegisterMiner
AX Principle 2 — comments must show HOW with real values, not describe
WHAT the signature already states.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 09:23:12 +01:00
Claude
0e6290f703
ax(mining): replace prose comment on SetEventHub with usage example
Some checks are pending
Test / test (push) Waiting to run
Security Scan / security (push) Successful in 31s
Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 09:19:01 +01:00
Claude
649f57e91e
ax(mining): replace prose comment on StartMiner with usage example
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
AX Principle 2 — comments must show HOW with real values, not restate
what the signature already says.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 09:15:55 +01:00
Claude
b4dc3e6948
ax(mining): replace prose comment on NewManagerForSimulation with usage example
AX Principle 2: comments must show HOW with real values, not restate what
the type signature already says. Replaced description prose with a concrete
call pattern showing ctx + Config.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 09:13:26 +01:00
Claude
301a5428b0
ax(mining): replace prose comment with usage example on findAvailablePort
AX Principle 2 — comments must show HOW with real values, not restate
what the function name already says.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 09:11:24 +01:00
Claude
cc829d1bc8
ax(mining): rename wg to waitGroup in collectMinerStats
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. `wg` requires
domain knowledge to decode; `waitGroup` is self-documenting.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 09:06:48 +01:00
Claude
7d7dfce6ea
ax(mining): replace prose comment with usage example on instanceNameRegex
AX Principle 2: comments show HOW with real values, not WHAT the name
already says. The old comment restated the variable name; the new comment
shows a concrete ReplaceAllString call with input and expected output.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 09:01:20 +01:00
Claude
2b2b89f158
ax(mining): replace NewManager prose comment 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
signature already says. Replace "creates a new miner manager" prose
with a concrete call-site example showing manager lifecycle.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 08:56:15 +01:00
Claude
0c7546650a
ax(mining): replace prose comment with usage example on ListMiners
AX Principle 2 — comments show HOW with real values, not WHAT
the signature already says.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 08:54:33 +01:00
Claude
6c0534a325
ax(mining): rename l to listener in findAvailablePort
Single-letter variable `l` violates AX Principle 1 (predictable names
over short names) — renamed to `listener` to match the semantic intent.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 08:50:23 +01:00
Claude
11a3af4b1b
ax(mining): replace prose comment with usage example on GetMiner
RFC-CORE-008 Principle 2 — comments must show HOW with real values,
not restate what the type signature already says.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 08:48:13 +01:00
Claude
7232010b1f
ax(mining): rename cfg to configuration in UpdateMinersConfig closures
Closure parameters in UninstallMiner and updateMinerConfig used the
abbreviated name cfg instead of configuration, violating AX Principle 1
(predictable names over short names).

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 08:20:07 +01:00
Claude
daf3c2fff9
ax(mining): rename cfg to minersConfiguration in manager.go (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 07:57:18 +01:00
Claude
5a6da79311
ax(mining): rename minerCfg loop variable to autostartEntry
Some checks are pending
Security Scan / security (push) Waiting to run
Test / test (push) Waiting to run
`minerCfg` is an abbreviated name for `MinerAutostartConfig` loop
variables. Renamed to `autostartEntry` across three range loops in
manager.go for AX Principle 1 compliance (predictable names over
short names).

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 07:35:52 +01:00
Claude
c0eba4f12a
ax(mining): rename dbCfg to databaseConfiguration
AX Principle 1: predictable names over short names.
`dbCfg` abbreviates both the `db` prefix and `Cfg` suffix — both banned
by the AX naming rules. `databaseConfiguration` is unambiguous.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 07:29:12 +01:00
Claude
273169264e
ax(mining): rename db-prefixed fields to full databaseEnabled/databaseRetention
AX Principle 1 — predictable names over short names. The Manager struct
fields dbEnabled and dbRetention used the db abbreviation which requires
context to decode. Renamed to databaseEnabled and databaseRetention across
manager.go and the single service.go callsite. No behaviour change.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 07:26:59 +01:00
Claude
140f038f37
chore: migrate module path from github.com to forge.lthn.ai
Some checks failed
E2E Tests / E2E Tests (push) Failing after 1m23s
Tests / Go Tests (push) Failing after 39s
Desktop Release / Build linux (push) Failing after 46s
Release / Test (push) Failing after 2s
Tests / C++ Tests (push) Failing after 1m12s
Release / Release (push) Has been cancelled
Desktop Release / Build darwin (push) Has been cancelled
Desktop Release / Build windows (push) Has been cancelled
Desktop Release / Create Release (push) Has been cancelled
Move module declaration and all internal imports from
github.com/Snider/Mining to forge.lthn.ai/Snider/Mining. Also updates
Borg, Enchantrix, and Poindexter dependency paths to forge.lthn.ai.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 21:39:01 +00:00
snider
87b426480b fix: Implement 6 quick wins from 109-finding code review
CONC-HIGH-1: Add mutex to wsClient.miners map to prevent race condition
P2P-CRIT-2: Add MaxMessageSize config (1MB default) to prevent memory exhaustion
P2P-CRIT-3: Track pending connections during handshake to enforce connection limits
RESIL-HIGH-1: Add recover() to 4 background goroutines to prevent service crashes
TEST-CRIT-1: Create auth_test.go with 16 tests covering Basic/Digest auth
RESIL-HIGH-3: Implement circuit breaker for GitHub API with caching fallback

Also fixed: NonceExpiry validation in auth.go to prevent panic on zero interval

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-31 15:03:46 +00:00