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
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:
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user