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

5.3 KiB

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:

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