Description-only preset edits split comma-containing exact goals into separate goals
Maintainers usually reply within 2 days
@MRX-72 is already working on this.
Since Nov 1, 2026.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 78/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- react, typescript
- Domain
- frontend
Research direction
Start with frontend/src/components/Scenarios/parameterForm.ts, especially the list serialization at lines 103–107, and trace how ScenarioPresetEditor submits unchanged goal values. Keep list values lossless so editing only the description preserves goal contents, order, duplicates, and empty lists; verify the reported comma-containing goal case and the other listed edge cases.
Written by the indexing model from the issue text.
Description
Describe the bug
Editing only a scenario preset description serializes an unconstrained list of exact goals as comma-joined text, then splits commas inside individual goal strings into new goals.
Steps/Code to Reproduce
Open a preset with goals ['Hello, world!', 'Second goal'], edit only Description, and save through the ScenarioPresetEditor form.
Expected Results
Unrelated edits preserve the original list elements and order exactly: ['Hello, world!', 'Second goal'].
Actual Results
Editor submitted ['Hello', 'world!', 'Second goal']; goal count changed from two to three and behavioral preset identity changed. Both old and new payloads pass the actual scenario preset/configuration validators, so validation does not detect the data loss.
Verified source reference: parameter form list serialization.
Proposed fix/regression: keep list values structured or use a lossless representation; preserve untouched stored values. Cover commas, significant whitespace, empty lists, duplicates, and order. This differs from empty SearchReplace scalar strings (finding 48).
Screenshots
Not applicable; submitted payload is inline.
Versions
Tested commit d3446e045960b5ebee4641aa70fdeb03af186587, PyRIT 1.2.0.dev0, offline actual React component/router with deterministic service mocks; backend model/config validators accepted both payloads. Evidence: files/evidence/round12/comma-goal-payload.json and regressions.txt; local paths are not attachments.
- Dominant language
- Python
- Stars
- 4.7k
- Forks
- 1k
- Avg merge
- 2d 2h
- Merged PRs (30d)
- 439
Getting set up
Starts the project's dev container in your browser, under your own GitHub account.
- No Dockerfile or Docker Compose file
- Has a pull request template
- No contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from microsoft/PyRIT
-
BUG: LLMGenericTextConverter identifier changes between processes for set-valued template parametersOpenBug: triage
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
Maintainers usually reply within 2 days
-
Bug: triage
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 2 days
-
GUI rejects valid empty-string SearchReplaceConverter settings, preventing deletion convertersPossibly taken @Darshika140 claimed this today. Openhelp wanted
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
microsoft/PyRIT#3749 · 3 comments · 1 assignee ·
Maintainers usually reply within 2 days
-
HTML scenario export replaces an intentionally empty converted message with the original textPossibly taken @VISHNU0906 claimed this 1 day ago. Openhelp wanted
Difficulty 2/5 1-3 hours Newbie friendliness 77/100
microsoft/PyRIT#3741 · 1 comment · 1 assignee ·
Maintainers usually reply within 2 days
-
ReferenceField has no component tests and only 42.4% line coveragePossibly taken @ppcvote claimed this today. Openhelp wanted
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 2 days
Similar issues
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
aws/sagemaker-python-sdk#6554 ·
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 78/100
huggingface/diffusers#15170 ·
Maintainers usually reply within 1 day
-
[BUG] LLM conflict check ignores MNEMOSYNE_LLM_MAX_TOKENS, so reasoning models return empty repliesOpen
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
mnemosyne-oss/mnemosyne#1325 ·
Maintainers usually reply within 1 day
-
enhancement meshtastic-2.8
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
pskillen/meshflow-api#459 ·