Files
jobtrackingapp/docs/redesign/phase-9/p9-requal-01/RD21_CLOSURE.md
T
cesnimda 3727a723e8
MariaDB persistence qualification / mariadb (push) Failing after 7s
docs: publish Phase 9 requalification decisions and evidence
2026-10-24 18:32:24 +02:00

10 KiB

RD21 closure map and remaining limits

This map evaluates the unchanged six original closure clauses, rather than inventing a broader fix. Historical baseline: 549b2cba5a791862ba3f854312ea819a86dc42a0. Fresh execution is now bound to validation.json and source-lineage.json; original reports remain historical.

The SQLite remediation addendum recorded a repaired implementation but withheld RD21 because MariaDB had not run. The later MariaDB acceptance explicitly resolves the bounded MariaDB12.2.2 save/concurrency scope using32 real-provider cases and1 native browser journey. Historical raw case index retains actual reports/failures. These are historical results, not fresh P9-REQUAL-01 passes. Neither old report is edited.

Original required closure clause Existing concrete cases and source Evidence boundary / remaining limit
Independent concurrent clients editing different and same fields cannot silently overwrite an acknowledged save MariaDB Career tests: Independent_stale_snapshot_cannot_replace_acknowledged_career_edit; job tests: Stale_or_unversioned_snapshot_cannot_erase_an_acknowledged_job_edit, Related_text_save_cannot_silently_replace_a_newer_acknowledged_draft, Structured_tailored_cv_snapshot_cannot_replace_a_newer_approved_document, Write_that_overlaps_a_delayed_save_wins_without_partial_events_or_opportunity_changes. Parallel SQLite names in JobTrackerApi.Tests. Native A/B ordering: original two-session ordering case preserves each winner through immediate independent SQL reads, navigation and a new authenticated session. Historical qualified same-owner source snapshots and database interleavings; not exhaustive every-field/editor/order testing. Rejection is safe conflict, not silent merge. Native MariaDB journey directly covers Career, while job provider behavior is covered by real-provider controller/persistence cases.
Actual owner-and-revision preconditions on database write; simultaneous submissions and first saves Career Stale_tracked_entity_is_guarded_at_database_update_and_stale_restore_is_rejected, Competing_first_save_sources_have_one_acknowledged_winner; job delayed-save overlap and Versioned_job_save_cannot_cross_tenant_job_or_company_ownership. Save contract identifies Career Version and job EF token; final database predicate guards the interval after controller validation. Real provider contexts/connections, not a client-only comparison. Narrow lifecycle/background tracked writers advance job version. This does not make every narrow command ordering a full-editor merge contract. First canonical save is distinct from create-job intent idempotency.
SQLite and supported MariaDB runtime, including constraints, held readers/writers and partial failure SQLite Career / SQLite job. MariaDB startup/lock: Full_startup_creates_every_table_and_column_required_by_the_persisted_EF_model, Fresh_repeated_and_populated_startup_preserve_owned_data_and_complete_migrations, Rd21_additive_migration_preserves_existing_job_fields_and_backfills_revision_one, Open_reader_does_not_block_independent_usage_and_identity_writes. Job Held_writer_timeout_rolls_back_and_a_reviewed_save_recovers_after_release; Career Identity_failure_rolls_back_canonical_children_history_and_projection, Database_failure_after_deletion_restores_children_history_and_revision_and_clears_tracker; job Failed_job_transaction_cannot_acknowledge_or_leave_partial_data_for_a_later_save. Historical actual pinned Linux/amd64 MariaDB12.2.2, InnoDB and independent TCP readbacks. Identity/summarizer doubles in controller tests are disclosed. Version parity does not prove exact production image/configuration parity. Not MariaDB12.3, power-loss durability or production rollback. Hosted prerequisite failure remains separate from local provider proof; fresh hosted lane pending root results.
Conflicts preserve drafts and offer explicit current-data review/reload; account switch and stale session fail closed MariaDB browser: native Career conflict/network-failure/reviewed-retry case; remediation browser: native editor retention/recovery, missing-revision rejection, cross-origin committed header and successive Answers, fresh source after letter save. Account isolation: retained A request with B cookies/CSRF; missing/forged contexts; two-tab account switch and Back navigation. Controlled aborted request, actual API/SQL reads and session-boundary tests. Not physical device/reader acceptance. Unknown commit outcome requires deliberate read/review, never fetching a new token to authorize an old body. No automatic retry is claimed.
Imports, history restores, generic job updates, lifecycle/bulk and old callers follow agreed compatibility contract Career Replacement_restore_parse_and_import_fail_closed_without_valid_revision, Import_acceptance_requires_the_revision_shown_in_its_diff, Reviewed_import_commits_or_rolls_back_canonical_projection_and_application_metadata, Parsing_commits_or_rolls_back_its_entire_import_application; job missing/stale snapshot and related-text/tailored tests above. SAVE_CONTRACT inventories endpoints/statuses; related review inventories narrow lifecycle/background writers, extension/create consumers and already-guarded Dashboard/CV/email owners. MariaDB fixture delta retains old unversioned failure and explicit3 fixture repairs with original assertions. Source/caller review plus contract tests, not certification of every independent editor or mixed old/new deployment. Career missing precondition400; valid stale409; job missing/invalid/stale409. Old unversioned writers intentionally fail closed. Extension/bookmarklet is a create consumer. No compatibility alias removal.
Complete affected regression, frozen bytes and no unrelated Identity replay Historical addendum reports1109 backend,934 frontend/105 suites,362 ordinary,23 separate,56 sidecar and6 remediation cases, separate conforming volume3; explicit obsolete historical diagnostic failures retained. Later MariaDB acceptance reports1123 backend,32 provider,1 provider-browser, corrected diagnostics18 andvolume3. Frozen contracts and canonical/variant/null-as-inherit ownership remain independently mapped in preservation; original PDF oracle16/36 pages plus8/24 pages unchanged. Career transaction/Identity failure and read-only coherent snapshot tests cover projection boundary; identity-only endpoint keeps ownership. These are separate historical lanes, not added totals or fresh full regression. Root must obtain complete fresh successors and frozen-byte/PDF proof on final source. Do not treat database conflict pass as frozen-byte proof, print acceptance or release acceptance.

Creation-intent idempotency is explicitly a separate retained RD21 concern, not one of the stale-replacement repairs. Fresh HTTP characterization confirms two identical POST bodies can create two distinct durable records; no idempotency implementation or guarantee is claimed. Record owner/domain follow-up with interrupted-create/replay semantics and a separate acceptance contract before changing it. Canonical first-save uniqueness is not create-intent idempotency.

Historical acknowledged edits lost before repair are not proven recoverable; no live records were inspected. Extraction discard/accept lifecycle concurrency was considered but not reproduced. Independent settings/company/contact records were source-reviewed without a newly reproduced shared RD21 defect; full multi-session acceptance of them is not implied. RELATED_REVIEW preserves these boundaries.

Current recommendation is therefore conditional on the exact decision: retain bounded save/concurrency closure from historical MariaDB evidence, require fresh source-bound successors for this requalification, retain separate idempotency and release limits, and let the root acceptance addendum issue the final RD21/Phase9/Phase10/production decisions. Do not reopen repaired stale loss merely because creation debt remains, and do not close creation debt merely because stale loss is repaired.

Final fresh decision

RD21 RESOLVED within its original six repair clauses and tested scope. Fresh1123 backend,35 actual MariaDB provider cases (32 original plus3 Documents cases),1 native MariaDB recovery journey,2 HTTP durability/characterization cases,6 RD21 browser companions and complete affected frontend/browser regression are recorded in validation.json. Provider tests establish real transaction rollback, revision rejection, held-writer recovery, competing saves, tenant predicates and independent persisted reads; the native journey retains drafts and reviewed retries. No mocked/SQLite case is counted as MariaDB evidence.

The exclusive15-minute MariaDB workload also retains selected exact SQL/API invariants. The whole browser suite ran at5ac1154; four affected settings cases have strict durable-baseline successors at7092697, with no application/binary change. Original frozen-document coverage is Windows PASS, Linux FAIL; that is a separate document-output blocker, not an acknowledged-save loss. Hosted isolation is separately BLOCKED. Creation-intent idempotency, historical lost data, physical/human testing, power-loss durability and production recovery remain outside this bounded resolution. The earlier pending recommendations above are superseded by this final source-bound decision.