C6B-F1 cause 3: anti-hollow guard refuses a needs_hdd bundle with zero data
assertBundleDataComplete's claimed-tar checks pass trivially when discovery claims nothing (0 claims -> 0 checks) — the exact blind spot that shipped a 4.17 GB app as a 2308-byte config-only bundle. A needs_hdd manifest with neither HDD data nor volume data now fails the job with an honest Hungarian error. Red-proof recorded: removing the assertion returns scenario D to silent hollow success.
This commit is contained in:
@@ -739,7 +739,9 @@ func (e *Exporter) exportVolumeData(stackName, dataDir string, manifest *Manifes
|
||||
// assertBundleDataComplete is the fail-loud post-export guard (v0.125.0, scenario B): every
|
||||
// manifest-CLAIMED data tar must exist non-empty in the staging tree before packaging. A
|
||||
// mismatch aborts the export — yesterday's outcome ("success" with a hollow bundle) is the
|
||||
// one this exists to make impossible.
|
||||
// one this exists to make impossible. v0.130.0 (C6B-F1 cause 3): also refuses a needs_hdd
|
||||
// bundle that claims NO data at all — the claimed-tar checks pass trivially on 0 claims, which
|
||||
// is how a discovery gap shipped hollow bundles right past the v0.125.0 net.
|
||||
func assertBundleDataComplete(tmpDir string, manifest *Manifest) error {
|
||||
for _, v := range manifest.VolumeNames {
|
||||
fi, err := os.Stat(filepath.Join(tmpDir, "data", "volumes", v+".tar"))
|
||||
@@ -753,6 +755,13 @@ func assertBundleDataComplete(tmpDir string, manifest *Manifest) error {
|
||||
return fmt.Errorf("bundle assertion: HDD subdir %q is claimed by the manifest but its tar is missing or empty", s)
|
||||
}
|
||||
}
|
||||
// C6B-F1 cause 3 (v0.130.0): the claimed-tar checks above pass TRIVIALLY when discovery finds
|
||||
// nothing (0 claims → 0 checks) — exactly how a 4.17 GB app shipped as a 2308-byte config-only
|
||||
// bundle. A needs_hdd app with NO data of any kind is a hollow bundle by definition; refuse it
|
||||
// loudly so a future discovery gap can never again ship silently.
|
||||
if manifest.NeedsHDD && !manifest.HasHDDData && !manifest.HasVolumeData {
|
||||
return fmt.Errorf("a mentés nem tartalmaz alkalmazásadatot (0 adatkönyvtár, 0 kötet egy adattárolós alkalmazásnál)")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user