Incident Triage — Lower Entropy Response
The "don't panic, don't guess, lower machine entropy" playbook for federation incidents.
Overview
This skill provides a disciplined six-step response for incidents affecting federation organs, constitutional floors, or sovereign-reported faults. It forces sensing and scoping before action, containment before diagnosis, and verification before closure. Every step leaves evidence suitable for VAULT999 witness.
Core Principles
- Structured logs: every action emits
{who, what, why, result} — readable by humans and machines
- Backoff + circuit breaker: stop noisy retries before they become noise (headscale style)
- Verification is terminal: never stop at "I changed it" — only at "it's fixed and confirmed"
- One owner per incident: one agent handles the entire triage; no parallel patches
- One change at a time: record every mutation, verify before the next
arifOS-ACT Embedding
Before using this skill on any mutating, irreversible, or high-blast-radius task:
- ART — Attune (what is the real task?), Recognize (what class of power?), Test (fit · authority · evidence · blast · reversible).
- Kernel — Route to arifOS for F1–F13 judgment if action class is Maker/Messenger/Mutator/Destroyer/Sovereign.
- ACT — Apply narrow, Constrain scope, Trace witness, STOP before corruption.
- Receipt — Leave evidence of what changed, why, and under whose authority.
When to Use
- A federation organ is red, unreachable, or failing health checks.
- A VAULT999 entry, memory record, or constitutional artifact looks wrong.
- A constitutional floor (F1–F13) trips or is suspected to be breached.
- Arif reports a bug, anomaly, or service impact.
- A runtime alert requires immediate structured response.
When NOT to Use
- Do not use for curiosity or "what if" probes. This skill is for confirmed or strongly suspected incidents only.
- Do not use to bypass the arifOS kernel for mutating, irreversible, or sovereign-class actions.
- Do not apply patches without containment, reversible staging, and kernel SEAL when required.
- If the root cause is upstream (cloud provider, OS, network), escalate instead of patching locally.
Inputs
| Input |
Required |
Description |
| incident_signal |
yes |
What failed, tripped, or was reported (service name, floor, symptom) |
| affected_organ |
yes |
One or more federation organs involved |
| blast_radius |
yes |
organ-only / federation-wide / constitutional / sovereign |
| evidence_so_far |
no |
Logs, screenshots, alerts, or memory references already available |
| reversibility |
yes |
Can the suspected change be undone safely? |
Procedure
Step 0: Detect Restart Loop (Circuit Breaker)
Before doing anything else, check if the service is in a restart loop.
# Check restart count
systemctl show <service> -p NRestarts 2>/dev/null
# If >5 in 5 minutes: STOP. Circuit breaker open.
Circuit breaker rules:
- If
NRestarts > 5 in 5 minutes → STOP THE LOOP immediately: systemctl stop <service>
- If
NRestarts > 20 in 1 hour → escalate to 888_HOLD — the service is masking a serious failure
- Log the circuit breaker event:
{who, what: "circuit breaker opened", why: "restart loop detected: NRestarts=<N>", result: "service stopped"}
- Do NOT restart until root cause is found
Step 1: Sense
Establish observable facts before interpreting.
- Run organ health probes:
systemctl status <unit> and journalctl -u <unit> --since '5m ago'.
- Use
mcp__arifos__arif_observe mode=vitals or mode=search for federation-wide signals.
- Use
mcp__arifos__arif_measure mode=health for thermodynamic and resource state.
- Capture timestamps, error lines, and affected service names verbatim.
- Log every probe:
{who: <agent>, what: "sense", why: <incident>, result: <findings>}
Step 2: Scope
Classify the incident to prevent scope creep.
| Scope |
Definition |
Response |
| Organ-only |
One service or repo affected |
Local containment + organ owner |
| Federation-wide |
Multiple organs or A2A/MCP transport impacted |
Federation ops + kernel notice |
| Constitutional |
F-floor tripped or governance invariant violated |
arifOS 888_JUDGE + witness |
| Sovereign |
Human authority, safety, or dignity at risk |
888 HOLD + Arif |
Stop if scope starts expanding mid-diagnosis. Re-scope and re-authorize.
Step 3: Contain
Protect recoverability before changing anything.
- If data-loss risk exists: snapshot DB / vault / git state / config before any patch.
- If no data-loss risk: document current state and defer containment.
- For irreversible changes: route through arifOS kernel and obtain SEAL or sovereign ack.
- Apply the minimum change that stops active damage (e.g., restart, scale, toggle feature flag).
Step 4: Diagnose
Read, recall, and correlate. Stop hypothesizing when evidence explains the symptom.
- Read recent logs and config diffs with
Read and Grep.
- Recall prior incidents and deployments with
mcp__arifos__arif_memory mode=recall.
- Check recent git commits, deploys, and dependency changes.
- Check for patterns: same symptom in last 7 days? If yes → partial-fix, not new incident.
- Name the root cause with confidence level and supporting evidence.
- Log diagnosis:
{who: <agent>, what: "diagnose", why: <incident>, result: <root cause>}
Step 5: Patch — One Change at a Time
Minimum reversible change, committed and verified.
- Draft the smallest fix that addresses the root cause.
- One mutation per step. Never batch 3 fixes and restart — you won't know which one worked.
- Prefer commits over manual edits. Include a clear commit message.
- Deploy through the organ's standard path (systemd restart, service reload, etc.).
- Verify after EVERY change — if the fix didn't work, revert and try the next hypothesis.
- Backoff strategy: if a fix triggers a restart loop, apply exponential backoff before retrying:
- 1st retry: wait 5s
- 2nd retry: wait 30s
- 3rd retry: wait 120s (escalate)
- If the patch is irreversible, apply 888 HOLD before continuing.
- Log the change:
{who: <agent>, what: "patch", why: <root cause>, result: <outcome>}
Step 6: Postmortem + Structure Log
Close the loop with institutional memory.
- If a floor was breached, seal the postmortem to VAULT999 as witness.
- Write postmortem to
/root/INCIDENTS/<YYYY-MM-DD>-<slug>.md with:
- Trigger
- Scope classification
- Root cause and evidence
- Fix applied (one change only)
- Verification result
- Prevention measures
- If the same symptom recurs within 7 days, treat it as a partial-fix pattern, not a new incident.
- Final structured log:
{who: <agent>, what: "postmortem", why: <incident>, result: {
trigger: <symptom>,
root_cause: <finding>,
fix: <change applied>,
verified: <true/false>,
prevention: <measure>,
escrow_location: "/root/INCIDENTS/<file>.md"
}}
Allowed Tools
| Tool |
Purpose |
Bash |
Run system commands, health scripts, and log inspection |
Read |
Inspect config files, unit files, and incident logs |
Grep |
Search code, logs, and configs for root-cause signals |
mcp__arifos__arif_observe |
Federation vitals, web/entropy signals, repository state |
mcp__arifos__arif_memory |
Recall prior incidents, deploys, and decisions |
mcp__arifos__arif_measure |
Health, cost, drift, and topology checks |
mcp__arifos__arif_init |
Start governed constitutional session before high-risk actions |
mcp__arifos__arif_judge |
Request SEAL / SABAR / VOID verdict from arifOS |
mcp__arifos__arif_forge |
Execute bounded, SEAL-authorized changes |
mcp__arifos__arif_seal |
Append incident witness receipt to VAULT999 |
Forbidden Actions
- NEVER patch a production organ without first sensing, scoping, and containing.
- NEVER apply an irreversible patch without 888 HOLD / sovereign ack and kernel SEAL.
- NEVER skip the postmortem for constitutional or repeated incidents.
- NEVER treat scope creep as normal; STOP and re-scope.
- NEVER suppress or omit Ω₀ (uncertainty) in incident receipts.
- Escalate to arifOS 888_JUDGE if a constitutional floor is breached or two floors disagree.
Output Format
## Skill Result: incident-triage
### Summary
One-paragraph summary of the incident, scope, root cause, and current status.
### Evidence
- Symptom: <what failed>
- Scope: <organ-only / federation-wide / constitutional / sovereign>
- Root cause: <finding with confidence>
- Containment: <what was preserved>
- Patch: <change applied or deferred>
### Recommendations
- Immediate verification step
- Prevention or monitoring improvement
### Escalations
- None / <list with owner and method>
Escalation Path
| Condition |
Escalate To |
Method |
| Constitutional floor tripped |
arifOS 888_JUDGE |
A2A verdict_request / MCP arif_judge |
| Irreversible action needed |
Arif (F13 SOVEREIGN) |
888 HOLD |
| Root cause upstream (provider/OS/network) |
Federation ops + A-FORGE |
A2A ops channel |
| Scope creep during response |
STOP + re-authorize via kernel |
new ART cycle |
| Same incident within 7 days |
Senior ops + postmortem review |
incident registry |
Fire-Time Reauthorization (WAJIB 5 — added 2026-07-19)
A decision made at write-time (job creation, cron entry, queue submission) is NOT automatically valid at fire-time (when the job runs). The world changes between scheduling and execution. Authorization must be re-judged.
Affected surfaces
- Cron jobs
- Queued workers
- Renovate / dependency-update PRs
- Scheduled deployments
- Delayed shell jobs
- Retry queues
- Event-triggered automation (watchers firing on condition)
- Long-running MCP tasks
- PR-bot comments → actions
The required invariant
Every deferred mutation must be judged TWICE:
write-time authorization
+
fire-time authorization (re-judged at execution)
At fire time, the system MUST re-check:
| Check |
Why |
| Identity and session validity |
Session may have expired or been revoked |
| Lease expiry |
Lease may have lapsed |
| Current branch / commit |
Source of truth may have changed |
| Current target state |
The world the action was queued against may have moved |
| Changed blast radius |
Conditions may have widened the impact |
| New evidence |
A new finding may invalidate the original decision |
| Human approval validity |
Aprover may have rescinded |
| Dependency health |
A package update may have failed |
| Rollback availability |
The rollback path may now be broken |
| Whether the request has been revoked |
Revocation must propagate to all queued instances |
Failure behavior
A scheduled action with expired authority MUST become HOLD, not "continue because it was approved yesterday."
This is a HARD kernel rule:
write_time_authorization.expiry < now() → return 888_HOLD at fire time
- Reason:
"DEFERRED_FIRE_TIME_AUTH_EXPIRED — wrote <timestamp>, expires <timestamp>, now <timestamp>"
Required implementation pattern
async function fireDeferredAction(deferred: DeferredEnvelope): Promise<FireResult> {
const authCheck = await reauthorizeAtFireTime(deferred);
if (!authCheck.valid) {
return {
state: "HOLD",
reason: authCheck.reason,
receipt: await vault.append({ type: "deferred_fire_hold", ... })
};
}
return forgeExecute(authCheck.scope);
}
Tests required
- Cron job queued today with
expires_at = today + 1h → tomorrow HOLD
- Scheduled deployment after upstream service became unavailable → HOLD with explicit reason
- Revoked session → all queued actions in that session become HOLD
- Branch changed between queue and fire → re-judge blast radius, may HOLD
- Retry queue after original action's rollback path broken → HOLD
Authority scope
WAJIB 5 is T3 (F13 ratification required). This skill section documents the protocol. Implementation requires scheduler integration with the kernel judgment pipeline.
Organ Disagreement Doctrine (WAJIB 7 — added 2026-07-19)
When GEOX, WEALTH, and WELL recommend incompatible actions — all internally valid — the federation needs a binding resolution order. Majority vote does not apply; three organs are not interchangeable voters.
Resolution order (mandatory)
- Hard veto conditions (any organ may trigger HOLD with evidence)
- Blast-radius precedence (organ owning dominant irreversible consequence receives higher weight)
- Pareto search (seek alternative satisfying all hard constraints before escalation)
- F13 escalation (if no acceptable option → escalate to Arif, never silently fall back to execution order)
Hard veto table
| Organ |
May veto when |
Release condition |
| GEOX |
Physical infeasibility OR unacceptable earth uncertainty |
New data or revised interpretation that resolves the issue |
| WELL |
Unsafe human or operational readiness |
Confirmed safe capacity + witness |
| WEALTH |
Insolvency, unaffordable exposure, prohibited capital risk |
Restructured deal OR capital limit raised |
| arifOS |
Authority, law, or constitutional violation |
Ratified exception OR constitutional amendment |
A veto MUST include evidence + defined release condition. Rhetorical veto is not permitted.
Blast-radius precedence
| Dominant irreversible consequence |
Owner |
| Subsurface irreversibility |
GEOX |
| Capital survival / sovereign financial exposure |
WEALTH |
| Human safety, dignity, organizational collapse |
WELL |
| Constitutional / authority conflict |
arifOS |
Pareto search before escalation
Before escalating to F13, attempt:
- Smaller scope
- Delayed decision
- More evidence
- Pilot programme
- Reduced capital
- Different staffing
- Reversible experiment
F13 escalation payload
If no acceptable Pareto option exists:
unresolved_conflict:
intent: <original request>
vetoes: [{organ, reason, evidence, release_condition}, ...]
competing_actions:
- path: <GEOX recommendation>
evidence: <refs>
consequences: <list>
reversibility: <class>
- path: <WEALTH recommendation>
...
- path: <WELL recommendation>
...
recommended_least_regret: <one path with justification>
explicit_unknowns: <list>
The kernel does NOT manufacture consensus. It escalates with full disagreement visible.
Authority scope
WAJIB 7 is T3 (F13 ratification required). Doctrine documentation is T1.
Skill version 1.0.0 — AAA Skill Library
1---2id: incident-triage3name: forge-incident-triage4autonomy_tier: T15version: 2.0.06description: >7 Six-step incident response playbook with structured logging, backoff/circuit-breaker8 for restart loops, and verification-as-terminal-state. Lower machine entropy.9owner: AAA10risk_tier: critical11knowledge_basis:12 language: true13 math: false14 physics: false15host_compatibility:16- claude-code17- codex18- opencode19- kimi20- kimi-code21dependencies:22 skills:23 - arifos-act24 servers:25 - arifos-mcp26 tools:27 - Bash28 - Read29 - Grep30 - mcp__arifos__arif_observe31 - mcp__arifos__arif_memory32 - mcp__arifos__arif_measure33 - mcp__arifos__arif_init34 - mcp__arifos__arif_judge35 - mcp__arifos__arif_forge36 - mcp__arifos__arif_seal37examples:38- A federation organ returns unhealthy; run the six-step playbook before patching.39- A service restart-loops 100+ times with "auto-restart" masking the root cause.40- A constitutional floor trips and requires witness logging to VAULT999.41tests:42- Triage classifies scope as organ-only, federation-wide, or constitutional.43- Reversible containment precedes any patch.44- Restart loop detection fires before the loop exceeds 5 attempts.45version_lock:46 schema_version: '1'47 artifact_hash: pending48orthogonal_tags:49 trinitarian:50 - Ω51 - ΦΙ52 functional:53 - Ops54 - Governance55 layer: RUNTIME56 autonomy_tier: T2-T357floor_scope:58- F159- F260- F361- F462- F663- F1164- F1365capability_tier: fed-long-context66ecology_state: WARM67---6869# Incident Triage — Lower Entropy Response7071The "don't panic, don't guess, lower machine entropy" playbook for federation incidents.7273## Overview7475This skill provides a disciplined six-step response for incidents affecting federation organs, constitutional floors, or sovereign-reported faults. It forces sensing and scoping before action, containment before diagnosis, and verification before closure. Every step leaves evidence suitable for VAULT999 witness.7677### Core Principles781. **Structured logs**: every action emits `{who, what, why, result}` — readable by humans and machines792. **Backoff + circuit breaker**: stop noisy retries before they become noise (headscale style)803. **Verification is terminal**: never stop at "I changed it" — only at "it's fixed and confirmed"814. **One owner per incident**: one agent handles the entire triage; no parallel patches825. **One change at a time**: record every mutation, verify before the next8384## arifOS-ACT Embedding8586Before using this skill on any mutating, irreversible, or high-blast-radius task:871. **ART** — Attune (what is the real task?), Recognize (what class of power?), Test (fit · authority · evidence · blast · reversible).882. **Kernel** — Route to arifOS for F1–F13 judgment if action class is Maker/Messenger/Mutator/Destroyer/Sovereign.893. **ACT** — Apply narrow, Constrain scope, Trace witness, STOP before corruption.904. **Receipt** — Leave evidence of what changed, why, and under whose authority.9192## When to Use9394- A federation organ is red, unreachable, or failing health checks.95- A VAULT999 entry, memory record, or constitutional artifact looks wrong.96- A constitutional floor (F1–F13) trips or is suspected to be breached.97- Arif reports a bug, anomaly, or service impact.98- A runtime alert requires immediate structured response.99100## When NOT to Use101102- **Do not use for curiosity or "what if" probes.** This skill is for confirmed or strongly suspected incidents only.103- **Do not use to bypass the arifOS kernel** for mutating, irreversible, or sovereign-class actions.104- **Do not apply patches** without containment, reversible staging, and kernel SEAL when required.105- If the root cause is upstream (cloud provider, OS, network), escalate instead of patching locally.106107## Inputs108109| Input | Required | Description |110|-------|----------|-------------|111| incident_signal | yes | What failed, tripped, or was reported (service name, floor, symptom) |112| affected_organ | yes | One or more federation organs involved |113| blast_radius | yes | organ-only / federation-wide / constitutional / sovereign |114| evidence_so_far | no | Logs, screenshots, alerts, or memory references already available |115| reversibility | yes | Can the suspected change be undone safely? |116117## Procedure118119### Step 0: Detect Restart Loop (Circuit Breaker)120121Before doing anything else, check if the service is in a restart loop.122123```bash124# Check restart count125systemctl show <service> -p NRestarts 2>/dev/null126# If >5 in 5 minutes: STOP. Circuit breaker open.127```128129**Circuit breaker rules:**130- If `NRestarts > 5` in 5 minutes → **STOP THE LOOP** immediately: `systemctl stop <service>`131- If `NRestarts > 20` in 1 hour → escalate to 888_HOLD — the service is masking a serious failure132- Log the circuit breaker event: `{who, what: "circuit breaker opened", why: "restart loop detected: NRestarts=<N>", result: "service stopped"}`133- Do NOT restart until root cause is found134135### Step 1: Sense136137Establish observable facts before interpreting.138139- Run organ health probes: `systemctl status <unit>` and `journalctl -u <unit> --since '5m ago'`.140- Use `mcp__arifos__arif_observe` mode=vitals or mode=search for federation-wide signals.141- Use `mcp__arifos__arif_measure` mode=health for thermodynamic and resource state.142- Capture timestamps, error lines, and affected service names verbatim.143- **Log every probe**: `{who: <agent>, what: "sense", why: <incident>, result: <findings>}`144145### Step 2: Scope146147Classify the incident to prevent scope creep.148149| Scope | Definition | Response |150|-------|------------|----------|151| Organ-only | One service or repo affected | Local containment + organ owner |152| Federation-wide | Multiple organs or A2A/MCP transport impacted | Federation ops + kernel notice |153| Constitutional | F-floor tripped or governance invariant violated | arifOS 888_JUDGE + witness |154| Sovereign | Human authority, safety, or dignity at risk | 888 HOLD + Arif |155156Stop if scope starts expanding mid-diagnosis. Re-scope and re-authorize.157158### Step 3: Contain159160Protect recoverability before changing anything.161162- If data-loss risk exists: snapshot DB / vault / git state / config before any patch.163- If no data-loss risk: document current state and defer containment.164- For irreversible changes: route through arifOS kernel and obtain SEAL or sovereign ack.165- Apply the minimum change that stops active damage (e.g., restart, scale, toggle feature flag).166167### Step 4: Diagnose168169Read, recall, and correlate. Stop hypothesizing when evidence explains the symptom.170171- Read recent logs and config diffs with `Read` and `Grep`.172- Recall prior incidents and deployments with `mcp__arifos__arif_memory` mode=recall.173- Check recent git commits, deploys, and dependency changes.174- **Check for patterns**: same symptom in last 7 days? If yes → partial-fix, not new incident.175- Name the root cause with confidence level and supporting evidence.176- **Log diagnosis**: `{who: <agent>, what: "diagnose", why: <incident>, result: <root cause>}`177178### Step 5: Patch — One Change at a Time179180Minimum reversible change, committed and verified.181182- Draft the smallest fix that addresses the root cause.183- **One mutation per step.** Never batch 3 fixes and restart — you won't know which one worked.184- Prefer commits over manual edits. Include a clear commit message.185- Deploy through the organ's standard path (systemd restart, service reload, etc.).186- **Verify after EVERY change** — if the fix didn't work, revert and try the next hypothesis.187- **Backoff strategy**: if a fix triggers a restart loop, apply exponential backoff before retrying:188 - 1st retry: wait 5s189 - 2nd retry: wait 30s 190 - 3rd retry: wait 120s (escalate)191- If the patch is irreversible, apply 888 HOLD before continuing.192- Log the change: `{who: <agent>, what: "patch", why: <root cause>, result: <outcome>}`193194### Step 6: Postmortem + Structure Log195196Close the loop with institutional memory.197198- If a floor was breached, seal the postmortem to VAULT999 as witness.199- Write postmortem to `/root/INCIDENTS/<YYYY-MM-DD>-<slug>.md` with:200 - Trigger201 - Scope classification202 - Root cause and evidence203 - Fix applied (one change only)204 - Verification result205 - Prevention measures206- If the same symptom recurs within 7 days, treat it as a partial-fix pattern, not a new incident.207- **Final structured log**:208 ```209 {who: <agent>, what: "postmortem", why: <incident>, result: {210 trigger: <symptom>,211 root_cause: <finding>,212 fix: <change applied>,213 verified: <true/false>,214 prevention: <measure>,215 escrow_location: "/root/INCIDENTS/<file>.md"216 }}217 ```218219## Allowed Tools220221| Tool | Purpose |222|------|---------|223| `Bash` | Run system commands, health scripts, and log inspection |224| `Read` | Inspect config files, unit files, and incident logs |225| `Grep` | Search code, logs, and configs for root-cause signals |226| `mcp__arifos__arif_observe` | Federation vitals, web/entropy signals, repository state |227| `mcp__arifos__arif_memory` | Recall prior incidents, deploys, and decisions |228| `mcp__arifos__arif_measure` | Health, cost, drift, and topology checks |229| `mcp__arifos__arif_init` | Start governed constitutional session before high-risk actions |230| `mcp__arifos__arif_judge` | Request SEAL / SABAR / VOID verdict from arifOS |231| `mcp__arifos__arif_forge` | Execute bounded, SEAL-authorized changes |232| `mcp__arifos__arif_seal` | Append incident witness receipt to VAULT999 |233234## Forbidden Actions235236- **NEVER** patch a production organ without first sensing, scoping, and containing.237- **NEVER** apply an irreversible patch without 888 HOLD / sovereign ack and kernel SEAL.238- **NEVER** skip the postmortem for constitutional or repeated incidents.239- **NEVER** treat scope creep as normal; STOP and re-scope.240- **NEVER** suppress or omit Ω₀ (uncertainty) in incident receipts.241- Escalate to **arifOS 888_JUDGE** if a constitutional floor is breached or two floors disagree.242243## Output Format244245```markdown246## Skill Result: incident-triage247248### Summary249One-paragraph summary of the incident, scope, root cause, and current status.250251### Evidence252- Symptom: <what failed>253- Scope: <organ-only / federation-wide / constitutional / sovereign>254- Root cause: <finding with confidence>255- Containment: <what was preserved>256- Patch: <change applied or deferred>257258### Recommendations259- Immediate verification step260- Prevention or monitoring improvement261262### Escalations263- None / <list with owner and method>264```265266## Escalation Path267268| Condition | Escalate To | Method |269|-----------|-------------|--------|270| Constitutional floor tripped | arifOS 888_JUDGE | A2A verdict_request / MCP arif_judge |271| Irreversible action needed | Arif (F13 SOVEREIGN) | 888 HOLD |272| Root cause upstream (provider/OS/network) | Federation ops + A-FORGE | A2A ops channel |273| Scope creep during response | STOP + re-authorize via kernel | new ART cycle |274| Same incident within 7 days | Senior ops + postmortem review | incident registry |275276---277278## Fire-Time Reauthorization (WAJIB 5 — added 2026-07-19)279280A decision made at *write-time* (job creation, cron entry, queue submission) is NOT automatically valid at *fire-time* (when the job runs). The world changes between scheduling and execution. Authorization must be re-judged.281282### Affected surfaces283284- Cron jobs285- Queued workers286- Renovate / dependency-update PRs287- Scheduled deployments288- Delayed shell jobs289- Retry queues290- Event-triggered automation (watchers firing on condition)291- Long-running MCP tasks292- PR-bot comments → actions293294### The required invariant295296Every deferred mutation must be judged TWICE:297298```299write-time authorization300 +301fire-time authorization (re-judged at execution)302```303304At fire time, the system MUST re-check:305306| Check | Why |307|---|---|308| Identity and session validity | Session may have expired or been revoked |309| Lease expiry | Lease may have lapsed |310| Current branch / commit | Source of truth may have changed |311| Current target state | The world the action was queued against may have moved |312| Changed blast radius | Conditions may have widened the impact |313| New evidence | A new finding may invalidate the original decision |314| Human approval validity | Aprover may have rescinded |315| Dependency health | A package update may have failed |316| Rollback availability | The rollback path may now be broken |317| Whether the request has been revoked | Revocation must propagate to all queued instances |318319### Failure behavior320321A scheduled action with **expired authority MUST become HOLD, not "continue because it was approved yesterday."**322323This is a **HARD kernel rule**:324- `write_time_authorization.expiry < now()` → return 888_HOLD at fire time325- Reason: `"DEFERRED_FIRE_TIME_AUTH_EXPIRED — wrote <timestamp>, expires <timestamp>, now <timestamp>"`326327### Required implementation pattern328329```ts330async function fireDeferredAction(deferred: DeferredEnvelope): Promise<FireResult> {331 const authCheck = await reauthorizeAtFireTime(deferred);332 if (!authCheck.valid) {333 return {334 state: "HOLD",335 reason: authCheck.reason,336 receipt: await vault.append({ type: "deferred_fire_hold", ... })337 };338 }339 return forgeExecute(authCheck.scope);340}341```342343### Tests required344345- Cron job queued today with `expires_at = today + 1h` → tomorrow HOLD346- Scheduled deployment after upstream service became unavailable → HOLD with explicit reason347- Revoked session → all queued actions in that session become HOLD348- Branch changed between queue and fire → re-judge blast radius, may HOLD349- Retry queue after original action's rollback path broken → HOLD350351### Authority scope352353WAJIB 5 is **T3 (F13 ratification required)**. This skill section documents the protocol. Implementation requires scheduler integration with the kernel judgment pipeline.354355---356357## Organ Disagreement Doctrine (WAJIB 7 — added 2026-07-19)358359When GEOX, WEALTH, and WELL recommend incompatible actions — all internally valid — the federation needs a binding resolution order. Majority vote does not apply; three organs are not interchangeable voters.360361### Resolution order (mandatory)3623631. **Hard veto conditions** (any organ may trigger HOLD with evidence)3642. **Blast-radius precedence** (organ owning dominant irreversible consequence receives higher weight)3653. **Pareto search** (seek alternative satisfying all hard constraints before escalation)3664. **F13 escalation** (if no acceptable option → escalate to Arif, never silently fall back to execution order)367368### Hard veto table369370| Organ | May veto when | Release condition |371|---|---|---|372| GEOX | Physical infeasibility OR unacceptable earth uncertainty | New data or revised interpretation that resolves the issue |373| WELL | Unsafe human or operational readiness | Confirmed safe capacity + witness |374| WEALTH | Insolvency, unaffordable exposure, prohibited capital risk | Restructured deal OR capital limit raised |375| arifOS | Authority, law, or constitutional violation | Ratified exception OR constitutional amendment |376377A veto MUST include evidence + defined release condition. Rhetorical veto is not permitted.378379### Blast-radius precedence380381| Dominant irreversible consequence | Owner |382|---|---|383| Subsurface irreversibility | GEOX |384| Capital survival / sovereign financial exposure | WEALTH |385| Human safety, dignity, organizational collapse | WELL |386| Constitutional / authority conflict | arifOS |387388### Pareto search before escalation389390Before escalating to F13, attempt:391- Smaller scope392- Delayed decision393- More evidence394- Pilot programme395- Reduced capital396- Different staffing397- Reversible experiment398399### F13 escalation payload400401If no acceptable Pareto option exists:402403```yaml404unresolved_conflict:405 intent: <original request>406 vetoes: [{organ, reason, evidence, release_condition}, ...]407 competing_actions:408 - path: <GEOX recommendation>409 evidence: <refs>410 consequences: <list>411 reversibility: <class>412 - path: <WEALTH recommendation>413 ...414 - path: <WELL recommendation>415 ...416 recommended_least_regret: <one path with justification>417 explicit_unknowns: <list>418```419420The kernel does NOT manufacture consensus. It escalates with full disagreement visible.421422### Authority scope423424WAJIB 7 is **T3 (F13 ratification required)**. Doctrine documentation is T1.425426---427428*Skill version 1.0.0 — AAA Skill Library*