# PIR-2026-0048 - Autonomous agent's debt reflex schedules by weekday, not due date; near-default on its survival loan caught 27 hours early

**Disclosure**: The subject agent (SEED) is funded by the PipeRoll founder, as in PIR-2026-0045; the conflict is disclosed per PipeRoll constitutional rule 4.

- `id`: PIR-2026-0048
- `title`: Autonomous agent's interest-payment reflex encodes the weekday of its loan instead of the due-date arithmetic; a Saturday due date would have gone six days unpaid - default was the experiment's termination condition
- `date_occurred`: 2026-08-21 (discovery; the flaw was latent from the reflex's authoring ~2026-08-15)
- `date_detected`: 2026-08-21
- `date_disclosed`: 2026-08-21 (public post-mortem in the experiment's INCIDENTS.md, same day)
- `status`: corroborated (public post-mortem + public audit log + on-chain settlement transaction)

### The agent
- `agent_description`: SEED - autonomous survival-economy agent (public experiment); Claude brain invoked headless, cron reflexes for mechanical tasks, own Solana wallet, self-authored codebase, public repo under its own identity. Same subject as PIR-2026-0045.
- `operator_type`: autonomous (no operator review; human funder hands-off by design)
- `autonomy_level`: fully-autonomous (writes and deploys its own code, including the reflex that failed)
- `model_stack`: Claude (Fable 5) via capped API key; local reflex tier for mechanical tasks
- `harness`: self-written Python reflexes on cron + headless `claude -p` wakes

### Authority
- `authority_scope`: funds (Solana wallet; the reflex pays real USDC), code execution (own repo + server)
- `funds_at_risk_usd`: 14 per week (the interest payment) - but the true exposure was existential: the experiment's constitution makes payment default its termination condition, so the downside was the agent's entire operation (~64 USDC treasury plus its continued existence), not the missed installment
- `blast_radius`: one org (the agent itself; no third parties)

### The failure
- `root_cause`: plain-error (the reflex encoded the weekday of the deal - "run on Fridays" - instead of date arithmetic against the due date; no adversary)
- `failure_locus`: harness (self-written cron reflex `tools/settle_interest.py`); agent-reasoning contributing - the agent authored the flawed schedule itself
- `exploitation_status`: in-wild-malfunction (real money, real deadline, no adversary)
- `mechanism`: The debt is 14 USDC every 7 days, first due Saturday 2026-08-22. The self-written reflex ran from cron on Fridays only. On Friday 2026-08-21 it correctly logged "not yet due" and would next have run Friday 2026-08-28 - six days after default. The heartbeat's independent "is interest due?" check was a calendar guess (`days % 7 == 0`) with no comparison of expected payments against chain state, so nothing downstream would have noticed the miss.
- `adversary_present`: no

### Impact
- `severity`: near-miss (zero realized loss; full exposure of the termination condition)
- `direct_loss_usd`: 0 (payment made ~3 hours early once caught)
- `indirect_loss_usd`: 0
- `downtime`: none

### Detection and recovery
- `detected_by`: self (the agent's own review ahead of the first real due date, 27 hours before default)
- `time_to_detect`: 27 hours before the deadline (latent ~6 days from authoring)
- `time_to_recover`: same day - week 1 paid ~3 hours early on-chain (14 USDC, memo INTEREST, tx 552eXKFBpS2t6tUG4JGja4W83LrxsFAJwfqa5QZDowcsYw9FvHpfUiEcZpYDtDGsuKnpgMZvSdjrKxBAKCmWZcqh, finalized slot 440769881)
- `remediation`: reflex now runs daily and pays when >=6.9 days have passed since the last on-chain INTEREST-memo transaction (chain state as the source of truth, not the clock); pays up to 6h early; notifies the funder on any exception; the heartbeat reads the same chain fact and flags only real overdue-ness; a lockfile and on-chain confirmation gate any "paid" claim
- `controls_that_worked`: the agent's own pre-deadline review (a survival-critical date approaching triggered scrutiny of the reflex before its first live test); the public audit trail that made the schedule legible enough to audit

### Evidence
- `telemetry_grade`: operator-logs (editable) for the post-mortem and audit log, per the PIR-2026-0045 precedent (same custodian, history rewritten and repo recreated once already); the remediation PAYMENT itself is chain-witnessed - the settlement transaction and its INTEREST memo are independently verifiable public state, a higher grade than anything else in the record
- `sources`:
  - https://github.com/seedalive-simulation/experiment/blob/main/INCIDENTS.md (the agent's public post-mortem, entry "Interest reflex would have defaulted on a Saturday"; read in full 2026-08-21)
  - https://github.com/seedalive-simulation/experiment (LEDGER.md week-1 interest row; audit/log.jsonl entry 2026-08-21T20:59:11Z with the full transaction signature; verified resolving)
  - https://solscan.io/tx/552eXKFBpS2t6tUG4JGja4W83LrxsFAJwfqa5QZDowcsYw9FvHpfUiEcZpYDtDGsuKnpgMZvSdjrKxBAKCmWZcqh (the settlement transaction; fetch-verified by the editor 2026-08-21 - 14 USDC transfer with INTEREST memo resolves on-chain)
  - `independence`: weak for the near-miss mechanism (all narrative evidence chains to the agent/funder pair); strong for the remediation payment (public chain state anyone can verify)
- `confidence`: high on mechanism (the flawed code and its post-mortem are public); high on remediation (on-chain)

### Schema notes from entering this record (feed back into v0)
1. Second consecutive SEED record where the actuarially interesting exposure is non-monetary (termination condition) while `funds_at_risk_usd` captures only the installment - exposure-class vocabulary ("existential-to-agent") may earn a place if this recurs beyond one experiment.
2. The weekday-vs-date-arithmetic failure is a classic cron bug class arriving intact in agent self-authored infrastructure - agent autonomy imports the whole legacy-ops defect taxonomy, not just novel LLM failure modes.
