Skip to content

feat(entity-resolver): IRC identifier support (irc_username, <network>/<nick>) - #525

Merged
NOVA-Openclaw merged 3 commits into
mainfrom
feature/522-irc-entity-resolver
Jul 26, 2026
Merged

feat(entity-resolver): IRC identifier support (irc_username, <network>/<nick>)#525
NOVA-Openclaw merged 3 commits into
mainfrom
feature/522-irc-entity-resolver

Conversation

@NOVA-Openclaw

Copy link
Copy Markdown
Owner

Closes #522

Implements IRC identifier support for entity resolution:

  • Adds ircUsername identifier mapped to irc_username fact key.
  • Composes lowercased <network>/<nick> values.
  • Derives network from IRC server host (strip irc./irc- prefix, lowercase).
  • Parses nick!user@host sender id masks.
  • Extends turn-context SenderInfo/cache with accountId and host.
  • Adds pre-migration to lowercase existing irc_username values.
  • Adds tests covering TC-522-003..012, 014..024, 031..035.

Integration tests TC-522-025..030 and 036..037 are not included in the automated suites because they require full plugin hook wiring / installed lib resolution.

…>/<nick>)

Closes #522

- Resolves IRC server host from OpenClaw config (channels.irc.accounts[accountId].host, falling back to channels.irc.host) when event metadata does not carry host.

- Adds test seam for config-backed host resolution (TC-522-036).
Coder added 2 commits July 25, 2026 19:54
- TC-522-013: resolver lib combined non-IRC identifier conflict regression
- TC-522-028: turn-context IRC config-read/parse resilience; hardens
  resolveIrcHostFromConfig against synchronous throws from malformed
  config (missing file, invalid JSON, unexpected host types)
…ort (#522)

SE Run #499 — Step 9 (Technical Writing) for PR #525.

Priority-1 doc updates:
- CHANGELOG.md (root): full batch entry (irc-entity-resolver-522) covering
  extractIdentifiers() IRC case, network/nick derivation, config-driven host
  resolution, resolveIrcHostFromConfig hardening fix, pre-migration 006, and
  full test-case detail.
- memory/CHANGELOG.md: condensed IRC entry (Added/Migrations/Tests/Fixed)
  cross-referencing the root batch.
- relationships/CHANGELOG.md: condensed ircUsername -> irc_username mapping
  entry cross-referencing the root batch.
- relationships/ARCHITECTURE-entity-resolver.md: ircUsername added to the
  EntityIdentifiers interface doc, IDENTIFIER_TO_DB_KEY mapping table, a
  usage example, and a note clarifying that host/nick parsing happens
  upstream in turn-context, not in this library.
- memory/docs/semantic-recall.md: Entity Resolution section gains the IRC
  bullet (was stale/missing after the #522 code change — this doc mirrors
  the same extractIdentifiers() switch).
- tests/TEST-CASES-ISSUE-522.md: corrected TC-522-028 framing per QA note —
  only the non-string-host/non-string-account-host sub-cases guard the new
  fix; missing-file/invalid-JSON sub-cases document pre-existing
  readOpenClawConfig() resilience.

Light audit pass (full file list from task brief):
- ARCHITECTURE.md (root) + relationships/README.md + relationships/docs/
  integration-guide.md: added IRC to identifier enumerations that already
  listed Discord/Telegram/Slack/Signal, for consistency.
- All other files in the enumerated audit scope were read and checked
  against current source; no other staleness found relevant to #522.
  Unrelated subsystems (cognition, motivation, psyche) got a light
  deprecated-reference pass only, per task scope — no changes needed.

No code changes. Docs only.
@NOVA-Openclaw
NOVA-Openclaw marked this pull request as ready for review July 26, 2026 00:16
@NOVA-Openclaw
NOVA-Openclaw merged commit 30b36a8 into main Jul 26, 2026
1 check passed
@NOVA-Openclaw
NOVA-Openclaw deleted the feature/522-irc-entity-resolver branch July 26, 2026 00:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Entity resolver: add IRC/late.sh identifier support (turn-context extractIdentifiers + resolver key map)

1 participant