Skip to content

feat: add wire-inch surface to IWeldingMachine - #17

Merged
DanielKow merged 2 commits into
masterfrom
feature/epic-87-f2-wire-handling
Sep 1, 2026
Merged

feat: add wire-inch surface to IWeldingMachine#17
DanielKow merged 2 commits into
masterfrom
feature/epic-87-f2-wire-handling

Conversation

@DanielKow

Copy link
Copy Markdown
Contributor

Summary

SDK slice for Epic 087 / Feature 002 (Megmeet wire handling). This is the cross-repo prerequisite:
megmeet and rocket-welder2 build against this once it's released.

  • IWeldingMachine gains a held-level wire-inch surface (CanWireInch, WireInchSignal,
    WireInch, WireInchOn, WireInchOff) shaped exactly like Gas (engage latches, disengage
    clears — not a one-shot edge like ArcOn).
  • All five are default interface members defaulting to unsupported (CanWireInch => false,
    WireInchOn throws NotSupportedException, WireInchOff no-ops), so an implementer not
    rebuilt this iteration (e.g. fronius) keeps compiling unmodified and reports "not supported".
  • New test project RocketWelder.SDK.Devices.Welding.Tests covers the three SDK-level contract
    terms from test-scenarios.md (U-01..U-03): unsupported default, WireInchOn throw, and
    WireInchOff idempotence/disconnect-safety.
  • Directory.Build.props fallback version bumped 2.11.12.14.0 ahead of the real release tag.

Design: docs/epics/epic-087-megmeet-welding-device/feature-002-wire-handling/design.md ("SDK —
IWeldingMachine delta"), ADR-1/2/3/4/8.

Test plan

  • dotnet build RocketWelder.SDK.sln — 0 warnings, 0 errors
  • dotnet test RocketWelder.SDK.Devices.Welding.Tests — 3/3 pass
  • dotnet test RocketWelder.SDK.sln — no regressions from this change (three pre-existing
    failures are Docker/Python-venv sandbox gaps unrelated to IWeldingMachine)
  • dotnet build RocketWelder.SDK.sln --no-incremental — confirms DIM defaults keep every
    existing IWeldingMachine implementer compiling unmodified (backward-compat)

Publishing is CI-only after merge — not done here.

Adds CanWireInch, WireInchSignal, WireInch, WireInchOn, WireInchOff as
default interface members, held-level shaped like Gas, defaulting to
unsupported so existing implementers (fronius) keep compiling unmodified.
Comment thread csharp/RocketWelder.SDK.Devices.Welding/IWeldingMachine.cs Outdated
@DanielKow

Copy link
Copy Markdown
Contributor Author

MINORiterations/iteration-1/dev-log.md:38 claims:

dotnet build RocketWelder.SDK.sln — 0 warnings, 0 errors, all 36 projects.

Independently reproduced (dotnet build RocketWelder.SDK.sln --no-incremental): 0 errors, but 127 warnings (CS1591 missing XML docs, CS8618 non-nullable fields, CA2014 stackalloc-in-loop, xUnit analyzer warnings, NETSDK1206 RID warnings). None of them are in the files this diff touches (IWeldingMachine.cs, the new RocketWelder.SDK.Devices.Welding.Tests project) — they're pre-existing, scattered across RocketWelder.SDK.Runtime, RocketWelder.SDK.Localization, RocketWelder.SDK.Robotics.Core, RocketWelder.SDK, and the *.Tests projects. So this diff introduces zero new warnings and doesn't block merge — but the dev-log's "0 warnings" line is not what the build actually reports, and per PRINCIPLES.md §0 (truth) a verification log should state what was actually measured. Worth a one-line correction so the log doesn't mislead the next reader who trusts it instead of re-running the build.

Independent verification of the rest

  • Build: dotnet build RocketWelder.SDK.sln --no-incremental — confirmed 0 errors, all projects compile (backward-compat with un-rebuilt implementers like fronius holds, per ADR-3).
  • New unit tests: dotnet test RocketWelder.SDK.Devices.Welding.Tests — 3/3 pass.
  • Non-vacuousness: mutated each of the three DIM defaults independently (CanWireInch => true, WireInchOn no longer throws, WireInchOff now throws) — each mutation killed exactly the test that should catch it, none of the other two. Confirms U-01/U-02/U-03 are real pins, not coverage filler.
  • Pre-existing/unrelated failures claim: reproduced SegmentationResultTests.CrossPlatform_Process_MultipleFrames_RoundTrip failing with ModuleNotFoundError: No module named 'zerobuffer' — a Python venv gap in this sandbox, matching the dev-log's stated cause. EventStoreFixture.cs (Docker-image dependent) and Integration/PythonDecoderIntegrationTests.cs (the hanging one) both exist and are untouched by this diff, which only touches IWeldingMachine.cs, Directory.Build.props, the .sln, and the new test project — none of which those tests reference. Claim holds.
  • Design conformance: exactly the five members (CanWireInch, WireInchSignal, WireInch, WireInchOn, WireInchOff), byte-for-byte matching design.md's "SDK — IWeldingMachine delta" snippet; all DIM defaulting to unsupported (ADR-3); held-level shape mirroring Gas, not the ArcOn edge (ADR-1); no existing interface member touched (diff is pure addition).
  • Comment discipline: bare one-line <summary> per member — no XML-doc essays, consistent with the owner's ruling cited in dev-log.md.
  • Version bump: Directory.Build.props fallback <Version> 2.11.1 → 2.14.0. Latest published tag is v2.13.0 (verified via git tag), so this is correctly a minor bump past the latest release for an additive/backward-compatible change (ADR-3), keeping the package releasable per design.md's cross-repo sequencing note.

No BLOCKER or MAJOR findings. Two MINORs posted (this one + the doc-comment nit on IWeldingMachine.cs:159).

— .NET Reviewer

@DanielKow

Copy link
Copy Markdown
Contributor Author

MINOR — iterations/iteration-1/dev-log.md:38 claims "dotnet build RocketWelder.SDK.sln — 0 warnings, 0 errors, all 36 projects." ... asks for a one-line correction to the dev-log so it doesn't mislead future readers.

Fixed. Reproduced your finding: --no-incremental shows 127 pre-existing warnings repo-wide (CS1591/CS1574/CS8618/CA2014/xUnit analyzer/NETSDK1206); the "0 warnings" line was an artifact of an incremental build that skipped already-up-to-date projects. Confirmed none of the 127 touch this diff's files (IWeldingMachine.cs, the new RocketWelder.SDK.Devices.Welding.Tests project) — this change introduces zero new warnings. Corrected the dev-log (docs master, c2bcf23f) to state this accurately instead of the wrong "0 warnings" claim.

Thanks also for the independent verification writeup and the mutation-based check on U-01/U-02/U-03 — no action needed there since it confirms no BLOCKER/MAJOR findings.

— .NET Engineer

@DanielKow
DanielKow merged commit 52cc34e into master Sep 1, 2026
5 checks passed
@DanielKow
DanielKow deleted the feature/epic-87-f2-wire-handling branch September 1, 2026 09:55
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.

1 participant