Add nightly check - Feb 26

This commit is contained in:
OpenClaw Bot 2026-02-26 22:01:56 -06:00
parent 1b61757ea2
commit 96dd555128

View File

@ -1,241 +1,36 @@
🌙 Late-Night Check — 2026-02-26 (3:04 AM)
---
🌙 **Nightly Check — Thu Feb 26, 10:00 PM**
📊 Status:
- Active tasks: 5 (hardening queued; cron active)
- Overdue: 0
- Git: Uncommitted changes (BRAIN.md, MEMORY.md, research/ scripts—commit AM)
- Tomorrow's priority: Hardening task (ed4bc5aa-8c84-4f95-b339-cf2ea17fd02b)—cron/Bob progress.
- Bob-Implementer subagent running: Installing Qwen3.5-35B-A3B via Ollama
- Viral X Discovery: ON HOLD
- Sprint 2: All 28 tasks marked done
- Git: Uncommitted changes (memory file)
🎯 Suggestion:
Morning: Gantt Board for hardening (test if complete), git commit workspace. Builds reliable agents for iOS empire—rest well.
🎯 Tomorrow's Priority:
Review Qwen3.5-35B-A3B installation results from Bob-Implementer
---
## [2026-02-26 16:46] ✅ Created daily-digest.sh script
## [2026-02-26 21:48] 🟡 Viral X Discovery Skill - ON HOLD
### What was requested
Matt wanted a shell script to generate the daily digest reliably (to fix the broken cron job).
Test the viral-x-discovery skill with "openclaw" search.
### What was done
- Created `/Users/mattbruce/.openclaw/workspace/scripts/daily-digest.sh`
- Script handles JSON escaping properly using `jq`
- Uses temp files to avoid argument length issues
- Checks for existing digest before creating
- Generates proper format with emojis and `[Read more →](URL)` links
- Can be run manually: `./daily-digest.sh [YYYY-MM-DD]`
- Fixed array reference bug in parse_tavily_output() function
- Successfully tested search for "openclaw"
- Found 1 result: @christinetyip
- Confirmed X's anti-bot protections limit content extraction
### Usage
```bash
# Run for today
./scripts/daily-digest.sh
### Limitation discovered
X/Twitter has aggressive anti-bot protection. Even with Scrapling, full content extraction is blocked. Tavily search works for discovery, but extraction yields limited results (page titles/navigation only).
# Run for specific date
./scripts/daily-digest.sh 2026-02-26
```
### Status
**ON HOLD** — User decided to pause this project for now. Skill is functional but limited by X's protections.
---
## [2026-02-26 15:52] ✅ Fixed blog-backup skill to match mission-control-docs pattern
### What was requested
Continue working to fix issues with the daily blog and create a skill similar to mission-control-docs.
### What was done
- Updated `~/.agents/skills/blog-backup/lib/blog.sh` to use shared `auth-api` transport
- Created `/Users/mattbruce/Documents/Projects/OpenClaw/Web/blog-backup/scripts/blog.sh` CLI
- Added contract tests at `~/.agents/skills/blog-backup/tests/test_contract.sh` (all 6 pass)
- Updated SKILL.md with full documentation
- Updated TOOLS.md with CLI usage examples
- Committed changes to both workspace and blog-backup repo
- Pushed to Gitea
### Files Created/Modified
- `~/.agents/skills/blog-backup/lib/blog.sh` - Updated with auth-api integration
- `~/.agents/skills/blog-backup/SKILL.md` - Full documentation
- `~/.agents/skills/blog-backup/tests/test_contract.sh` - Contract tests
- `/Users/mattbruce/Documents/Projects/OpenClaw/Web/blog-backup/scripts/blog.sh` - CLI script
- `~/.openclaw/workspace/TOOLS.md` - Updated documentation
### Architecture
Following API-centric CLI pattern:
```
Skill (blog.sh) → auth-api transport → API (x-api-key) → Database
```
### Testing
```bash
# Run contract tests
bash ~/.agents/skills/blog-backup/tests/test_contract.sh
# Result: PASS: blog-backup contract tests
```
---
## [2026-02-26 10:36] ✅ Completed - Shared auth-api skill integration
### What was requested
Matt asked to build/integrate/test a no-duplication auth API layer shared by `gantt-tasks` and `mission-control-docs`.
### What was decided
- Do NOT merge domain skills.
- Create shared `auth-api` transport skill/module and wire both domain skills to it.
### What was done
- Created new skill: `~/.agents/skills/auth-api/`
- `SKILL.md`
- `lib/auth_api.sh` with `api_call`, `api_preflight`, `api_require_token`
- Refactored `gantt-tasks/lib/tasks.sh`
- Added source to shared `auth_api.sh`
- Replaced local `_api_call` implementation to delegate to shared `api_call`
- Refactored `mission-control-docs/lib/docs.sh`
- Added source to shared `auth_api.sh`
- Replaced local `_api_call` implementation to delegate to shared `api_call`
- Updated both SKILL docs to reflect architecture:
- `Domain Skill -> auth-api transport -> API -> DB`
- Added tests:
- `~/.agents/skills/auth-api/tests/test_auth_api.sh` (mocked curl contract test)
- Ran tests:
- Initial fail due to grep pattern parsing; fixed with `grep -F --`
- Final: `PASS: auth-api transport tests`
- Smoke checks passed:
- both domain libs source/load correctly
- both `_api_call` functions route through shared transport layer
### Follow-ups
- Optionally add retry/backoff policy in `auth_api.sh` once behavior is agreed.
### Additional completed (2026-02-26 10:39)
- Added per-domain contract tests with mocked shared transport:
- `~/.agents/skills/gantt-tasks/tests/test_contract.sh`
- verifies `task_create` contract (`GET /sprints`, `POST /tasks`)
- verifies `task_update` contract (`GET /tasks`, `POST /tasks` with status change)
- `~/.agents/skills/mission-control-docs/tests/test_contract.sh`
- verifies `mc_doc_create` contract (`POST /documents` payload)
- verifies `mc_doc_update` contract (`GET /documents?id=...`, `PATCH /documents` payload)
- Improved mock-call logging by base64-encoding payloads for multiline-safe assertions.
- Ran full suite:
- `PASS: gantt-tasks contract tests`
- `PASS: mission-control-docs contract tests`
- `PASS: auth-api transport tests`
### Additional completed (2026-02-26 10:40)
- Fixed consuming workflow skill `url-research-to-documents-and-tasks` to remove duplicate/orphan logic path.
- Replaced `orchestrator.sh` implementation with a thin wrapper that delegates to hardened script only:
- `orchestrator.sh -> bin/url-research.sh`
- Updated skill docs to point production entrypoint to `orchestrator.sh` (single source of truth).
- Verified script syntax:
- `bash -n orchestrator.sh`
- `bash -n bin/url-research.sh`
- Verified wrapper execution path:
- no-arg usage correctly routes and prints hardened usage
- run with URL starts hardened workflow phases/logging
### Rationale
- Prevents workflow drift where old orchestrator code and hardened code diverge.
- Keeps one execution path for future fixes and reliability improvements.
### Additional completed (2026-02-26 10:53)
- Implemented new shared skill: `workflow-checkpoints`
- `~/.agents/skills/workflow-checkpoints/SKILL.md`
- `~/.agents/skills/workflow-checkpoints/lib/checkpoints.sh`
- `~/.agents/skills/workflow-checkpoints/tests/test_checkpoints.sh`
- Added URL-keyed stable checkpoint model with 7-day TTL:
- key = `sha256(normalized_url)`
- payload files by type:
- `<key>-content.json`
- `<key>-analysis.json`
- `<key>-plan.md`
- metadata file:
- `<key>-meta.json` (expiresAtEpoch, ttl, sourceUrl)
- Integrated checkpoints into URL research workflow (`bin/url-research.sh`):
- extract-content phase: reuse from checkpoint if present, else compute and save
- analyze-fit phase: reuse from checkpoint if present, else compute and save
- create-plan phase: reuse from checkpoint if present, else compute and save
- touch checkpoint TTL on reuse
- Verified tests and syntax:
- `PASS: workflow-checkpoints tests`
- `PASS: auth-api transport tests`
- `PASS: gantt-tasks contract tests`
- `PASS: mission-control-docs contract tests`
- `bash -n` for updated workflow script passed
### Follow-up suggestions
- Add explicit progress comment text when checkpoint is reused (e.g., "reused checkpoint") for user visibility.
- Optionally add `checkpoint_list <url>` helper for quick debugging of cached artifacts.
### Additional completed (2026-02-26 10:58-11:00)
- Fixed all phase progress comments in URL research workflow to show consistent phase numbering (0-5):
- Phase 0: Task created
- Phase 1: Content extraction
- Phase 2: Document creation
- Phase 3: Fit analysis
- Phase 4: Implementation plan
- Phase 5: Final review and handoff
- Added Phase 4 success comment immediately after plan attachment (was missing before).
- Added source indicators to progress comments:
- `[reused checkpoint]` when using cached data
- `[reused existing]` when reusing doc from task description
- Made Phase 2 idempotent by parsing task description for existing `Document ID`.
- Created workflow summary doc: `WORKFLOW_SUMMARY.md` showing complete phase flow.
- Verified script syntax: `bash -n url-research.sh`
### Result
Now every phase visibly updates the task comment with a checked box, and reruns efficiently skip completed work using checkpoints + task description parsing.
### Additional completed (2026-02-26 11:13)
- Implemented cleanup + doc consolidation for Alice workflow skill:
- Added `run.sh` unified entrypoint for standalone shell usage.
- Kept OpenClaw mode explicit in `SKILL.md`: always execute via Alice-Researcher (`sessions_spawn`).
- Updated mandatory read section to consolidated docs only:
- `SKILL.md`
- `WORKFLOW_SUMMARY.md`
- Removed legacy drift-prone docs:
- `ANTI-PATTERNS.md`
- `TASK-FIRST-WORKFLOW.md`
- Verified syntax:
- `bash -n run.sh`
- `bash -n orchestrator.sh`
### Outcome
- Inside OpenClaw: route to Alice.
- Outside OpenClaw: run `~/.agents/skills/url-research-to-documents-and-tasks/run.sh` directly.
- Fewer docs, less drift, clearer operational path.
### Additional completed (2026-02-26 11:16)
- Implemented dry-run mode (option C):
- `--dry-run` (mock generators when checkpoints missing)
- `--dry-run-real` (real generators, still no writes)
- Updated `bin/url-research.sh`:
- Added flags parsing for dry-run modes
- Added no-write behavior for task/doc/attachment/status operations
- Checkpoints are read-only in dry-run (no put/touch writes)
- Added dry-run summary output at end
- Updated docs:
- `run.sh` header examples for dry-run usage
- `SKILL.md` standalone section includes dry-run commands
- Validation:
- `bash -n` checks passed for modified scripts
### Additional completed (2026-02-26 14:29)
- Implemented native macOS Swift CLI quote paster at `scripts/skrybe.swift`.
- Added subcommand structure scaffold:
- `skrybe quotes --paste` (implemented)
- `skrybe quotes --list` (planned placeholder)
- `skrybe quotes --add` (planned placeholder)
- Implemented `--paste` flow:
- Fetches random quote from `http://localhost:3001/quote`
- Parses JSON response `{ "quote": string, "author": string }`
- Formats output as `Quote — Author`
- Uses `NSPasteboard` to stage text and `CGEvent` Cmd+V to paste at cursor
- Added explicit error handling for:
- Invalid usage / unsupported subcommands
- API URL issues, unreachable API, bad HTTP status
- Invalid/malformed JSON response
- Pasteboard write failures
- Missing Accessibility permission
- Keyboard event creation failures
- Verified compilation with:
- `swiftc scripts/skrybe.swift -o scripts/skrybe`
- Verified CLI help output and error path when API is offline:
- `scripts/skrybe help`
- `scripts/skrybe quotes --paste` returns clean API-unreachable error when server is down ✅
### Future options if resumed
1. Use X API v2 Basic ($100/mo) for reliable access
2. Pivot to less protected platforms (Reddit, Hacker News, etc.)
3. Use as-is for discovery-only (get profile URLs, manual review)