Skip to content

fix(issue-format): handle nested fences and format retry - #3036

Merged
stranske merged 5 commits into
mainfrom
automation/sync-review-source-fix-20260811
Aug 11, 2026
Merged

fix(issue-format): handle nested fences and format retry#3036
stranske merged 5 commits into
mainfrom
automation/sync-review-source-fix-20260811

Conversation

@stranske

@stranske stranske commented Aug 11, 2026

Copy link
Copy Markdown
Owner

Summary

  • Ignore fenced commands nested under Markdown list items when validating acceptance criteria.
  • Accept explicitly categorized quoted lowercase identifiers as concrete targets.
  • Re-run the format guard when the optimizer releases agents:format after failure.

Validation

  • uv run --isolated --with pytest --with pyyaml python -m pytest -q tests/scripts/test_issue_format.py tests/workflows/test_agents_issue_optimizer_format_trigger.py (98 passed)

Source fix for active review threads on Portable-Alpha-Extension-Model#2217 and Trend_Model_Project#5807; corrected consumer sync must replace those PRs before merge.

Summary by CodeRabbit

  • Bug Fixes

    • Improved task validation for quoted or backticked lowercase identifiers in explicit categories.
    • Improved handling of indented fenced content and stricter closing-fence validation.
    • Format checks now respond correctly when the agents:format label is added or removed, including after failed processing.
    • Failed processing now rechecks formatting automatically, with cleanup warnings handled safely.
  • Tests

    • Added regression coverage for validation, fenced examples, and label-triggered format checks.

@cursor

cursor Bot commented Aug 11, 2026

Copy link
Copy Markdown

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@stranske
stranske temporarily deployed to agent-high-privilege August 11, 2026 01:33 — with GitHub Actions Inactive
@stranske-keepalive

Copy link
Copy Markdown
Contributor

Workflow source needed

PR #3036 needs either a linked GitHub issue or one valid non-issue Workflow Source before PR metadata automation can manage it safely.

Please do one of:

  • Add <!-- meta:issue:123 --> or a normal Closes #123 / Related to #123 line.
  • Check one Workflow Source option in the PR body.
  • Add a hidden marker such as <!-- workflow-source:local_request -->, <!-- workflow-source:manual_remote -->, <!-- workflow-source:review_followup -->, <!-- workflow-source:sync_campaign -->, or <!-- workflow-source:dependabot -->.
  • Add a workflow source label such as workflow:source-direct-pr, workflow:source-local-request, workflow:source-review-followup, workflow:source-sync, or workflow:no-automation.

Once a valid source is present, this warning will not be reposted.

@coderabbitai

coderabbitai Bot commented Aug 11, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

You’ve reached a temporary PR review limit under our Fair Usage Limits Policy.

Your recent review volume is higher than typical usage, so adaptive limits are currently applied.

Next review available in: 2 minutes

Your organization has reached its usage spending cap. Adjust your spending cap in the billing tab.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 4b176b31-d602-4e87-9ed0-514ff9762ca7

📥 Commits

Reviewing files that changed from the base of the PR and between 08f7785 and 4b3931f.

📒 Files selected for processing (1)
  • tests/workflows/test_agents_issue_optimizer_format_trigger.py
📝 Walkthrough

Walkthrough

The PR updates both issue-format validator copies to recognize indented fences and lowercase backticked targets. It also updates format-guard and optimizer workflows to revalidate issues after agents:format lease release.

Changes

Issue format validation and workflow triggering

Layer / File(s) Summary
Validator parsing and regression coverage
.github/scripts/issue_format.py, templates/consumer-repo/.github/scripts/issue_format.py, tests/scripts/test_issue_format.py
Both validators accept lowercase backticked identifiers after explicit categories and recognize fences with arbitrary leading whitespace. Tests cover both validator copies, both fence styles, and category-word exclusion.
Format-guard label-event handling
.github/workflows/agents-issue-format-guard.yml, templates/consumer-repo/.github/workflows/agents-issue-format-guard.yml, tests/workflows/test_agents_issue_optimizer_format_trigger.py
Both workflows handle removal of the agents:format label. Tests verify the unlabeled trigger condition and reject an independent labeled trigger.
Lease-release retry dispatch
.github/workflows/agents-issue-optimizer.yml, templates/consumer-repo/.github/workflows/agents-issue-optimizer.yml, config/template-drift-allowlist.txt, tests/workflows/test_agents_issue_optimizer_format_trigger.py
Both optimizer workflows request actions: write and dispatch the format guard with the issue number after failed format lease cleanup. Dispatch failures emit warnings. The template drift allowlist records the updated workflow fingerprints.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Possibly related PRs

Suggested labels: autofix:patch, autofix:escalated, agent:retry, verify:compare

Sequence Diagram(s)

sequenceDiagram
  participant IssueOptimizer
  participant GitHub
  participant FormatGuard
  IssueOptimizer->>GitHub: Remove agents:format label
  IssueOptimizer->>FormatGuard: Dispatch workflow with issue number
  FormatGuard->>GitHub: Revalidate the issue
Loading
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 33.33% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely summarizes the main issue-format and format-retry changes in the pull request.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch automation/sync-review-source-fix-20260811

Comment @coderabbitai help to get the list of available commands.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ab4142b483

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread .github/workflows/agents-issue-format-guard.yml Outdated
Comment thread .github/workflows/agents-issue-format-guard.yml Outdated
@agents-workflows-bot

agents-workflows-bot Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Automated Status Summary

Head SHA: f26fac0
Latest Runs: ⏳ pending — Gate
Required contexts: summary
Required: core tests (3.12): ⏳ pending, core tests (3.13): ⏳ pending, docker smoke: ⏳ pending, gate: ⏳ pending

Workflow / Job Result Logs
(no jobs reported) ⏳ pending

Coverage Overview

  • Coverage history entries: 1

Coverage Trend

Metric Value
Current 76.28%
Baseline 85.00%
Delta -8.72%
Minimum 70.00%
Status ✅ Pass

Top Coverage Hotspots (lowest coverage)

File Coverage Missing
scripts/issue_dedup_smoke.py 0.0% 4
scripts/runner_lib/__main__.py 0.0% 3
scripts/validate_template_sync.py 0.0% 81
scripts/langchain/topic_splitter.py 19.1% 57
tools/codex_log_analyzer.py 19.6% 140
scripts/repo_review_round2_runner.py 25.1% 344
scripts/prune_agent_stubs.py 39.7% 26
scripts/repo_review_round1_runner.py 40.7% 133
tools/ensure_workflow_timeout_variables.py 42.1% 74
scripts/sync_label_docs.py 42.9% 64
tools/discover_model_catalog.py 44.8% 55
scripts/repo_review_backlog_scan.py 45.3% 116
scripts/repo_review_body_writer.py 46.5% 86
tools/codex_session_analyzer.py 47.9% 59
scripts/create_verifier_labels.py 48.3% 58

Low Coverage Files (<50.0%)

File Coverage Missing
scripts/issue_dedup_smoke.py 0.0% 4
scripts/runner_lib/__main__.py 0.0% 3
scripts/validate_template_sync.py 0.0% 81
scripts/langchain/topic_splitter.py 19.1% 57
tools/codex_log_analyzer.py 19.6% 140
scripts/repo_review_round2_runner.py 25.1% 344
scripts/prune_agent_stubs.py 39.7% 26
scripts/repo_review_round1_runner.py 40.7% 133
tools/ensure_workflow_timeout_variables.py 42.1% 74
scripts/sync_label_docs.py 42.9% 64
tools/discover_model_catalog.py 44.8% 55
scripts/repo_review_backlog_scan.py 45.3% 116
scripts/repo_review_body_writer.py 46.5% 86
tools/codex_session_analyzer.py 47.9% 59
scripts/create_verifier_labels.py 48.3% 58

Updated automatically; will refresh on subsequent CI/Docker completions.


Keepalive checklist

Scope

No scope information available

Tasks

  • No tasks defined

Acceptance criteria

  • No acceptance criteria defined

Restrict the format guard to agents:format unlabeled events so labeled
applications do not race the optimizer, and explicitly dispatch the guard
after a failed optimizer releases the format lease because GITHUB_TOKEN
label edits do not emit downstream issue workflows.

Co-authored-by: Cursor <cursoragent@cursor.com>
@stranske
stranske temporarily deployed to agent-high-privilege August 11, 2026 01:40 — with GitHub Actions Inactive

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
.github/scripts/issue_format.py (1)

171-180: 🎯 Functional Correctness | 🟠 Major | 🏗️ Heavy lift

Preserve fence indentation in both validator copies.

Both _headings and _without_fenced_code can close an outer fence at a deeper nested marker because the fence state has no indentation. This can expose commands or headings that remain inside a code example.

  • .github/scripts/issue_format.py#L171-L180: Track opening indentation when _headings matches a closing fence.
  • .github/scripts/issue_format.py#L217-L226: Apply the same indentation-aware state to _without_fenced_code.
  • templates/consumer-repo/.github/scripts/issue_format.py#L171-L180: Keep the consumer _headings implementation consistent with the primary validator.
  • templates/consumer-repo/.github/scripts/issue_format.py#L217-L226: Keep the consumer _without_fenced_code implementation consistent with the primary validator.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/scripts/issue_format.py around lines 171 - 180, Make fence tracking
indentation-aware in both _headings and _without_fenced_code, storing the
opening fence’s indentation and requiring a closing marker to match the
appropriate indentation before clearing the state. Apply the same changes
consistently at .github/scripts/issue_format.py lines 171-180 and 217-226, and
templates/consumer-repo/.github/scripts/issue_format.py lines 171-180 and
217-226.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@tests/scripts/test_issue_format.py`:
- Around line 43-60: Add regression coverage in
test_list_indented_fenced_acceptance_command_is_ignored for indented tilde
fences, parameterized across both validator_path values, and assert they remain
ignored. Add a negative validation case using a function-category task with a
backticked file target to exercise the exclusion near the parser branch at line
139, asserting the expected report outcome.

---

Outside diff comments:
In @.github/scripts/issue_format.py:
- Around line 171-180: Make fence tracking indentation-aware in both _headings
and _without_fenced_code, storing the opening fence’s indentation and requiring
a closing marker to match the appropriate indentation before clearing the state.
Apply the same changes consistently at .github/scripts/issue_format.py lines
171-180 and 217-226, and templates/consumer-repo/.github/scripts/issue_format.py
lines 171-180 and 217-226.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: e5dc9075-577e-44d6-908e-04a5a4d5dd21

📥 Commits

Reviewing files that changed from the base of the PR and between a2349d7 and ab4142b.

📒 Files selected for processing (6)
  • .github/scripts/issue_format.py
  • .github/workflows/agents-issue-format-guard.yml
  • templates/consumer-repo/.github/scripts/issue_format.py
  • templates/consumer-repo/.github/workflows/agents-issue-format-guard.yml
  • tests/scripts/test_issue_format.py
  • tests/workflows/test_agents_issue_optimizer_format_trigger.py

Comment thread tests/scripts/test_issue_format.py
@stranske

stranske commented Aug 11, 2026

Copy link
Copy Markdown
Owner Author

Runner dispatch state for autofix on PR #3036. Do not edit.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
tests/workflows/test_agents_issue_optimizer_format_trigger.py (1)

90-101: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Test the event condition semantically.

The labeled_format check compares string positions. It does not evaluate the Boolean expression. A future (labeled && agents:format) clause placed after the first agents:format occurrence can still pass this test. Assert the specific format clause, or evaluate representative labeled and unlabeled events for both workflows.

As per path instructions, **/*.py requires prioritizing correctness and test coverage for changed behavior.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/workflows/test_agents_issue_optimizer_format_trigger.py` around lines
90 - 101, Strengthen test_format_guard_rechecks_after_format_lease_release by
validating the parsed condition semantically rather than relying on string
positions. Assert that labeled agents:format events do not satisfy the guard
while unlabeled agents:format events do, for both GUARD_PATH and
CONSUMER_GUARD_PATH, using the existing workflow-condition evaluation approach
or an equivalent targeted clause assertion.

Source: Path instructions

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/agents-issue-optimizer.yml:
- Around line 747-750: Add actions: write to the optimize_issue.permissions
configuration in both .github/workflows/agents-issue-optimizer.yml (lines
747-750) and
templates/consumer-repo/.github/workflows/agents-issue-optimizer.yml (lines
600-603) so both retry workflow dispatches can execute; also ensure the consumer
App installation grants Actions: write, since job permissions cannot elevate its
token.

In `@tests/workflows/test_agents_issue_optimizer_format_trigger.py`:
- Around line 104-112: Strengthen
test_format_optimizer_dispatches_guard_after_failed_lease_release by asserting,
for both workflow texts, that the lease-removal command appears before the gh
workflow run agents-issue-format-guard.yml dispatch and that the dispatch
includes the exact || echo "::warning::could not dispatch format guard retry
after lease release" fallback. Keep the existing command-presence checks.

---

Outside diff comments:
In `@tests/workflows/test_agents_issue_optimizer_format_trigger.py`:
- Around line 90-101: Strengthen
test_format_guard_rechecks_after_format_lease_release by validating the parsed
condition semantically rather than relying on string positions. Assert that
labeled agents:format events do not satisfy the guard while unlabeled
agents:format events do, for both GUARD_PATH and CONSUMER_GUARD_PATH, using the
existing workflow-condition evaluation approach or an equivalent targeted clause
assertion.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 8121f6f2-8719-4415-bba1-c4163460ab50

📥 Commits

Reviewing files that changed from the base of the PR and between ab4142b and 94f85a3.

📒 Files selected for processing (5)
  • .github/workflows/agents-issue-format-guard.yml
  • .github/workflows/agents-issue-optimizer.yml
  • templates/consumer-repo/.github/workflows/agents-issue-format-guard.yml
  • templates/consumer-repo/.github/workflows/agents-issue-optimizer.yml
  • tests/workflows/test_agents_issue_optimizer_format_trigger.py

Comment thread .github/workflows/agents-issue-optimizer.yml
Comment thread tests/workflows/test_agents_issue_optimizer_format_trigger.py
Add actions:write to optimize_issue job permissions in root and consumer
optimizer workflows, extend issue-format regression tests per review, and
rebaseline the optimizer template-drift allowlist fingerprints.

Co-authored-by: Cursor <cursoragent@cursor.com>
@stranske
stranske temporarily deployed to agent-high-privilege August 11, 2026 02:38 — with GitHub Actions Inactive

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
tests/workflows/test_agents_issue_optimizer_format_trigger.py (1)

104-118: 🩺 Stability & Availability | 🟡 Minor | ⚡ Quick win

Add coverage for failed lease cleanup.

These assertions prove ordering only. They pass even when lease removal fails and the dispatch still runs. Add a regression assertion that failed removal prevents dispatch, while an already-absent label is handled explicitly.

As per path instructions, **/*.py requires prioritizing correctness, error handling, and test coverage.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/workflows/test_agents_issue_optimizer_format_trigger.py` around lines
104 - 118, Add regression coverage in
test_format_optimizer_dispatches_guard_after_failed_lease_release for the
lease-cleanup shell flow: assert that dispatch is skipped when removing the
agents:format label fails, while an already-absent label is handled explicitly
and still permits the intended retry behavior. Keep the existing ordering and
dispatch-argument assertions, and apply the checks to both workflow files.

Source: Path instructions

.github/workflows/agents-issue-optimizer.yml (1)

748-751: 🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

Prevent retry dispatch before lease release.

Both optimizer workflows continue to dispatch after lease removal fails. The test covers ordering only, so it does not detect this race.

  • .github/workflows/agents-issue-optimizer.yml#L748-L751: Dispatch only after successful removal or verified label absence.
  • templates/consumer-repo/.github/workflows/agents-issue-optimizer.yml#L601-L604: Apply the same lease-state check.
  • tests/workflows/test_agents_issue_optimizer_format_trigger.py#L104-L118: Add a failure-path assertion that failed removal prevents dispatch.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/agents-issue-optimizer.yml around lines 748 - 751, Prevent
format-guard retry dispatch until the lease is confirmed released: update the
cleanup/dispatch flow in .github/workflows/agents-issue-optimizer.yml (748-751)
and templates/consumer-repo/.github/workflows/agents-issue-optimizer.yml
(601-604) to dispatch only after successful label removal or verified
lease-label absence; otherwise skip dispatch. Extend
tests/workflows/test_agents_issue_optimizer_format_trigger.py (104-118) with a
failure-path assertion confirming failed removal does not dispatch the workflow.

Source: Path instructions

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In @.github/workflows/agents-issue-optimizer.yml:
- Around line 748-751: Prevent format-guard retry dispatch until the lease is
confirmed released: update the cleanup/dispatch flow in
.github/workflows/agents-issue-optimizer.yml (748-751) and
templates/consumer-repo/.github/workflows/agents-issue-optimizer.yml (601-604)
to dispatch only after successful label removal or verified lease-label absence;
otherwise skip dispatch. Extend
tests/workflows/test_agents_issue_optimizer_format_trigger.py (104-118) with a
failure-path assertion confirming failed removal does not dispatch the workflow.

In `@tests/workflows/test_agents_issue_optimizer_format_trigger.py`:
- Around line 104-118: Add regression coverage in
test_format_optimizer_dispatches_guard_after_failed_lease_release for the
lease-cleanup shell flow: assert that dispatch is skipped when removing the
agents:format label fails, while an already-absent label is handled explicitly
and still permits the intended retry behavior. Keep the existing ordering and
dispatch-argument assertions, and apply the checks to both workflow files.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 9957ef47-6d34-4ad5-b42f-4b070955c8b3

📥 Commits

Reviewing files that changed from the base of the PR and between 94f85a3 and 08f7785.

📒 Files selected for processing (5)
  • .github/workflows/agents-issue-optimizer.yml
  • config/template-drift-allowlist.txt
  • templates/consumer-repo/.github/workflows/agents-issue-optimizer.yml
  • tests/scripts/test_issue_format.py
  • tests/workflows/test_agents_issue_optimizer_format_trigger.py

@github-actions

github-actions Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Runner dispatch state for codex on PR #3036. Do not edit.

@github-actions github-actions Bot added the autofix Opt-in automated formatting & lint remediation label Aug 11, 2026
@stranske
stranske temporarily deployed to agent-high-privilege August 11, 2026 02:43 — with GitHub Actions Inactive
@github-actions

Copy link
Copy Markdown
Contributor

Autofix updated these files:

  • tests/workflows/test_agents_issue_optimizer_format_trigger.py

@agents-workflows-bot
agents-workflows-bot Bot temporarily deployed to agent-high-privilege August 11, 2026 02:44 Inactive
@stranske
stranske merged commit 0581e62 into main Aug 11, 2026
55 checks passed
@stranske
stranske deleted the automation/sync-review-source-fix-20260811 branch August 11, 2026 02:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

autofix:patch autofix Opt-in automated formatting & lint remediation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants