# Daily Note — 2026-05-26

## Key Events
- 

## Decisions
- 

## Promotions (to durable knowledge)
- 

## Open Loops
- 

## Candidate Promotions (auto)
- 

<!-- AUTO_PROMOTIONS_START -->
## Candidate Promotions (auto)
_Generated: 2026-05-26 02:00:02 PDT_

### From memory/* (today + yesterday)
- 2:- Sent [tmp/sermon-cron-config.stdinfix-review.yaml](/Users/openclaw/.openclaw/workspace/tmp/sermon-cron-config.stdinfix-review.yaml) separately into the Telegram thread because the earlier attachment did not come through.
- 12:- Follow-up checks found no embedded bootstrap JSON in that shell and no local Planning Center / PCO credentials in `~/.openclaw/.env` or workspace contract YAMLs, so selector tuning and existing-credential API access are both ruled out for now.
- 14:- config patched for llm-task enable + tools.alsoAllow on weekly sermon workflow thread
- 20:- Root cause confirmed from installed Lobster code and a direct gateway probe: Lobster `llm_task.invoke` expects the OpenClaw `llm-task` tool to return a response envelope containing `result.output`, but the installed OpenClaw `llm-task` plugin currently returns `{"ok":true,"result":{"content":[...],"details":{...}}}`. Direct `/tools/invoke` calls to `llm-task` succeed, so the remaining blocker is a Lobster/OpenClaw response-schema mismatch, not the sermon workflow itself.
- 21:- V1 cookie-auth decision accepted. Current Church Center browser auth remains acceptable for v1 because the persistent `church_center_session` cookie expires on `2026-06-08 12:37:56 PDT`, which covers two Sundays. However, the weekly sermon cron is not yet live in `openclaw cron list`, so the planned ops-maintainer Telegram failure path exists only in the review YAML artifact and has not been live-verified end to end.
- 23:- Confirmed `llm-task` does not accept raw `llm-input.json` as the top-level invocation schema in this setup; it requires the OpenClaw wrapper payload shape, which is why the direct `/tools/invoke` bypass was necessary instead of passing the workflow artifact unchanged.
- 25:- Operational decision held: do not install the weekly sermon cron until the Notion write path is repaired, because shipping the cron now would knowingly install a failing Sunday job. Cookie-based Church Center auth remains accepted for v1 through the current session expiry window, but failure-notification needs live verification only after the cron is actually installable.
- 30:- Confirmed Poppler install landed successfully: `which pdftotext` now resolves to `/opt/homebrew/bin/pdftotext`, so the existing `hasCommand('pdftotext')` check in `fetch_resource_content` will succeed without further code changes.
- 31:- Diagnosed the remaining Squarespace fetch issue precisely: unauthenticated `curl -L` to the life-group PDF succeeds with `302 -> 200`, but the workflow's default Node `https.get` returned `403`. Reproduced the difference directly and confirmed that adding browser/curl-like headers (`User-Agent`, `Accept`, `Accept-Language`) flips the same Node request to `302 -> 200`. This means the blocker was request shape, not Church Center session auth.
- 38:- Attempted one last full `lobster run` after the formatter patch. Fetch/PDF stages completed and `llm_input.json` was regenerated, but the run stalled inside `llm_process` and never rolled forward the downstream artifacts. To avoid blocking Sunday on a formatter-only rerun regression, the final page was regenerated through the patched `build_notion_payload` + `create_notion_page` logic using the already-successful extracted content and validated LLM output from the previous successful run. Formatting is therefore proven on the live writer path even though the last full wrapper run did not exit cleanly.
- 40:- Added worker-based `llm_process` path to `~/.openclaw/workflows/sermon-automation.lobster` and confirmed it completes in about 134s on the full 2026-05-24 sermon payload. Latest follow-up patch added `NOTION_BIBLE_DB_ID` into `build_notion_payload` and `create_notion_page` step env blocks, but a fresh env-loaded rerun still failed at Notion create because the generated request body preserved the literal placeholder `${NOTION_BIBLE_DB_ID}` as `parent.database_id`. Current blocker is Lobster env interpolation into the Notion payload path, not LLM execution.

### Open corrections
- 2026-03-02 — Telegram routing: use only current DM thread; never legacy Gizmo thread.
<!-- AUTO_PROMOTIONS_END -->

<!-- AUTO_PENDING_STATUS_START -->
## Pending Promotion Status (auto)
- Open pending promotions: 7
- Conversation intent status: OPEN (resolve or dismiss pending items before closure)
<!-- AUTO_PENDING_STATUS_END -->

<!-- AUTO_CRITICAL_FACTS_START -->
## Critical Facts Retrieval Check (auto)
# Critical Facts Check
- [PASS] telegram_single_thread_rule: Telegram must use only current DM thread; no legacy Gizmo thread.
- [PASS] telegram_confirm_policy: Non-reminder/non-memory-ingestion state changes require CONFIRM (with explicit Notion single-task exception).
- [PASS] timezone_set: Braden timezone is captured.

Summary: 3/3 passed
<!-- AUTO_CRITICAL_FACTS_END -->
