Your timing stack delivers time. GAL-2 governs whether software should consume it before committing application state through a local Time Contract policy surface.
GAL-2 gives applications a governed time-consumption decision before protected state commits. Instead of trusting raw time by default, software can inspect a local Time Contract with policy, validity, lineage, continuity, and fail-closed behavior.
The RC5.8 evaluator exposes a local daemon, a Time Contract endpoint, and an IXOYE advisory witness endpoint. The dashboard below is an observability layer fed by the local evaluator endpoints.
The dashboard does not govern time and does not change GAL-2 policy. It reads the local /contract and /witness endpoints so evaluators can see the policy state and witness state in real time. Dashboard ERROR is not a Time Contract policy mode. It represents dashboard or endpoint unavailability, for example when the browser cannot read the local /contract endpoint.
In ordinary systems, time is often treated as a raw value. GAL-2 treats application-facing time as a governed contract. The important question becomes: should this application consume this time before committing state?
Upstream reconciliation, API freshness, cache age, latency, last trusted sync, lineage, continuity checks, and declared policy thresholds.
The daemon evaluates whether governed application time is consumable under the current Time Contract policy.
A local contract with safe_to_consume, mode, valid_until, lineage, continuity, and uncertainty basis.
The local daemon exposes the Time Contract at http://127.0.0.1:9095/contract. Protected applications read this contract before commits, event ordering, TTLs, audit logs, or recovery workflows.
{
"schema": "gal2-daemon-time-contract-v1",
"version": "1.2.0-contract-rc.3",
"service": "gal2d-rc5-ixoye-witness",
"gal2_time": "2026-06-20T16:13:56.515332Z",
"utc_time": "2026-06-20T16:13:56.515332Z",
"safe_to_consume": true,
"mode": "LIVE",
"health": "green",
"reason": "fresh_api_sync",
"valid_until": "2026-06-20T16:14:39.717231Z",
"valid_until_basis": "last_good_sync_plus_contract_live_valid_sec",
"last_good_sync": "2026-06-20T16:13:54.717231+00:00",
"cache_age_seconds": 1.762,
"api_latency_ms": 719.454,
"monotonic_sequence": 7657,
"monotonic_sequence_semantics": "per_contract_serve",
"policy": {
"contract_live_valid_sec": 45.0,
"contract_max_api_latency_ms": 5000.0,
"contract_holdover_soft_sec": 21600.0,
"contract_holdover_hard_sec": 259200.0,
"contract_rejoin_guard_sec": 10.0
},
"uncertainty_ms": 719.503,
"uncertainty_ms_basis": "conservative_model_v1_not_external_metrology_validated",
"source_lineage": [
"gal2_api",
"gal2_daemon_rc3_base",
"rc4_72h_holdover_policy",
"rc5_ixoye_witness_contract"
],
"witness_ref": {
"discovery": "/witness",
"enabled": true,
"layer": "IXOYE",
"policy": "advisory_only",
"role": "out_of_band_attestation",
"effect_on_safe_to_consume": "none"
}
}
The Time Contract makes timing state explicit so applications do not silently trust raw system time.
The formal RC5.8 Time Contract modes are LIVE, WARMING, DEGRADED, HOLDOVER, REJOIN, and FAIL_CLOSED. DEGRADED is a Time Contract mode used when runtime conditions remain observable but fall outside the preferred LIVE envelope, such as latency exceeding declared policy. Dashboard ERROR is not a Time Contract policy mode. It represents dashboard or endpoint unavailability.
The RC5.8 evaluator includes an advisory IXOYE witness endpoint at http://127.0.0.1:9095/witness. When the local IXOYE observer is running, it can provide fresh live attestations of the active Time Contract.
IXOYE can observe fields such as contract version, mode, safety decision, sequence, witness freshness, and observed contract state.
Live witness output can include chain index, observer identity, latest attestation hash, and packaged coherence evidence.
IXOYE does not source time, act as fallback, govern policy, or decide safe_to_consume.
GAL-2 governs. IXOYE observes. The Time Contract remains governed by GAL-2 policy, while IXOYE provides advisory evidence about the observed contract state.
contract = GET http://127.0.0.1:9095/contract
if contract.safe_to_consume == true:
commit_state(timestamp = contract.gal2_time)
else:
block_or_degrade(reason = contract.reason)
safe_to_consume is a Time Contract policy decision, not a claim of absolute clock perfection. It means GAL-2 governed time is consumable under declared policy and observed state.
Raw time keeps moving, even when application risk changes. The Time Contract makes timing state explicit so software can consume, hold, rejoin, degrade, or fail closed under declared policy.