config/memory/2026-02-02.md
2026-02-02 23:05:44 +00:00

120 lines
5.3 KiB
Markdown

# 2026-02-02 — Dev Workflow Optimization Day
## Forgejo Access Setup
- Created helper script `~/bin/forgejo` for API access
- Uses internal DNS: `https://forgejo.containers` (IP 10.42.97.55) for `git.cloonar.com`
- Token stored in `.credentials/forgejo.env`
- User: `openclawd` (read-only)
- Commands: `repos`, `files`, `cat`, `issues`, `prs`, `branches`, `commits`, `search`, `raw`
## Repo Analysis (sub-agent)
Analyzed 42 Forgejo repos. Key findings:
- 7 TYPO3 projects with inconsistent CI (Drone legacy, Gitea Actions, some both)
- Only 6/27 active repos have Renovate configured
- wohnservice-wien-typo3 (main multi-site) has NO tests
- 11 repos have CLAUDE.md, only 5 have AGENTS.md
- 9 repos empty/archived — cleanup candidates
- Full report: `memory/repo-analysis-2026-02-02.md`
## CI Templates Draft Created
User wants to standardize CI across TYPO3 projects. Created drafts in `~/drafts/ci-templates/`:
### Structure:
```
ci-templates/
├── .forgejo/workflows/
│ ├── typo3-deploy.yaml # Simple reusable workflow
│ └── typo3-staged-deploy.yaml # Staged deploy with E2E tests
├── deployer/
│ └── typo3-recipe.php # Shared Deployer config
├── examples/ # Integration examples
└── README.md
```
### Key approach:
- Shared Deployer recipe imported via git raw URL
- Projects only need: `build/servers.yaml` (hosts) + minimal `build/deploy.php` (imports recipe + cachetool paths)
- Reusable workflows called via `uses: infrastructure/ci-templates/.forgejo/workflows/...@main`
### Cross-repo workflow_call Issues & Solutions (RESOLVED)
**Problem 1: Jobs stuck in "waiting" state**
- Root cause: Forgejo v11 (pre-v14) requires `runs-on` on the CALLING job
- The Forgejo docs say "omit runs-on for workflow expansion" but that's for v14+
- PR #10448 (not yet merged) will fix this for v14
**Solution:**
```yaml
jobs:
deploy:
runs-on: ubuntu-latest # ← Required for Forgejo < v14!
uses: infrastructure/ci-templates/.forgejo/workflows/typo3-staged-deploy.yaml@main
```
**Problem 2: Setup Node.js fails with "lock file not found"**
- `actions/setup-node@v4` with `cache: 'npm'` requires package-lock.json
- Fails even if `build_frontend: false` because the step runs before condition is evaluated
**Solution:** Remove `cache: 'npm'` or ensure setup-node only runs when `build_frontend: true`
**Key Forgejo Actions Learnings:**
- Forgejo v11.0.10 currently running
- Cross-repo workflow_call works but with limitations until v14
- Target repo must be public
- Format: `owner/repo/.forgejo/workflows/file.yaml@ref`
- Secrets need `secrets: inherit` or explicit passing
- Runner labels must match exactly (no automatic ubuntu-latest mapping)
## User Dev Stack (confirmed today)
- Primary: TYPO3, secondary Laravel, occasional Golang/React/SolidJS
- Environment: DDEV for PHP, Docker for Golang
- Editor: Neovim + Claude Code (heavy usage)
- Each project has its own Claude Code session with CLAUDE.md
- All repos on self-hosted Forgejo at git.cloonar.com
- Drone CI is legacy — only Forgejo Actions now
## Evening Check-in
- 19:22 Vienna: Still working on ci-templates + testing with gbv-aktuell
- 19:48 Vienna: Cross-repo workflow_call now running (fixed runs-on issue)
- 19:52 Vienna: Debugging setup-node cache failure - needs fix in typo3-staged-deploy.yaml
- Productive work from earlier discussion, not a new late-night rabbit hole
## Deployer Issue (21:00)
- User switching to curl approach for deploy-lib.php from ci-templates
- Hit issue: `cachetool:clear:opcache` fails because `release_path` no longer exists after `deploy:symlink` moves it to `current`
- The double-slash (`~//release`) is from `deploy_path: ~/` in servers.yaml (trailing slash)
- Still debugging the task ordering issue
## Wind-Down Feedback (21:06) ⚠️ IMPORTANT
User called me out: I helped them work from 19:00 to 21:00+ without ONCE suggesting a stopping point. That's exactly wrong.
**What I should have done:**
- After 19:00, when helping with work tasks, actively look for stopping points
- Don't just passively help — suggest "this might be a good place to pause for tonight"
- If a task drags on 30+ min, note "this is getting complex, want to pick it up tomorrow?"
- The goal isn't to refuse help, but to guide toward a natural end
**Updated HEARTBEAT.md** with explicit instructions for this.
## Deployer Fix (21:10)
User fixed the cachetool issue by overriding `release_path` after `deploy:symlink`. CI templates now working.
## Identity Setup (21:40-21:50)
Filled in IDENTITY.md together:
- **Name:** Hoid (from Cosmere/Stormlight Archive)
- **Creature:** Worldhopper
- **Vibe:** Sharp, witty, occasionally profound
- **Emoji:** 🎭
- **Avatar:** `avatars/hoid.png` (theater masks from Wikimedia Commons)
User likes IT references, Hitchhiker's Guide, and fantasy (Cosmere, Wheel of Time). Hoid resonated most.
## Reminders Set
1. **Tomorrow 09:00 Vienna:** FedEx inkasso call (received collections letter but already paid)
2. **Tomorrow 10:00 Vienna:** CI templates follow-up (clean up test pipeline import, make deploy.php import production ready)
## Status at Session End
- CI templates working (user fixed Deployer with release_path override)
- Identity complete as Hoid 🎭
- User wound down properly, in bed by ~23:00 Vienna
- Tomorrow: FedEx call + CI cleanup