Skip to content

fix(daemon): log effective model capabilities with provenance - #1584

Merged
Aaronontheweb merged 1 commit into
devfrom
fix/capability-log-effective-values
Jul 5, 2026
Merged

fix(daemon): log effective model capabilities with provenance#1584
Aaronontheweb merged 1 commit into
devfrom
fix/capability-log-effective-values

Conversation

@Aaronontheweb

Copy link
Copy Markdown
Collaborator

Summary

The startup model-capability log reported the detector's raw output rather than the effective resolved capabilities. When an operator sets an InputModalities override on a provider that reports a context window but no modality metadata (e.g. vLLM), the detector returns a non-null partial result, so the log took the "auto-detected" branch and printed input=unknown — even though ModelCapabilityResolution had correctly applied the override. This made an applied override look ignored and sent at least one operator down a debugging rabbit hole.

Change

  • Log the resolved (effective) capability values instead of the detector output, annotated with per-field provenance (configured / detected / default). Precedence mirrors ModelCapabilityResolution: configured override > detected > default, so an applied override can no longer be misreported.
  • Add a one-line nudge — fired only when input modalities fall through to the default — pointing operators at Models:Main:InputModalities to enable vision on multimodal models behind metadata-less providers.

Example output now:

Resolved model capabilities for nvidia/Qwen3.6-27B-NVFP4: input=Text, Image (configured), output=Text (default), context_window=262144 (configured)

Related to the operator-experience side of #1127 (inline overrides on Models.Main were being wiped by doctor --fix; separately, when present they were being misreported by this log).

Test plan

  • dotnet build src/Netclaw.Daemon clean (0 warnings)
  • dotnet slopwatch analyze — 0 issues
  • Add-FileHeaders.ps1 -Verify — all headers present
  • ModelCapabilityResolution tests 6/6 pass (resolution precedence this log mirrors is already covered)

No log-string assertion test added: log output is brittle to assert on and low-value per the repo testing guidelines; the underlying precedence is covered by the resolver tests.

The startup capability log reported the detector's raw output, so an
InputModalities override on a provider that reports a context window but
no modality metadata (e.g. vLLM) printed "input=unknown" and looked
ignored even though ModelCapabilityResolution had applied it.

Log the resolved (effective) values instead, annotated with per-field
provenance (configured/detected/default) so an applied override can no
longer be misreported. Add a one-line nudge, fired only when input
modalities defaulted, pointing operators at Models:Main:InputModalities
to enable vision on multimodal models behind metadata-less providers.

@Aaronontheweb Aaronontheweb left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@Aaronontheweb
Aaronontheweb enabled auto-merge (squash) July 5, 2026 18:57
@Aaronontheweb
Aaronontheweb merged commit 4dd084f into dev Jul 5, 2026
21 checks passed
@Aaronontheweb
Aaronontheweb deleted the fix/capability-log-effective-values branch July 5, 2026 18:57
Aaronontheweb added a commit that referenced this pull request Jul 5, 2026
… capability-provenance logging #1584, FakeChatClient thread-safety #1579)
@Aaronontheweb Aaronontheweb mentioned this pull request Aug 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant