Просмотр исходного кода

CLAUDE.md: sessie-start-script + commit-wrapper gedocumenteerd, setsid-pty-recept verplaatst van TASKS.md-onderzoek naar herbruikbare conventie, concurrency-regel aangescherpt (bezig ook bij live-onderzoek, niet alleen builder-edits)

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
bob 1 месяц назад
Родитель
Сommit
38585668d7
1 измененных файлов с 64 добавлено и 15 удалено
  1. 64 15
      CLAUDE.md

+ 64 - 15
CLAUDE.md

@@ -37,11 +37,27 @@ zoeken of scannen — scope alle bestandsoperaties tot dit project.
   kunnen meerdere sessies tegelijk actief zijn.** Check vóór je een
   kunnen meerdere sessies tegelijk actief zijn.** Check vóór je een
   taak oppakt of de Eigenaar-regel al "— bezig" zegt door iemand
   taak oppakt of de Eigenaar-regel al "— bezig" zegt door iemand
   anders — zo ja, niet zelfstandig ook gaan bouwen aan hetzelfde
   anders — zo ja, niet zelfstandig ook gaan bouwen aan hetzelfde
-  bestand/component, vraag Bob eerst wie 'm afmaakt. Zet zelf "—
-  bezig" zodra je serieus begint. (Precedent 2026-08-04: twee sessies
-  pakten onafhankelijk dezelfde P0-taak op — Bob moest scheidsrechteren
-  tussen twee stukken werk aan hetzelfde bestand.)
-- **Een draaiend `ff-run-fvm.sh`/`flutter run`-proces is géén
+  bestand/component, vraag Bob eerst wie 'm afmaakt. **Zet zelf "—
+  bezig" zodra je serieus begint — dit geldt óók voor puur onderzoek/
+  reproductie (bv. een eigen `flutter run`-sessie starten om een stack
+  trace te vangen), niet alleen voor builder-edits.** (Precedent
+  2026-08-04: twee sessies pakten onafhankelijk dezelfde P0-taak op —
+  Bob moest scheidsrechteren tussen twee stukken werk aan hetzelfde
+  bestand. **Tweede precedent, 2026-08-09:** een sessie deed 20+
+  minuten actief P1-13-onderzoek — eigen `flutter run`-proces + een
+  nieuwe bug gevonden (P1-19) — zonder ooit "— bezig" te zetten; een
+  nieuwe sessie kwam er via `git diff`/proces-inspectie toevallig
+  achter vlak vóórdat ze zelf hetzelfde pad zou inslaan. Geen schade,
+  maar puur geluk — vandaar nu ook `ff-session-check.sh`, zie
+  hieronder.)
+- **Start elke sessie met `/home/bob/Projects/ff-session-check.sh`**
+  (géén argumenten nodig voor dit project) — bundelt in één keer
+  git-status, welke devices/emulators draaien, welke
+  flutter/ff-run-fvm/`script`-processen actief zijn (met leeftijd), en
+  welke `TASKS.md`-taken al "— bezig" staan. Vervangt de losse
+  handmatige `git status`/`adb devices`/`ps aux`-stappen hieronder —
+  dat was voorheen makkelijk (deels) over te slaan, dit script niet.
+  **Een draaiend `ff-run-fvm.sh`/`flutter run`-proces alléén is géén
   betrouwbaar signaal dat er "nu" iemand actief mee bezig is** —
   betrouwbaar signaal dat er "nu" iemand actief mee bezig is** —
   bevestigd 2026-08-07: meerdere van die processen bleken dagen oud
   bevestigd 2026-08-07: meerdere van die processen bleken dagen oud
   (gestart Aug05/Aug06, nog steeds draaiend), puur omdat het
   (gestart Aug05/Aug06, nog steeds draaiend), puur omdat het
@@ -51,8 +67,10 @@ zoeken of scannen — scope alle bestandsoperaties tot dit project.
   `CLAUDE.md` zelf ook wijzigingen tonen t.o.v. de laatste commit) —
   `CLAUDE.md` zelf ook wijzigingen tonen t.o.v. de laatste commit) —
   dát is een aanwijzing dat een sessie iets heeft afgerond/uitgevoerd
   dát is een aanwijzing dat een sessie iets heeft afgerond/uitgevoerd
   maar de afsluitroutine (commit+push, zie hieronder) nog niet heeft
   maar de afsluitroutine (commit+push, zie hieronder) nog niet heeft
-  gedaan. Zie zo'n situatie: bouw erop voort waar zinnig, maar commit
-  niet over andermans nog-niet-afgeronde wijziging heen zonder
+  gedaan. **Beide signalen samen (proces + ongecommitte diff) zijn het
+  sterkste bewijs van live werk** — het script hierboven toont ze
+  gecombineerd. Zie zo'n situatie: bouw erop voort waar zinnig, maar
+  commit niet over andermans nog-niet-afgeronde wijziging heen zonder
   navraag.
   navraag.
 
 
 ## Sessiegeheugen — afsluitroutine
 ## Sessiegeheugen — afsluitroutine
@@ -183,14 +201,33 @@ export PATH="/home/bob/fvm/bin:$HOME/.pub-cache/bin:$PATH" && /home/bob/Projects
   vóór je die crash reproduceert, ván een schone/crash-vrije pagina uit
   vóór je die crash reproduceert, ván een schone/crash-vrije pagina uit
   — dat reset de teller. Een `run_in_background`-Bash-aanroep van
   — dat reset de teller. Een `run_in_background`-Bash-aanroep van
   `ff-run-fvm.sh` heeft **stdin op `/dev/null`** (niet-interactief),
   `ff-run-fvm.sh` heeft **stdin op `/dev/null`** (niet-interactief),
-  dus `r`/`R` is dan niet te versturen; voor dat scenario is een
-  losse `flutter run` met stdin aan een `mkfifo`-named-pipe gekoppeld
-  nodig (niet via de standaardwrapper). Flutter DevTools (de
-  `devtools`-URL uit dezelfde run-log) is zelf ook een
-  Flutter-Web-canvas-app zonder toegankelijke DOM — geen bruikbare
-  omweg om alsnog bij de volledige historische foutenlijst te komen.
-
-Daarna automatisch:
+  dus `r`/`R` is dan niet te versturen. **Kale `mkfifo` alléén werkt
+  niet** (Flutter's keyboard-handler test op een echte TTY vóórdat hij
+  raw keypresses verwerkt — een FIFO is er geen, dus de `R` komt nooit
+  aan, ook al accepteert `flutter run` de pipe zonder foutmelding).
+  **Bevestigd werkend recept (2026-08-09): `setsid` op zowel de
+  FIFO-writer als de `flutter run`-aanroep zelf**, elk in een eigen
+  `run_in_background`-Bash-call:
+  ```
+  mkfifo /pad/naar/fifo
+  setsid bash -c "exec 9>'/pad/naar/fifo'; sleep 3600" < /dev/null > /dev/null 2>&1 &
+  disown
+  # aparte tool-call:
+  setsid script -qc "fvm flutter run -d <device>" /pad/naar/logfile < /pad/naar/fifo > /dev/null 2>&1 &
+  disown
+  # later, weer een eigen call, om te restarten:
+  printf 'R' > /pad/naar/fifo
+  ```
+  `setsid` geeft beide achtergrondprocessen een eigen sessie los van de
+  Bash-call die ze startte, dus ze overleven gewoon over meerdere losse
+  tool-calls heen. Flutter DevTools (de `devtools`-URL uit dezelfde
+  run-log) is zelf ook een Flutter-Web-canvas-app zonder toegankelijke
+  DOM — geen bruikbare omweg om alsnog bij de volledige historische
+  foutenlijst te komen. Zie `TASKS.md` P1-13 voor het bekende
+  resterende knelpunt (race tussen `R` sturen en de daaropvolgende
+  deep-link-navigatie bij een tool-call-round-trip ertussen).
+
+Daarna automatisch (of gebruik `ff-commit.sh`, zie hieronder):
 1. `git status --short`, dan `git add` — **niet blind `-A`**. Alleen
 1. `git status --short`, dan `git add` — **niet blind `-A`**. Alleen
    echte FlutterFlow/app-wijzigingen (`lib/`, `android/`, `ios/`,
    echte FlutterFlow/app-wijzigingen (`lib/`, `android/`, `ios/`,
    `pubspec*`, `.gitignore`). `.claude/` blijft uitgesloten
    `pubspec*`, `.gitignore`). `.claude/` blijft uitgesloten
@@ -209,6 +246,18 @@ export, vóór staging, deze regel weer toe als hij ontbreekt:
 (`CLAUDE.md` zelf overleeft een export altijd — check voor de
 (`CLAUDE.md` zelf overleeft een export altijd — check voor de
 zekerheid toch even.)
 zekerheid toch even.)
 
 
+**`/home/bob/Projects/ff-commit.sh` (2026-08-09) automatiseert bovenstaande
+3 stappen + de .gitignore-valkuil-check in één keer:**
+```
+/home/bob/Projects/ff-commit.sh "commit message"          # app-code modus (lib/android/ios/pubspec*/.gitignore)
+/home/bob/Projects/ff-commit.sh --docs "commit message"   # alleen CLAUDE.md/TASKS.md
+```
+Herstelt automatisch de `.claude/`-gitignore-regel, staget alleen wat
+echt gewijzigd is binnen de relevante paden, toont wat wél/niet
+meegaat, en vraagt bevestiging vóór commit+push. Optioneel
+`--dir <pad>` voor een ander projectpad dan de default
+(`ff-app/uitgaanskrant-1qhvtd`).
+
 ## Eerst research, dan bouwen
 ## Eerst research, dan bouwen
 
 
 Vóór een niet-triviale taak (bugfix, nieuw patroon, integratie): kort
 Vóór een niet-triviale taak (bugfix, nieuw patroon, integratie): kort