Add Fleet Torrent erasure extension with shard DHT and gossip.
Some checks failed
CI Docker Mining Proof / Linux agent hashrate proof (push) Has been cancelled

Content-addressed shard DHT on seeder agents with subnet_primary_seeder election, cross-subnet fleet_torrent_gossip, BGP swarm magnets, C2 torrent manifest, and k-of-n peer fetch with C2 fallback.
This commit is contained in:
AetherForge
2026-06-07 09:24:55 -07:00
parent 588735e7e7
commit 894b7a50ae
40 changed files with 2285 additions and 1 deletions

View File

@@ -0,0 +1,21 @@
package ai
// Oath action types and outcomes — mirrored in db/oath_ledger.go for SQLite rows.
const (
OathSpreadTierEscalation = "spread_tier_escalation"
OathGraft = "graft"
OathForkMerge = "fork_merge"
OathStrainCardPlay = "strain_card_play"
OathCourtL4Decision = "court_l4_decision"
OathSpreadAttempt = "spread_attempt"
OathStrainHospice = "strain_hospice"
OathOutcomeSuccess = "success"
OathOutcomeFail = "fail"
OathOutcomePending = "pending"
)
// OathRecorder persists immutable operator / AI council accountability rows.
type OathRecorder interface {
Record(actor, actionType, agentID, strain, outcome string, whySource, payload interface{}) error
}

View File

@@ -50,6 +50,8 @@ type Scheduler struct {
chamber CourtDeps
elevator ClearanceElevator
seer SeerBridge
oath OathRecorder
hospice StrainHospiceScanner
surgical SurgicalDeps
stop chan struct{}
wg sync.WaitGroup
@@ -76,6 +78,11 @@ func (s *Scheduler) SetSeerBridge(b SeerBridge) {
s.seer = b
}
// SetOathRecorder wires immutable accountability rows (optional).
func (s *Scheduler) SetOathRecorder(r OathRecorder) {
s.oath = r
}
// SetSurgicalDeps wires Path Tracer replay, strain memory, and Seer emitters.
func (s *Scheduler) SetSurgicalDeps(deps SurgicalDeps) {
s.surgical = deps
@@ -86,6 +93,16 @@ func (s *Scheduler) SetCourtDeps(deps CourtDeps) {
s.chamber = deps
}
// StrainHospiceScanner auto-retires chronic low-win strains when AI control is enabled.
type StrainHospiceScanner interface {
MaybeAutoRetireLowWinStrains()
}
// SetStrainHospiceScanner wires AI auto-retire for epidemiology clutter.
func (s *Scheduler) SetStrainHospiceScanner(scanner StrainHospiceScanner) {
s.hospice = scanner
}
func (s *Scheduler) Start() {
s.wg.Add(1)
go s.loop()
@@ -133,6 +150,9 @@ func (s *Scheduler) tick() {
if !cfg.Enabled {
return
}
if s.hospice != nil {
s.hospice.MaybeAutoRetireLowWinStrains()
}
interval := time.Duration(cfg.IntervalSec) * time.Second
if interval < time.Second {
interval = 60 * time.Second
@@ -331,6 +351,27 @@ func (s *Scheduler) emitCourtDebate(agentID string, transcript CourtDebateTransc
"ts": transcript.Timestamp,
})
}
if s.oath != nil {
outcome := OathOutcomeSuccess
if strings.Contains(executed, "err:") {
outcome = OathOutcomeFail
}
_ = s.oath.Record(
"ai_council:judge",
OathCourtL4Decision,
agentID,
"",
outcome,
transcript,
map[string]interface{}{
"verdict": transcript.Verdict,
"executed": executed,
"commands": transcript.CommandsJSON,
"clearance": transcript.ClearanceLevel,
"agent_name": transcript.AgentName,
},
)
}
if s.chamber.Emberwake != nil {
s.chamber.Emberwake(agentID, transcript)
}