Repository navigation
Keep desktop peer previews separate from verified machines - #44
Merged
Merged
Conversation
Mirror DirectoryNode.RecordKey exactly in one shared helper and a fixture consumed by TypeScript and Go tests. Drop invalid records, isolate previews and manual configurations from claimed host UUIDs, and let broker discovery own record lifetime instead of collapsing by address, name or age. Proxy presence can enrich established peers but cannot create or resurrect identities. Label unverified machines and address-added engines, start existing PIN pairing by address, and keep peer controls and telemetry out of preview and manual cards. Normalize renderer collections and preserve peer-keyed membership and workload attribution. Align TUI wording and document mixed-version behavior without guessing an upgrade diagnosis. Shared type additions are optional and no Go wire payload changes. Keep the already-unreleased TUI 1.2.1 patch bump relative to v0.8.0. Signed-off-by: Jared Ping <13906915+JaredP94@users.noreply.github.com>
Review follow-up. The Add node modal's discovered list still showed "In another cluster" and disabled Invite whenever a node reported clustered: true, so an unauthenticated preview could hide pairing with a public claim, and it keyed rows by node id rather than the record key. It now matches the cluster settings list: rows are keyed by the record key, labelled "Not in your cluster", and only previews get a Pair action, by address through the PIN exchange. The shared rule is canPairByAddress. A modal regression covers a clustered preview. Signed-off-by: Jared Ping <13906915+JaredP94@users.noreply.github.com>
Review follow-up. The Add node modal regression removed its dialog stubs and cleared the discovered-node store only after its assertions passed, so a failure would leak them into later tests. The file's afterEach now does both unconditionally. Signed-off-by: Jared Ping <13906915+JaredP94@users.noreply.github.com>
7 tasks done
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Adopt the peer provenance published by #43 in the desktop without treating a public UUID claim as a peer identity.
nodeRecordKeymirrors GoDirectoryNode.RecordKey()exactly. Local/verified records usehostUuidexcept reserved prefixes; every other record requires apreview:/manual:peerRecordId. Empty keys are dropped. A verified proof binding is never used as a host id.Scope
Desktop projection, shared additive types/helper, renderer stores/cards/lists, regression tests, component documentation, and TUI label alignment. No Go producer or JSON-RPC payload changes; generated
desktop/docs/services-api.mdis unchanged.NodeItemandAvailableNodegain optionalhostUuid,peerRecordIdandidentityVerificationfields. These type changes are additive for the concurrent manual-nodes work. Its ownedAddNodeModal.tsx, manual-node bridge/store, manual settings UI and Go manual-nodes code are untouched; that agent was informed of the canonical keys and copy.Audit: membership, React keys, focus/selection, engine/model state, workload attribution and metric lookup use canonical record ids. Preview/manual cards never mount peer-only controls or telemetry. The desktop exposes no scheduler-priority, workload-targeting or proxy-node-selection action; those policies remain in Go. Pairing accepts an address, not a record selector; no claimed host UUID is sent for previews.
Version decision: retain main's existing unreleased
nvpair-tui1.2.1 patch bump (releasedv0.8.0had 1.2.0). Shared Go changes are test-only. No other service compiled output or desktop release version changes.Validation
macOS arm64, isolated worktree
/tmp/pair-work/desktop-peer-verification, based onorigin/mainad5edd7. Ownnpm ci --no-audit --no-fund; no shared/symlinked dependencies.Passed:
npm run -s typechecknpm run -s lint— zero warningsnpm run -s test:unit— 85 files, 844 testsnpm run -s dead-code:check— zero findingsnpm run -s service-contracts:check— fresh, no unignored driftnpm run -s licenses:check— 296 dependencies attributedservices/sharedandservices/nvpair-tui:gofmt -l,go vet ./...,go test -count=1 ./...,GOOS=linux go vet ./...,GOOS=windows go vet ./...node scripts/spdx-headers.mjs— 1282 checked, zero missinggit diff --checkRegression sensitivity:
Latest-head CI: run 41637002435, head
2bb42fc, all six jobs passed: Desktop checks, SPDX headers, Go modules on Linux/macOS, and cross-process tests on Linux/macOS. This is job-level CI evidence, not a claim that platform-skipped cases ran or that packaged/live deployments were exercised.Risk
Desktop consumers now require canonical provenance from the upgraded broker. Older peer machines remain separately keyed previews until services can verify them; metadata does not identify why verification failed, so no upgrade diagnosis is guessed. Rows remain until the broker withdraws them instead of being hidden speculatively by desktop heuristics.
Live multi-node pairing, desktop launch, packaged artifacts and Windows runtime were not tested. No cross-process suite was run locally. Independent model review did not finish because the review tool timed out; the actual diff and required checks were reviewed locally.
Checklist
git commit -s), certifying the Developer Certificate of Origin.services/versions.json, and described user-visible changes above so they reach the release notes. (Existing sufficient unreleased TUI patch bump retained.)