Validated on 2026-10-20 on Linux, Python 3.14.8 and Chromium. Accepted main:
ed2a113 (0.1.0.38); proposed application version: 0.1.0.39.
ArgumentEditor.tsx and style.css align each name/enable block with its value,
move type metadata beside the name, use an accessible required-only asterisk,
bound numeric/select widths to 16rem and string widths to 24rem, and give help
12px top spacing plus bottom padding. Below 600px, values stack beneath their
names. Checkbox and name metadata wrap as a unit; editable strings remain whole.
Flags have no value field or value heading.
parameterRows.ts projects unambiguous required omissions through the existing
validator. LaunchSimulation.tsx lets validation/save/start attempts reveal these
rows, clear a hiding search and focus the first omitted input/flag. The existing
validation guards still return before requests or launch. Correcting omissions
clears their borders and concise, associated error text. Successful validation
does not reset search. No defaults are inserted, values coerced or flags invented.
Other validation errors retain their existing diagnostics. Explicit empty strings
remain supplied string values; invalid numeric strings retain typed diagnostics.
parameterPresentation.ts also searches the displayed integer/string type names.
The existing required-first groups, manual rows, exact argv and explicit saved
manual-mode bypass are retained. #104 is merged; #107 wording and #108 collapsible
collections remain separate work, not prerequisites or implemented subissues.
There are no backend, SWSS, storage/schema, solver or historical-record changes.
- 28 frontend cases passed: argument parsing, exact argv, presentation/search, required values and flags, absent versus explicit empty strings, aliases, repeats, delimiters, ambiguous/manual tokens, optional unknown defaults and disabled drafts. Two focused cases cover omission projection and displayed types.
- 16 focused Python parameter/application-version tests passed, with the existing
Starlette/httpx deprecation warning. Source tests used
PYTHONPATH=src. - TypeScript, bundled frontend build, version-policy and whitespace checks passed. Third-party notices are unchanged.
- Wheel and sdist built externally; a wheel rebuilt from the extracted sdist has identical member names/bytes. Installed assets match the checkout. Python, CLI, API, OpenAPI and browser label report 0.1.0.39. Installed API/assets work with outbound socket connections denied and Git/Node absent from PATH.
Commands used (Node was /usr/lib/chatgpt/resources/cua_node/bin/node):
node_modules/.bin/esbuild frontend/parameters.test.mjs frontend/parameterPresentation.test.mjs frontend/arguments.test.mjs --bundle --platform=node --format=esm --out-extension:.js=.mjs --outdir=/tmp/simshelf-109/tests
node --test /tmp/simshelf-109/tests/*.mjs
PYTHONPATH=src python -m pytest -q -p no:cacheprovider tests/test_application_version.py tests/test_parameters.py
node node_modules/typescript/bin/tsc --noEmit
node frontend/build.mjs
python scripts/application_version.py --base-ref origin/mainUsed only a new external workspace generated by tests/fixtures/parameter_list.py.
The disposable mixed companion was extended with required --confirm and an
integer --queue-zmin; its initial argv was emptied. No scientific sources or
owner workspace were used. Local artifacts/screenshots: /tmp/simshelf-109/.
- Attempting Start with the required integer, float and flag absent revealed all three containers, cleared a search hiding them, focused the first input and left argv empty. Correction removed errors; Space included the flag.
- Search and saved settings retained
00032and1e-3. Successful validation retained the active search. The harmless fixture completed with exit 0 and complete copied-log capture; its record and stdout contained exactly['--queue-zmin=00032', '--diag-dt=1e-3', '--confirm']. - All 77 optional declarations returned after clearing search, with zero required
markers or overflowing rows. A
2e-3edit survived filtering away/back; long comma-separated string text remained editable. Manual rows remained visible. - Explicit manual bypass saved successfully with the required flag omitted; reopening retained manual mode and no typed error borders. No bypass launch was performed.
- Light, Dark, Onyx, Slate and Linen: checked at 1280×1000 and 390×844. Each mixed
layout showed exactly three markers and one error when only the required flag
was omitted, with no row overflow. Required feedback and keyboard focus remained
distinguishable. Long names wrapped beside their checkbox on narrow screens.
Labels,
aria-invalid, descriptions and focus were inspected; no actual screen reader was used.
Sandboxed Node reported file-level results rather than individual cases, and the
sandboxed Python TestClient stalled; it was interrupted and focused checks passed
outside the sandbox. Initial packaging lacked setuptools; declared build tools
were installed only in a disposable environment. The first local-server command
used unsupported --no-browser; corrected to --no-open. A search-type test
initially matched int in shared help text ("Integration"); isolated fixture help
corrected the assertion. Browser checks caught and corrected an unwanted search
reset on successful validation and isolated-checkbox wrapping for long names.
Pip reported an unavailable cache in the sandbox.
No real scientific solver, GPU workload, Windows/macOS, other browser engine,
actual screen reader or exhaustive backend suite was tested. Native one-line
text controls scroll long values horizontally; they do not truncate stored text.
Build checks reuse installed runtime dependencies through a disposable .pth;
this is not clean dependency-resolution certification. No release/publication.
- Open New run for a trusted many-parameter simulation. Inspect compact controls, long names, choices and help in your preferred theme at desktop/narrow widths.
- With a disposable mixed-required fixture, omit a required value and flag, search them out of view, and attempt validation or Start. Confirm precise borders, focus, no launch and no default insertion; correct each omission.
- Search by name, alias, help and type; edit/filter/back and compare Exact argv. Check explicit empty strings, numeric spelling and manual tokens on save/reopen.
- Confirm intentional manual mode remains clearly labeled and persists. Review the existing grouping separately from future #107/#108 work. Merge only after owner review; this PR does not authorize publication.