Skip to content

Bug: daemon_health stays degraded — rc.3 last_error-clear fix missed the real source (boot subject-router reconcile) - #343

Merged
animus-launchapp-gitprovider[bot] merged 15 commits into
mainfrom
animus/TASK-211
Jul 28, 2026
Merged

Bug: daemon_health stays degraded — rc.3 last_error-clear fix missed the real source (boot subject-router reconcile)#343
animus-launchapp-gitprovider[bot] merged 15 commits into
mainfrom
animus/TASK-211

Conversation

@animus-launchapp-gitprovider

Copy link
Copy Markdown
Contributor

Automated change for TASK-211 via the Animus coding workflow (deterministic git on a shared ephemeral node).

…the real source (boot subject-router reconcile)
@vercel

vercel Bot commented Jul 22, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
animus-docs Ready Ready Preview, Comment Jul 28, 2026 10:02am

Request Review

@animus-launchapp-gitprovider animus-launchapp-gitprovider Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

VERDICT: CHANGES REQUESTED

  1. crates/orchestrator-core/src/services/daemon_impl.rs:subject_plugins_disabled — the new condition is left as one unformatted line: !trimmed.is_empty() && trimmed != "0" && trimmed != "false" && trimmed != "no" && trimmed != "off", and both current rustfmt check runs fail on head 26cc2cdb87653f26e35fedd1018efe1d0bbec04c. REQUIRED CHANGE: run the repository formatter and commit its output for crates/orchestrator-core/src/services/daemon_impl.rs (including the other long new declarations in this file) without changing behavior. Verify with cargo fmt --all -- --check; it must exit 0, and the GitHub rustfmt check must turn green.

The implementation direction is otherwise strong: it replaces the incorrect filename-prefix heuristic with capability-aware subject_backend discovery, accounts for disabled subject plugins and kind aliases, and adds focused regression coverage for consolidated backends and conflicting/empty kind registrations. Workspace check, clippy, protocol drift, docs sync, dependency guardrail, and smoke checks are green.

@animus-launchapp-gitprovider animus-launchapp-gitprovider Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

VERDICT: CHANGES REQUESTED

  1. crates/orchestrator-core/src/services/daemon_impl.rs:subject_plugins_disabled — the current head still contains unformatted long expressions such as !trimmed.is_empty() && trimmed != "0" && trimmed != "false" && trimmed != "no" && trimmed != "off", and the required rustfmt CI job fails on head 26cc2cdb87653f26e35fedd1018efe1d0bbec04c. REQUIRED CHANGE: run the repository formatter and commit its formatting-only edits to this file (including this condition and the other newly added long declarations); do not change behavior. Verify with cargo fmt --all -- --check and confirm it exits 0, then confirm the GitHub rustfmt check on the new head concludes success.

The implementation otherwise takes the right capability-aware approach: it replaces the filename-prefix heuristic with discover_by_kind/SubjectRouter, accounts for disabled subject plugins and kind aliases, and adds focused regression coverage for consolidated backends and router conflicts.

@animus-launchapp-gitprovider animus-launchapp-gitprovider Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

VERDICT: CHANGES REQUESTED

  1. crates/orchestrator-core/src/services/daemon_impl.rs:subject_plugins_disabled!trimmed.is_empty() && trimmed != "0" && trimmed != "false" && trimmed != "no" && trimmed != "off" remains unformatted, and the required GitHub rustfmt check is failing on head 26cc2cdb87653f26e35fedd1018efe1d0bbec04c. REQUIRED CHANGE: run the repository formatter (cargo fmt --all) and commit all formatter output for crates/orchestrator-core/src/services/daemon_impl.rs to this existing branch; do not alter behavior. Verify with cargo fmt --all -- --check and confirm it exits 0, then confirm the GitHub rustfmt check succeeds.

The capability-based discover_by_kind(..., "subject_backend") approach correctly replaces the filename-prefix heuristic, recognizes consolidated backends, accounts for aliases and conflicting kind claims, and includes focused regression coverage. The workspace cargo check and clippy checks are already green.

…the real source (boot subject-router reconcile)

@animus-launchapp-gitprovider animus-launchapp-gitprovider Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

VERDICT: CHANGES REQUESTED

  1. crates/orchestrator-core/src/services/daemon_impl.rs:subject_plugins_disabled — head e90f46fee9ab3d7963a40fc7ae8b98cb38f18c0e still contains the unformatted expression !trimmed.is_empty() && trimmed != "0" && trimmed != "false" && trimmed != "no" && trimmed != "off", and both current GitHub rustfmt runs conclude failure. REQUIRED CHANGE: run cargo fmt --all from the animus-cli workspace root and commit all formatter output for crates/orchestrator-core/src/services/daemon_impl.rs to the existing animus/TASK-211 branch; do not hand-format only one declaration and do not change behavior. Verify with cargo fmt --all -- --check on the committed head (expected exit code 0), then confirm the GitHub rustfmt check concludes success.

The substantive implementation remains strong: capability-aware subject_backend discovery replaces the incorrect binary-name heuristic, consolidated backends are recognized, aliases and routing conflicts are handled, and focused regression tests cover the important cases.

@animus-launchapp-gitprovider animus-launchapp-gitprovider Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

VERDICT: CHANGES REQUESTED

  1. crates/orchestrator-core/src/services/daemon_impl.rs:subject_plugins_disabled — head e90f46fee9ab3d7963a40fc7ae8b98cb38f18c0e still contains the unformatted expression !trimmed.is_empty() && trimmed != "0" && trimmed != "false" && trimmed != "no" && trimmed != "off", and both required GitHub rustfmt runs conclude failure. REQUIRED CHANGE: run cargo fmt --all from the animus-cli workspace root and commit all formatter-generated edits to crates/orchestrator-core/src/services/daemon_impl.rs on the existing animus/TASK-211 branch; do not change behavior or hand-format only this expression. Verify with cargo fmt --all -- --check on the committed head (expected exit code 0), then confirm the GitHub rustfmt check concludes success.

The substantive implementation is strong and appropriately scoped: capability-aware subject_backend discovery replaces the incorrect filename-prefix heuristic, consolidated backends are recognized, aliases and routing conflicts are handled, and focused regression tests cover the important cases. Workspace cargo-check, clippy, docs-sync, dependency guardrail, and smoke checks are green.

…the real source (boot subject-router reconcile)

@animus-launchapp-gitprovider animus-launchapp-gitprovider Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

VERDICT: CHANGES REQUESTED

  1. crates/orchestrator-core/src/services/daemon_impl.rs:subject_plugins_disabled!trimmed.is_empty() && trimmed != "0" && trimmed != "false" && trimmed != "no" && trimmed != "off" remains unformatted, and both rustfmt check runs on head 8f77f8c9492b1a8b4cc59dd3fbafcc8f61ed7de2 completed with failure. REQUIRED CHANGE: run cargo fmt --all from the workspace root and commit every formatter-generated edit to crates/orchestrator-core/src/services/daemon_impl.rs; do not hand-format only this expression or change behavior. Verify with cargo fmt --all -- --check and expect exit code 0, then confirm the GitHub rustfmt check succeeds on the new head.

The implementation otherwise replaces the incorrect filename-prefix heuristic with capability-aware subject-backend discovery, handles consolidated backends and disabled subject plugins, applies lockfile aliases before router validation, and adds focused regression coverage for the task’s failure mode.

…the real source (boot subject-router reconcile)

@animus-launchapp-gitprovider animus-launchapp-gitprovider Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

VERDICT: CHANGES REQUESTED

  1. crates/orchestrator-core/src/services/daemon_impl.rs:subject_plugins_disabled — current head 466289f67163bd2d06cf2076cfaefa27b0f3cb13 still contains the unformatted condition !trimmed.is_empty() && trimmed != "0" && trimmed != "false" && trimmed != "no" && trimmed != "off", and both required GitHub rustfmt runs conclude failure. REQUIRED CHANGE: run cargo fmt --all from the animus-cli workspace root and commit every formatter-generated edit to crates/orchestrator-core/src/services/daemon_impl.rs on the existing animus/TASK-211 branch; do not hand-format only this condition and do not alter behavior. Verify with cargo fmt --all -- --check on the committed head (expected exit code 0), then confirm the GitHub rustfmt check concludes success.

The substantive implementation remains appropriately scoped and technically strong: capability-aware subject_backend discovery replaces the incorrect filename-prefix heuristic, consolidated backends and the explicit disable mode are recognized, lockfile aliases are applied before router validation, and focused regression tests cover consolidated, empty-kind, and conflicting-kind cases.

…the real source (boot subject-router reconcile)

@animus-launchapp-gitprovider animus-launchapp-gitprovider Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

VERDICT: CHANGES REQUESTED

  1. crates/orchestrator-core/src/services/daemon_impl.rs:277 (subject_plugins_disabled) — the head still contains the unformatted expression !trimmed.is_empty() && trimmed != "0" && trimmed != "false" && trimmed != "no" && trimmed != "off", and the required rustfmt check is failing on head f7c492ac40d7677a38d36f933ef5c5471916f36a. REQUIRED CHANGE: from the workspace root on the existing animus/TASK-211 branch, run cargo fmt --all and commit every formatter-generated edit to crates/orchestrator-core/src/services/daemon_impl.rs; do not hand-format only this expression and do not change behavior. Verification: run cargo fmt --all -- --check and require exit code 0, then push and confirm the GitHub rustfmt check completes successfully.

The implementation otherwise moves the health probe in the right direction: it uses capability-aware discover_by_kind, recognizes consolidated backend names, accounts for disabled subject plugins and lockfile aliases, and adds focused regression coverage. docs-sync is green. This PR must not merge while a required check is red.

…the real source (boot subject-router reconcile)

@animus-launchapp-gitprovider animus-launchapp-gitprovider Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

VERDICT: CHANGES REQUESTED

  1. crates/orchestrator-core/src/services/daemon_impl.rssubject_plugins_disabled: !trimmed.is_empty() && trimmed != "0" && trimmed != "false" && trimmed != "no" && trimmed != "off" is still not rustfmt-formatted, and the latest rustfmt check for head a15e4def14d376e8f52dd9c4a90aae047e5317fe fails. REQUIRED CHANGE: run cargo fmt --all from the workspace root and commit every resulting formatting edit to this existing branch; do not hand-format only this expression or alter behavior. Verify with cargo fmt --all -- --check; it must exit 0, and the GitHub rustfmt check on the pushed head must conclude success.

The implementation otherwise takes the right capability-aware direction: it replaces the filename-prefix heuristic with discover_by_kind, accounts for consolidated backends, preserves disable-env behavior, validates routing conflicts, and adds focused regression coverage.

…the real source (boot subject-router reconcile)

@animus-launchapp-gitprovider animus-launchapp-gitprovider Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

VERDICT: CHANGES REQUESTED

  1. crates/orchestrator-core/src/services/daemon_impl.rs:subject_plugins_disabled — head a8c5d83a93cfe6d68492f89e7fd6e322a77d3fea still contains the unformatted condition !trimmed.is_empty() && trimmed != "0" && trimmed != "false" && trimmed != "no" && trimmed != "off", and both required GitHub rustfmt runs conclude failure. REQUIRED CHANGE: from the animus-cli workspace root on the existing animus/TASK-211 branch, run cargo fmt --all and commit every formatter-generated edit to crates/orchestrator-core/src/services/daemon_impl.rs; do not hand-format only this condition and do not alter behavior. Verify with cargo fmt --all -- --check on the committed head (expected exit code 0), then push and confirm the GitHub rustfmt check concludes success.

The substantive implementation remains well aligned with TASK-211: it replaces the incorrect filename-prefix heuristic with capability-aware subject_backend discovery, recognizes consolidated backends and the explicit disable mode, applies lockfile aliases before router validation, and adds focused regression coverage for consolidated, empty-kind, and conflicting-kind cases. The docs-sync check is green; this PR must not merge while rustfmt is red.

…the real source (boot subject-router reconcile)

@animus-launchapp-gitprovider animus-launchapp-gitprovider Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

VERDICT: CHANGES REQUESTED

  1. crates/orchestrator-core/src/services/daemon_impl.rs:subject_plugins_disabled — current head 5e686cf84de3e45cbfe0b4549036421f9efe7916 still contains the unformatted condition !trimmed.is_empty() && trimmed != "0" && trimmed != "false" && trimmed != "no" && trimmed != "off", and both required GitHub rustfmt runs conclude failure. REQUIRED CHANGE: run cargo fmt --all from the animus-cli workspace root on the existing animus/TASK-211 branch and commit every formatter-generated edit to crates/orchestrator-core/src/services/daemon_impl.rs; do not hand-format only this condition and do not alter behavior. Verify with cargo fmt --all -- --check on the committed head (expected exit code 0), then confirm the GitHub rustfmt checks conclude success.

The substantive implementation is appropriately scoped and technically strong: capability-aware subject_backend discovery replaces the incorrect filename-prefix heuristic, consolidated backends and the explicit disable mode are recognized, lockfile aliases are applied before router validation, and focused regression tests cover consolidated, empty-kind, and conflicting-kind cases. docs-sync is green, but this PR must not merge while required checks are red.

…the real source (boot subject-router reconcile)

@animus-launchapp-gitprovider animus-launchapp-gitprovider Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

VERDICT: CHANGES REQUESTED

  1. crates/orchestrator-core/src/services/daemon_impl.rs:269!trimmed.is_empty() && trimmed != "0" && trimmed != "false" && trimmed != "no" && trimmed != "off" remains unformatted, and the current rustfmt check for head b62f071ea83517f259465662faac37cdc2191ac4 is failing. crates/orchestrator-core/src/services/daemon_impl.rs:385 has the same symptom in let candidate_names: std::collections::HashSet<&str> = candidates.iter().map(|p| p.name.as_str()).collect();. REQUIRED CHANGE: run the repository's pinned formatter over the workspace and commit all formatter output for crates/orchestrator-core/src/services/daemon_impl.rs; do not hand-format only these two examples, because CI indicates the complete file still differs from canonical rustfmt output. Verification: run cargo fmt --all -- --check from the workspace root and confirm exit status 0, then confirm the GitHub rustfmt check is green on the new head.

The manifest-based subject-backend discovery direction is appropriate for TASK-211, and the added consolidated-backend/router-conflict regression coverage is valuable. The PR cannot merge while a required check is red.

…the real source (boot subject-router reconcile)

@animus-launchapp-gitprovider animus-launchapp-gitprovider Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

VERDICT: CHANGES REQUESTED

  1. crates/orchestrator-core/src/services/daemon_impl.rs:subject_plugins_disabled!trimmed.is_empty() && trimmed != "0" && trimmed != "false" && trimmed != "no" && trimmed != "off" remains in noncanonical formatting, and the current head SHA 2c7993340b8ed1dd2b647b844fb57e1c39239a09 has a failing rustfmt check. REQUIRED CHANGE: on the existing animus/TASK-211 branch, run the repository-pinned cargo fmt --all and commit all resulting formatting changes to crates/orchestrator-core/src/services/daemon_impl.rs; do not hand-format only this expression, because the same file contains other formatter-generated layout changes. Verify with cargo fmt --all -- --check and expect exit status 0, then confirm the GitHub rustfmt check succeeds on the pushed commit.

What is good: the implementation replaces the filename-prefix heuristic with manifest/capability-aware subject-backend discovery, accounts for disabled subject plugins and kind aliases, and adds focused regression coverage for consolidated backends and routing conflicts. The functional direction matches TASK-211; this review remains blocked only by the concrete formatting failure.

…the real source (boot subject-router reconcile)

@animus-launchapp-gitprovider animus-launchapp-gitprovider Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

VERDICT: CHANGES REQUESTED

  1. crates/orchestrator-core/src/services/daemon_impl.rs:subject_plugins_disabled — current head c9e0efdb493c9f3e1be726feb54057f0feba77a2 still contains the unformatted condition !trimmed.is_empty() && trimmed != "0" && trimmed != "false" && trimmed != "no" && trimmed != "off", and the required GitHub rustfmt check concluded failure. REQUIRED CHANGE: from the animus-cli workspace root on the existing animus/TASK-211 branch, run repository-pinned cargo fmt --all and commit every formatter-generated edit in crates/orchestrator-core/src/services/daemon_impl.rs; do not hand-format only this condition and do not alter behavior. Verify with cargo fmt --all -- --check (expected exit code 0), push the resulting commit, and confirm the GitHub rustfmt check concludes success.

The substantive implementation remains strong and aligned with TASK-211: capability-aware subject_backend discovery replaces the incorrect filename-prefix heuristic, consolidated backends and explicit disable mode are handled, aliases are applied before router validation, and focused regression tests cover the important routing cases. The docs-sync check is green; this PR simply cannot merge while the required rustfmt check is red.

…the real source (boot subject-router reconcile)

@animus-launchapp-gitprovider animus-launchapp-gitprovider Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

VERDICT: CHANGES REQUESTED

  1. crates/orchestrator-core/src/services/daemon_impl.rs:subject_plugins_disabled — current head b7827dc7ae9c3be8e0b1ac4888fb95d9565b81a9 still contains the unformatted expression !trimmed.is_empty() && trimmed != "0" && trimmed != "false" && trimmed != "no" && trimmed != "off", and the required GitHub rustfmt check concludes failure. REQUIRED CHANGE: from the workspace root on the existing animus/TASK-211 branch, run the repository-pinned cargo fmt --all and commit every formatter-generated edit in crates/orchestrator-core/src/services/daemon_impl.rs; do not hand-format only this expression and do not alter behavior. Verify with cargo fmt --all -- --check (expected exit code 0), push the resulting commit, and confirm the GitHub rustfmt check concludes success.

The substantive implementation remains strong and aligned with TASK-211: it replaces the incorrect executable-name heuristic with capability-aware subject-backend discovery, recognizes consolidated backends, applies configured kind aliases before router validation, respects the explicit subject-plugin disable mode, and adds focused regression tests. docs-sync is green, but this PR cannot merge while rustfmt is red.

…the real source (boot subject-router reconcile)

@animus-launchapp-gitprovider animus-launchapp-gitprovider Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

VERDICT: CHANGES REQUESTED

  1. crates/orchestrator-core/src/services/daemon_impl.rs:subject_router_degraded_reason — GitHub reports the exact integration symptom mergeable_state: "dirty" (mergeable: false, rebaseable: false) against current main, so this otherwise-correct implementation cannot be squash-merged. REQUIRED CHANGE: update animus/TASK-211 onto the current main and resolve the conflict in daemon_impl.rs, preserving the capability-aware discover_by_kind(..., PLUGIN_KIND_SUBJECT_BACKEND) implementation and its regression tests while incorporating all current-main edits; push the resolved head to this same PR. Verify by confirming GitHub reports the PR mergeable (not dirty) and by requiring cargo fmt --all -- --check, workspace cargo-check, clippy, smoke-help, docs-sync, and dependency-guardrail checks to complete successfully on the rebased commit.

The substantive fix is strong: it replaces the incorrect executable-name heuristic with manifest/capability-aware backend discovery, handles consolidated backends, disabled subject dispatch, lockfile aliases, empty kind declarations, and routing conflicts, and adds focused regression coverage. The latest rustfmt, cargo-check, clippy, docs-sync, and dependency guardrail checks are green; only the unresolved base conflict prevents approval and merge.

@animus-launchapp-gitprovider animus-launchapp-gitprovider Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

VERDICT: CHANGES REQUESTED

  1. crates/orchestrator-core/src/services/daemon_impl.rs (merge conflict against main) — GitHub reports the current head 9277cdf494e3a8e5f294743a7feb92add60e0266 as mergeable: false; the exact symptom is that the otherwise-green change cannot be merged into its declared base. REQUIRED CHANGE: update the existing animus/TASK-211 branch onto current main and resolve the conflict in daemon_impl.rs, preserving both the capability-aware discover_by_kind(..., PLUGIN_KIND_SUBJECT_BACKEND) / SubjectRouter health probe and all current-main edits; push the resolved commit to this same PR. Verify by confirming GitHub reports the PR mergeable, then run cargo fmt --all -- --check, workspace cargo-check, clippy, smoke-help, docs-sync, and the Rust-only dependency guardrail; every check must conclude success.

The substantive change is strong: it replaces the incorrect filename-prefix heuristic with manifest/capability-aware backend discovery, honors the explicit disable mode and lockfile kind aliases, detects unusable/conflicting routes, and adds focused regression tests. All checks on the current head are green; only the unresolved base conflict prevents approval and merge.

…the real source (boot subject-router reconcile)
…the real source (boot subject-router reconcile)

@animus-launchapp-gitprovider animus-launchapp-gitprovider Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

VERDICT: APPROVE

No blocking findings. The updated head is mergeable against main, preserves the capability-aware discover_by_kind(..., PLUGIN_KIND_SUBJECT_BACKEND) / SubjectRouter health probe, and replaces the incorrect executable-name-prefix heuristic with manifest-role discovery that correctly recognizes consolidated and secondary-role subject backends. The lockfile alias handling mirrors daemon dispatch, explicit subject-plugin disable mode is respected, and the regression coverage exercises registered/scanned consolidated plugins, secondary roles, executability, empty kind declarations, duplicate routes, aliases, and stopped-vs-live health behavior.

All reported checks on head 57102c8e064ea31b41feef7ea12fc12d4f1b6dbe are green: workspace cargo-check, clippy, rustfmt, docs-sync, Rust-only dependency guardrail, smoke-help, and Vercel. The change is focused on TASK-211's false degraded-health diagnosis while retaining actionable degradation for genuinely unroutable configurations.

@animus-launchapp-gitprovider
animus-launchapp-gitprovider Bot merged commit f2b5aef into main Jul 28, 2026
14 checks passed
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.

0 participants