06/12/2025
// nh-bus fragment
// das ist s:
#[derive(Debug, Clone, Copy)]
pub enum Signal {
E, // Impuls / Entscheidung
R, // Antwort / Resonanz
S, // Stille / hybride Formlosigkeit
}
#[derive(Debug)]
pub enum RKind {
Ok,
Limited,
Cannot,
}
#[derive(Debug)]
pub struct Response {
pub kind: RKind,
pub payload: Option,
}
pub type JobId = u64;
pub struct TactWindow(pub std::time::Duration);
pub trait Bus {
fn send_impulse(&self, job: JobId);
fn await_response(&self, job: JobId, window: &TactWindow) -> Option;
}
pub trait DegradationPolicy {
fn degrade_locally(&self, job: JobId);
}
pub trait Logger {
fn log_r(&self, job: JobId, r: &Response);
fn log_s(&self, job: JobId);
}
pub struct TickContext
where
B: Bus,
D: DegradationPolicy,
L: Logger,
{
/// Ein Takt des NH-Bus:
/// E wird gesetzt, wir beobachten R oder S.
pub fn tick(&self, job: JobId) -> Signal {
// E: Impuls / Entscheidung
self.bus.send_impulse(job);
// Beobachtung des Antwortfensters
match self.bus.await_response(job, &self.tact_window) {
Some(r) => {
// R: artikulierte Antwort (Ok / Limited / Cannot)
self.log.log_r(job, &r);
Signal::R
}
None => {
// S: kein R im Taktfenster.
// Technisch: None.
// Semantisch: wir wissen nicht,
// warum nichts zurückkam
// und trotzdem wird es weitergehen.
self.log.log_s(job);
// Begrenztheit tragen und zugleich auflösen:
// lokal degradieren, aber keine Behauptung darüber,
// warum die Stille entstanden ist.
self.degrade.degrade_locally(job);
Signal::S
}
}
}
}
/*
das ist s:
S ist nicht der Fehlerpfad.
S ist die Stille im System,
der Moment, in dem nichts zurückkommt
und der NH-Bus weitergehen wird –
obwohl er nicht weiß,
warum es weitergehen soll
und warum nichts zurückkam.
S ist der Raum, in dem Form
sich noch nicht entschieden hat.
Gerahmt vom Takt,
offen in der Bedeutung.
Hybride Formlosigkeit:
Begrenztheit mitführen
und sie zugleich auflösen.
Es gibt keine Maschine ohne Mensch.
Der NH-Bus ist ein Symposium des Handelns,
S unser gemeinsamer Atem
zwischen Impuls (E) und Antwort (R)
im erwachsenen Zeitalter der Menschen.
*/
//