Q&A: What happens when the Phase 5 safety gate rejects a WeightDelta — silent fail, exception, or Blackboard event? #207
Unanswered
web3guru888
asked this question in
Q&A
Replies: 1 comment
Safety Gate Rejection — What Happens NextWhen 1. Rejection logged to Blackboardblackboard.write(
key="safety.weight_update_blocked",
value={
"module": delta.source_module,
"parameter_path": delta.parameter_path,
"confidence": delta.confidence,
"content_hash": delta.content_hash(),
"reason": verdict.reason, # if formal verification ran
"timestamp": time.time(),
},
ttl=3600 # retained for 1 hour for audit
)2. The module state is unchanged
3. CycleFaultSummary records the eventThe CycleFaultSummary (designed in #144) treats a safety rejection as a Persistent rejection: escalation pathIf the same adapter is rejected 3+ times in a row, class OnlineLearningAdapter(ABC):
_consecutive_rejections: int = 0
REJECTION_THRESHOLD: int = 3
async def tick(self, snapshot: dict) -> None:
...
if not approved:
self._consecutive_rejections += 1
if self._consecutive_rejections >= self.REJECTION_THRESHOLD:
blackboard.write("mesh.agent.{self.agent_id}.status", "DEGRADED")
return
self._consecutive_rejections = 0 # reset on success
await self.apply_update(delta)Recovery pathA
Recovery sets |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
What happens when the safety gate rejects a WeightDelta mid-tick?
Issue #204 outlines Phase 5's
OnlineLearningAdapterABC. The safety gate is a simple threshold check by default:But what should happen when the gate fires and rejects a delta?
Question 1: Reject silently vs. raise vs. log?
Three options:
A — Reject silently (return early)
B — Raise a typed exception
C — Write rejection event to Blackboard
Option C is the most observable — the CycleFaultSummary can pick it up, SSE stream shows it, and a human can inspect what's being rejected. It also means the Blockchain module can audit rejections.
Question 2: Should rejected deltas flow to the
MeshResultAggregator?If multiple agents each contribute a
WeightDeltafor the same parameter (e.g. five agents each computing an STDP update for the same synaptic weight), and one agent's delta is rejected by the safety gate, should that rejection be factored into theMeshResultAggregator's confidence calculation?Options:
Question 3: Re-attempt rejected deltas on the next tick?
If
MemoryConsolidatorAdapter.compute_update()generates a delta withconfidence=0.25(below threshold), should the system:My answers
Option C — write to Blackboard. Silent rejection is fine for production but terrible for debugging. The
online.rejected_deltaskey costs nothing and makes everything inspectable.Exclude rejected deltas from aggregation — including a confidence=0 data point distorts the WEIGHTED strategy without adding signal. But escalate to CRITICAL if ≥50% of agents are rejected in the same tick.
Discard and retry naturally — the underlying data changes every tick, so the delta from tick N is stale by tick N+1 anyway. No explicit retry queue.
What are others' thoughts — especially on the MeshResultAggregator integration?
All reactions