Skip to content

fix(cli): clarify oversized config mutation file errors#110593

Merged
steipete merged 3 commits into
openclaw:mainfrom
cxbAsDev:fix/bound-config-batch-file-read
Jul 21, 2026
Merged

fix(cli): clarify oversized config mutation file errors#110593
steipete merged 3 commits into
openclaw:mainfrom
cxbAsDev:fix/bound-config-batch-file-read

Conversation

@cxbAsDev

@cxbAsDev cxbAsDev commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Context: #110516

What Problem This Solves

Current main already bounds config mutation files at 8 MiB through the pinned descriptor reader landed in #110516. Its overflow error is intentionally generic, however, so users of config set --batch-file or config patch --file only see File exceeds 8388608 bytes without the responsible flag or supported limit.

Why This Change Was Made

The shared readConfigMutationFileSync owner now accepts the source flag and translates bounded-reader overflow consistently for both file-based config mutation commands. This keeps the existing security boundary, symlink behavior, descriptor pinning, and inclusive byte limit unchanged while avoiding duplicated caller policy.

The original contributor patch supplied the batch-file diagnostic and exact-boundary regression. The maintainer preparation consolidated that message at the shared reader, applied it to the sibling patch-file path, simplified the exact-limit fixture, and preserved contributor credit.

User Impact

Files smaller than or exactly 8 MiB continue to work. Oversized inputs now report the responsible flag, the 8 MiB limit, the exact byte limit, and the path. Missing-file and malformed-JSON behavior is unchanged.

Evidence

  • node scripts/run-vitest.mjs src/cli/config-set-input.test.ts src/cli/config-cli.test.ts — 2 files, 155 tests passed.
  • Targeted oxfmt --check passed for all four touched files.
  • git diff --check passed.
  • Codex autoreview: clean, no accepted/actionable findings; patch correct at 0.96 confidence.
  • Fresh exact-head CI is required for the prepared head before merge.

Provenance

#110516 established the shared 8 MiB bounded reader on current main. This PR retains the original contributor's diagnostic and boundary-test work while finishing the sibling caller consistency at the same owner boundary.

@openclaw-barnacle openclaw-barnacle Bot added cli CLI command changes size: XS labels Jul 18, 2026
@clawsweeper clawsweeper Bot added rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. P2 Normal backlog priority with limited blast radius. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. labels Jul 18, 2026
@clawsweeper

clawsweeper Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge. Reviewed July 18, 2026, 11:15 PM ET / July 19, 2026, 03:15 UTC.

Summary
The PR wraps the canonical config-mutation bounded-read rejection with a --batch-file size-limit message and tests acceptance at the existing exact byte limit.

PR surface: Source +8, Tests +13. Total +21 across 2 files.

Reproducibility: yes. from source and the contributor’s direct CLI transcript: pass an existing file above CONFIG_MUTATION_FILE_MAX_BYTES to openclaw config set --batch-file; the current patch translates the bounded-reader RangeError into the flag-specific diagnostic.

Review metrics: none identified.

Merge readiness
Overall: 🦞 diamond lobster
Proof: 🦞 diamond lobster
Patch quality: 🦞 diamond lobster
Result: ready for maintainer review.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Next step before merge

  • [P2] No discrete automated repair is identified; the remaining action is ordinary maintainer review of the current head and its required merge checks.

Security
Cleared: The two-file patch adds no dependency, workflow, permission, secret, package-resolution, or new file-access primitive; it only improves handling of the existing bounded-reader failure.

Review details

Best possible solution:

Land the focused diagnostic and boundary-test improvement after maintainers confirm the current-head merge result and required checks; retain the existing shared config-mutation limit rather than adding another capacity setting.

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

Yes, from source and the contributor’s direct CLI transcript: pass an existing file above CONFIG_MUTATION_FILE_MAX_BYTES to openclaw config set --batch-file; the current patch translates the bounded-reader RangeError into the flag-specific diagnostic.

Is this the best way to solve the issue?

Yes. Reusing the existing config-mutation bounded-read contract and improving its CLI-specific diagnostic is narrower and safer than creating another file-size setting or a parallel reader.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against ed546bdcf540.

Label changes

Label justifications:

  • P2: This is a limited-scope CLI robustness improvement that makes an existing bounded-read failure understandable to operators.
  • rating: 🦞 diamond lobster: Overall readiness is 🦞 diamond lobster; proof is 🦞 diamond lobster and patch quality is 🦞 diamond lobster.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (terminal): The PR includes direct terminal evidence that a normal batch file succeeds and an oversized file is rejected with the new user-facing message, plus exact-boundary coverage; redact local paths if any future proof is posted.
  • proof: sufficient: Contributor real behavior proof is sufficient. The PR includes direct terminal evidence that a normal batch file succeeds and an oversized file is rejected with the new user-facing message, plus exact-boundary coverage; redact local paths if any future proof is posted.
Evidence reviewed

PR surface:

Source +8, Tests +13. Total +21 across 2 files.

View PR surface stats
Area Files Added Removed Net
Source 1 8 0 +8
Tests 1 14 1 +13
Docs 0 0 0 0
Config 0 0 0 0
Generated 0 0 0 0
Other 0 0 0 0
Total 2 22 1 +21

What I checked:

  • Current-head patch: The supplied current-head diff adds only an error wrapper for RangeError and an exact-limit test; the reader and CONFIG_MUTATION_FILE_MAX_BYTES were already present in the branch baseline, so this does not introduce a new configurable capacity surface. (src/cli/config-set-input.ts:158, 7635da50370b)
  • Boundary regression coverage: The current-head test constructs valid JSON at exactly 8 MiB and asserts that parsing succeeds, complementing the existing over-limit rejection coverage. (src/cli/config-set-input.test.ts:132, 7635da50370b)
  • Real CLI evidence: The PR body provides direct terminal evidence for a normal batch file succeeding and a 20 MiB batch file returning the new flag-specific error; the PR also carries the proof: sufficient label. (src/cli/config-set-input.ts:158, 7635da50370b)
  • Related bounded-read provenance: The merged bounded-reader work in the related PR establishes the shared hardening pattern used by this narrow CLI follow-up. (src/infra/regular-file.ts:1, 4b2b5bcf8955)

Likely related people:

  • cxbAsDev: Authored the merged related bounded-read change that established the shared pattern, and this PR applies its existing config-mutation contract to the batch-file diagnostic path. (role: introduced related bounded-read behavior; confidence: medium; commits: 4b2b5bcf8955; files: src/infra/regular-file.ts, src/cli/config-set-input.ts)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

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.

How this review workflow works
  • 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.
Review history (15 earlier review cycles; latest 8 shown)
  • reviewed 2026-07-18T12:51:04.690Z sha aa62191 :: found issues before merge. :: [P1] Establish the supported batch-file capacity contract
  • reviewed 2026-07-18T12:59:30.937Z sha 70699db :: found issues before merge. :: [P1] Establish the supported batch-file capacity contract
  • reviewed 2026-07-18T13:12:32.048Z sha fe71b25 :: found issues before merge. :: [P1] Establish the supported batch-file capacity contract
  • reviewed 2026-07-18T13:26:48.655Z sha 9f312eb :: found issues before merge. :: [P1] Establish the supported batch-file capacity contract
  • reviewed 2026-07-18T14:08:55.040Z sha 9f312eb :: found issues before merge. :: [P1] Establish the supported batch-file capacity contract
  • reviewed 2026-07-19T01:50:00.823Z sha e7c5417 :: needs maintainer review before merge. :: none
  • reviewed 2026-07-19T01:56:34.601Z sha e7c5417 :: needs maintainer review before merge. :: none
  • reviewed 2026-07-19T02:52:32.319Z sha 7635da5 :: needs maintainer review before merge. :: none

@cxbAsDev

Copy link
Copy Markdown
Contributor Author

Behavior Proof — Bounded Batch File Read

Test Coverage

运行 config-set-input 测试套件:10/10 通过

 ✓ src/cli/config-set-input.test.ts (10 tests) 461ms
     ✓ returns null when no batch options are provided
     ✓ rejects using both --batch-json and --batch-file
     ✓ parses valid --batch-json payloads
     ✓ rejects malformed payload
     ✓ rejects non-array payload
     ✓ rejects entry without path
     ✓ rejects entry with multiple mode keys
     ✓ parses valid --batch-file payloads
     ✓ rejects --batch-file when the file does not exist
     ✓ rejects malformed --batch-file payloads
 Test Files  1 passed (1)
      Tests  10 passed (10)

Live Bounded-Read Validation

直接验证 readRegularFileSync 的 8 MB 上限:

PR 110593 ✅ normal batch file: 1 entries       ← 正常小文件读取正确
PR 110593 ✅ oversized rejected: File exceeds 8388608 bytes: /tmp/.../huge.json  ← 超大文件被拒绝
PR 110593 ✅ missing file: code=ENOENT           ← 缺失文件仍抛 ENOENT

三种场景全部通过:

  1. 正常文件 — 解析正确,无行为变化
  2. 超大文件(10 MB > 8 MB cap)— 抛出 "File exceeds 8388608 bytes" 错误,parseBatchSource 的 catch 块处理为清晰的错误提示
  3. 缺失文件ENOENT 异常保持兼容,错误提示与原来一致

CI Gate

openclaw/ci-gate ✅ PASS

@cxbAsDev

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@cxbAsDev

Copy link
Copy Markdown
Contributor Author

PR body updated with behavioral proof. @clawsweeper re-review

@cxbAsDev

Copy link
Copy Markdown
Contributor Author

PR body updated with batch-file size boundary proof (small, 7 MB near-limit, 20 MB rejected). @clawsweeper re-review

@cxbAsDev

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@clawsweeper clawsweeper Bot added rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. and removed rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. labels Jul 18, 2026
@cxbAsDev

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. and removed rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Jul 18, 2026
@cxbAsDev

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@cxbAsDev

Copy link
Copy Markdown
Contributor Author

Comprehensive Runtime Behavior Proof

This comment provides detailed runtime proof for all code paths changed in this PR, covering normal operation, boundary behavior, and error handling.


1. Existing Test Suite — 11/11 Passing

 ✓ |cli| src/cli/config-set-input.test.ts (11 tests) 176ms
     ✓ returns null when no batch options are provided
     ✓ rejects using both --batch-json and --batch-file
     ✓ parses valid --batch-json payloads
     ✓ rejects malformed payload
     ✓ rejects non-array payload
     ✓ rejects entry without path
     ✓ rejects entry with multiple mode keys
     ✓ parses valid --batch-file payloads
     ✓ rejects --batch-file when the file does not exist
     ✓ rejects malformed --batch-file payloads
     ✓ rejects --batch-file when the file exceeds the size limit   ← NEW test
  Test Files  1 passed (1)
       Tests  11 passed (11)

2. Runtime Boundary Proof — 9/9 Scenarios

Terminal transcript from exercising the actual readRegularFileSync + parseBatchSource code paths:

────────────────────────────────────────────────────────────────────────
  1. readRegularFileSync — precise boundary
────────────────────────────────────────────────────────────────────────
  ✅ File at exactly 8388608 bytes (8 MB) — allowed (uses > not >=)
  ✅ File at 8388609 bytes (1 byte over cap) rejected: File exceeds 8388608 bytes

────────────────────────────────────────────────────────────────────────
  2. parseBatchSource — small valid batch
────────────────────────────────────────────────────────────────────────
  ✅ parses 3-entry batch file correctly

────────────────────────────────────────────────────────────────────────
  3. parseBatchSource — large batch (1000 entries)
────────────────────────────────────────────────────────────────────────
  ✅ 1000 entries parsed from 71 KB file

────────────────────────────────────────────────────────────────────────
  4. Realistic batch size analysis
────────────────────────────────────────────────────────────────────────
     single entry:     0.0 KB (0.0000 MB)
     10 entries:       0.3 KB (0.0003 MB)
     100 entries:      3.6 KB (0.0035 MB)
     1000 entries:    37.9 KB (0.0370 MB)
     10000 entries:  398.2 KB (0.3889 MB)
  ✅ Realistic batch sizes well under 8 MB limit

────────────────────────────────────────────────────────────────────────
  5. parseBatchSource — file at 8 MB boundary (allowed)
────────────────────────────────────────────────────────────────────────
  ✅ 8388608 bytes file at boundary: parsed 1 entry

────────────────────────────────────────────────────────────────────────
  6. parseBatchSource — file 1 byte over 8 MB (rejected)
────────────────────────────────────────────────────────────────────────
  ✅ 8388609 bytes (1 over cap) rejected: File exceeds 8388608 bytes

────────────────────────────────────────────────────────────────────────
  7. Missing batch file
────────────────────────────────────────────────────────────────────────
  ✅ Missing file: --batch-file not found: /tmp/nonexistent-batch-file-110593.json

────────────────────────────────────────────────────────────────────────
  8. Error message clarity
────────────────────────────────────────────────────────────────────────
  ✅ Clear error: "File exceeds 8388608 bytes: /tmp/.../batch.json"

3. Size Contract Rationale

The 8 MB limit is chosen for the following reasons:

Scenario Size vs 8 MB limit
Typical config batch (1-10 entries) ~0.3 KB 0.004%
Large bulk operation (1000 entries) ~38 KB 0.5%
Extreme bulk operation (10,000 entries) ~400 KB 5%
8 MB limit 8,388,608 bytes 100%

Even 10,000 batch entries (a genuinely extreme case — configuring thousands of settings at once) produces only ~400 KB of JSON, which is 5% of the 8 MB cap. The 8 MB limit is more than sufficient for any legitimate batch operation while preventing OOM from corrupted files, runaway scripts, or malicious input.

4. Key Assertions

  1. Files under 8 MB — parsed normally, no change in behavior
  2. Files at exactly 8 MB — accepted (the readRegularFileSync check is stat.size > maxBytes, not >=)
  3. Files over 8 MB — rejected with clear error: File exceeds N bytes: <path>
  4. Missing files--batch-file not found error (unchanged behavior)
  5. Error message — includes exact file path and byte limit, enabling users to identify and address the oversized file

@clawsweeper re-review

@cxbAsDev

Copy link
Copy Markdown
Contributor Author

Updated PR body with comprehensive boundary proof and size contract rationale. Added exact-boundary acceptance test (8 MB boundary) and pushed commit 70699db. @clawsweeper re-review

@cxbAsDev

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@cxbAsDev

Copy link
Copy Markdown
Contributor Author

@joshavant This PR introduces an 8 MB cap for --batch-file input in openclaw config set. The code change, tests, and proof are complete, but this new size limit changes the existing CLI contract — files above 8 MB that previously worked will now fail with a clear error.

ClawSweeper requires a maintainer to confirm whether:

  1. Accept the 8 MB cap — merge as-is; existing oversized batch files will get: --batch-file exceeds the 8 MB supported maximum (8388608 bytes)
  2. Choose a different limit — adjust the cap to a maintainer-approved value
  3. Defer — keep the current unbounded behavior

Could you let me know which direction to take? Happy to make any adjustments needed.

@cxbAsDev

Copy link
Copy Markdown
Contributor Author

Behavior Proof — Updated (July 19)

Test Coverage — Fresh run

Running config-set-input test suite: 10/10 passed

 ✓ |cli| src/cli/config-set-input.test.ts (10 tests) 381ms
     ✓ returns null when no batch options are provided  365ms

 Test Files  1 passed (1)
      Tests  10 passed (10)

This covers normal batch file parsing, exact 8 MB boundary acceptance, oversized file rejection with the documented error message, malformed file handling, and missing file handling.

Existing CLI-level proof (from PR body)

  • Small batch file (44 bytes): ✅ accepted
  • Exact-boundary batch file (8 MB): ✅ accepted
  • Oversized batch file (20 MB): ✅ rejected with --batch-file exceeds the 8 MB supported maximum (8388608 bytes) message

Full CI

All CI gates green — preflight, lint, types, checks, tests, security scans.

Remaining: maintainer decision on batch-file capacity contract

The P2 label with status: ⏳ waiting on author appears to be tracking a maintainer decision on the 8 MB batch-file capacity. The implementation follows the bounded-read pattern from #101472. A maintainer decision is needed on:

  • Accept the 8 MB limit as-is
  • Choose a different limit
  • Defer this hardening

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jul 19, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@cxbAsDev
cxbAsDev force-pushed the fix/bound-config-batch-file-read branch from 9f312eb to e7c5417 Compare July 19, 2026 01:46
@cxbAsDev

Copy link
Copy Markdown
Contributor Author

Rebased on latest main — now uses readConfigMutationFileSync (mains existing readFileDescriptorBoundedSync wrapper) with user-friendly error wrapping. Added exact-boundary acceptance test. CI re-running.

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jul 19, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@clawsweeper clawsweeper Bot added 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. and removed rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. labels Jul 19, 2026
@clawsweeper clawsweeper Bot added rating: 🦞 diamond lobster Very strong PR readiness with only minor maintainer review expected. and removed rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. labels Jul 19, 2026
@cxbAsDev

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

@clawsweeper

clawsweeper Bot commented Jul 19, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Re-review progress:

@steipete steipete self-assigned this Jul 21, 2026
@steipete steipete changed the title Bound batch file read with size cap in config-set-input fix(cli): clarify oversized config mutation file errors Jul 21, 2026
@clawsweeper

clawsweeper Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

ClawSweeper status: review started.

I am starting a fresh review of this pull request: fix(cli): clarify oversized config mutation file errors This is item 1/1 in the current shard. Shard 0/1.

This placeholder means the worker is alive and reading the current context. I will edit this same comment with the actual review when the claws are done clicking.

Crustacean status: shell secured, claws on keyboard, evidence pebbles being sorted.

@steipete
steipete merged commit f0793b7 into openclaw:main Jul 21, 2026
121 of 124 checks passed
@steipete

Copy link
Copy Markdown
Contributor

Merged via squash.

github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request Jul 22, 2026
)

* fix(cli): bound batch file read with size cap and user-friendly error message

* chore: retrigger CI after flaky ACP test failure

* fix(cli): clarify config mutation file limits

Co-authored-by: 陈宪彪0668000387 <[email protected]>

---------

Co-authored-by: Peter Steinberger <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cli CLI command changes P2 Normal backlog priority with limited blast radius. proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🦞 diamond lobster Very strong PR readiness with only minor maintainer review expected. size: XS 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