Fork channel

Create a new channel as a copy of main.

Rename channel

Rename main to:

Delete channel

Delete main? This cannot be undone.

me.txt
To Do
=====

Tui/Bellbird
rifleman/tomtit+contact/Tieke/identify

Go through birdnet categories sample and try to work out what they are

Dont Know should be cert 0, not 70: Julia code is not correct, But I maky have fixed it as some is fine

Look at kiwi dataset

New Dataset

  os.Exit

test database line update with index+fk v fk only

- Rename `tools/import/` → `tools/ingest/` and `package imp` → `package ingest`. High churn, low semantic gain. Consider only if the name starts causing confusion in daily work.

Read audio tool (pointless atm as most models can't use it)

Bounding Box script.py

day  -> civil sunrise to !!civil sunset!!
claude --resume "reject-reserved-key-bindings"

multi label in tui. How?? also cli

Clip from wav when no .data file—skraak save image????

find morepork mewing sound for dataset

segment unstructured import into batches of 10000 files to keep within buffer limits, structured imports should be fine as we are talking 1 sd card (24/7 its 16000 max)

ingest my training datasets 

buy a drive to backup mac ~

Update tools could allow setting active to false?? Currently do not

Make freebird to .data tool


SKILLS
======

project/.claude/skills for most then link to project/.agents/skills for pi with:
find .claude/skills -type f -exec bash -c 'mkdir -p "$(dirname ".pi/skills/${1#.claude/skills/}")" && ln -s "$PWD/$1" "$PWD/.pi/skills/${1#.claude/skills/}"' _ {} \;

call-library: currently have a hard copy in .claude symlinked to .pi 


Labels in opensoundscape multi-species model
=====================
ausbit1       Australasian Bittern
bluduc1       Blue Duck                                                              
comcha        Common Chaffinch
comred        Redpoll (Common)
dunnoc1       Dunnock
eurbla        Eurasian Blackbird
eursta        European Starling
fernbi1       New Zealand Fernbird
grskiw1       Great Spotted Kiwi/Roroa
gryger1       Gray Gerygone/Grey Warbler
kea1          Kea
liskiw1       Little Spotted Kiwi/Kiwi pukupuku                                                    
lotkoe1       Long-tailed Koel/Cuckoo                                                       
morepo2       Morepork
nezbel1       New Zealand Bellbird
nezfan1       New Zealand Fantail/Piwakawaka
nezkak1       New Zealand Kaka
nezpig2       New Zealand Pigeon/Kereru                                                    
nezrob3       South Island Robin/Kakaruai
nibkiw1       North Island Brown Kiwi/Kiwi-nui
okbkiw1       Okarito Brown Kiwi/Rowi
parake        parakeet sp./Kakariki                                                          
pipipi1       Pipipi/Brown Creeper
riflem1       Rifleman
saddle3       South Island Saddleback?Tieke
shbcuc1       Shining Bronze-Cuckoo
silver3       Silvereye
sobkiw2       Southern Brown Kiwi (South I.)/Tokoeka
soioys1       South Island Oystercatcher
soiwre1       South Island Wren
sonthr1       Song Thrush
spocra2       Spotless Crake
tomtit1       Tomtit/Miromiro
tui1          Tui
varoys1       Variable Oystercatcher                                                 
weka1         Weka
yellow2       Yellowhammer
weta          Weta (not bird)
cangoo1       Canada Goose


# Active DB Labels      ebird_code
------------------      ----------
Australasian Bittern    ausbit1         x
Bellbird                nezbel1         x
Chaffinch               comcha          x
Crake_Spotless          spocra2         x
Cuckoo_Shining          shbcuc1         x
Duck_Blue_Whio          bluduc1         x
Dunnock_Hedge_Sparrow   dunnoc1         x
Eurasian Blackbird      eurbla          x
European Starling       eursta          x
Fantail                 nezfan1         x
Fernbird                fernbi1         x
Haast Tokoeka           sobkiw2         x
Kaka                    nezkak1         x
Kea                     kea1            x
Kereru                  nezpig2         x
Kiwi pukupuku           liskiw1         x
Kiwi_Nth_Is_Brown       nibkiw1         x
Long-tailed Koel        lotkoe1         x
Morepork                morepo2         x
Oystercatcher_Variable  varoys1         x
Parakeet                parake          x
Pipipi                  pipipi1         x Brown Creeper
Redpoll                 comred          x
Rifleman                riflem1         x
Robin_Sth_Is            nezrob3         x
Roroa                   grskiw1         x
Rowi                    okbkiw1         x
S. Fiordland Tokoeka    sobkiw1         x
Saddleback_Sth_Is       saddle3         x
Silvereye               silver3         x
South Island Oystercatcher    soioys1   x
South Island Wren       soiwre1         X
Thrush_Song             sonthr1         x
Tomtit                  tomtit1         x
Tui                     tui1            x
Warbler_Grey            gryger1         x
Weka_spp                weka1           x
Yellowhammer            yellow2         x
Check
Don't Know
Fake Kiwi
Korero Gecko                            x
Question
Weta                                    x
Noise

Keybindings 
===========
see ~/.skraak/config.json

TUI cmd
=======
skraak calls classify --folder . --filter opensoundscape-multi-1.0 --species comcha

David's Kiwi Workflow
=====================

- cp data to main drives
- backup audio
- skraak import bulk to get files into db
- Run opensoundscape models on audio
- skraak calls from-preds to make .data files
- Run julia DFMN model (also LSK model for Inge)
- skraak calls classify TUI for kiwi on 1 model
- use minimax to check "Don't Know"
- skraak calls propogate on other models
- use minimax on cert 70 Kiwi and maybe Don't Know
- skraak calls classify on remaining cert 70 Kiwi
- skraak calls classify --sample 10 on cert 90 Kiwi
- skraak calls push-certainty on remaining cert 90 Kiwi if all good
- use minimax skill /detect-anomalies to correct problems
- skraak calls classify to resolve certainty mismatches
- skraak calls summarise
- run skill /data-mapping
- run skill /import-segments

Code stuff
==========

time ./skraak calls from-preds --csv /media/david/SSD4/Twenty_Four_Seven/R620/2024-05-06/preds9_opensoundscape-multi-1.0_2025-07-22.csv > /media/david/SSD4/Twenty_Four_Seven/R620/2024-05-06/preds9_opensoundscape-multi-1.0_2025-07-22.json

for item in a # **options selected for kiwi work**
    try
        jsonfile = replace(item, ".csv" => ".json")
        run(pipeline(`skraak calls from-preds --csv $item --gap-multiplier 3 --min-detections 1`, jsonfile))
    catch e
        @error "skraak failed on $item" exception=(e, catch_backtrace())
    end
end


model = "/media/david/SSD2/Secondary_Models/DFMN_Inge/model_DFMN1-5_CPU_epoch-9-0.9737-2024-10-25.jld2"
labels = Dict(1 => "Duet", 2 => "Female", 3 => "Male", 4 => "Don't Know")
## Check this logic in the code
predict(a, model, labels)

model = "/media/david/SSD2/Secondary_Models/LSK/model_GSK_LSK_DFM_FT_IngeDFMN_1-5_1-0_CPU_epoch-9-0.9745-2025-01-13.jld2"
labels = Dict(1 => "GSK", 2 => "GSK", 3 => "GSK", 4 => "LSK", 5 => "LSK", 6 => "LSK")
## Needed to change the logic
predict(a, model, labels)

model = "/media/david/SSD2/Secondary_Models/DFMN_Pomona/model_DFMN1-5_Pomona3_CPU_epoch-18-0.9785-2025-03-02.jld2"
labels = Dict(1 => "Duet", 2 => "Female", 3 => "Gecko", 4 => "Male", 5 => "Don't Know")
## Check this logic in the code
predict(a, model, labels)




## Change the date
for item in x
    try
        jsonfile = "$item/segment_summary_2026-05-31.json"
        run(pipeline(`skraak calls summarise --folder $item`, jsonfile))
    catch e
        @error "skraak failed on $item" exception=(e, catch_backtrace())
    end
end

skraak calls summarise --folder ./recordings --brief

# print brief summary to repl
for item in a
   try
       run(pipeline(`skraak calls summarise --folder $item --brief`))
   catch e
       @error "skraak failed on $item" exception=(e, catch_backtrace())
   end
end

# save brief summary to ~
open("/home/david/summary_2026-05-08.jsonl", "w") do f
   for item in x
       try
           run(pipeline(`skraak calls summarise --folder $item`, `jq 'del(.segments)'`, f))
       catch e
           @error "skraak failed on $item" exception=(e, catch_backtrace())
       end
   end
end


OLLAMA
======
ollama run gemma4:e4b
ollama launch pi --model gemma4:e4b # don't do this, it alters pi config

ollama list

ollama rm <model-name>
ollama rm qwen3.5:9b

(base) 2024-01-03 ➤ ollama list
NAME               ID              SIZE      MODIFIED
qwen3.5:9b         6488c96fa5fa    6.6 GB    8 days ago
ministral-3:14b    4760c35aeb9d    9.1 GB    8 days ago
gemma4:26b         5571076f3d70    17 GB     8 days ago
granite4.1:8b      444af1c4b2fe    5.3 GB    9 days ago
gemma4:e4b         c6eb396dbd59    9.6 GB    4 weeks ago


        Opensoundscape    Hand Classified         BirdNET     Hand Classified
        ==============    ===============         =======     ===============
comcha         X                X                                   X
eurbla         X                X                                   X
gryger1        X                X                   none?           X       White-throated Sparrow (auto), Gray Gerygone
nezfan1        X                                                    X       NZ Fantail
tomtit1    V. Bad            garbage                                X
nezrob1                         X                                   X       SI Robin (no types)
kereru
rifleman
silvereye
bellbird 
tui
nezkak1  V. Bad(gecko, wing)                                    V Bad, ongoing bellbird
weka1    V. Bad(noise)                              none
morepo2  many Gecko                                             Also Gecko 
lotkoe1         X               X                                   X



  ┌──────┬───────────────────────────┬───────┐
  │ Rank │          Species          │ Count │
  ├──────┼───────────────────────────┼───────┤
  │ 1    │ White-throated Sparrow    │ 5163  │ Gryger
  ├──────┼───────────────────────────┼───────┤
  │ 2    │ New Zealand Bellbird      │ 3812  │
  ├──────┼───────────────────────────┼───────┤
  │ 3    │ Superb Lyrebird           │ 3645  │ nezbel1+territorial
  ├──────┼───────────────────────────┼───────┤
  │ 4    │ Common Crossbill          │ 3247  │
  ├──────┼───────────────────────────┼───────┤
  │ 5    │ Javan Shortwing           │ 2824  │
  ├──────┼───────────────────────────┼───────┤
  │ 6    │ Grey Gerygone             │ 2286  │ Gryger
  ├──────┼───────────────────────────┼───────┤
  │ 7    │ Yellow-bellied Flycatcher │ 1018  │
  ├──────┼───────────────────────────┼───────┤
  │ 8    │ Tui                       │ 1004  │
  ├──────┼───────────────────────────┼───────┤
  │ 9    │ Common Redpoll            │ 949   │
  ├──────┼───────────────────────────┼───────┤
  │ 10   │ Winter Wren               │ 932   │
  ├──────┼───────────────────────────┼───────┤
  │ 11   │ Blue-backed Manakin       │ 784   │
  ├──────┼───────────────────────────┼───────┤
  │ 12   │ Hermit Thrush             │ 762   │
  ├──────┼───────────────────────────┼───────┤
  │ 13   │ Blue Whistling-Thrush     │ 728   │
  ├──────┼───────────────────────────┼───────┤
  │ 14   │ Eastern Wood-Pewee        │ 712   │
  ├──────┼───────────────────────────┼───────┤
  │ 15   │ Common Nightingale        │ 678   │
  ├──────┼───────────────────────────┼───────┤
  │ 16   │ Red-breasted Flycatcher   │ 678   │
  ├──────┼───────────────────────────┼───────┤
  │ 17   │ New Zealand Kaka          │ 639   │
  ├──────┼───────────────────────────┼───────┤
  │ 18   │ Common Firecrest          │ 608   │
  ├──────┼───────────────────────────┼───────┤
  │ 19   │ New Zealand Fantail       │ 583   │ X
  ├──────┼───────────────────────────┼───────┤
  │ 20   │ Tomtit                    │ 570   │ X
  ├──────┼───────────────────────────┼───────┤
  │ 21   │ Eurasian Golden Oriole    │ 548   │
  ├──────┼───────────────────────────┼───────┤
  │ 22   │ Musician Wren             │ 526   │
  ├──────┼───────────────────────────┼───────┤
  │ 23   │ White-browed Warbler      │ 497   │
  ├──────┼───────────────────────────┼───────┤
  │ 24   │ Cedar Waxwing             │ 487   │
  ├──────┼───────────────────────────┼───────┤
  │ 25   │ Iberian Chiffchaff        │ 473   │
  ├──────┼───────────────────────────┼───────┤
  │ 26   │ Common Redstart           │ 461   │
  ├──────┼───────────────────────────┼───────┤
  │ 27   │ European Greenfinch       │ 454   │
  ├──────┼───────────────────────────┼───────┤
  │ 28   │ Wood Thrush               │ 432   │
  ├──────┼───────────────────────────┼───────┤
  │ 29   │ Pheasant Cuckoo           │ 427   │
  ├──────┼───────────────────────────┼───────┤
  │ 30   │ Western Wood-Pewee        │ 399   │
  └──────┴───────────────────────────┴───────┘


skraak calls summarise --folder . > call_summary.json

# mapping.json for my big kiwi dataset
{
  "Kiwi":       {"species": "Kiwi"},
  "Geese": {"species": "__NEGATIVE__"},
  "Kaka":        {"species": "__NEGATIVE__"},
  "Kea":        {"species": "__NEGATIVE__"},
  "LTC":        {"species": "__NEGATIVE__"},
  "Morepork":        {"species": "__NEGATIVE__"},
  "Not":        {"species": "__NEGATIVE__"},
  "Plover":        {"species": "__NEGATIVE__"}
}

# make csv to use for training big kiwi dataset
skraak calls clip-labels --folder . --mapping ./mapping.json \
       --clip-duration 5 --clip-overlap 0 --min-label-overlap 0.25 --final-clip full \
       --output ./clip_labels.csv




Common Bird List for R620
=========================
comcha        Chaffinch
eurbla        Blackbird
gryger1       Grey Warbler
kea1          Kea
lotkoe1       Long-tailed Cuckoo
morepo2       Morepork
nezbel1       Bellbird
nezfan1       Fantail
nezkak1       Kaka
nezpig2       Kereru
nezrob3       Kakaruai
pipipi1       Pipipi
riflem1       Rifleman
saddle3       Tieke
silver3       Silvereye
sobkiw2       Fiordland Tokoeka
soioys1       Pied Oystercatcher
tomtit1       Tomtit
tui1          Tui
yefpar3       Kakariki
yellow2       Yellowhammer
weta          Weta
gecko         Korero Gecko




Category A - Direct/Obvious Mappings

 ┌──────────────────────┬────────┬─────────┬───────────────────────────────────────┐
 │ BirdNET              │ Count  │ Code    │ Notes                                 │
 ├──────────────────────┼────────┼─────────┼───────────────────────────────────────┤
 │ New Zealand Bellbird │ 3,812  │ nezbel1 │ Exact match                           │
 ├──────────────────────┼────────┼─────────┼───────────────────────────────────────┤
 │ Grey Gerygone        │ 2,286  │ gryger1 │ BirdNET's name for Grey Warbler       │
 ├──────────────────────┼────────┼─────────┼───────────────────────────────────────┤
 │ Tui                  │ 1,004  │ tui1    │ Exact match                           │
 ├──────────────────────┼────────┼─────────┼───────────────────────────────────────┤
 │ New Zealand Kaka     │ 603    │ nezkak1 │ Exact match                           │
 ├──────────────────────┼────────┼─────────┼───────────────────────────────────────┤
 │ Morepork             │ 287    │ morepo2 │ Exact match                           │
 ├──────────────────────┼────────┼─────────┼───────────────────────────────────────┤
 │ Silvereye            │ 248    │ silver3 │ Exact match                           │
 ├──────────────────────┼────────┼─────────┼───────────────────────────────────────┤
 │ Pipipi               │ 79     │ pipipi1 │ Exact match                           │
 ├──────────────────────┼────────┼─────────┼───────────────────────────────────────┤
 │ Long-tailed Koel     │ 47     │ lotkoe1 │ BirdNET's name for Long-tailed Cuckoo │
 ├──────────────────────┼────────┼─────────┼───────────────────────────────────────┤
 │ Eurasian Blackbird   │ 27     │ eurbla  │ Exact match                           │
 ├──────────────────────┼────────┼─────────┼───────────────────────────────────────┤
 │ North Island Robin   │ 132    │ nezrob3 │ Robin = Kakaruai                      │
 ├──────────────────────┼────────┼─────────┼───────────────────────────────────────┤
 │ European Robin       │ 124    │ nezrob3 │ Same species                          │
 ├──────────────────────┼────────┼─────────┼───────────────────────────────────────┤
 │ Dunnock              │ 89     │ dunnoc1 │ Exact match                           │
 ├──────────────────────┼────────┼─────────┼───────────────────────────────────────┤
 │ Song Thrush          │ 173    │ sonthr1 │ Exact match                           │
 ├──────────────────────┼────────┼─────────┼───────────────────────────────────────┤
 │ Common Redpoll       │ 949    │ comred  │ Exact match                           │
 ├──────────────────────┼────────┼─────────┼───────────────────────────────────────┤
 │ Common Starling      │ 1      │ eursta  │ Exact match                           │
 ├──────────────────────┼────────┼─────────┼───────────────────────────────────────┤
 │ Yellowhammer         │ 4      │ yellow2 │ Exact match                           │
 ├──────────────────────┼────────┼─────────┼───────────────────────────────────────┤
 │ House Sparrow        │ 36     │ —       │ House Sparrow not on R620 common list │
 ├──────────────────────┼────────┼─────────┼───────────────────────────────────────┤
 │ Common Magpie        │ 320    │ —       │ Magpie not on R620 common list        │
 ├──────────────────────┼────────┼─────────┼───────────────────────────────────────┤
 │ Eurasian Skylark     │ 5      │ —       │ Not on R620 list                      │
 ├──────────────────────┼────────┼─────────┼───────────────────────────────────────┤
 │ Total                │ ~9,779 │         │                                       │
 └──────────────────────┴────────┴─────────┴───────────────────────────────────────┘

 ────────────────────────────────────────────────────────────────────────────────

 Category B - Real Mislabels (need classification)

 These are BirdNET labels that don't match any NZ species name, and the segments are actually NZ
 birds:

 ┌─────────────────────────────────────┬─────────┬─────────────────────────────────┬──────────┐
 │ BirdNET                             │ Count   │ Suspected Code(s)               │ Priority │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ Common Crossbill                    │ 3,247   │ comred? comcha?                 │ 🔴       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ Javan Shortwing                     │ 2,824   │ tomtit1? nezrob3?               │ 🔴       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ Yellow-bellied Flycatcher           │ 1,018   │ nezfan1? tomtit1?               │ 🔴       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ Winter Wren                         │ 932     │ pipipi1? riflem1?               │ 🔴       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ Blue-backed Manakin                 │ 784     │ riflem1?                        │ 🔴       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ Hermit Thrush                       │ 762     │ eurbla? sonthr1?                │ 🔴       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ Blue Whistling-Thrush               │ 728     │ eurbla?                         │ 🔴       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ Eastern Wood-Pewee                  │ 712     │ tomtit1? nezfan1?               │ 🔴       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ Common Nightingale                  │ 678     │ nezrob3?                        │ 🔴       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ Red-breasted Flycatcher             │ 678     │ tomtit1? nezfan1?               │ 🔴       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ Common Firecrest                    │ 608     │ silver3? riflem1?               │ 🔴       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ Eurasian Golden Oriole              │ 548     │ tui1? nezbel1?                  │ 🔴       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ Musician Wren                       │ 526     │ pipipi1?                        │ 🔴       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ White-browed Warbler                │ 497     │ gryger1?                        │ 🟡       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ Cedar Waxwing                       │ 487     │ eursta?                         │ 🟡       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ Iberian Chiffchaff                  │ 473     │ gryger1?                        │ 🟡       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ Common Redstart                     │ 461     │ nezrob3? tomtit1?               │ 🟡       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ European Greenfinch                 │ 454     │ comcha? comred?                 │ 🟡       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ Wood Thrush                         │ 432     │ eurbla? sonthr1?                │ 🟡       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ Pheasant Cuckoo                     │ 427     │ lotkoe1?                        │ 🟡       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ Western Wood-Pewee                  │ 399     │ tomtit1?                        │ 🟡       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ Greater Racket-tailed Drongo        │ 376     │ ?                               │ 🟡       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ White-eared Honeyeater              │ 358     │ nezbel1?                        │ 🟡       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ Broad-winged Hawk                   │ 351     │ Harrier? (not on list)          │ 🟡       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ Northern Pygmy-Owl                  │ 347     │ morepo2?                        │ 🟡       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ Black-capped Chickadee              │ 345     │ ?                               │ 🟡       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ Bartlett's Tinamou                  │ 344     │ ?                               │ 🟡       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ Northern Saw-whet Owl               │ 344     │ morepo2?                        │ 🟡       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ Varied Thrush                       │ 332     │ eurbla? sonthr1?                │ 🟡       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ Black-faced Antthrush               │ 330     │ ?                               │ 🟡       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ Lesser Redpoll                      │ 324     │ comred                          │ 🟡       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ Goldcrest                           │ 298     │ silver3? riflem1?               │ 🟡       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ Eurasian Pygmy-Owl                  │ 286     │ morepo2?                        │ 🟡       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ Common Chiffchaff                   │ 280     │ gryger1?                        │ 🟡       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ Eurasian Siskin                     │ 270     │ comred? comcha?                 │ 🟡       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ White-throated Gerygone             │ 263     │ gryger1?                        │ 🟡       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ Two-barred Crossbill                │ 262     │ comred? comcha?                 │ 🟡       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ Grey Shrikethrush                   │ 260     │ ?                               │ 🟡       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ Little Friarbird                    │ 166     │ nezbel1?                        │ 🟢       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ Great Tit                           │ 165     │ tomtit1?                        │ 🟢       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ Golden-bellied Gerygone             │ 161     │ gryger1?                        │ 🟢       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ Red Wattlebird                      │ 151     │ nezbel1?                        │ 🟢       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ Common Kingfisher                   │ 133     │ — (Kingfisher not on R620 list) │ 🟢       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ Rufous Whistler                     │ 11      │ ?                               │ 🟢       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ Rock Wren                           │ 15      │ — (Rock Wren not on R620 list)  │ 🟢       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ Nightingale Wren                    │ 159     │ ?                               │ 🟢       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ Little Spiderhunter                 │ 117     │ ?                               │ 🟢       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ ... and ~1,400 more with count < 10 │         │                                 │ 🟢       │
 ├─────────────────────────────────────┼─────────┼─────────────────────────────────┼──────────┤
 │ Total                               │ ~38,000 │                                 │          │
 └─────────────────────────────────────┴─────────┴─────────────────────────────────┴──────────┘



segments with no calltype
  ┌─────────┬───────┬─────────────────────┬──────────────┐
  │ Species │ Total │     Classified      │ Unclassified │
  ├─────────┼───────┼─────────────────────┼──────────────┤
  │ comcha  │ 2022  │ 1950 (311+551+1088) │ 72           │
  ├─────────┼───────┼─────────────────────┼──────────────┤
  │ eurbla  │ 467   │ 406 (81+182+89+54)  │ 61           │
  ├─────────┼───────┼─────────────────────┼──────────────┤
  │ gryger1 │ 5879  │ 5382 (5372+8+2)     │ 497          │
  ├─────────┼───────┼─────────────────────┼──────────────┤
  │ lotkoe1 │ 27    │ 12                  │ 15           │
  ├─────────┼───────┼─────────────────────┼──────────────┤
  │ morepo2 │ 137   │ 135 (1+105+8+21)    │ 2            │
  ├─────────┼───────┼─────────────────────┼──────────────┤
  │ nezbel1 │ 6919  │ 150 (11+26+7+106)   │ 6769         │
  ├─────────┼───────┼─────────────────────┼──────────────┤
  │ nezfan1 │ 844   │ 839 (546+240+53)    │ 5            │
  ├─────────┼───────┼─────────────────────┼──────────────┤
  │ nezpig2 │ 65    │ 65                  │ 0            │
  ├─────────┼───────┼─────────────────────┼──────────────┤
  │ pipipi1 │ 31    │ 31                  │ 0            │
  ├─────────┼───────┼─────────────────────┼──────────────┤
  │ silver3 │ 2876  │ 11 (5+6)            │ 2865         │
  ├─────────┼───────┼─────────────────────┼──────────────┤
  │ tomtit1 │ 2167  │ 461 (200+261)       │ 1706         │
  ├─────────┼───────┼─────────────────────┼──────────────┤
  │ tui1    │ 1258  │ 2                   │ 1256         │
  └─────────┴───────┴─────────────────────┴──────────────┘

XNCKPSQERHNFZ6R4HHLDYJJUZEAPCKI4NXZITXVOMJOQXSUD6QQAC 




npm install -g @earendil-works/gondolin bash
```
- import { RealFSProvider, VM } from "@earendil-works/gondolin";
+ import _gondolin from "@earendil-works/gondolin";
+ const { RealFSProvider, VM } = _gondolin;

```
for microvm:
pi -e pi-gondolin.ts


guru callers ./pkg/path/funcname

### Callgraph Commands                                                            
                                                                                
 1. Full project-internal callgraph (best for understanding code flow):         
                                                                                
 ```bash                                                                        
   callgraph -algo rta skraak 2>/dev/null | awk -F'\t' '$1 ~ /^skraak/ && $3 ~ /^skraak/' | grep -v '\$' | sed 's/--static-[0-9]*:[0-9]*-->/  →/; s/--dynamic-[0-9]*:[0-9]*-->/  →/' | sort -u                                                                    
 ```                                                                            
                                                                                
 2. Cross-package calls only (who calls across package boundaries):             
                                                                                
 ```bash                                                                        
   callgraph -algo rta skraak 2>/dev/null | awk -F'\t' '$1 ~ /^skraak/ && $3 ~ /^skraak/' | grep -v '\$' | awk -F'\t' '{split($1,a,"."); split($3,b,"."); if(a[1]!=b[1]) print}' | sed 's/--static-[0-9]*:[0-9]*-->/  →/; s/--dynamic-[0-9]*:[0-9]*-->/  →/' | sort -u                                                                      
 ```                                                                            
                                                                                
 3. Trace a specific function — "what does CallsClip call?":                    
                                                                                
 ```bash                                                                        
   callgraph -algo rta skraak 2>/dev/null | grep 'tools.CallsClip\t' | grep -v '\$'                                                                           
 ```                                                                            
                                                                                
 4. Who calls a specific function — "who uses GenerateSpectrogram?":            
                                                                                
 ```bash                                                                        
   callgraph -algo rta skraak 2>/dev/null | grep 'GenerateSpectrogram' | grep -v '\$' | grep -v 'GenerateSpectrogram\t.*→.*GenerateSpectrogram'              
 ```                                                                            
                                                                                
 5. Dynamic (interface/virtual) calls only — find where interfaces dispatch:    
                                                                                
 ```bash                                                                        
   callgraph -algo rta skraak 2>/dev/null | grep 'dynamic' | grep '^skraak'     
 ```                                                                            











24/7
============
rifleman--tomtit TODO

  species       count   calltype        calltype_count
  Don't Know    22639
  Kiwi  1946    Duet    122
  Kiwi  1946    Female  126
  Kiwi  1946    Male    1698
  BlackShag     932
  comcha        485     alarm   383
  comcha        485     contact 75
  comcha        485     song    24
  comcha                buzz    225
  nezbel1       455     alarm   273
  nezbel1       455     repetitive      167
  nezbel1       455     territorial     1
  identify      351
  Noise 306
  gryger1       237     song    136
  silver3       216     contact 150
  silver3       216     song    53
  saddle3       180
  nezkak1       176
  morepo2       175     morepork        1
  morepo2       175     pow     19
  morepo2       175     trill   135
  tomtit1       123     song    123
  Tree  115
  eurbla        85      contact 4
  eurbla        85      peaky   2
  eurbla        85      song    76
  Gecko 80
  nezrob3       69
  yefpar3       62
  weka1 56
  tui1  33      alarm   22
  bluduc1       31      duet    5
  bluduc1       31      rattle  4
  bluduc1       31      whistle 22
  kea1  28
  nezfan1       25      contact 21
  nezfan1       25      song    3
  pipipi1       21      song    21
  lotkoe1       16      whistle 16
  Cicada        15
  riflem1       11
  cangoo1       9
  Fly   6
  shbcuc1       6
  weta  3
  nezpig2       2       wingbeat        2
  soioys1       2
  yellow2       1       song    1



 cd /media/david/TwentyFourSeven/Twenty_Four_Seven
  for x in \
    R620/2024-05-06 R635/2025-02-25 R635/2026-03-23 R620/2026-03-23 \
    R778/2026-03-23 HCT_K08-24_H2/2025-06-16 R620/2025-02-25 R343/2025-02-25 \
    R306/2026-03-23 R635/2024-05-06 R287/2024-05-06 R18/2026-03-23 \
    GR5/2025-01-01 R743/2026-03-23 R287/2026-03-23 R219/2026-03-23 \
    R16/2023-12-25 J11/2026-04-06 HCT_18807_H4/2025-06-16 HCT_18103_H5/2025-06-16 \
    C03/2024-05-05 ; do
    echo ">>> $x"
    skraak calls classify --species Gecko --folder "$x"
  done

24/7
======
for x in \
 AC21/2024-01-03 AC34/2024-01-03 AC43/2024-01-03 AC83/2023-01-03 B02/2024-01-03 B22/2023-10-29 B29/2024-01-03 B29/2025-04-16 B29/2025-12-12 B40/2025-12-12 C03/2023-09-11 C03/2024-05-05 C03/2025-02-25 C03/2026-04-06 D03/2023-12-25 F09/2026-04-06 G05/2023-09-11 G05/2024-05-05 G05/2025-02-25 G05/2026-04-06 GR1/2025-01-01 GR2/2025-01-01 GR3/2025-01-01 GR4/2025-01-01 GR5/2025-01-01 GR6/2025-01-01 GR7/2025-01-01 GR8/2025-01-01 GR9/2025-01-01 H01/2023-09-11 H01/2024-05-05 H01/2025-02-25 H01/2026-04-06 H09/2023-12-25 HCT10_Kaipo/2026-05-04 HCT6_Kaipo/2026-05-04 HCT9_Kaipo/2026-05-04 HCT_18103_H5/2025-06-16 HCT_18807_H4/2025-06-16 HCT_18807_H4/2026-05-04 HCT_H13-74/2025-11-22 HCT_JOG_H7/2025-05-02 HCT_K04-14_H3/2025-06-16 HCT_K06-10_H1/2025-11-22 HCT_K08-24_H2/2025-06-16 HCT_KWR075/2025-05-04 J11/2023-09-11 J11/2024-05-05 J11/2025-02-25 J11/2026-04-06 P09/2023-09-11 P09/2023-12-25 P09/2024-05-05 P09/2025-02-25 P09/2026-04-06 R16/2023-12-25 R18/2026-03-23 R219/2026-03-23 R287/2024-05-06 R287/2025-02-25 R287/2026-03-23 R306/2025-02-25 R306/2026-03-23 R343/2024-05-06 R343/2025-02-25 R343/2026-03-23 R620/2024-05-06 R620/2025-02-25 R620/2026-03-23 R635/2024-05-06 R635/2025-02-25 R635/2026-03-23 R743/2026-03-23 R778/2024-05-06 R778/2025-02-25 R778/2025-05-23 R778/2026-03-23 ; do
    echo ">>> $x"
    skraak calls classify --species 'comcha+_' --folder "$x"
  done



 please use skill /call-classification-ollama to search all "tui1" with certainty 70 in folder
  /media/david/SSD4/Twenty_Four_Seven/R620/2024-05-06 . load some examples from /call-library for tui1+alarm. the
  task it to increase certainty of all tui alarm calls to 90, do nothing for all calls that are not alarm calls. I already started ollama with gemma 


  ┌────────────────┬────────────┬────────────┐
  │    Location    │  New Lat   │  New Lon   │
  ├────────────────┼────────────┼────────────┤
  │ Island Harbour │ -45.782409 │ 166.577672 │  1
  ├────────────────┼────────────┼────────────┤
  │ North Harbour  │ -45.774468 │ 166.592332 │  3
  ├────────────────┼────────────┼────────────┤
  │ Pigeon 1       │ -45.712388 │ 166.565470 │
  ├────────────────┼────────────┼────────────┤
  │ Pigeon 2       │ -45.783649 │ 166.577404 │
  ├────────────────┼────────────┼────────────┤
  │ South Harbour  │ -45.782936 │ 166.585270 │  4
  ├────────────────┼────────────┼────────────┤
  │ Waka           │ -45.774993 │ 166.597458 │  2
  └────────────────┴────────────┴────────────┘