tibet-cascade
Cascade Logging for TIBET.
tibet-cascade is the observability layer for causal logging across the stack:
JIS claim/bind/FIR-A
-> TIBET token
-> cap-bus event
-> gateway verdict
-> ping/overlay/network state
-> continuityd arrival/resume
-> Phantom fork/resume
-> audit/evidence/report
It does not replace tibet-tail, tibet-trail, tibet-ping, or tibet-pol.
It correlates them.
Armed, wired, muted
A cascade viewer is only worth what its producers put in it, so this package never shows the switch on its own. Every source reports in one of three states, and the middle one is the point:
| state | meaning |
|---|---|
wired |
this source has actually emitted — with a count and how long ago |
armed |
recording is switched on, but no producer has ever emitted here |
muted |
switched off; nothing from this source is recorded |
Between 0.1.x and 0.2.0 every source in this package printed a green on while
nothing in the whole stack called emit at all. That is the failure mode a viewer
must not have: a quiet system and an unwired viewer looked identical, and the
instrument reported the wish instead of the wire. doctor, list, watch and
logger status now all say which of the two you are looking at.
Two consequences worth knowing:
- Recording is the default. An absent
loggers.jsonmeans every source records, and an unknown source records. The file holds deliberate mutes, not permissions. - A muted source refuses out loud.
tibet-cascade emitinto a muted source prints why and exits2; it never silently swallows what you asked it to record.
Emitting from your own code
import tibet_cascade
tibet_cascade.emit(
"device-link", "pairing.challenge", "challenge minted",
subject="jasper2.aint", cascade_id=fork_id, refs={"fork_id": fork_id},
)
emit() never raises and honours the mute switch — a full disk or a read-only home
returns None. Observability that can break the thing it observes is worse than none.
Pass the same cascade_id through a chain of events to make them one causal thread,
and parent_id to say which event came from which.
Install
pip install tibet-cascade
Bootstrap-or-die dependencies are mandatory:
tibet-core>=0.5.0jis-core>=0.4.0
Commands
tibet-cascade doctor
tibet-cascade watch
tibet-cascade trace --id <cascade-or-token-id>
tibet-cascade logger on jis-core
tibet-cascade logger off tibet-core
tibet-cascade logger status
tibet-cascade ping --instance phone
tibet-cascade caps --read
tibet-cascade token --trace <token-id>
Default event file:
~/.tibet/cascade/events.jsonl
Override with:
TIBET_CASCADE_JSONL=/path/to/events.jsonl tibet-cascade watch
Event Shape
{
"ts": "2026-06-07T21:55:00Z",
"cascade_id": "cas_...",
"event_id": "evt_...",
"parent_id": "evt_...",
"source": "jis-core",
"kind": "identity.claim",
"subject": "jis:...",
"level": "INFO",
"summary": "claim accepted",
"refs": {
"tibet_token": "...",
"cap_event": "...",
"trace": "..."
},
"data": {}
}
Stack Area
observability
Related packages:
tibet-tail: live event streamtibet-trail: provenance trail readertibet-ping: liveness and network probetibet-pol: process and posture observertibet-cascade: causal correlation cockpit
Metadata
Release files for tibet-cascade 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| tibet_cascade-0.2.0.tar.gz | 15.8 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tibet_cascade-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 31.3 kB
Release files / tibet_cascade-0.2.0.tar.gz
| Download URL | tibet_cascade-0.2.0.tar.gz |
|---|---|
| Size | 15.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5601456f5f8f0b4d7647d7b5cf5781f7fe79a5345e72199ff585e5ee20c250e2
|
|
BLAKE2b-256 checksum How to use checksums |
9d2e5cdc45982171c02fa9f553457b2762ebd2b88b4a09134dad9a5b82ea8a44
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.5
|
Release files / tibet_cascade-0.2.0-py3-none-any.whl
| Download URL | tibet_cascade-0.2.0-py3-none-any.whl |
|---|---|
| Size | 15.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ffae217eebfd0d4a23d7d20655f732ceb402f99ceaee604d3fc4b7af20f9ed2a
|
|
BLAKE2b-256 checksum How to use checksums |
9f34f9f329fcd47aed25088f19044db1ae62ff24231791d227ae7b498e661fee
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.5
|
Security for tibet-cascade 0.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.