Skip to content

fix(tests): tray source checks fail when the checkout is LF - #1518

Merged
shanselman merged 1 commit into
openclaw:mainfrom
SebTardif:fix/tray-source-contract-newlines
Sep 25, 2026
Merged

shanselman merged 1 commit into
openclaw:mainfrom
SebTardif:fix/tray-source-contract-newlines

Conversation

@SebTardif

@SebTardif SebTardif commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor

What Problem This Solves

Fixes five Tray source-contract tests that fail when the working tree uses LF line endings.

User Impact

No change in the running app. Developers with an LF checkout can run the Tray suite without five false failures.

Why This Change Was Made

These checks read C# source from disk and look for multiline snippets. The expected text was hardcoded with CRLF, so the snippets were not found in LF checkouts even though the production source was unchanged. The comparisons now normalize CRLF source text to LF before checking the same exact snippets. This preserves statement order, adjacency, and indentation in both checkout modes and follows an existing Tray source-test pattern.

Evidence

Reviewed head: a660b7af669bf518c332ee682823e5af2df562b1.

Contributor evidence on native Windows AMD64 with core.autocrlf=false:

  • ./build.ps1: exit 0.
  • Shared: 4107 passed, 32 skipped, 0 failed, 4139 total.
  • Tray: 3072 passed, 0 skipped, 0 failed, 3072 total.
  • Focused affected filter: 5 passed, 0 failed.
  • ConnectionPage.xaml.cs contained 0 CR bytes and 3760 LF bytes. The old CRLF needle was absent and the equivalent LF needle was present.

Maintainer exact-head evidence on native Windows ARM64 with current main at 7d92747e193caa08833ea07f3cd08d365268f3de:

  • ./build.ps1: exit 0.
  • dotnet test .\tests\OpenClaw.Shared.Tests\OpenClaw.Shared.Tests.csproj --no-restore: 4104 passed, 35 skipped, 0 failed, 4139 total.
  • dotnet test .\tests\OpenClaw.Tray.Tests\OpenClaw.Tray.Tests.csproj --no-restore: 3072 passed, 0 skipped, 0 failed, 3072 total.
  • Focused affected filter on the CRLF worktree: 5 passed, 0 failed.
  • The same compiled focused tests with OPENCLAW_REPO_ROOT pointed at an LF-only scratch source root (CR=0, LF=21220 across the required source files): 5 passed, 0 failed.
  • Merge-tree check against current main: clean.
  • Rubber-duck review: no blocking or non-blocking correctness findings.
  • Structured Codex autoreview (--mode branch --base origin/main, gpt-5.6-sol, high reasoning): clean, no accepted/actionable findings, 0.99 confidence.

Change Type

  • Bug fix
  • Feature
  • Refactor
  • Docs or instructions
  • Tests or validation
  • Security hardening
  • Chore or infrastructure

Scope

  • Tray or WinUI UX
  • Windows node capability
  • Local MCP or winnode
  • Gateway, connection, or pairing
  • Setup or onboarding
  • Permissions, privacy, or security
  • Tests, CI, or docs

Required proof pools

  • none: test-only source-text comparisons changed. No Tray UI, node command, gateway, installer, or runtime behavior changed.

Validation

  • Required full repository build passed on the exact PR head.
  • Required full Shared and Tray suites passed on the exact PR head.
  • All five affected tests passed against both CRLF and LF source trees.
  • CI Gate, fast validation, proof-pool contracts, CodeQL setup gate, and Tray/setup/integration checks passed on GitHub.
  • Exact PR head still matched the contributor remote immediately before landing validation.

Real Behavior Proof

  • Environments tested: contributor native Windows AMD64 LF checkout and maintainer native Windows ARM64 CRLF checkout, both on .NET SDK 10.0.401.
  • PR head tested: a660b7af669bf518c332ee682823e5af2df562b1.
  • CRLF proof: the current worktree's affected production source files contain paired CR/LF bytes, and the focused filter passed 5/5.
  • LF proof: the focused filter was rerun against an LF-normalized scratch source root with 0 CR bytes and passed 5/5.
  • Contract preservation: each assertion still checks the same complete multiline snippet, including statement order, adjacency, indentation, and boolean-chain structure. Only newline representation is normalized.
  • Observed result: both checkout styles pass without splitting or weakening the intended source contracts.
  • Screenshot or artifact links verified? N/A, test-only change with no visible product behavior.
  • Not verified or blocked: none for the LF/CRLF behavior addressed by this PR.

Security Impact

  • New permissions or capabilities? No
  • Secrets or tokens handling changed? No
  • New or changed network calls? No
  • Command or tool execution surface changed? No
  • Data access scope changed? No

Compatibility and Migration

  • Backward compatible? Yes
  • Config or environment changes? No
  • Migration needed? No

Review Conversations

  • ClawSweeper durable review inspected; no actionable finding.
  • No unresolved human or inline review conversations.

Multiline source-contract asserts compared against a hardcoded CRLF
snippet. An LF checkout does not contain that snippet, so five Tray
checks failed while the product source was unchanged.

Normalize CRLF to LF on the compared text. A CRLF checkout still matches.

Validation: ./build.ps1 exit 0. Shared 4107 passed, 32 skipped, 0 failed
(4139 total). Tray 3072 passed, 0 failed. Focused filter 5 passed.

Signed-off-by: Sebastien Tardif <SebTardif@ncf.ca>
@clawsweeper

clawsweeper Bot commented Sep 25, 2026 •

Copy link
Copy Markdown

🦞👀
ClawSweeper picked this up.

Pull request received. I will update this pull request when review starts.

ClawSweeper review complete

ClawSweeper finished reviewing this revision. The review result is being finalized.

View the workflow run.

@clawsweeper clawsweeper Bot added P2 Normal priority bug or improvement with limited blast radius. proof: sufficient Contributor real behavior proof is sufficient. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. labels Sep 25, 2026
@clawsweeper

clawsweeper Bot commented Sep 25, 2026 •

Copy link
Copy Markdown

Codex review: needs maintainer review before merge. Reviewed September 25, 2026, 1:29 PM ET / 17:29 UTC (Revision 2).

ClawSweeper review

What this changes

The branch normalizes line endings in six Tray source-contract assertions so developers can run the tests from LF or CRLF checkouts.

Merge readiness

✅ Ready for maintainer review

This remains a useful, focused fix. Current main still contains the line-ending-sensitive assertions, while the PR makes them work with LF and CRLF source files. The prior review reported no findings, and no new blocking defect is evident.

Priority: P2
Reviewed head: a660b7af669bf518c332ee682823e5af2df562b1

Review scores

Measure Result What it means
Overall readiness 🐚 platinum hermit (4/6) The small test fix has relevant real-checkout proof and no identified correctness or security defect.
Proof confidence 🐚 platinum hermit (4/6) Sufficient (terminal): The contributor reports running the changed Tray assertions on a native Windows LF checkout at the exact PR head: five focused checks and the full Tray suite passed after normalization. The checked source file's reported line-ending bytes and absent old CRLF snippet support the scenario; CRLF checkout behavior was not separately run. No stored-data contract changes.
Patch quality 🐚 platinum hermit (4/6) No actionable review findings were identified.

Verification

Check Result Evidence
Real behavior Verified Sufficient (terminal): The contributor reports running the changed Tray assertions on a native Windows LF checkout at the exact PR head: five focused checks and the full Tray suite passed after normalization. The checked source file's reported line-ending bytes and absent old CRLF snippet support the scenario; CRLF checkout behavior was not separately run. No stored-data contract changes.
Evidence reviewed 5 items Introduced patch: The pinned PR delta changes six assertions across four test files to compare LF text after replacing CRLF in the source.
Current main remains sensitive: Fetched main still expects a literal CRLF sequence in the connection source check; the other three touched test files likewise retain the original assertions.
Behavior proof: The captured PR body reports an LF native Windows checkout at the exact PR head, five focused checks passing, 3,072 Tray tests passing, and successful build and Shared tests. The reported byte check found no CR bytes in the sampled source file. No independent test was run during this read-only review.
Findings None None.
Security None None.

How this fits together

The Tray test suite reads WinUI source files from the checkout and checks that important UI behavior remains present. These assertions affect developer validation, not the running app.

flowchart LR
  A[Source checkout] --> B[Tray test suite]
  B --> C[Read WinUI source]
  C --> D[Normalize line endings]
  D --> E[Check behavior snippets]
  E --> F[Test result]
Loading

Before merge

None.

Agent review details

Security

None.

Review metrics

Metric Value Why it matters
Source assertions updated 6 assertions across 4 test files The scope is limited to checkout-dependent test comparisons.

Technical review

Best possible solution:

Keep these source-contract assertions line-ending agnostic so both supported checkout forms validate the same behavior.

Do we have a high-confidence way to reproduce the issue?

Yes. On baseline code, an LF source file cannot contain the CRLF literal required by these assertions; the related PR reports also record the five failing checks on LF checkouts. This read-only review did not execute them.

Is this the best way to solve the issue?

Yes. Normalizing the compared source text is a narrow fix consistent with an existing Tray test pattern, and it preserves the checks for the intended snippets.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning medium; reviewed against 7d92747e193c.

Labels

Label changes:

No label changes.

Label justifications:

  • P2: False Tray test failures impede developer validation on LF checkouts, with no running-app impact.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🐚 platinum hermit and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (terminal): The contributor reports running the changed Tray assertions on a native Windows LF checkout at the exact PR head: five focused checks and the full Tray suite passed after normalization. The checked source file's reported line-ending bytes and absent old CRLF snippet support the scenario; CRLF checkout behavior was not separately run. No stored-data contract changes.
  • proof: sufficient: Contributor real behavior proof is sufficient. The contributor reports running the changed Tray assertions on a native Windows LF checkout at the exact PR head: five focused checks and the full Tray suite passed after normalization. The checked source file's reported line-ending bytes and absent old CRLF snippet support the scenario; CRLF checkout behavior was not separately run. No stored-data contract changes.

Evidence

What I checked:

Likely related people:

  • Barbara Kudiess: Suggested for follow-up; no historical authorship or introduction is verified. (role: unverified routing candidate; confidence: low)
  • Scott Hanselman: Suggested for follow-up; no historical authorship or introduction is verified. (role: unverified routing candidate; confidence: low)
  • Sebastien Tardif: Suggested for follow-up; no historical authorship or introduction is verified. (role: unverified routing candidate; confidence: low)

Rating scale

Score Internal tier Crab rank Meaning
6/6 S 🦀 challenger crab Exceptional readiness
5/6 A 🦞 diamond lobster Very strong readiness
4/6 B 🐚 platinum hermit Good normal PR; ordinary maintainer review
3/6 C 🦐 gold shrimp Useful, but confidence is limited
2/6 D 🦪 silver shellfish Proof or implementation needs work
1/6 F 🧂 unranked krab Not merge-ready
N/A NA 🌊 off-meta tidepool Rating does not apply

Overall follows the weaker of proof and patch quality.
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

Workflow

  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

History

Review history (1 earlier review cycle)
  • reviewed 2026-09-25T14:26:44.693Z sha a660b7a :: needs maintainer review before merge. :: none

@shanselman shanselman added the status: 🚢 actively landing A maintainer or agent is actively driving this item through implementation, validation, or merge. label Sep 25, 2026
@shanselman
shanselman merged commit ecd6aef into openclaw:main Sep 25, 2026
26 checks passed
@shanselman shanselman removed the status: 🚢 actively landing A maintainer or agent is actively driving this item through implementation, validation, or merge. label Sep 25, 2026
SebTardif added a commit to SebTardif/openclaw-windows-node that referenced this pull request Sep 25, 2026
ConnectWithSharedTokenAsync treated a still-connecting operator as success, so a gateway auth failure that arrived later left the rejected token committed. When a bootstrap or SSH setup credential is at risk, wait for that failure, then restore saved settings and reconnect a connection that was already live.

Connection tests: 804 passed, 1 skipped. Shared tests: 4107 passed, 32 skipped. Tray tests: 3067 passed, 5 failed on the LF source-contract mismatch tracked in openclaw#1518.

Signed-off-by: Sebastien Tardif <SebTardif@ncf.ca>
SebTardif added a commit to SebTardif/openclaw-windows-node that referenced this pull request Sep 25, 2026
… late

After the deferred auth wait, roll the registry back only when this attempt still owns the connection generation. When another gateway was active, the settings callback receives that gateway's record so saved settings match the restored active id.

Connection tests: 806 passed, 1 skipped. Shared tests: 4106 passed and 32 skipped, then the one dispose failure passed alone. Tray tests: 3067 passed, 5 failed on the LF source-contract mismatch tracked in openclaw#1518.

Signed-off-by: Sebastien Tardif <SebTardif@ncf.ca>
SebTardif added a commit to SebTardif/openclaw-windows-node that referenced this pull request Sep 25, 2026
A shared-token replacement that is still connecting after the wait rolls the rejected token back instead of returning success. If settings or the runtime tunnel fail while applying the restored gateway, the callback retries that gateway and reports an out-of-sync error instead of writing the rejected snapshot back.

Connection tests: 807 passed, 1 skipped. Shared tests: 4107 passed, 32 skipped. Tray tests: 3068 passed, 5 failed on the LF source-contract mismatch tracked in openclaw#1518.

Signed-off-by: Sebastien Tardif <SebTardif@ncf.ca>
SebTardif added a commit to SebTardif/openclaw-windows-node that referenced this pull request Sep 26, 2026
When the handshake wait ends while the operator is still connecting, disconnect that attempt so its generation is cancelled and the operator is Idle before the previous gateway is opened again. The restore then waits for a terminal result. When rollback clears the active gateway, the settings callback restores the snapshot taken before the rejected record was applied.

Connection tests: 808 passed, 1 skipped. Shared tests: 4107 passed, 32 skipped. Tray tests: 3069 passed, 5 failed on the LF source-contract mismatch tracked in openclaw#1518.

Signed-off-by: Sebastien Tardif <SebTardif@ncf.ca>
SebTardif added a commit to SebTardif/openclaw-windows-node that referenced this pull request Sep 26, 2026
ApplySettings saves the candidate gateway before runtime tunnel reconciliation. If that reconciliation fails on the retry as well, write the snapshot taken before the apply back to settings and still throw, so the connection manager can roll the registry back without leaving the rejected gateway saved.

Tray tests: 3069 passed, 5 failed on the LF source-contract mismatch tracked in openclaw#1518. Shared tests: 4107 passed, 32 skipped.

Signed-off-by: Sebastien Tardif <SebTardif@ncf.ca>
SebTardif added a commit to SebTardif/openclaw-windows-node that referenced this pull request Sep 26, 2026
The rollback callback was capturing settings again after the candidate had been saved, so a second tunnel failure wrote the rejected gateway back. Capture the snapshot once per shared-token attempt and reuse it when the rollback callback fails.

Tray tests: 3070 passed, 5 failed on the LF source-contract mismatch tracked in openclaw#1518. Shared tests: 4107 passed, 32 skipped.

Signed-off-by: Sebastien Tardif <SebTardif@ncf.ca>
SebTardif added a commit to SebTardif/openclaw-windows-node that referenced this pull request Sep 26, 2026
BeginSharedTokenSettingsAttempt captures the snapshot, so the candidate callback must not clear it on success. The rollback callback still uses that snapshot when tunnel reconciliation fails twice.

Tray tests: 3071 passed, 5 failed on the LF source-contract mismatch tracked in openclaw#1518. Shared tests: 4107 passed, 32 skipped.

Signed-off-by: Sebastien Tardif <SebTardif@ncf.ca>
SebTardif added a commit to SebTardif/openclaw-windows-node that referenced this pull request Sep 26, 2026
The settings snapshot lived on the tray service and was captured before the connection manager took its lock, so a second connect could replace it. Each connect now captures its own attempt and passes that object into the settings callback.

Shared tests: 4107 passed, 32 skipped. Tray suite: 3071 passed, 6 failed. Five failures are the LF source-contract mismatch tracked in openclaw#1518. CredentialReplacementFlows_DoNotBlindlyClearDeviceTokens then passed after its expected call was updated.

Signed-off-by: Sebastien Tardif <SebTardif@ncf.ca>
SebTardif added a commit to SebTardif/openclaw-windows-node that referenced this pull request Sep 26, 2026
…lock

The tray captured the settings snapshot before ConnectWithSharedTokenAsync took the transition lock, so a second request could snapshot a baseline from before the first transaction. The capture now runs inside that lock, and the second request cannot start until the first has entered it.

Connection tests: 809 passed, 1 skipped. Shared tests: 4107 passed, 32 skipped. Tray tests: 3072 passed, 5 failed on the LF source-contract mismatch tracked in openclaw#1518.

Signed-off-by: Sebastien Tardif <SebTardif@ncf.ca>
SebTardif added a commit to SebTardif/openclaw-windows-node that referenced this pull request Sep 26, 2026
bash script.sh -c value and pwsh -File script.ps1 /c value are direct script invocations. Scanning past the script operand classified those arguments as inline shell commands and blocked reusable approval. Inline -c and /c before the script operand still stay one-time.

Shared tests: 4125 passed, 32 skipped. Tray tests: 3067 passed, 5 failed on the LF source-contract mismatch tracked in openclaw#1518.

Signed-off-by: Sebastien Tardif <SebTardif@ncf.ca>
SebTardif added a commit to SebTardif/openclaw-windows-node that referenced this pull request Sep 26, 2026
A single-dash letter cluster that contains c, such as -ec or -ce, is an inline shell command. The next argument is the payload. Scanning still stops at the script name, so bash script.sh -ec value stays a direct script.

Shared tests: 4128 passed, 32 skipped. Tray tests: 3067 passed, 5 failed on the LF source-contract mismatch tracked in openclaw#1518.

Signed-off-by: Sebastien Tardif <SebTardif@ncf.ca>
SebTardif added a commit to SebTardif/openclaw-windows-node that referenced this pull request Sep 26, 2026
A combined flag is inline only when it contains a lowercase c. Uppercase C is noclobber, so bash -C and bash -eC script.sh stay direct scripts. bash -ec remains inline. Exact POSIX flags are case-sensitive, so -C does not match -c.

Shared tests: 4129 passed, 32 skipped. Tray tests: 3067 passed, 5 failed on the LF source-contract mismatch tracked in openclaw#1518.

Signed-off-by: Sebastien Tardif <SebTardif@ncf.ca>
SebTardif added a commit to SebTardif/openclaw-windows-node that referenced this pull request Sep 26, 2026
A sensitive string array, including webhookUrls, uses a password box and does not copy the stored value into it. A blank box keeps the existing item. The schema JSON view and the fallback array view do the same.

./build.ps1 exit 0. Shared tests: 4107 passed, 32 skipped. Tray tests: 3087 passed, 5 failed on the LF source-contract mismatch tracked in openclaw#1518. ConfigPathSensitivityTests: 20 passed.

Signed-off-by: Sebastien Tardif <SebTardif@ncf.ca>
SebTardif added a commit to SebTardif/openclaw-windows-node that referenced this pull request Sep 27, 2026
…es exactly

A stored webhook URL array stays in the editor, not on the password box. A blank box still keeps that item. webhookUrl and webhookUrls are exact path segments, so webhookUrlExtra stays a normal field.

./build.ps1 exit 0. Shared tests: 4107 passed, 32 skipped. Tray tests: 3089 passed, 5 failed on the LF source-contract mismatch tracked in openclaw#1518. ConfigPathSensitivityTests: 22 passed.

Signed-off-by: Sebastien Tardif <SebTardif@ncf.ca>
SebTardif added a commit to SebTardif/openclaw-windows-node that referenced this pull request Sep 27, 2026
A loaded webhook URL row is remembered even when its stored value is empty. Editing another item no longer drops that row from the whole-array patch. A newly added blank row is still omitted until it has a value.

./build.ps1 exit 0. Shared tests: 4107 passed, 32 skipped. Tray tests: 3089 passed, 5 failed on the LF source-contract mismatch tracked in openclaw#1518. ConfigPathSensitivityTests: 22 passed.

Signed-off-by: Sebastien Tardif <SebTardif@ncf.ca>
SebTardif added a commit to SebTardif/openclaw-windows-node that referenced this pull request Sep 27, 2026
A sensitive array of objects stays masked. The note above it no longer tells the user to edit JSON below a disabled field. It says the stored values stay hidden and cannot be edited on this page.

./build.ps1 exit 0. Shared tests: 4107 passed, 32 skipped. Tray tests: 3089 passed, 5 failed on the LF source-contract mismatch tracked in openclaw#1518. ConfigPathSensitivityTests: 22 passed.

Signed-off-by: Sebastien Tardif <SebTardif@ncf.ca>
SebTardif added a commit to SebTardif/openclaw-windows-node that referenced this pull request Sep 28, 2026
…ad-only

Sensitive complex arrays stay hidden and show only a count. Replace all
opens a blank editor and sends only the new JSON. Clear all asks, then
sends an empty array. Cancel leaves the stored array out of the patch.
The same editor is used when the page has no schema.

./build.ps1 exit 0. Shared 4106 passed, 32 skipped, and the dispose
flake passed alone. Tray 3094 passed, 5 failed, the LF source checks
tracked in openclaw#1518.

Signed-off-by: Sebastien Tardif <SebTardif@ncf.ca>
SebTardif added a commit to SebTardif/openclaw-windows-node that referenced this pull request Sep 29, 2026
Sensitive schema objects, and schema-less sensitive objects, use the same
blank replace and confirmed clear editor as complex arrays. Stored values
stay off the control. Replace all checks the JSON kind and each array item
kind before staging. Invalid input keeps the original value and blocks Save.
Cancelling Clear all drops the abandoned validation error.

./build.ps1 exit 0. Shared 4107 passed, 32 skipped. Tray 3100 passed, 5
failed on the known LF source contracts (openclaw#1518). Focused editor and model
tests passed.

Signed-off-by: Sebastien Tardif <SebTardif@ncf.ca>
SebTardif added a commit to SebTardif/openclaw-windows-node that referenced this pull request Sep 30, 2026
A PowerShell option value named -File stopped classification before a
later -c, so the binder could save that inline command. A positional
script made a later /c look like a host switch. fish -C is an init
command and stays a wrapper. bash -C stays noclobber.

Validation: ./build.ps1 exit 0. Shared 4132 passed, 32 skipped.
ExecApprovalV2NormalizationTests 120 passed. Tray 3067 passed and 5
failed, the LF source-contract mismatch in openclaw#1518.

Signed-off-by: Sebastien Tardif <SebTardif@ncf.ca>
SebTardif added a commit to SebTardif/openclaw-windows-node that referenced this pull request Sep 30, 2026
…celed

A valid Replace all stayed on the edit session after a later invalid
draft was rejected. Canceling Clear all cleared the error and left
the pending change removed, so a later save kept the stored secret.
Cancel clear now stages the committed replacement again.

SensitiveArray_RejectedRetryThenCanceledClear_RestoresCommittedReplacement
passed. ./build.ps1 exit 0. Shared 4107 passed, 32 skipped. Tray 3102
passed and 5 failed, the LF source-contract mismatch in openclaw#1518.

Signed-off-by: Sebastien Tardif <SebTardif@ncf.ca>
SebTardif added a commit to SebTardif/openclaw-windows-node that referenced this pull request Sep 30, 2026
A JSON object editor stages the parent path. An account label change
under that parent was dropped with the non-id array, and a label
changed from ordinary text to *** was removed as if it were an
untouched secret mask. Ancestor edits now refuse that unsafe array
save, and a non-secret literal is kept when the loaded value was not
a mask.

Validation: ./build.ps1 exit 0. Shared 4099 passed, 32 skipped.
ConfigEditorModelTests 21 passed. Tray 3080 passed, 5 failed, the
LF source-contract mismatch in openclaw#1518.

Signed-off-by: Sebastien Tardif <SebTardif@ncf.ca>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

P2 Normal priority bug or improvement with limited blast radius. proof: sufficient Contributor real behavior proof is sufficient. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants