WIP: fix(docs): give tested runs independent result files #96
No reviewers
Labels
No labels
accessibility
autorelease: pending
autorelease: tagged
bug
dependencies
documentation
duplicate
enhancement
github_actions
good first issue
help wanted
invalid
needs measurements
question
testing wanted
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Longshot!96
Loading…
Reference in a new issue
No description provided.
Delete branch "mooki/Longshot:fix/tested-rows"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Why
Independent test results should not force unrelated pull requests to resolve the same table insertion point. This keeps the evidence requirement while giving every measured run its own file. See #45.
What changed
docs/tested/: one three-line Markdown file per run. Each new row is self-contained, with a unique date/topic/tester/run filename.docs/tested/legacy/: all 82 existing rows moved without changing their text or order. The three pre-existing duplicate pairs remain visible, andas abovekeeps its original meaning within the archive.scripts/tested_configurations.py: validates the headers, eight non-empty cells, dates, duplicates and common relative references; assembles a reading view without committing a shared generated table.tests/test_tested_configurations.py: migration digest, malformed/duplicate/interleaved rows, deterministic ordering, escaped pipes, stale-view rejection and real bare-Git merge regressions. Two edits to the same existing row still conflict.Flags and settings
scripts/tested_configurations.py --output FILEscripts/tested_configurations.py --check FILEBoth are documented in
docs/tested-configurations.mdand the development guide. No game setting changes.Measurements
Base:
77f605a25fHead:
06d7c45637Base suite: 509 passed, 0 failed, 19 skipped.
Head suite: 510 passed, 0 failed, 19 skipped.
main:
77f605a25f(2026-11-13 UTC)this PR: move/fix/tested-rows @
06d7c45637Hardware: Linux 7.2.15-1-omarchy, Git 2.56.0, Python 3.14.8; no GPU work
Scene: none; documentation and Git merge behavior
Method: pinned heads from the Forgejo API; one deterministic merge per head/design, then every pair of the same row additions; source-test output, not elapsed-time or game-performance measurements
How to reproduce:
python -I -B tests/test_tested_configurations.py;python -I -B tests/test_check_pr_description.py;python -I -B tests/run_all.py --jobs 6 --strict. For a pinned branch, find its ancestor withgit merge-base BASE HEAD, then rungit merge-tree --write-tree -z --name-only --no-messages --merge-base=ANCESTOR BASE HEADin a bare repository. Repeat after moving only its inserted rows to unique fragment files and restoring that branch's old table to its ancestor's text.77f605a2506d7c456The 16 moved PRs alone are 13 conflicting heads before conversion and 1 afterwards. The two additional PRs are #75 and #78. This is a newer snapshot than the issue comment's historical 14-of-16 result; it does not replace that observation.
23cc17be6ac3440fef872d5e1652ef660014d5b2ff1179054ba4554baa5915813ff4a5eea3fdd78b70490ce651b604ef58143b9df475365b02c32d0fe8a9913748b374f8248ef589629766eb20633969145a3fd5cca2aebb03efe673c7dddb14a4bd549f215af3281c7c7d1bThe remaining files are
docs/development.mdin #68, and the removedhost/hos_update.candtests/test_linux_update_skip.pyin #75. Every non-table branch change was retained. The final replay uses this PR's actual commit, not just a layout sketch.Conversion is necessary. Unchanged remote heads do not become mergeable just because this PR merges: all 18 have a one-time layout conflict against the migrated table. Twelve sets of moved rows already pass the new validator. #50, #51, #53, #57, #67 and #68 must spell out their
as abovedetails. No remote branch was modified in these experiments.Why not union? Forgejo 17.0.1's conflict check runs the command above in the bare base repository. Adding the committed
merge=unionrule left all 13 table conflicts. Reproducing its sparse merge preparation also conflicted with merge, squash and rebase when the rule was already shared by both branches. The common non-mergeable status is refused before the merge style runs.A full local checkout did honour union. It also returned success while retaining two edits of one row, a duplicate overlapping row and two incompatible headers. Swapping merge direction changed the date order. These are local command reproductions, not a new live server test; the earlier live refusal is already recorded in the issue. The server's Git version and private configuration were not inspected.
Testing
Tested: on Linux, the 14-case fragment test, the existing 18-case description-checker test and the whole game-free suite on the exact head above. The migration regression fails against main because the fragments are absent; the merge regression separately reproduces a shared-table conflict and proves distinct files merge in a bare repository. The exact Forgejo merge commands, real-head replay and same-base pair replay are described above. The base suite has no failures; its removed updater test is not carried as a supposed known failure.
Not tested: Windows execution of the new Python file/path handling; a new live Forgejo merge of fragment PRs; game runs, game builds or frame rates. No game behavior is changed. The static Git experiments are not a measurement of CI time saved.
Needs other testers:
python -I -B tests/test_tested_configurations.py, then generate and check a view with a non-ASCII output filename, expecting the tests to pass and the saved view to match (request to open)Screenshots
Nothing on screen in the game. Each source fragment is an ordinary Markdown table; the combined view is generated on demand.
Risk and rollback
There are more small files, and existing open branches need a one-time conversion. A copied row with
as aboveis refused rather than silently referring to a different test. The archive stays in its original order, not a newly inferred chronological order. Duplicate checks do not judge whether measurements are true, and two different descriptions of the same run still need human review.Reverting the commit restores the old layout. If new fragments have landed by then, first carry their rows into the restored table so evidence is not lost. Do not commit a regenerated combined table alongside the fragments: that would recreate the conflict.
Reviewer notes
Start with
docs/tested-configurations.md, the parser'sread_row/rowsfunctions and the bare-merge test. The 82 legacy files are text-preserving moves, not new measurements.The maintainer decision is whether to adopt this contributor workflow. No server configuration or release automation is required. A hosted combined view is deliberately outside this change; the individual source files remain readable on the forge.
Issues
See #45
Checklist
For everyone
type(scope): description).main.python -I -B tests/run_all.pyrun and passing (any failure that also fails onmainis named above).third_party/untouched (a new folder with aPROVENANCE.mdinstead).If applicable
Assisted-by:/Co-Authored-By:trailers.mainand passing here.tests/that reads changed source updated in this PR, not weakened.New on this forge; not opened on GitHub.
Assisted-by: GPT-6 Astra
Co-Authored-By: GPT-6 Astra [email protected]
View command line instructions
Manual merge helper
Use this merge commit message when completing the merge manually.
Checkout
From your project repository, check out a new branch and test the changes.