Skip to content

Harden leadership lifetimes and device contracts for 1.1 - #129

Merged
f2calv merged 18 commits into
mainfrom
f2calv/2026-10-updates1
Oct 24, 2026
Merged

f2calv merged 18 commits into
mainfrom
f2calv/2026-10-updates1

Conversation

@f2calv

@f2calv f2calv commented Oct 24, 2026 •

Copy link
Copy Markdown
Owner

Related Issue

None — coordinated runtime fixes and dependency-train update.

Summary

  • Bind DDNS and unified KNX bus ownership to the shared leadership runner. Create fresh KNX monitor sessions per ownership run; supervise receive/publication, sender and day/night work together, propagate ownership cancellation, await cleanup, and signal fatal host shutdown before potentially slow cleanup.
  • Simplify DNS subscription lookup and metadata filtering, outbound KNX dispatch, sunrise overrides and Miele assertions; remove a shadowed test-helper name without changing ownership or device behavior.
  • Preserve standby command forwarding, broker-specific acknowledgement semantics and the existing logical lock resources. This is coordination, not downstream fencing or exactly-once delivery.
  • Standardize device HTTP contracts and cancellation; return typed Buderus write outcomes, validate explicit power/WiZ inputs, move camera webhook parsing and dispatch into its service, and discover DDNS controllers only for the enabled feature.
  • Give Miele typed validated command bodies, explicit accepted/rejected/not-found outcomes, sanitized provider failures, and cancellation-aware HTTP/MCP calls with automatic command replay disabled. Update REST examples, test inventories and consumer documentation.
  • Initialize WiZ Azure persistence before discovery and retain the container-shim removal of the retired BuildMode argument. The branch also carries a small repository-local customization cleanup.
  • Consume verified Common 4.17.0, Azure 1.7.1, Agent Runtime contracts 1.2.0 and signalizr 1.0.2 together. Check every active external dependency; advance the existing Process instrumentation prerelease line to 1.20.1-rc.1 while preserving framework-specific API-versioning ceilings.
  • Remove unused health-check UI/storage packages that brought vulnerable KubernetesClient; retain the health-response writer. Require patched Newtonsoft.Json 13.0.4 in Buderus and XML 10.0.13 in KNX, eliminating all three vulnerable transitive paths. Restore normal vulnerability warning enforcement.
  • Fold the collector update from build(deps): bump otel/opentelemetry-collector from 0.162.0 to 0.163.1-386 #128 using stable multi-platform 0.163.1, not its architecture-specific 386 tag. Leave the independent Ubuntu 26.04 migration in build(deps): bump ubuntu from 24.04 to 26.04 #96 separate.
  • User selected minor 1.1.0, accepting incompatible public changes despite the minor increment; GitVersion confirms 1.1.0. Buderus query-service writes change from Task to Task; callers and implementations must rebuild and use Succeeded/Error. HTTP consumers must adopt current typed responses, string-enum JSON and validated Miele bodies. Migration guidance is linked from the root README.
  • The latest repository tag is 1.0.0, while the eight public package listings are still 0.11.2. After merge/tag verification, use the existing artifact-only deploy-all workflow to publish packages, image and chart for the immutable release. The user selected this existing publication path rather than a CI redesign. No cluster rollout is included.

Validation

  • Complete Debug and Release solution builds passed on all declared target frameworks with zero warnings/errors.
  • 315 tests passed, zero failures: 148 offline solution cases plus 167 in-process host integration cases. One existing host-registration case remains explicitly skipped because it requires physical KNX/Azure infrastructure. Other live-device/provider integration categories were excluded; no live device command was executed.
  • The initial host run exposed one obsolete local logging DLL retained from an older build. Removing that retired output artifact restored startup; the complete applicable suites were rerun successfully. No compatibility shim or source suppression was added.
  • All five HIGH maintainability findings are resolved on the final head. Both complete builds passed again with zero warnings/errors; 88 focused KNX/DDNS/Miele cases passed with zero skips. The final DNS guard-clause adjustment also passed Debug/Release builds and all four focused DDNS cases.
  • Full Release transitive audit is clear on every target framework after the dependency fixes; all eight multi-target packages pack successfully.
  • Every Compose profile parses. Stable collector image availability/platforms verified. Full repository pre-commit lint passed; privacy scan found zero high-confidence matches and reviewed pre-existing example/fixture patterns only.
  • Final-head CI passed. Supported Sonar analysis matches commit 50c97b7: Quality Gate OK, zero HIGH findings; 83 lower maintainability findings remain recorded in Sonar. Merge-ref code-scanning alerts and review threads are empty. Official package availability and image/chart identities still require verification after publication.

Checklist

  • The linked issue, or the summary when there is none, describes and scopes this change.
  • Any small unrelated change is called out in the summary.
  • Tests and documentation are updated where behavior or public interfaces changed.
  • No credentials, personal data or private-system details are included.
  • Breaking changes, migrations and operational follow-up are called out.

f2calv added 16 commits October 22, 2026 02:46
- Call the shared container build without the removed -BuildMode argument
- Strip the attribution footer from the skill description and body
- Serialize enum names in typed responses and MVC input
- Restore standard validation Problem Details
- Verify HTTP contracts and generated Swagger with offline host tests
- Forward request cancellation on device history routes
- Require explicit power state before invoking device services
- Preserve Problem Details media types without blanket JSON metadata
- Cover real device controller bindings and generated Swagger offline
- Supervise monitoring and sending within one ownership lifetime
- Await publication and connection cleanup before reacquisition
- Cover offline ownership regressions and document delivery limits
- Delegate lease ownership to the shared runner
- Preserve cancellation through IP discovery and update work
- Cover delegation and cancellation without infrastructure
- Move datapoint write outcomes into the query service and retain MCP boolean output

- Propagate cancellation through preflight reads and recursive discovery

- Validate optional pilot ranges and cover HTTP boundaries without hardware
- Keep controllers to binding and typed response mapping

- Validate payloads before dispatch without swallowing sink failures

- Forward ring cancellation and verify webhook HTTP contracts
- Validate typed action and program bodies before provider dispatch
- Propagate cancellation and map missing, rejected and failed outcomes explicitly
- Prevent command replay and verify fake-provider HTTP and MCP contracts
- Correct KNX and Buderus payloads and remove unrelated credential forwarding
- Describe physical actions and callback side effects
- Discover enabled DDns endpoints and cover both feature states
- Forward standby command queues without requiring local KNX connectivity
- Scope autonomous scheduling to ownership and stop the host before stalled child cleanup
- Map Polly resilience failures and preserve requested cancellation
- Add deterministic ownership and recovery regressions with updated documentation
- Supply the current test token to satisfy xUnit cancellation analysis
- Create both tables asynchronously with the worker cancellation token

- Document provisioning permissions and fail-fast initialization
… paths

- Align shared, runtime, Azure and communications packages

- Require patched JSON and XML dependencies in their owning libraries

- Remove unused health UI packages and restore audit enforcement
- Replace obsolete package and test limitations with current prerequisites

- Explain the incompatible Buderus write contract and HTTP migration

+semver: feature
- Fold the collector update without selecting the 386-only tag
@f2calv f2calv added bug Something isn't working documentation Improvements or additions to documentation dependencies Pull requests that update a dependency file .NET Pull requests that update .NET code docker_compose Pull requests that update docker_compose code labels Oct 24, 2026
@f2calv f2calv self-assigned this Oct 24, 2026
- Separate DNS subscription lookup and KNX telegram dispatch

- Isolate sunrise overrides and successful Miele response assertions

- Preserve cancellation and provider contracts while resolving high analysis findings
- Preserve metadata selection and cancellation while reducing nested control flow
@sonarqubecloud

Copy link
Copy Markdown

@f2calv
f2calv merged commit 74f3a7a into main Oct 24, 2026
7 checks passed
@f2calv
f2calv deleted the f2calv/2026-10-updates1 branch October 24, 2026 15:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working dependencies Pull requests that update a dependency file docker_compose Pull requests that update docker_compose code documentation Improvements or additions to documentation .NET Pull requests that update .NET code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant