Skip to content

fix(skills): remove netclaw keyword blacklist, fix enrichment race, fix flaky test#333

Merged
Aaronontheweb merged 2 commits into
devfrom
fix/netclaw-keyword-blacklist
Mar 20, 2026
Merged

fix(skills): remove netclaw keyword blacklist, fix enrichment race, fix flaky test#333
Aaronontheweb merged 2 commits into
devfrom
fix/netclaw-keyword-blacklist

Conversation

@Aaronontheweb

Copy link
Copy Markdown
Collaborator

Summary

  • Remove "netclaw" from GenericKeywords blacklist in SystemSkillSyncService — was preventing identity queries from triggering skill auto-loading
  • Apply fallback keywords immediately on startup before LLM enrichment completes (fixes bug: skill enrichment race condition — early sessions miss keyword-based auto-loading #316 race window)
  • Purge stale keyword cache files when skill versions change
  • Fix flaky Reconcile_disables_zombie_oneshot_reminders test — PreStart reconcile raced with test's zombie write
  • Add error reply in HandleReconcileAsync catch block so Ask callers don't hang on transient failures

Closes #328, closes #316

Test plan

  • dotnet build — clean
  • dotnet test — 1,133 tests pass
  • Flaky test passes 20/20 runs after fix

…race, fix flaky test (#328, #316)

Three skill auto-loading fixes:

1. Remove "netclaw" from GenericKeywords blacklist — the token was stripped
   from all skill keyword indexes, making identity queries like "What version
   of Netclaw" unable to trigger netclaw-manual. TF-IDF weighting already
   handles common tokens.

2. Apply fallback keywords immediately on startup before LLM enrichment
   completes. Previously, fallback keywords were skipped when a chat client
   provider was available, leaving a race window with zero keywords.

3. Purge stale keyword cache files during RescanAndUpdateIndex so old version
   caches don't cause misses that force re-enrichment.

Also fixes:

4. Flaky test Reconcile_disables_zombie_oneshot_reminders — PreStart's
   Self.Tell(ReconcileReminders) could arrive after the test's Ask, causing
   the startup reconcile to race with the zombie write. Fixed by draining
   the mailbox with two reconcile Asks before writing test data.

5. HandleReconcileAsync catch block now replies with zero-result ack so
   external Ask callers don't hang until timeout on transient failures.
@Aaronontheweb Aaronontheweb enabled auto-merge (squash) March 20, 2026 19:00
@Aaronontheweb Aaronontheweb merged commit 880f6ee into dev Mar 20, 2026
3 checks passed
@Aaronontheweb Aaronontheweb deleted the fix/netclaw-keyword-blacklist branch March 20, 2026 19:11
@Aaronontheweb Aaronontheweb mentioned this pull request Mar 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant