163 lines
7.0 KiB
JSON
163 lines
7.0 KiB
JSON
{
|
|
"purpose": "Actual failing evidence; focused reruns are not added to final full-suite totals.",
|
|
"originalBrowser": {
|
|
"id": "RD21",
|
|
"career": {
|
|
"staleStatus": 200,
|
|
"expectedFirstSummary": [
|
|
"First editor committed summary"
|
|
],
|
|
"actualSummary": [
|
|
"Initial summary"
|
|
],
|
|
"lostFirstEdit": true
|
|
},
|
|
"job": {
|
|
"staleStatus": 204,
|
|
"expectedFirstTitle": "First editor committed title",
|
|
"actualTitle": "Original job title",
|
|
"lostFirstEdit": true
|
|
},
|
|
"safetyQualification": "FAIL: stale writes can overwrite acknowledged edits",
|
|
"limitation": "This passing characterization records observed behavior; it does not accept unsafe stale writes or provide a new revision contract. Creation-intent idempotency remains separate."
|
|
},
|
|
"native": [
|
|
{
|
|
"stage": "Baseline Career stale success and rejected-operation partial commit",
|
|
"artifact": ".artifacts/rd21-career-red/rd21-career-red.trx",
|
|
"sha256": "8bab2511c7fff78ea365444680d00511a2894f6913d447f037f2cf2a0b4ece30",
|
|
"counters": {
|
|
"total": "2",
|
|
"executed": "2",
|
|
"passed": "0",
|
|
"failed": "2",
|
|
"error": "0",
|
|
"timeout": "0",
|
|
"aborted": "0",
|
|
"inconclusive": "0",
|
|
"passedButRunAborted": "0",
|
|
"notRunnable": "0",
|
|
"notExecuted": "0",
|
|
"disconnected": "0",
|
|
"warning": "0",
|
|
"completed": "0",
|
|
"inProgress": "0",
|
|
"pending": "0"
|
|
},
|
|
"failures": [
|
|
{
|
|
"name": "JobTrackerApi.Tests.Rd21CareerPersistenceTests.Identity_failure_rolls_back_canonical_children_history_and_projection",
|
|
"message": "Assert.Empty() Failure: Collection was not empty\r\nCollection: [CareerProfile { Certifications = [], CreatedAtUtc = 2026-10-23T05:48:16.1454440+00:00, Education = [], Experiences = [], Id = 1, \u00b7\u00b7\u00b7 }]"
|
|
},
|
|
{
|
|
"name": "JobTrackerApi.Tests.Rd21CareerPersistenceTests.Independent_stale_snapshot_cannot_replace_acknowledged_career_edit",
|
|
"message": "Assert.IsType() Failure: Value is not the exact type\r\nExpected: typeof(Microsoft.AspNetCore.Mvc.ConflictObjectResult)\r\nActual: typeof(Microsoft.AspNetCore.Mvc.OkObjectResult)"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"stage": "Generic guard already present; related cover/application draft writers still overwrite persisted approved text",
|
|
"artifact": ".artifacts/rd21/native-red/rd21-job-red.trx",
|
|
"sha256": "57b7aef48c879b53ec57080a133ddbad04ac7f174efbcea85bbc49426a02edc7",
|
|
"counters": {
|
|
"total": "4",
|
|
"executed": "4",
|
|
"passed": "2",
|
|
"failed": "2",
|
|
"error": "0",
|
|
"timeout": "0",
|
|
"aborted": "0",
|
|
"inconclusive": "0",
|
|
"passedButRunAborted": "0",
|
|
"notRunnable": "0",
|
|
"notExecuted": "0",
|
|
"disconnected": "0",
|
|
"warning": "0",
|
|
"completed": "0",
|
|
"inProgress": "0",
|
|
"pending": "0"
|
|
},
|
|
"failures": [
|
|
{
|
|
"name": "JobTrackerApi.Tests.Rd21JobPersistenceTests.Related_text_save_cannot_silently_replace_a_newer_acknowledged_draft(coverLetter: False)",
|
|
"message": "Assert.Equal() Failure: Strings differ\r\n \u2193 (pos 0)\r\nExpected: \"First approved text\"\r\nActual: \"Stale snapshot text\"\r\n \u2191 (pos 0)"
|
|
},
|
|
{
|
|
"name": "JobTrackerApi.Tests.Rd21JobPersistenceTests.Related_text_save_cannot_silently_replace_a_newer_acknowledged_draft(coverLetter: True)",
|
|
"message": "Assert.Equal() Failure: Strings differ\r\n \u2193 (pos 0)\r\nExpected: \"First approved text\"\r\nActual: \"Stale snapshot text\"\r\n \u2191 (pos 0)"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"stage": "Legacy Identity endpoint still bypasses canonical save boundary",
|
|
"artifact": ".artifacts/rd21/legacy-cv-red/legacy-cv-red.trx",
|
|
"sha256": "f59b27ddf3718bb2a9f2a7a2fee96179b2f4dd3af0e25e7b4c0ba0c8276837a1",
|
|
"counters": {
|
|
"total": "3",
|
|
"executed": "3",
|
|
"passed": "0",
|
|
"failed": "3",
|
|
"error": "0",
|
|
"timeout": "0",
|
|
"aborted": "0",
|
|
"inconclusive": "0",
|
|
"passedButRunAborted": "0",
|
|
"notRunnable": "0",
|
|
"notExecuted": "0",
|
|
"disconnected": "0",
|
|
"warning": "0",
|
|
"completed": "0",
|
|
"inProgress": "0",
|
|
"pending": "0"
|
|
},
|
|
"failures": [
|
|
{
|
|
"name": "JobTrackerApi.Tests.AuthAndSystemControllerTests.Legacy_profile_endpoint_cannot_bypass_canonical_revision_guards(text: \"stale text\", structured: null)",
|
|
"message": "Assert.IsType() Failure: Value is not the exact type\r\nExpected: typeof(Microsoft.AspNetCore.Mvc.BadRequestObjectResult)\r\nActual: typeof(Microsoft.AspNetCore.Mvc.NoContentResult)"
|
|
},
|
|
{
|
|
"name": "JobTrackerApi.Tests.AuthAndSystemControllerTests.Legacy_profile_endpoint_cannot_bypass_canonical_revision_guards(text: \"\", structured: \"\")",
|
|
"message": "Assert.IsType() Failure: Value is not the exact type\r\nExpected: typeof(Microsoft.AspNetCore.Mvc.BadRequestObjectResult)\r\nActual: typeof(Microsoft.AspNetCore.Mvc.NoContentResult)"
|
|
},
|
|
{
|
|
"name": "JobTrackerApi.Tests.AuthAndSystemControllerTests.Legacy_profile_endpoint_cannot_bypass_canonical_revision_guards(text: null, structured: \"{\\\"summary\\\":[\\\"stale\\\"]}\")",
|
|
"message": "Assert.IsType() Failure: Value is not the exact type\r\nExpected: typeof(Microsoft.AspNetCore.Mvc.BadRequestObjectResult)\r\nActual: typeof(Microsoft.AspNetCore.Mvc.NoContentResult)"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"stage": "Structured tailored CV replacement still overwrites approved text",
|
|
"artifact": ".artifacts/rd21/structured-cv-red/structured-cv-red.trx",
|
|
"sha256": "b297f11fa8a98de808470b630ef25ad49d32c4aa66a3e55ac9bfa12027997638",
|
|
"counters": {
|
|
"total": "1",
|
|
"executed": "1",
|
|
"passed": "0",
|
|
"failed": "1",
|
|
"error": "0",
|
|
"timeout": "0",
|
|
"aborted": "0",
|
|
"inconclusive": "0",
|
|
"passedButRunAborted": "0",
|
|
"notRunnable": "0",
|
|
"notExecuted": "0",
|
|
"disconnected": "0",
|
|
"warning": "0",
|
|
"completed": "0",
|
|
"inProgress": "0",
|
|
"pending": "0"
|
|
},
|
|
"failures": [
|
|
{
|
|
"name": "JobTrackerApi.Tests.Rd21JobPersistenceTests.Structured_tailored_cv_snapshot_cannot_replace_a_newer_approved_document",
|
|
"message": "Assert.Contains() Failure: Sub-string not found\r\nString: \"Professional Summary\\n- Stale CV evidence\"\r\nNot found: \"Approved CV evidence\""
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"initialJobRed": {
|
|
"observed": "Both stale and unversioned job snapshot tests returned NoContentResult instead of conflict after immediate SQLite acknowledgement check.",
|
|
"limitation": "The initial runner reused its raw file path; that first two-case log was superseded. The retained later file is explicitly labeled as related-writer RED, not baseline job RED."
|
|
}
|
|
}
|