{"id":50472488,"url":"https://github.com/mteinum/inrx-siusrank","last_synced_at":"2026-06-01T11:04:05.667Z","repository":{"id":359214479,"uuid":"1245049094","full_name":"mteinum/inrx-siusrank","owner":"mteinum","description":"CLI tool for creating SIUS Rank starter import files from an inrX storage.db3 SQLite database.","archived":false,"fork":false,"pushed_at":"2026-05-30T16:11:28.000Z","size":534,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-30T18:04:51.651Z","etag":null,"topics":["inrx","issf","sius","sportshooting"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mteinum.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-20T21:26:35.000Z","updated_at":"2026-05-30T16:02:57.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/mteinum/inrx-siusrank","commit_stats":null,"previous_names":["mteinum/inrx-siusrank"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/mteinum/inrx-siusrank","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mteinum%2Finrx-siusrank","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mteinum%2Finrx-siusrank/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mteinum%2Finrx-siusrank/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mteinum%2Finrx-siusrank/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mteinum","download_url":"https://codeload.github.com/mteinum/inrx-siusrank/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mteinum%2Finrx-siusrank/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33771633,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-01T02:00:06.963Z","response_time":115,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["inrx","issf","sius","sportshooting"],"created_at":"2026-06-01T11:04:05.610Z","updated_at":"2026-06-01T11:04:05.658Z","avatar_url":"https://github.com/mteinum.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# teinum-inrx-siusrank\n\n[![Build and test](https://github.com/mteinum/inrx-siusrank/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/mteinum/inrx-siusrank/actions/workflows/ci.yml)\n[![Build and release](https://github.com/mteinum/inrx-siusrank/actions/workflows/release.yml/badge.svg)](https://github.com/mteinum/inrx-siusrank/actions/workflows/release.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n\nCLI tool for creating SIUS Rank starter import files from an inrX `storage.db3` SQLite database.\n\nThe program reads registrations and starter data from inrX and writes CSV files that can be imported into SIUS Rank with `Update starters from file`.\n\nThe tool does not create a separate SIUS Data start list. SIUS Rank creates the SIUS Data start list from the imported starters.\n\n## Related Links\n\n- [inrX](https://inrx.org)\n- [SIUS Rank](https://www.sius.com/en/product-page/siusrank)\n\n## Configuration\n\nThe application loads `appsettings.json` from the current directory or from the executable directory. You can also pass a specific file with `--settings`.\n\nDefault `appsettings.json`:\n\n```json\n{\n  \"Paths\": {\n    \"Inrx\": \"C:\\\\Program Files (x86)\\\\inrX\",\n    \"SiusRankTemplates\": \"C:\\\\SIUS\\\\SiusRank\\\\Resources\\\\Templates\"\n  }\n}\n```\n\n`Paths.Inrx` is used to find `storage.db3` as `\u003cInrx\u003e\\storage.db3` when `--db` is not supplied. If your database is somewhere else, either pass `--db` or add `Paths.Database` to `appsettings.json`.\n\n`Paths.SiusRankTemplates` is used to find `ShooterGroupsTemplate.xml` when `--shooter-groups-template` is not supplied. Command-line options override values from `appsettings.json`.\n\n## Export Format\n\nThe CSV uses the SIUS Rank starter import format, with the same header style as `SiusRank_importExample.csv`:\n\n```text\nStartNumber;AccreditationNumber;IssfId;DisplayNameLong;DisplayName;FirstName;Name;BirthDay;Gender;Nation;BibNumber;TargetNumber;Relay;TeamIndex;DuellIndex;Groups;Comment;StarterId;TeamPosition;Team;TeamDisplay;TeamDuellIndex;TeamComment\n```\n\nImportant mappings:\n\n- `StartNumber`, `BibNumber`, and `StarterId` are assigned as championship numbers using the event year plus a shared shooter sequence, for example `26001` for 2026. The same `Deltaker.Id` receives the same number across all selected events. The exporter reads and writes `bib-map.csv` in the output directory so regenerated files keep existing `Deltaker.Id` to bib mappings and only allocate new numbers for new shooters. `nsfId` is stored in the map for control and traceability. `AccreditationNumber` keeps the existing membership-number fallback behavior, using the assigned start number when no membership number exists.\n- KM/NM class is read from `Resultat.MklasseId1`. If that class is missing or `-` and the ordinary inrX class matches an approbert 25m/50m pistol class for the exercise, that class is used instead, for example `A` and `D` in 50m Fripistol `2A`. Otherwise `Hurtig Grov`, `Grovpistol`, `Silhuett`, and `Fripistol` are exported as `Apen`; other exercises fall back to gender, with male shooters exported as class `M` and female shooters as class `K`.\n- `Groups` is derived from the effective class, for example `Å -\u003e Apen`, `V55 -\u003e V55`, `Jm -\u003e Jrm`, `SH-Åpen -\u003e SH Å`.\n- `Team` and `TeamDisplay` are filled with the club short name.\n- Names are kept at full length as shown in SIUS Rank.\n\n## Interactive Run\n\nFrom the repository root:\n\n```bash\ndotnet run --project InrxToSiusRank/src/InrxToSiusRank -- --wizard\n```\n\nThe wizard lets you select the event and exercise, then writes one import file per KM/NM class. Use `--db storage.db3` if the database is not available through `appsettings.json`.\n\n## Create Import Files\n\nOne file per KM/NM class for one event:\n\n```bash\ndotnet run --project InrxToSiusRank/src/InrxToSiusRank -- \\\n  --db storage.db3 \\\n  --stevne-id 405 \\\n  --output-dir siusrank-import\n```\n\nSpecify the exercise when a selected event has more than one exercise:\n\n```bash\ndotnet run --project InrxToSiusRank/src/InrxToSiusRank -- \\\n  --db storage.db3 \\\n  --stevne-id 405 \\\n  --ovelse Fripistol \\\n  --output-dir siusrank-import\n```\n\nOne file per KM/NM class for several events:\n\n```bash\ndotnet run --project InrxToSiusRank/src/InrxToSiusRank -- \\\n  --db storage.db3 \\\n  --stevne-ids 405-411 \\\n  --output-dir siusrank-import\n```\n\nWhen `--stevne-ids` is used without `--ovelse` or `--ovelse-id`, all exercises in the selected events are exported in the same run. This keeps the `26nnn` start and bib number sequence shared across the generated files.\n\n`--stevne-ids` supports both comma-separated ids and ranges:\n\n```text\n405,406,407\n405-411\n405-407,409,411\n```\n\nExample output files:\n\n```text\n20260706_Fri_Apen.csv\n20260706_Fri_SH1-P4.csv\n20260707_Silhuett_Apen.csv\n20260707_Silhuett_Jr-NM.csv\n20260707_Silhuett_V55.csv\n20260708_Standard_M.csv\n20260709_Fin_K.csv\n20260709_Fin_Jk.csv\n20260709_Fin_SH1-P3.csv\n20260709_Grov_Apen.csv\n20260711_HurtigFin_M.csv\n20260711_HurtigGrov_Apen.csv\n```\n\n## Validate Shooter Groups\n\nThe repository includes the SIUS Rank templates:\n\n```text\nTemplates/ShooterGroupsTemplate.xml\nTemplates/ShootEventsTemplate2026_NM_Pistol.xml\nTemplates/ShootEventsTemplate2026_Approberte_Pistol.xml\n```\n\nThe standard location in a SIUS Rank Windows installation is:\n\n```text\nC:\\SIUS\\SiusRank\\Resources\\Templates\n```\n\n`ShooterGroupsTemplate.xml` can be used to validate that the exported `Groups` values exist in the SIUS Rank setup:\n\n```bash\ndotnet run --project InrxToSiusRank/src/InrxToSiusRank -- \\\n  --db storage.db3 \\\n  --stevne-ids 405-411 \\\n  --output-dir siusrank-import \\\n  --shooter-groups-template Templates/ShooterGroupsTemplate.xml\n```\n\nThis does not change the export. It only stops the run if a `Groups` value is not found in the template file.\n\nIf `Paths.SiusRankTemplates` points to a directory containing `ShooterGroupsTemplate.xml`, validation is enabled automatically. The XML template files are copied to `Templates/` next to the published executable when you run `dotnet publish`; `appsettings.json` is also copied next to the executable.\nFor use in SIUS Rank, copy the files to `C:\\SIUS\\SiusRank\\Resources\\Templates`.\n`ShootEventsTemplate2026_NM_Pistol.xml` contains class-specific NM shoot events such as `Fri_V73`,\n`Standard_M`, and `Fri_SH1-P4`, so SIUS Rank reports show the class in the event heading.\n`ShootEventsTemplate2026_Approberte_Pistol.xml` contains normal approberte 25m/50m pistol events for the NSF 2026 classes, excluding 25m NAIS Fin/Grov.\nWhen an export uses an approbert pistol class, output file names use those event codes, for example `2A_A`, `2A_D`, and `6F_SH-Apen`.\n\n## Seed NM Startlag\n\nPreview NM startlag seeding from the NSF ranking API without changing the database:\n\n```bash\ndotnet run --project InrxToSiusRank/src/InrxToSiusRank -- \\\n  seed-startlag \\\n  --db storage.db3 \\\n  --stevne-ids 405-411\n```\n\nThe command uses the 2026 ranking period by default:\n\n```text\n2025-12-31T23:00:00.000Z - 2026-12-31T22:59:59.999Z\n```\n\nOverride it with `--ranking-period-start` and `--ranking-period-end`.\n\nApply the planned changes to `storage.db3`:\n\n```bash\ndotnet run --project InrxToSiusRank/src/InrxToSiusRank -- \\\n  seed-startlag \\\n  --db storage.db3 \\\n  --stevne-ids 405-411 \\\n  --apply\n```\n\nBefore writing, the command creates a backup named:\n\n```text\nstorage.db3.bak-seed-YYYYMMDD-HHMMSS\n```\n\nSeeding matches NSF ranking rows by `Deltaker.sa2Id == ranking.personId`. Eligible seeded classes are `Å`, `M`, `K`, `Jr-NM`, `Jm`, and `Jk`. Classes stay as contiguous blocks. Multi-shooter seed groups stay together. For non-Silhuett events, the seed group is placed at the latest point in its class block that avoids creating an underfilled startlag before it; remaining targets after a seed group can be filled by the same or next class. Silhuett/RFP uses side targets `2, 4, 7, 9, 12, 14, 17, 19, 22, 24, 27, 29, 32, 34` so SIUS Rank can import two shooters per skivestativ with V/H filters. Other 25m exercises use competition targets `1-35`; targets `36-38` are kept spare.\n\nThe next proposed seeding rule set is documented as [NM2026 seeding proposal v1.3](docs/nm2026-seeding-proposal-v1.3.md). It covers club spreading, Finpistol-to-Grovpistol turnaround conflicts, and junior finalist placement constraints.\n\n## Show NM Timetable\n\nShow the NM startlag timetable from `storage.db3`:\n\n```bash\ndotnet run --project InrxToSiusRank/src/InrxToSiusRank -- \\\n  show-timetable \\\n  --db storage.db3\n```\n\n`show-timetable` defaults to NM `Stevne.Id` `405-411`. Use `--stevne-id` or `--stevne-ids` to narrow it:\n\n```bash\ndotnet run --project InrxToSiusRank/src/InrxToSiusRank -- \\\n  show-timetable \\\n  --db storage.db3 \\\n  --stevne-id 406\n```\n\nThe output lists each NM event, configured target range, startlag time, shooter count versus capacity, and class mix. Finpistol and Grovpistol are shown as two-stage events: Precision on `2026-07-09` and Rapid on `2026-07-10`, with Finpistol before Grovpistol on both days. Startlag over target capacity are marked `OVER CAPACITY`.\n\n## Write SIUS Rank Results Back to inrX\n\nAfter results are calculated in SIUS Rank, press `Rank List Main` for the relevant event(s). SIUS Rank writes ODF XML files under its `Exports` directory. The `writeback-siusrank` command reads those exported `IndividualResults` XML files and writes completed results back to inrX `Resultat` rows.\n\nPreview without changing `storage.db3`:\n\n```bash\ndotnet run --project InrxToSiusRank/src/InrxToSiusRank -- \\\n  writeback-siusrank \\\n  --db storage.db3 \\\n  --stevne-ids 413-417 \\\n  --exports Rank_A/Exports \\\n  --bib-map siusrank-import/bib-map.csv\n```\n\nApply the updates:\n\n```bash\ndotnet run --project InrxToSiusRank/src/InrxToSiusRank -- \\\n  writeback-siusrank \\\n  --db storage.db3 \\\n  --stevne-ids 413-417 \\\n  --exports Rank_A/Exports \\\n  --bib-map siusrank-import/bib-map.csv \\\n  --apply\n```\n\nBefore writing, the command creates a backup named:\n\n```text\nstorage.db3.bak-siusrank-writeback-YYYYMMDD-HHMMSS\n```\n\nUse `--event` to limit the import to one or more SIUS Rank event names:\n\n```bash\ndotnet run --project InrxToSiusRank/src/InrxToSiusRank -- \\\n  writeback-siusrank \\\n  --db storage.db3 \\\n  --stevne-id 413 \\\n  --exports Rank_A/Exports \\\n  --bib-map siusrank-import/bib-map.csv \\\n  --event HurtigFin_M,HurtigFin_K\n```\n\nMatching is done by `bib-map.csv` first, then by old inrX result id, NSF/accreditation number, and finally by unique name. Rows without a complete exported result with shots are skipped. SIUS Rank ODF exports contain total inner tens but not a per-shot inner-ten flag, so the writeback reconstructs the per-shot `O` markers by assigning the closest exported 10s until the exported inner-ten total is reached.\n\n## ShootingSportsCloud Setup\n\nThe tool can also create deterministic ShootingSportsCloud setup files for the NM2026/SIUS Rank workflow. This is file generation only; it does not forward live results to SSC.\n\nExport SSC users from the same inrX events and `bib-map.csv` used for SIUS Rank:\n\n```bash\ndotnet run --project InrxToSiusRank/src/InrxToSiusRank -- \\\n  export-ssc-users \\\n  --db storage.db3 \\\n  --stevne-ids 405-411 \\\n  --bib-map siusrank-import/bib-map.csv \\\n  --output ssc-setup/ssc-users.csv \\\n  --organization-name Legacy \\\n  --organization-id f95a2bc3-79bd-4c24-98b6-4e17f99bbfaf\n```\n\nThe CSV header matches the SSC user export/import columns:\n\n```text\nOrganizationName,OrganizationId,UserId,Name,FirstName,DisplayName,NationName,DisplayNationName,ISOCode,IOCCode,UserClassName,UserClassId,UserGroupName,UserGroupId,ShootingSportsCloudUserId,DateOfBirth,Gender,UserPictureId,UserPreferredLanguage\n```\n\n`UserId` uses the same stable `26xxx` number as SIUS Rank `StartNumber`/`BibNumber`. Date of birth is exported as `yyyy-MM-dd` only when the inrX value is a full supported date; gender is exported as `M`/`F` when it maps safely. Default encoding is UTF-8 BOM; `--encoding windows-1252` is also supported.\n\nValidate before match day:\n\n```bash\ndotnet run --project InrxToSiusRank/src/InrxToSiusRank -- \\\n  validate-ssc \\\n  --db storage.db3 \\\n  --stevne-ids 405-411 \\\n  --bib-map siusrank-import/bib-map.csv \\\n  --users-csv ssc-setup/ssc-users.csv\n```\n\nGenerate lane/reset payload files:\n\n```bash\ndotnet run --project InrxToSiusRank/src/InrxToSiusRank -- \\\n  export-ssc-lanes \\\n  --db storage.db3 \\\n  --stevne-id 405 \\\n  --startlag \"2026-07-06T09:00:00\" \\\n  --bib-map siusrank-import/bib-map.csv \\\n  --output-dir ssc-setup/lanes \\\n  --lane-count 40\n```\n\n`export-ssc-lanes` writes a reset JSON covering every lane `1..lane-count` and an active-lanes JSON for the selected startlag containing `lane`, `UserId`, `DisplayName`, and `ExerciseName`. The JSON is marked as an internal payload spec candidate until a final SSC API/MQTT contract is confirmed.\n\nNM2026 uses SIUS SA951 shooting monitors. SA951 is not Watchtower AthleteMonitor, and `AthleteMonitorConnected=false` is correct. Watchtower Range Live Results in Kanopus 2026.1.3 reads from the `AthleteMonitor` viewdata source and can throw `NullReferenceException` in `GetExerciseViewDataFromClient` when no AthleteMonitor client exists. These SSC commands do not require or change AthleteMonitor settings.\n\nMore detail: [docs/ssc-integration.md](docs/ssc-integration.md).\n\n## Desktop UI\n\nAn Avalonia desktop app is available for Mac and Windows testing. It wraps the same export and writeback code as the CLI and provides:\n\n- CSV export with `bib-map.csv` reuse.\n- Copy bundled SIUS Rank template XML files to `C:\\SIUS\\SiusRank\\Resources\\Templates`.\n- SIUS Rank writeback dry-run and apply.\n- SSC users export, validation, and lane/reset payload generation.\n- Read-only database diagnostics for selected `Stevne.Id` values.\n\nThe desktop app remembers selected paths and filters in a per-user `desktop-settings.json`, so `storage.db3`, output directory, shooter groups XML, exports directory, and related fields are restored on the next launch.\n\nRun it from the repository root:\n\n```bash\ndotnet run --project InrxToSiusRank/src/InrxToSiusRank.Desktop\n```\n\nBuild a local self-contained desktop package:\n\n```bash\ndotnet publish InrxToSiusRank/src/InrxToSiusRank.Desktop/InrxToSiusRank.Desktop.csproj \\\n  -c Release \\\n  -r osx-arm64 \\\n  --self-contained true \\\n  /p:PublishSingleFile=true\n```\n\nUse `-r win-x64` for Windows. Release assets are named like:\n\n```text\nInrxToSiusRank.Desktop-v0.7.8-win-x64.zip\nInrxToSiusRank.Desktop-v0.7.8-osx-arm64.tar.gz\n```\n\n## Build Windows Exe\n\nCreate a self-contained Windows executable:\n\n```bash\ndotnet publish InrxToSiusRank/src/InrxToSiusRank/InrxToSiusRank.csproj \\\n  -c Release \\\n  -r win-x64 \\\n  --self-contained true \\\n  /p:PublishSingleFile=true\n```\n\nThe executable is written to:\n\n```text\nInrxToSiusRank/src/InrxToSiusRank/bin/Release/net8.0/win-x64/publish/InrxToSiusRank.exe\n```\n\nOn Windows:\n\n```powershell\n.\\InrxToSiusRank.exe --wizard\n```\n\nFile export on Windows:\n\n```powershell\npowershell -ExecutionPolicy Bypass -File .\\sync.ps1\n```\n\nOverride paths if needed:\n\n```powershell\n.\\sync.ps1 -DatabasePath \"C:\\Users\\ms\\Dropbox\\KPS-Stevne\\INRX191\\storage.db3\" -StevneIds \"413-417\" -OutputDir \".\\siusrank-import\"\n```\n\n## Create GitHub Release\n\nThe `.github/workflows/release.yml` workflow can be run manually from GitHub Actions with a version, for example `v0.1.0`.\n\nUsing GitHub CLI:\n\n```bash\ngh workflow run release.yml -f version=v0.1.0\n```\n\nYou can also create a release by pushing a tag:\n\n```bash\ngit tag v0.1.0\ngit push origin v0.1.0\n```\n\nThe workflow runs tests, then publishes both CLI and Avalonia desktop release assets for:\n\n```text\nwin-x64\nosx-x64\nosx-arm64\nlinux-x64\n```\n\nCLI assets are named `InrxToSiusRank-\u003cversion\u003e-\u003crid\u003e.*`. Desktop assets are named `InrxToSiusRank.Desktop-\u003cversion\u003e-\u003crid\u003e.*`.\n\n## Options\n\n```text\n--settings \u003cpath\u003e                   Path to appsettings.json.\n--db \u003cpath\u003e                         Path to storage.db3. Overrides appsettings.\n--wizard                            Start interactive wizard.\n--stevne-id \u003cid\u003e                    Select one Stevne.Id.\n--stevne-ids \u003cids\u003e                  Select several events and export all exercises, for example 405,406 or 405-411.\n--event-date \u003cyyyy-MM-dd\u003e           Select event by date.\n--event-name \u003ctext\u003e                 Filter event by name together with --event-date.\n--ovelse \u003cname\u003e                     Select exercise, for example Fripistol.\n--ovelse-id \u003cid\u003e                    Select OvelseDef.Id.\n--output-dir \u003cpath\u003e                 Directory for generated CSV files.\n--shooter-groups-template \u003cpath\u003e    Validate Groups against SIUS Rank template.\n--encoding \u003cutf8-bom|windows-1252\u003e  Encoding. Default: utf8-bom.\nseed-startlag                       Preview or apply NM startlag seeding from NSF ranking.\n--ranking-period-start \u003ciso\u003e        Ranking period start for seed-startlag.\n--ranking-period-end \u003ciso\u003e          Ranking period end for seed-startlag.\n--apply                             Write seed-startlag changes after creating a backup.\nshow-timetable                      Show NM timetable. Default Stevne.Id range: 405-411.\nwriteback-siusrank                  Preview or apply SIUS Rank Rank List Main ODF XML results back to inrX.\n--exports \u003cpath\u003e                    SIUS Rank Exports directory for writeback-siusrank.\n--bib-map \u003cpath\u003e                    Optional bib-map.csv for writeback-siusrank.\n--event \u003cname\u003e                      Optional comma-separated SIUS event filter for writeback-siusrank.\nexport-ssc-users                    Export SSC user import CSV from inrX starters.\n--output \u003cpath\u003e                     Output CSV path for export-ssc-users. Omit for dry-run.\n--organization-name \u003cname\u003e          SSC OrganizationName. Default: Legacy.\n--organization-id \u003cguid\u003e            SSC OrganizationId.\nvalidate-ssc                        Validate SSC users CSV, bib-map, targets, and exercise mapping.\n--users-csv \u003cpath\u003e                  SSC users CSV for validate-ssc.\nexport-ssc-lanes                    Write SSC reset and active-lanes JSON payload files.\n--startlag \u003cdatetime\u003e               Startlag datetime for active lanes, for example 2026-07-06T09:00:00.\n--lane-count \u003c10|25|40\u003e             Lane count. Default: 40.\n```\n\n## Test\n\n```bash\ndotnet test InrxToSiusRank/InrxToSiusRank.sln\n```\n\n## License\n\nMIT. See [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmteinum%2Finrx-siusrank","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmteinum%2Finrx-siusrank","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmteinum%2Finrx-siusrank/lists"}