docs: qualify RD21 remediation and retain provider gates
This commit is contained in:
@@ -0,0 +1,162 @@
|
||||
{
|
||||
"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."
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user