Merge PR #23 head4097a21adb(Velinus's "Make Apple resource sampling lifecycle safe") into the Layer-2 integration branch, preserving all contributor commits unchanged. Retained proven fixes from4097a21: - Sampler creation moves into start_finalizer() so a sampler std::system_error is reported synchronously to the caller. Inca8600athe sampler was constructed inside finalize() after the caller had treated startup as successful; the failure path published an error without attach reaping, container deletion, or durable mark_managed_failed, and set finished_ so stop() became a no-op while attach/container survived. Repairs retained beyond the contributor head, each bound to a demonstrated failure: - std::jthread + deterministic stop_token handles the partial-start case where sampler construction succeeds but finalizer launch fails (regression: tests/control/apple_container_unavailable_test and the start_sampler_then_finalizer seam used by production). - Restored hard-disabled Apple boundary: lifecycle_operational() false, receipt schema 0, disk enforcement unavailable, empty managed runtime advertisement, and public method denial before any side effect. The current PR #23 head crossed the reviewed activation boundary (schema 0 -> 1, filesystem_quota advertised, lifecycle constructed-state true) without live-validation. - glaze parsing hardened: strict_json_options now sets null_terminated=false; non-NUL-terminated string_views fed parse_apple_container_stats and duplicate_key_guard caused a heap-buffer-overflow read in glz::skip_ws (ASan crash input [{"id":"aanumProcesses" reproduced deterministically; seed corpus fuzz/corpus/apple_container_stats/truncated-object.json added). - Sage bundle projection admission hardening (Layer-12bba117) and its test coverage carried through the merge. Validation (umask 0022): - Dev CTest 76/76; ASan/UBSan 76/76; TSan 76/76. - libFuzzer 10,000 units each: library_bundle, session_plan, apple_container_stats (LLVM 22, ASan/UBSan), all fuzz_exit=0. - clang-format clean on changed TUs; git diff --check clean.
1 line
186 B
JSON
1 line
186 B
JSON
[{"id":"apple-unit","memoryUsageBytes":1,"memoryLimitBytes":2,"cpuUsageUsec":3,"networkRxBytes":0,"networkTxBytes":0,"blockReadBytes":0,"blockWriteBytes":0,"numProcesses":1,"future":1}]
|