message (WARNING
"Linux vendor-command paths require CAP_SYS_RAWIO. "
"A normal build does not install this capability. "
- "After validating the exact executable, run the candidate validation "
- "script's capability phase or validation/friidump-linux-rawio-capability.sh install. "
+ "After validating the exact executable, run "
+ "validation/friidump-linux-rawio-capability.sh install. "
"Do not run the entire FriiDump process as root; rebuilding or replacing "
"the executable clears file capabilities."
)
# FriiDump — Project Frankenstein Branch
-## Candidate21 Linux Xbox DMI boundary correction
+## FriiDump 0.5.3.16-pf1 Linux Xbox DMI boundary correction
Candidate20 proved the complete Linux GDR-8050L Xbox command and data path:
direct SG_IO challenge delivery, both game-view transitions, XDVDFS metadata,
drive-captured game lead-in, partial GAME-XDVDFS output, controlled
cancellation, hashes, native reporting, and STOP UNIT.
-Candidate21 preserves that exact Windows-sequence control flow and SG_IO
-handshake. It corrects one remaining MMC boundary: standard READ DVD STRUCTURE
-uses CDB byte 7 for the Format field. Candidate20 incorrectly wrote the format
-to byte 11 (Control), so DMI format `0x04` was not captured and the media ID
-remained empty.
+FriiDump 0.5.3.16-pf1 preserves that exact Windows-sequence control flow and
+SG_IO handshake. It corrects one remaining MMC boundary: standard READ DVD
+STRUCTURE uses CDB byte 7 for the Format field. Candidate20 incorrectly wrote
+the format to byte 11 (Control), so DMI format `0x04` was not captured and the
+media ID remained empty.
-Candidate21 also adds persistent PFI/DMI capture diagnostics and a source
+The release also adds persistent PFI/DMI capture diagnostics and a source
contract that compares the portable request against the proven copied Windows
`GetMediaID()` request.
See [`docs/LINUX.md`](docs/LINUX.md) before Linux hardware use.
## Candidate11 Linux Xbox parity baseline
-
Candidate11 begins the Linux parity campaign without replacing the validated
Windows/MSVC GDR-8050L path. The Windows copied-reference implementation remains
unchanged for challenge drives. Linux now uses the existing portable MMC/Xbox
FriiDump is a command-line optical-disc dumping tool for Nintendo GameCube,
Nintendo Wii, standard DVD-ROM, and selected Original Xbox/XGD workflows. This
-repository preserves the Project Frankenstein development branch based on
-FriiDump **0.5.3.5**.
+repository preserves the Project Frankenstein release line through
+FriiDump **0.5.3.16-pf1**.
The branch extends the original FriiDump code with:
## Repository status
-This is the active canonical Project Frankenstein FriiDump repository. Authority
-was accepted at annotated tag `v0.5.3.5-pf1`. The imported baseline is
-intentionally conservative: source and
-maintained documentation were preserved, while disc images, live logs, compiled
-binaries, build directories, result archives, and unrelated reverse-engineering
-work were excluded.
+This is the active canonical Project Frankenstein FriiDump repository.
+FriiDump 0.5.3.16-pf1 incorporates the accepted native-reporting campaign,
+Linux raw-I/O authorization boundary, GameCube/Linux parity work, and the
+GDR-8050L Linux Xbox DMI correction.
-The baseline source came from:
+Release authority is the annotated tag `v0.5.3.16-pf1`. Verify its live tag
+object, peeled commit, and tree before treating a checkout or archive as
+canonical.
-```text
-D:\vscode-workspace\friidump
-```
-
-No firmware binaries or disc images belong in this Git repository.
+Disc images, live logs, compiled binaries, build directories, result archives,
+and unrelated reverse-engineering work remain outside this repository.
Authority surfaces:
```text
repository: /srv/project-frankenstein/repos/friidump.git
authority marker: /srv/project-frankenstein/catalog/authority/friidump.json
-canonical tag: v0.5.3.5-pf1
+canonical tag: v0.5.3.16-pf1
```
## Build
-
### Windows — validated MSVC 32-bit path
The maintained Windows helper invokes the Visual Studio 2019 Build Tools
later. See [`COPYING`](COPYING). Existing source-file copyright notices and
authors are preserved.
-## Candidate21 Xbox Linux scope
+## FriiDump 0.5.3.16-pf1 Xbox Linux scope
Candidate21 preserves Candidate20's successful SG_IO Xbox handshake and
Windows state-machine order. The only functional correction is the standard
"%~dp0friidump.exe" --help > "%HELP_LOG%" 2>&1
type "%HELP_LOG%"
-findstr /c:"FriiDump 0.5.3.16-pf1-candidate21" "%HELP_LOG%" >nul
+findstr /c:"FriiDump 0.5.3.16-pf1" "%HELP_LOG%" >nul
if errorlevel 1 (
echo [ERROR] FriiDump help/version smoke test failed.
del /q "%HELP_LOG%" >nul 2>nul
## Authority
-FriiDump remains governed by the established Project Frankenstein repository
-and promoted release history. Candidate11 is a development candidate derived
-from candidate10; it is not yet a promoted release.
+FriiDump 0.5.3.16-pf1 is the release line prepared from the accepted
+Candidate21 implementation. The annotated release tag is the immutable
+authority after publication; verify the live tag object, peeled commit, and
+tree rather than inferring authority from a checkout directory or ZIP name.
## Validated paths
-- Windows/MSVC 32-bit candidate10 challenge-drive behavior remains the current
- live-validated Windows authority.
-- Candidate11 compiles cleanly through Linux/CMake as a static binary.
-- Native-report fixtures and schema/semantic validation pass.
-- A portable XDFS/XBE metadata fixture proves title, media ID, Title ID, raw
- GameRegion, formatted region, and UTF-16-to-UTF-8 conversion.
-- Linux ISO/XISO code now returns the same structured Xbox result fields used by
- native reports, summary output, hashes, and Redump verification.
-- Linux GDR-8050L default output names can be derived from XBE/DMI metadata.
+- The maintained Visual Studio 2019 32-bit build and native-report fixtures pass.
+- Linux/CMake builds pass with explicit normal-user `CAP_SYS_RAWIO` handling.
+- A GCC-4244 B101 completed the Sonic Mega Collection (US) GameCube dump with an
+ exact full-image hash match.
+- The Linux GDR-8050L path established both Xbox game-view transitions, read
+ XDVDFS metadata, captured DMI media ID `TQ00501A`, produced a controlled
+ partial GAME-XDVDFS output with hashes and native reporting, and completed
+ STOP UNIT.
+- Native `friidump-test-result.v1` reports cover complete, partial, failed,
+ cancelled, no-media, seed-failure, and modified-firmware states.
## Hardware-validation boundary
-Candidate11 has not yet been run against a physical Xbox-capable optical drive
-on Linux. Real hardware must prove no-media behavior, unlock state transitions,
-metadata, controlled cancellation, exact hashes, STOP UNIT, complete XISO, and
-redump-style ISO behavior before Linux support can be described as validated.
-
-The development-only XGD1 layout and raw-ID probes remain Windows-only in this
-first candidate11 increment. They are tracked as a separate Linux-port substage
-and do not block ordinary user ISO/XISO validation.
+The Linux GDR-8050L evidence validates the command path, game-view state,
+metadata, controlled partial output, cancellation, reporting, and cleanup. It
+does not by itself claim a newly completed full Original Xbox image on Linux.
+Candidate-specific validation scripts remain in `validation/` as historical,
+exact evidence tools; release builds use the maintained build entry points and
+the generic raw-I/O capability helper.
## Known inherited warnings
-`libfriidump/rs.c` retains an inherited right-shift-count warning. Additional
-warnings visible under an explicit `-Wall -Wextra` audit predate candidate11 or
-are non-fatal test-path warnings. No candidate11 portable metadata source error
-or warning blocked the build.
+`libfriidump/rs.c` retains an inherited right-shift-count warning. Other
+explicit `-Wall -Wextra` warnings are pre-existing or non-fatal test-path
+warnings and were not silently normalized during release finalization.
## Campaign
-After Linux user-path validation, work proceeds to exact-tag release automation,
-then the FriiDump homepage/compatibility site v1.3.0, then a separately identified
-MinGW investigation.
+Release publication uses an exact annotated tag, exact-tag Windows and Linux
+builders, immutable artifact manifests, and independent private/public
+read-back. Candidate retirement remains a separate final gate.
## Candidate12 correction status
-
Candidate12 closes the Linux GCC-4244 B101 full-dump gate and corrects runtime
DAT discovery, Linux lock-status reporting, and the Linux `--help` validation
false failure. The accepted live result is Sonic Mega Collection (US), 712880
-FriiDump 0.5.3.16-pf1-candidate21
------------------------------------
+FriiDump 0.5.3.16-pf1
+----------------------
- Correct standard READ DVD STRUCTURE Format placement from CDB byte 11
(Control) to byte 7, matching the copied Windows DMI request.
- Add persistent Xbox PFI/DMI capture diagnostics.
./build/src/friidump
```
-The candidate validator exposes the same installation step:
+The maintained release helper applies the capability only to the exact
+validated executable:
```bash
-bash ./validation/friidump-v0.5.3.16-pf1-candidate21-linux-live-validation.sh \
- capability
+bash ./validation/friidump-linux-rawio-capability.sh \
+ install ./build/src/friidump
```
### Capability lifetime
[FRIIDUMP] Log file: friidump.log
-FriiDump 0.5.3.16-pf1-candidate21 - Copyright (C) 2007 Arep
+FriiDump 0.5.3.16-pf1 - Copyright (C) 2007 Arep
This software comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions; see COPYING for details.
## Status
-This is a source candidate for Windows and physical-drive validation. It is not
-a promoted release and does not replace `v0.5.3.15-pf1`.
+This document records the implementation and accepted validation basis for
+FriiDump 0.5.3.16-pf1. Candidate-specific reports remain historical evidence;
+the release identity is the annotated tag and its exact commit/tree.
## Scope
-
The change adds native `friidump-test-result.v1` generation to normal dump
invocations. It deliberately excludes broad drive-research discovery; that
work remains assigned to a separate future utility.
The fixtures are validated against the exact Compatibility Database v1.2.0 JSON
Schema. The database PHP semantic validator is used during package validation.
-## Remaining promotion gates
-
-Before a release can be promoted:
-
-1. Build with the maintained Visual Studio 2019 32-bit toolchain.
-2. Run the MSVC fixture tests.
-3. Validate no-media reporting on a real drive.
-4. Validate a complete GameCube or Wii report.
-5. Validate a controlled partial cancellation.
-6. Validate Xbox assembled-output reporting on the applicable hardware path.
- The copied GDR-8050L reference dumper remains a special Windows-only path;
- complete output reporting must be validated there, and Ctrl+C cancellation
- must not be claimed for that path until its copied loops receive an explicit
- cancellation callback.
-7. Submit generated reports to the live v1.2.0 database and confirm acceptance.
-8. Review exact report contents before assigning a release tag.
+## Accepted validation basis
+
+The release campaign completed these gates:
+
+1. Maintained Visual Studio 2019 32-bit build and fixture execution.
+2. Linux/CMake build and raw-I/O authorization preflight.
+3. Real-drive no-media and controlled-partial reporting.
+4. Complete GameCube validation with an exact known-good image hash.
+5. Original Xbox GDR-8050L game-view, XDVDFS, DMI/media-ID, native-report,
+ controlled-cancellation, hashing, and STOP UNIT validation.
+6. Exact report review and compatibility-database acceptance.
+7. Candidate publication and exact fast-forward promotion to canonical `main`.
+
+The copied Windows challenge-drive loops retain their documented cancellation
+boundary. No broader cancellation claim is inferred from the portable Linux
+path.
\ No newline at end of file
--- /dev/null
+# FriiDump 0.5.3.16-pf1 release finalization
+
+## Accepted implementation
+
+The functional implementation was accepted and promoted from:
+
+- Candidate branch: `candidate/v0.5.3.16-pf1-candidate21`
+- Candidate/main commit: `29417fff9ebac65b1cf60ea8951c687696302c55`
+- Candidate/main tree: `d9a03be5b4ca5a5d2c5f5a14400a9ba3488c56db`
+- Parent: `de0c1a3eccb6f04bbfd23436b592fe7fc501fcf2`
+
+## Release-only scope
+
+Release finalization changes only user-visible version identity, current-status
+documentation, the generic Linux capability helper's default build path/version
+check, and release provenance documentation.
+
+It does not change the accepted optical-drive command paths, Xbox handshake,
+DMI/PFI request construction, native-report schema or behavior, dump geometry,
+hashing, cancellation boundaries, or STOP UNIT behavior.
+
+Candidate-specific validators remain unchanged as historical exact-evidence
+tools.
+
+## Accepted hardware evidence
+
+- GCC-4244 B101: complete GameCube dump and exact known-good image match.
+- GDR-8050L 0012 on Linux: both Xbox game-view transitions, XDVDFS readability,
+ DMI media ID `TQ00501A`, controlled partial output, hashes, atomic native
+ report, and STOP UNIT.
+
+The Linux GDR-8050L result validates the command and controlled-partial path; it
+does not invent a full-image completion claim.
+
+## Release boundary
+
+The intended immutable annotated tag is `v0.5.3.16-pf1`. Tag creation,
+exact-tag Windows/Linux builds, immutable artifact publication, and candidate
+retirement are separate gates.
\ No newline at end of file
-# FriiDump Candidate21 Handoff
-
-Candidate20 established the Linux Xbox game view twice on the USB
-`HL-DT-ST DVD-ROM GDR8050L 0012`, read Red Faction II XDVDFS data, captured the
-32-sector game lead-in, produced a 482,115,584-byte controlled partial image,
-hashed it, wrote an atomic native report, and completed STOP UNIT.
-
-Candidate20 evidence SHA-256:
-
-`f82ceb50ca7e41d3a9c962557b2dadb47276c767da756721bb9e4337572742d2`
-
-Two acceptance findings remained:
-
-1. Step 9 sticky descrambling returned CHECK CONDITION `05/81/00`, but both
- final capacity checks reported 3,431,264 sectors and XDVDFS data was
- readable. The transport result remains logged as FAIL, while the live
- acceptance policy treats it as non-blocking when game-view proof succeeds,
- matching the copied Windows path's outcome-based authority.
-2. Media ID was empty. The portable READ DVD STRUCTURE helper placed Format in
- CDB byte 11 instead of byte 7. The copied Windows `GetMediaID()` path uses
- byte 7. Candidate21 corrects this boundary and adds persistent
- `[XBOX-DVD-STRUCTURE]` PFI/DMI diagnostics.
-
-Candidate21 does not add RecoveryKick or any generic recovery/authentication
-sequence.
-
-Validation order:
-
-```bash
-bash ./validation/friidump-v0.5.3.16-pf1-candidate21-linux-live-validation.sh build
-bash ./validation/friidump-v0.5.3.16-pf1-candidate21-linux-live-validation.sh capability
-```
-
-Windows MSVC validation is required before the final physical Linux Xbox smoke.
-The final smoke must report media ID `TQ00501A`, successful DMI capture, both
-game-view transitions, controlled cancellation, hashes, native report, and
-STOP UNIT.
+# FriiDump 0.5.3.16-pf1 Release Handoff
+
+## Accepted implementation authority
+
+- Promoted main commit:
+ `29417fff9ebac65b1cf60ea8951c687696302c55`
+- Promoted implementation tree:
+ `d9a03be5b4ca5a5d2c5f5a14400a9ba3488c56db`
+- Candidate branch:
+ `candidate/v0.5.3.16-pf1-candidate21`
+
+Candidate21 closed the Linux GDR-8050L DMI boundary by placing READ DVD
+STRUCTURE Format in CDB byte 7. Physical validation captured media ID
+`TQ00501A`, established both game-view transitions, read XDVDFS metadata,
+produced a controlled partial output with hashes and an atomic native report,
+and completed STOP UNIT.
+
+## Release-finalization boundary
+
+The release-finalization commit changes only release identity, active
+documentation, and the generic Linux capability helper's expected release
+version/default build path. Candidate-specific validation scripts remain
+unchanged as exact historical evidence.
+
+## Remaining release gates
+
+1. Review and accept the release-finalization commit.
+2. Build and test Windows and Linux from the exact finalization commit.
+3. Create one annotated tag `v0.5.3.16-pf1`.
+4. Push only that tag.
+5. Verify private/public tag object, peeled commit, tree, dispatcher, and exact
+ artifacts.
+6. Retire the candidate branch in a separate gate after release acceptance.
\ No newline at end of file
#define PACKAGE_NAME "FriiDump"
/* Define to the version of this package. */
-#define PACKAGE_VERSION "0.5.3.16-pf1-candidate21"
+#define PACKAGE_VERSION "0.5.3.16-pf1"
#ifdef WIN32
-# FriiDump 0.5.3.16-pf1-candidate21 validation
+# FriiDump 0.5.3.16-pf1 validation history
-Candidate21 preserves Candidate13's seed diagnostics and Candidate12's DAT and
-Linux-lock corrections while making the Linux raw-I/O requirement explicit.
+The Candidate21 validators below are retained as exact campaign evidence. They
+verify the candidate identity and should not be renamed or repurposed as
+release builders.
-## Linux build
+For a normal release build, use the maintained entry points:
+```text
+Windows: build_msvc32.cmd
+Linux: cmake -S . -B build -DBUILD_STATIC_BINARY=ON
+ cmake --build build
+```
+
+After validating the exact Linux executable, apply the minimum file capability
+with `validation/friidump-linux-rawio-capability.sh`.
+
+## Candidate21 Linux build
Run from the source root:
```bash
action="${1:-status}"
source_root="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)"
-default_binary="$source_root/build-candidate21-linux/src/friidump"
+default_binary="$source_root/build/src/friidump"
binary="${2:-$default_binary}"
-expected_version="0.5.3.16-pf1-candidate21"
+expected_version="0.5.3.16-pf1"
fail() {
printf 'ERROR: %s\n' "$*" >&2