netcat: add virtual TCP and UDP workflows - #35
Conversation
d8c1ff8 to
fa49b9d
Compare
Exact-head devil review: APPROVE (source scope)Reviewed Evidence: ABI 18 source rebuild and literal This approves this exact formula/source head only. It makes no bottle, dependent-bottle, or Chromium claim. Remaining gates are Automattic/kandelo#882, a hosted build of the exact pushed |
fa49b9d to
3cf0374
Compare
|
Independent exact-head review completed for
No Formula blocker was found. Historical ABI 18 bytes remain nonpublishable evidence only. This head is safe as Redis PR #40's reviewed base. |
Why
Kandelo users need a standard command-line tool for inspecting and moving data
over TCP and UDP, and Kandelo needs package-level evidence that two virtual
machines can communicate through its network stack. Netcat is not yet available
as an independent Homebrew package. Adding GNU Netcat 0.7.1 matters because its
real listen, accept, stream, bind, and datagram workflows test the platform
without a package-specific network shortcut.
What changed
netcat,nc, and the manual.fork: :forbidden: Netcat command mode replaces the process withexecland does not fork.The scoped source patches preserve explicit boundaries:
SIOCGIFCONFfallback enumeration while retaining ordinaryINADDR_ANYUDP bind.IP_PKTINFOconstants but the virtual backend does not implement that sockopt/ancillary data.Runtime contract
The tap runner creates two isolated Kandelo machines on one
LocalVirtualNetwork. It starts the client only after successful TCP listen or UDP bind registration, requires zero statuses and empty stderr, and verifies the exact payload. Stalehost/distis removed before tsx imports.This claims Kandelo-to-Kandelo virtual TCP/UDP only. External-host pending-connect
EAGAIN,SIOCGIFCONF, andIP_PKTINFOancillary behavior remain explicit unclaimed platform boundaries.Exact source head
Base:
c5705667a90b05754d2244a362f3f7fc95d2f9c3Head:
3cf0374c26f9784b05eaabc06b50f9d06c057c3fFormula SHA-256:
ff4c1b299e233f52d72b7cb543a33cbc94a79fde5f40f4911313e81092832e69Embedded patch SHA-256:
e1627c27294a476dd13f9d99f68fe570c9d02bb980b545743bb2baed0d4919a7Runner SHA-256:
f690442f5284cba070c49b418723386beb4c8e910d00bb42bfd5f70cf97a3f25Five commits preserve the accepted Formula, patches, runner, support method, and public regression behavior. Range-diff differences are limited to adjacent c570 README/support-test insertion context. Exact Ruby syntax, Prettier, diff, ancestry, and clean-worktree checks pass; the current support suite passes 38 runs / 294 assertions.
Historical runtime evidence
The content-identical implementation previously established:
47aff4968d68227056e1cc1cea85b6d999161acbc4bd0666bf89513cc94f882bThat is historical source/runtime evidence, not a fresh c570, final-ABI, bottle, or Chromium-pour claim.
Gates
Source merge waits on #874, #882, and #883 for the final SDK/configure truth and authoritative ABI validation.
Publication additionally requires #887 for native build-dependency compatibility, #895 for the Formula test runtime, the consolidated ABI rebuild, trusted publisher/provenance, and stock Node/Chromium pours.
#842/#873/#888 are inapplicable because Netcat is fork-free. #900 is not package-specific because Netcat has no target runtime dependencies. #903 is unnecessary because the small artifact exposes direct ABI evidence. #905 is unrelated because Netcat does not exercise
posix_spawndescendants.This PR is the source ancestry/shared-runner base for Redis PR #40; Redis is not a Netcat runtime or bottle dependency. No bottle block or binary artifact is committed.