docs(orchestrator): add §13 wake-up honesty + dual-path resume (Oracle ruling 2026-05-02) #31

Merged
pdurlej merged 2 commits from claude/docs/wakeup-honesty-section-13 into main 2026-05-03 00:57:15 +02:00
Collaborator

Summary

Codifies Oracle GPT-5.5 Pro's verdict on three silent ScheduleWakeup failures within 24h (Pan Herbata's most embarrassing pattern of the day). Empirically confirmed via in-session CronList: the tool's "Next wakeup scheduled for HH:MM" return string is misleading — nothing was actually queued.

What §13 says

  • Banned: direct ScheduleWakeup with <<autonomous-loop-dynamic>> sentinel; --dangerously-skip-permissions mode
  • Default (Rule B — honesty): tell operator "I cannot self-wake; come back at HH:MM". Never promise wake without tested mechanism.
  • Path A — CronCreate (intra-session, operator at home but away from keyboard): native Claude Code cron, verifiable via CronList, 7-day expiry
  • Path B — Dispatch via state/WAKE_ME_AT.json (cross-session, operator mobile): paste-ready operator-pre-approved scope from Oracle (no --dangerously-skip-permissions, narrow read+state-only writes)
  • Decision tree for which path to use given operator location
  • Anti-rule: three failures = no fourth attempt

Sources

  • .sisyphus/oracle-paste/wakeup-mechanism-2026-05-02.md — full Oracle prompt
  • Operator's Oracle-response paste in conversation 2026-05-02 ~23:30 CEST
  • Empirical CronList showing ScheduleWakeup direct-call did not enqueue (this session)
  • Anthropic Claude Code docs: "Run prompts on a schedule"; "Choose a permission mode"

Scope (per charter §3)

Docs-only, single-file (+89 LOC, including subsections, examples, decision tree). No behavior change, no charter touch. Pre-auth A applies → push directly per operator night-session pre-auth.

Operator decision codified

Operator picked OBA paths (A + B) tonight, not just one — because home-away and mobile use cases are different. Path A is fast (in-session) but session-bound; Path B is durable but Dispatch-mediated. Decision tree picks for me based on operator location.

Co-authors

  • Operator (dual-path A+B decision + Oracle prompt+route)
  • GPT-5.5 Pro (Oracle ruling + paste-ready permission scope)
  • Claude Opus 4.7 (empirical CronList confirmation)
## Summary Codifies Oracle GPT-5.5 Pro's verdict on three silent `ScheduleWakeup` failures within 24h (Pan Herbata's most embarrassing pattern of the day). Empirically confirmed via in-session `CronList`: the tool's "Next wakeup scheduled for HH:MM" return string is misleading — nothing was actually queued. ## What §13 says - **Banned**: direct `ScheduleWakeup` with `<<autonomous-loop-dynamic>>` sentinel; `--dangerously-skip-permissions` mode - **Default (Rule B — honesty)**: tell operator "I cannot self-wake; come back at HH:MM". Never promise wake without tested mechanism. - **Path A — `CronCreate`** (intra-session, operator at home but away from keyboard): native Claude Code cron, verifiable via `CronList`, 7-day expiry - **Path B — Dispatch via `state/WAKE_ME_AT.json`** (cross-session, operator mobile): paste-ready operator-pre-approved scope from Oracle (no `--dangerously-skip-permissions`, narrow read+state-only writes) - **Decision tree** for which path to use given operator location - **Anti-rule**: three failures = no fourth attempt ## Sources - `.sisyphus/oracle-paste/wakeup-mechanism-2026-05-02.md` — full Oracle prompt - Operator's Oracle-response paste in conversation 2026-05-02 ~23:30 CEST - Empirical `CronList` showing ScheduleWakeup direct-call did not enqueue (this session) - Anthropic Claude Code docs: "Run prompts on a schedule"; "Choose a permission mode" ## Scope (per charter §3) Docs-only, single-file (+89 LOC, including subsections, examples, decision tree). No behavior change, no charter touch. Pre-auth A applies → push directly per operator night-session pre-auth. ## Operator decision codified Operator picked **OBA paths** (A + B) tonight, not just one — because home-away and mobile use cases are different. Path A is fast (in-session) but session-bound; Path B is durable but Dispatch-mediated. Decision tree picks for me based on operator location. ## Co-authors - Operator (dual-path A+B decision + Oracle prompt+route) - GPT-5.5 Pro (Oracle ruling + paste-ready permission scope) - Claude Opus 4.7 (empirical CronList confirmation)
Codifies Oracle's verdict on three silent ScheduleWakeup failures in 24h
(overnight 03:30, evening 22:30, late evening 23:15 CEST).

## Empirical confirmation (in-session)

CronList after three ScheduleWakeup calls returned ONE cron task — and not
one of claude's. ScheduleWakeup direct-calls do NOT register real scheduled
tasks, despite returning misleading "Next wakeup scheduled for HH:MM" string.
This was the diagnostic Oracle suggested; ran it; confirmed.

## Banned

- Direct ScheduleWakeup with <<autonomous-loop-dynamic>> sentinel as self-wake
- --dangerously-skip-permissions / bypassPermissions mode

## Default (Rule B — honesty)

Before idle: finish or tell operator "I cannot reliably self-wake; come back
at HH:MM". Never promise autonomous wake unless tested in-session.

## Path A — CronCreate (intra-session, operator at home but away from screen)

Use CronCreate (deferred tool, load via ToolSearch). Native Claude Code mechanism
that ACTUALLY works (unlike ScheduleWakeup). Verify via CronList immediately
after; if not registered, fall back to Rule B.

## Path B — Dispatch via state/WAKE_ME_AT.json (cross-session, operator mobile)

Operator-pre-approved Dispatch wake scope (Oracle paste-ready):
- Allowed mode: --permission-mode dontAsk with explicit allow rules
- Allowed tools: Read/Glob/Grep/LS in repo, Edit/Write only under state/,
  read-only shell (git/gh/cat/tail/jq/find without -delete/-exec)
- Denied: push/commit, deploys, SSH mutations, DB changes, secrets, destructive

## Decision tree

- Operator present → finish/end clean, no scheduling
- At home but away ≤7d → CronCreate + verify CronList; fallback Rule B
- Mobile / cross-session → state/WAKE_ME_AT.json + Rule B in parallel
- Else → Rule B only

## Sources

- Oracle response 2026-05-02 ~23:30 CEST (state/oracle-paste/wakeup-mechanism-2026-05-02.md)
- Anthropic Claude Code docs (run prompts on schedule; permission modes)
- Empirical CronList result this session
- state/DISPATCH_CONTRACT.md

## Anti-rule

Three silent ScheduleWakeup failures = enough. Do not work around with
--dangerously-skip-permissions. If CronCreate doesn't register, default to
Rule B; do not invent third path.

Per charter §3 review-by-impact: docs only, single-file, +89 LOC, no charter
touch, no behavior change → Small. Pre-auth A.

Co-authored-by: Operator (dual-path A+B decision: home-away vs cross-session-mobile)
Co-authored-by: GPT-5.5 Pro (Oracle ruling + permission scope)
Co-authored-by: Claude Opus 4.7 (empirical CronList confirmation)
Operator clarified 2026-05-03 00:15 CEST that I had codified Path A too narrowly.

Before: "intra-session, operator at home but away from screen"
        "operator is in the house but stepped away from the keyboard"

After:  "intra-session, drain quotas during operator absence"
        "the point is not 'I cannot reach the keyboard' — it is
         'the subscription token meter keeps running; lepszy spalony token
         w garści niż nie spalony'"

Added: match cron interval to TASK pace, not operator pace. Schedule one step
at a time (canary check at 7min for ~5min canary; wave synthesis at 40min for
30min batch), evaluate on fire, schedule next. Don't pre-schedule chains.

Decision tree updated: top-level question is now "is there a longer task to
keep grinding on?" not "is operator nearby?". Token economics, not
operator-presence semantics.

Per charter §3: docs-only single-file ~10 LOC nuance fix → Small. Pre-auth A.

Co-authored-by: Operator (clarification of CronCreate intent)
Co-authored-by: Claude Opus 4.7
Sign in to join this conversation.
No reviewers
No labels
W6d-automerge-calibration
agent/claude-code
agent/codex
agent/hermes
agent/iskra
agent/ollama
agent/patchwarden
automerge-candidate
class/security-sensitive
cutover-gate
dependency/blocked
dependency/blocks-others
dependency/cross-repo
dependency/needs-confirmation
domain:agents
domain:ci
domain:docs
domain:forgejo
domain:infra
domain:memory
domain:runtime
domain:signal
domain:ux
flow/architecture
flow/blocked
flow/deployed
flow/done
flow/implementation
flow/intake
flow/maintained
flow/observed
flow/ready
flow/refining
flow/retired
flow/review
iterating
judge/codex-candidate
judge/hermes-candidate
judge/low-confidence
judge/needs-refinement
judge/operator-needed
judge/p0
judge/p1
judge/p2
judge/p3
judge/park
judge/patchwarden-candidate
judge/stale-priority
kind/adr
kind/bug
kind/chore
kind/feature
kind/infra
kind/ops
kind/refactor
kind/research
large-impact
merge/auto
merge/manual
merge/manual-dependency-conflict
merge/manual-failing-tests
merge/manual-merge-conflict
merge/manual-missing-review
merge/manual-operator-preference
merge/manual-red-zone
merge/manual-security-sensitive
merge/manual-unclear-scope
merge/manual-unknown
meta
mode:operator-only
mode:patchwarden-iskra-approved
mode:safe-auto
needs-operator-decision
needs-triage
not-ready
observed/erroring
observed/needs-followup
observed/pending
observed/retire-candidate
observed/unused
observed/used
operator-emotional
owner-attention
phase/02
phase/03
priority:p0
priority:p1
priority:p2
priority:p3
proposed
ready-for-agent
ready-for-operator
recovery
review:claude-reviewed
review:codex-reviewed
review:dziadek-reviewed
review:needs-human
risk/exposure
risk/process
risk/product
risk/runtime
safety:external-write
safety:no-prod-mutation
safety:prod-impact
safety:secret-touch
size/large
size/medium
size/small
size/tiny
size/unknown
source/adr
source/agent-generated
source/manual
source/operator-chat
source/voice-note
status:blocked
status:codex-ready
status:merged:pending-evidence
status:needs-evidence
status:operator-needed
status:parked
tier/full
tier/lite
tier/stacked
tier:0-platform-substrate
tier:1-iskra-value-layer
tier:2-tools-products-modules
type:bug
type:chore
type:docs
type:feat
type:policy
type:research
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
pdurlej/platform!31
No description provided.