AX Principle 1 — predictable names over short names.
The field `ttl` requires context to decode; `timeToLive` is
self-describing without a comment.
Co-Authored-By: Charon <charon@lethean.io>
AX Principle 2: comments that restate the type signature add zero
information. Replaced with a concrete call site showing how to
obtain and inspect the struct.
Co-Authored-By: Charon <charon@lethean.io>
LetheanDefaults comment restated what the constant block name already says (AX
Principle 2). Replaced with concrete call examples showing GetChainInfo and
DiscoverPools usage against both daemon endpoints.
Co-Authored-By: Charon <charon@lethean.io>
AX principle 2 — comments must show HOW with real values, not restate
what the type declaration already says.
Co-Authored-By: Charon <charon@lethean.io>
container.go used fmt.Errorf for all error construction, violating the
AX banned-imports rule. Replaced with ErrInternal().WithCause() using
the package's own error primitives, consistent with the rest of pkg/mining.
Co-Authored-By: Charon <charon@lethean.io>
AX Principle 1: predictable names over short names. The variable `u`
in the WebSocket upgrader CheckOrigin closure required context to
understand; `parsedURL` is self-describing.
Co-Authored-By: Charon <charon@lethean.io>
AX Principle 1 — predictable names over short names. `pr` requires mapping to
PeerRegistry; `registry` is self-documenting on first read.
Co-Authored-By: Charon <charon@lethean.io>
AX Principle 1 — predictable names over short names.
All Update() callback closures used `s *AppSettings`; renamed to
`settings *AppSettings` throughout, including the usage-example comment.
Co-Authored-By: Charon <charon@lethean.io>
AX Principle 2 — comments must show HOW with real values, not restate what
the type name already says. Replace the description-style comment with a
concrete two-line call sequence showing construction and route registration.
Co-Authored-By: Charon <charon@lethean.io>
AX Principle 2: comments that restate the field name add no information
and should be deleted. Replace DefaultMaxConnections prose description
with a usage example showing the override pattern.
Co-Authored-By: Charon <charon@lethean.io>
AX Principle 1: predictable names over short names.
`ctx` is an abbreviation that requires prior knowledge to decode;
renamed to describe intent at each call site.
Co-Authored-By: Charon <charon@lethean.io>
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>
AX Principle 2: comments show HOW with real values, not WHAT the
type signature already says. Converted 8 prose-style comments on
type declarations (Transport, TransportConfig, PeerConnection,
PeerRateLimiter, MessageDeduplicator, DisconnectPayload, NodeRole,
NodeIdentity, Peer) to concrete call-site examples.
Co-Authored-By: Charon <charon@lethean.io>
AX principle 2: comments must show HOW with real values, not restate what
the type signature already says. The old comment described return values;
the new comment shows a concrete call with realistic version strings.
Co-Authored-By: Charon <charon@lethean.io>
RFC-025 §2: comments that restate what the function name already says
are deleted and replaced with concrete call-site examples showing
goroutine launch context and behaviour.
Co-Authored-By: Charon <charon@lethean.io>
AX principle 1 — predictable names over short names. The usage example
comment in TestPacket_MarshalAndSign_Ugly used `secret` (abbreviated)
where all other examples in the package consistently use `sharedSecret`.
Co-Authored-By: Charon <charon@lethean.io>
Replace single-letter receivers (m *Message, e *ProtocolError) and
parameter (v interface{}) with full names (message, protocolError, target)
per AX Principle 1: predictable names over short names.
Co-Authored-By: Charon <charon@lethean.io>
AX Principle 2: comments must show how to call the function with real
values, not restate what the type signature already says. All six
HashrateStore interface methods now carry concrete call-site examples.
Co-Authored-By: Charon <charon@lethean.io>
AX Principle 1: abbreviated field names increase semantic ambiguity.
Logger.mu renamed to Logger.mutex — no comment required to understand it.
Co-Authored-By: Charon <charon@lethean.io>
AX Principle 2 — comments show HOW with real values, not prose.
Error() and Unwrap() were the only exported methods on MiningError
lacking usage example comments.
Co-Authored-By: Charon <charon@lethean.io>
A malformed frame with length 0 for any single-byte tag (TagVersion,
TagCurrentLayer, TagTargetLayer, TagIntent) or fewer than 2 bytes for
TagThreatScore caused a runtime panic (index out of range) on untrusted
input. Added len(tagValue) bounds checks in ReadAndVerify before each
tagValue[0] and Uint16 access to eliminate the panic path.
Co-Authored-By: Charon <charon@lethean.io>
Test naming must follow TestFilename_Function_{Good,Bad,Ugly}. The disabled
path test was named freeform, breaking the mandatory pattern. Renamed to
TestDatabase_Initialize_Bad so it joins the existing TestDatabase_Initialize_Good
and forms a correctly named pair.
Co-Authored-By: Charon <charon@lethean.io>
GetLevel had a comment that restated the signature in prose ("returns the
current minimum log level"), violating AX Principle 2. Replaced with a
concrete call-site example showing how the result is actually used.
Co-Authored-By: Charon <charon@lethean.io>
AX Principle 1 — predictable names over short names. The mu field
requires context to understand; mutex is self-describing.
Co-Authored-By: Charon <charon@lethean.io>
AX test naming rule: TestFilename_Function_{Good,Bad,Ugly} — all three
categories mandatory. Splits the single test into the three required forms.
Co-Authored-By: Charon <charon@lethean.io>
AX Principle 1 — predictable names over short names.
`resp` is an abbreviation that requires context to interpret;
`response` is self-describing at any reading distance.
Co-Authored-By: Charon <charon@lethean.io>
"GetLevel returns the current log level" restates the signature —
exactly what AX Principle 2 says to delete. Replaced with a concrete
usage example showing how a caller would inspect and conditionally
adjust the level.
Co-Authored-By: Charon <charon@lethean.io>
GetHashrateStats had no comment at all — bare exported function.
AX Principle 2 requires comments as usage examples, not prose.
Co-Authored-By: Charon <charon@lethean.io>
AX Principle 1: predictable names over short names.
Usage-example comments inside DatabaseConfig used the abbreviation
cfg; renamed to configuration so the inline examples teach the full,
unambiguous name.
Co-Authored-By: Charon <charon@lethean.io>
AX Principle 2: comments show HOW with real values, not what the code does.
The inline prose "All tags except TagHMAC contribute..." restated logic already
visible in the surrounding code. Replaced with a concrete call sequence showing
the exact buffer writes performed for each non-HMAC tag.
Co-Authored-By: Charon <charon@lethean.io>
'Chan' is an abbreviation; AX Principle 1 requires predictable names
over short names. stopChannel is unambiguous without a comment.
Co-Authored-By: Charon <charon@lethean.io>
The switch in ReadAndVerify duplicated the same three hmacInputBuffer.WriteByte/Write
calls across five cases plus default. Extracted to a single conditional after the switch:
all tags except TagHMAC feed the authenticated input buffer. Behaviour is identical;
declarative intent is now clear (AX principle 5 — declarative over imperative).
Co-Authored-By: Charon <charon@lethean.io>
AX Principle 2: comments show HOW with real values, not WHAT the
function does (which the signature already says).
Co-Authored-By: Charon <charon@lethean.io>
Single-letter receiver `t` violates AX Principle 1 (predictable names
over short names). All 15 Transport methods now use `transport` as the
receiver name for unambiguous semantic navigation.
Co-Authored-By: Charon <charon@lethean.io>
AX Principle 2 — global convenience functions had comments restating the
signature ("logs a debug message using the global logger") rather than
showing concrete calls with realistic values.
Co-Authored-By: Charon <charon@lethean.io>
AX Principle 1: predictable names over short names. nm and pr require
mental mapping to understand their purpose; nodeManager and peerRegistry
are self-documenting at the call site.
Co-Authored-By: Charon <charon@lethean.io>
AX Principle 2: comments must show concrete usage, not restate the
function name. "New creates a new Logger with the given configuration"
restated the signature — replaced with a callable example.
Co-Authored-By: Charon <charon@lethean.io>