2530 lines
100 KiB
JSON
2530 lines
100 KiB
JSON
{
|
||
"schemaVersion": 1,
|
||
"checkpoint": "P7-03",
|
||
"slice": "Separate source-ID and nullable-metadata prerequisite repair",
|
||
"collectedUtc": "2026-10-12T06:16:28.371706+00:00",
|
||
"acceptance": "GO for bounded forward compatibility repair; corrected hygiene PASS, normal two-commit push directly verified",
|
||
"entryCommit": "8b4d5c21125e800199d3ecc2d9c059a80ac5125d",
|
||
"entrySnapshot": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/entry-career-results.json",
|
||
"sha256": "1f67cfc3b6d2f34143261bf81a466a28289f21bdbf105ac8ea0b45b4f8446951",
|
||
"bytes": 329258,
|
||
"hashPolicy": "Exact measured raw bytes"
|
||
},
|
||
"identity": {
|
||
"source": {
|
||
"path": "job-tracker-ui/src/profileCv.ts",
|
||
"sha256": "7e0b8aa13aa6df830f7e508c338c1e2dd995574bbfbd3233602654452f75cdb9",
|
||
"bytes": 11796,
|
||
"hashPolicy": "UTF-8 text with CRLF normalized to LF"
|
||
},
|
||
"sourceSnapshot": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/source/job-tracker-ui/src/profileCv.ts",
|
||
"sha256": "190b3e15ab00741f1e6bea868a79c3ca221e059936406098b693d13f3ef3f1d7",
|
||
"bytes": 12131,
|
||
"hashPolicy": "Exact measured raw bytes"
|
||
},
|
||
"tests": [
|
||
{
|
||
"originalSourcePath": "job-tracker-ui/src/profileCv.test.ts",
|
||
"rawSnapshot": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/tests/job-tracker-ui/src/profileCv.test.ts",
|
||
"sha256": "a85cbebacb01d11bb92898d2a9809744fd65c9b8f9a525d7f2050c86815c5e97",
|
||
"bytes": 4317,
|
||
"hashPolicy": "Exact measured raw bytes"
|
||
},
|
||
"canonicalLf": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/tests/job-tracker-ui/src/profileCv.test.ts",
|
||
"sha256": "a85cbebacb01d11bb92898d2a9809744fd65c9b8f9a525d7f2050c86815c5e97",
|
||
"bytes": 4317,
|
||
"hashPolicy": "UTF-8 text with CRLF normalized to LF",
|
||
"originalSourcePath": "job-tracker-ui/src/profileCv.test.ts"
|
||
}
|
||
},
|
||
{
|
||
"originalSourcePath": "job-tracker-ui/src/profile-page.test.tsx",
|
||
"rawSnapshot": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/tests/job-tracker-ui/src/profile-page.test.tsx",
|
||
"sha256": "84c9f2683e445f8a56de53ec84e2b291792985ea829dcef688aaafa34ddd32a6",
|
||
"bytes": 30581,
|
||
"hashPolicy": "Exact measured raw bytes"
|
||
},
|
||
"canonicalLf": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/tests/job-tracker-ui/src/profile-page.test.tsx",
|
||
"sha256": "ac1421ecf0fb4723fa974e4e1f0899d0eb0aa53d3225eb428b11c086d6f22950",
|
||
"bytes": 30021,
|
||
"hashPolicy": "UTF-8 text with CRLF normalized to LF",
|
||
"originalSourcePath": "job-tracker-ui/src/profile-page.test.tsx"
|
||
}
|
||
},
|
||
{
|
||
"originalSourcePath": "job-tracker-ui/e2e/phase7-career-source-ids.spec.ts",
|
||
"rawSnapshot": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/tests/job-tracker-ui/e2e/phase7-career-source-ids.spec.ts",
|
||
"sha256": "92bc8f1b4c82210207071c56940813dfece3136832ba09ebd1e6c3471d8d7945",
|
||
"bytes": 20601,
|
||
"hashPolicy": "Exact measured raw bytes"
|
||
},
|
||
"canonicalLf": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/tests/job-tracker-ui/e2e/phase7-career-source-ids.spec.ts",
|
||
"sha256": "92bc8f1b4c82210207071c56940813dfece3136832ba09ebd1e6c3471d8d7945",
|
||
"bytes": 20601,
|
||
"hashPolicy": "UTF-8 text with CRLF normalized to LF",
|
||
"originalSourcePath": "job-tracker-ui/e2e/phase7-career-source-ids.spec.ts"
|
||
}
|
||
}
|
||
],
|
||
"sourceApplicability": "Measured product/test bytes apply to local repair3047b6c4 and immutable snapshots before the EOF-only correction; runtime evidence and hashes remain unchanged. Corrected repository test metadata is separate in repositoryHygiene.",
|
||
"buildId": "bzQiDlr6LeM9Gsel4WRS8",
|
||
"buildIdRaw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/BUILD_ID",
|
||
"sha256": "49f2090d798c337c72c6937cf6cb5e0c5da5ff528f90b45ee65253b1312af136",
|
||
"bytes": 21,
|
||
"hashPolicy": "Exact measured raw bytes"
|
||
},
|
||
"exportFiles": 75,
|
||
"exportSha256": "812182947b7af96a00f9568a83de1098f2824c53550c7119c76ec41803e71fbf",
|
||
"exportHashPolicy": "Sorted original export path TAB exact raw SHA LF records",
|
||
"runner": [
|
||
{
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/runner/run-ui.py",
|
||
"sha256": "0d556c6cb61be6deb930603de9b58df5e14e4763a6f9e31652258e955f7c5f0d",
|
||
"bytes": 4582,
|
||
"hashPolicy": "Exact measured raw bytes"
|
||
},
|
||
{
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/runner/e2e-tsconfig.json",
|
||
"sha256": "55fa6fffaed1e76a32657edfffcc501cd8bd87330bda2c3a3944f8f89d4019e2",
|
||
"bytes": 572,
|
||
"hashPolicy": "Exact measured raw bytes"
|
||
}
|
||
],
|
||
"apiBinary": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/api/JobTrackerApi.dll",
|
||
"sha256": "d2da64748364880d471d2087d5aa101ce749b26966beed13d9e9dbaa3b92512b",
|
||
"bytes": 4026368,
|
||
"hashPolicy": "Exact measured raw bytes"
|
||
},
|
||
"apiQualification": "Raw API binary equal separately frozen P702 repair DLL; no new backend build/tests. P70291 affected guards remain inherited targeted evidence.",
|
||
"sourceCommit": "3047b6c4a87c43de6f397e4a3d109be9ce3ddeca"
|
||
},
|
||
"commands": {
|
||
"typecheck": {
|
||
"record": {
|
||
"name": "typecheck",
|
||
"command": [
|
||
"rtk",
|
||
"proxy",
|
||
"npm.cmd",
|
||
"run",
|
||
"typecheck"
|
||
],
|
||
"startedUtc": "2026-10-12T06:11:46.847379+00:00",
|
||
"finishedUtc": "2026-10-12T06:11:56.309351+00:00",
|
||
"exitCode": 0
|
||
},
|
||
"recordRaw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/runtime/typecheck-command.json",
|
||
"sha256": "8234803d8aefa430c8733cbd916b2ff3523c6a5bbf443bf8c2cbc384090b485e",
|
||
"bytes": 247,
|
||
"hashPolicy": "Exact measured raw bytes"
|
||
},
|
||
"logRaw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/runtime/typecheck.log",
|
||
"sha256": "89b0ec97b537eca6560c13ca2dfea9e3a97dd1bb35580c4ff39d2462db25e080",
|
||
"bytes": 148,
|
||
"hashPolicy": "Exact measured raw bytes"
|
||
}
|
||
},
|
||
"browser-typecheck": {
|
||
"record": {
|
||
"name": "browser-typecheck",
|
||
"command": [
|
||
"rtk",
|
||
"proxy",
|
||
"npm.cmd",
|
||
"exec",
|
||
"tsc",
|
||
"--",
|
||
"--project",
|
||
"../.artifacts/phase7/e2e-tsconfig.json",
|
||
"--noEmit"
|
||
],
|
||
"startedUtc": "2026-10-12T06:11:56.311363+00:00",
|
||
"finishedUtc": "2026-10-12T06:11:59.923491+00:00",
|
||
"exitCode": 0
|
||
},
|
||
"recordRaw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/runtime/browser-typecheck-command.json",
|
||
"sha256": "fc559a667c0d9dcd78fa6342a8ab408317688258288b5b9bdcbc0840567edac4",
|
||
"bytes": 343,
|
||
"hashPolicy": "Exact measured raw bytes"
|
||
},
|
||
"logRaw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/runtime/browser-typecheck.log",
|
||
"sha256": "d2993bc68ad9a63f711c8f5473155e2ba00fdcd461220cc3849185f2f9ad93e6",
|
||
"bytes": 78,
|
||
"hashPolicy": "Exact measured raw bytes"
|
||
}
|
||
},
|
||
"lint": {
|
||
"record": {
|
||
"name": "lint",
|
||
"command": [
|
||
"rtk",
|
||
"proxy",
|
||
"npm.cmd",
|
||
"run",
|
||
"lint"
|
||
],
|
||
"startedUtc": "2026-10-12T06:11:59.926038+00:00",
|
||
"finishedUtc": "2026-10-12T06:12:17.583807+00:00",
|
||
"exitCode": 0
|
||
},
|
||
"recordRaw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/runtime/lint-command.json",
|
||
"sha256": "6aad66214ad3235829030b6cb5df758a4bda63d67d07a9d416e684006362ed94",
|
||
"bytes": 237,
|
||
"hashPolicy": "Exact measured raw bytes"
|
||
},
|
||
"logRaw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/runtime/lint.log",
|
||
"sha256": "b040dbeca9b4adb3f6f4c25ac49de0d37e921375b2d9b57e87b542a10f599913",
|
||
"bytes": 136,
|
||
"hashPolicy": "Exact measured raw bytes"
|
||
}
|
||
},
|
||
"build": {
|
||
"record": {
|
||
"name": "build",
|
||
"command": [
|
||
"rtk",
|
||
"proxy",
|
||
"npm.cmd",
|
||
"run",
|
||
"build"
|
||
],
|
||
"startedUtc": "2026-10-12T06:12:17.585807+00:00",
|
||
"finishedUtc": "2026-10-12T06:12:25.292019+00:00",
|
||
"exitCode": 0
|
||
},
|
||
"recordRaw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/runtime/build-command.json",
|
||
"sha256": "e4fca0a8aded5ada0bcedacceca3651dd4857a74407bba3b9b71d57bb104cb73",
|
||
"bytes": 239,
|
||
"hashPolicy": "Exact measured raw bytes"
|
||
},
|
||
"logRaw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/runtime/build.log",
|
||
"sha256": "1b2c5385cfb901084e87ce46a699b8a71ba6204cdfde56d890305489f0c73ce0",
|
||
"bytes": 670,
|
||
"hashPolicy": "Exact measured raw bytes"
|
||
}
|
||
},
|
||
"career-source-ids": {
|
||
"record": {
|
||
"name": "career-source-ids",
|
||
"command": [
|
||
"rtk",
|
||
"proxy",
|
||
"node",
|
||
"node_modules/@playwright/test/cli.js",
|
||
"test",
|
||
"e2e/phase7-career-source-ids.spec.ts",
|
||
"--retries=0",
|
||
"--reporter=list,json",
|
||
"--output=E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\phase7\\current\\ui\\career-source-ids-results"
|
||
],
|
||
"startedUtc": "2026-10-12T06:12:25.298085+00:00",
|
||
"finishedUtc": "2026-10-12T06:12:37.583780+00:00",
|
||
"exitCode": 0,
|
||
"stats": {
|
||
"startTime": "2026-10-12T06:12:25.809Z",
|
||
"duration": 11739.815,
|
||
"expected": 2,
|
||
"skipped": 0,
|
||
"unexpected": 0,
|
||
"flaky": 0
|
||
}
|
||
},
|
||
"recordRaw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/runtime/career-source-ids-command.json",
|
||
"sha256": "780b56d52886a326ff31f04c5f400b2629627e0f03efa391c735ec965b3a87e7",
|
||
"bytes": 665,
|
||
"hashPolicy": "Exact measured raw bytes"
|
||
},
|
||
"logRaw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/runtime/career-source-ids.log",
|
||
"sha256": "7f1cd8aebbb41c1ce75b680fa5a77175094e2783c2cdb702a2659b999b093f6a",
|
||
"bytes": 927,
|
||
"hashPolicy": "Exact measured raw bytes"
|
||
}
|
||
},
|
||
"career-preservation": {
|
||
"record": {
|
||
"name": "career-preservation",
|
||
"command": [
|
||
"rtk",
|
||
"proxy",
|
||
"node",
|
||
"node_modules/@playwright/test/cli.js",
|
||
"test",
|
||
"e2e/redesign-preservation.spec.ts",
|
||
"--grep",
|
||
"mobile CV override|legacy workspace preserves frozen",
|
||
"--retries=0",
|
||
"--reporter=list,json",
|
||
"--output=E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\phase7\\current\\ui\\career-preservation-results"
|
||
],
|
||
"startedUtc": "2026-10-12T06:12:37.590840+00:00",
|
||
"finishedUtc": "2026-10-12T06:12:52.605547+00:00",
|
||
"exitCode": 0,
|
||
"stats": {
|
||
"startTime": "2026-10-12T06:12:38.101Z",
|
||
"duration": 14471.283000000001,
|
||
"expected": 2,
|
||
"skipped": 0,
|
||
"unexpected": 0,
|
||
"flaky": 0
|
||
}
|
||
},
|
||
"recordRaw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/runtime/career-preservation-command.json",
|
||
"sha256": "98cf49f4855f153f785908ce33c8f2a64bdda314c37f5ed9b53660595726b910",
|
||
"bytes": 751,
|
||
"hashPolicy": "Exact measured raw bytes"
|
||
},
|
||
"logRaw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/runtime/career-preservation.log",
|
||
"sha256": "06ae9d36d33e1971bcb628d99d25109b7adf06fb1ad7acf8b9f73b2995be951c",
|
||
"bytes": 866,
|
||
"hashPolicy": "Exact measured raw bytes"
|
||
}
|
||
}
|
||
},
|
||
"environment": {
|
||
"browser": "Native Windows Chromium/local SQLite; original runner/config frozen",
|
||
"NEXT_PUBLIC_API_BASE_URL": "http://localhost:5302/api",
|
||
"PLAYWRIGHT_STATIC_EXPORT": "true",
|
||
"PREBUILT_EXPORT": "true",
|
||
"REUSE_SERVERS": "false",
|
||
"Workers__SavedJobSearchAlertsEnabled": "false",
|
||
"qualification": "Applied runner environment; not deployed/provider/device evidence"
|
||
},
|
||
"affectedFrontend": {
|
||
"raw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/unit/career-id-metadata-green-20261012T061027Z.json",
|
||
"sha256": "bccd0cd98270c61f52f1d34967fcf08d346912bdf077dde6568666bce17ce466",
|
||
"bytes": 18991,
|
||
"hashPolicy": "Exact measured raw bytes"
|
||
},
|
||
"startedUnixMs": 1791785428247,
|
||
"passed": 46,
|
||
"failed": 0,
|
||
"pending": 0,
|
||
"total": 46,
|
||
"suites": 3,
|
||
"cases": [
|
||
{
|
||
"name": "meaningful identity initials use a readable foreground/background pair in [Function CareerProfilePage]",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "meaningful identity initials use a readable foreground/background pair in [Function ProfilePage]",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "Career Profile section headings describe the visible hierarchy without changing editing fields",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "account headings separate identity from security sections",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "account CV text status in en does not claim the CV library is empty",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "account CV text status in nb does not claim the CV library is empty",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "[PRES-E02/E09/C01] account save carries four identity fields and keeps career, email and CV writes separate",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "[PRES-E02/E08/E09] failed account save keeps a scoped error and the identity draft for explicit retry",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "[PRES-E02/E08] failed password update keeps a scoped error and secret draft until explicit retry succeeds",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "profile page loads persisted structured cv and can re-parse it",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "saving the career profile PUTs the structured profile and cv text unchanged (Phase 1 refactor invariant)",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "editing a field in an extracted section updates parent state and flows into save (Phase 1 increment 2)",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "profile page can reprocess from stored artifact history",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "active extraction polling refreshes run status without resetting unsaved career fields",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "profile page shows durable CV operation state and retries a failed run",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "profile page keeps raw extraction collapsed until expanded",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "saving the master profile (career) persists the structured profile via /career/profile",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "/career shows the profile completeness overview",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "/career profile exposes extraction progress",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "/career profile can queue a CV upload without visiting import review first",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "/career localizes completeness and review confidence without changing CV data",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "/career separates overview, profile and import while preserving unsaved profile edits",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "pending CV extraction can be reviewed and applied",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "account email changes require a password and use the confirmation flow",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "preserves the server item ID when normalizing jobs",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "preserves the server item ID when normalizing education",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "preserves the server item ID when normalizing certifications",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "preserves the server item ID when normalizing projects",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "legacy structured items without IDs remain usable and acquire no client-generated IDs",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "legacy parsed sections keep their facts without inventing structured item IDs",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "API null and missing numeric metadata remain absent rather than becoming zero",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "zero, finite numbers and numeric strings keep the established metadata number conversion",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "first-run workspace presents concise profile, import, general CV and job-specific actions",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "career workspace overview and import state render in Bokmål",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "returning workspace shows missing profile information and recent general and job-specific CVs",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "workspace exposes the pending_review import state as a resumable action",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "workspace exposes the queued import state as a resumable action",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "workspace exposes the failed import state as a resumable action",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "workspace represents loading and profile-load errors without inventing status",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "a settled failed profile read hides the completeness score and retries only through its existing owner",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "an unknown import read cannot claim no imports, completion or first-run guidance",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "a failed import read stays unknown and keeps its own retry separate from the profile read",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "failed recent-CV reads do not imply first-run and retry the same list without writes",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "the parent exposes failed import-read retry without canonical saves or history restores",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "overview retry cannot overwrite a dirty canonical draft after a failed source refresh",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "visited evidence keeps its draft across sections without an unvisited or repeated list request",
|
||
"status": "passed"
|
||
}
|
||
]
|
||
},
|
||
"affectedCommand": {
|
||
"record": {
|
||
"command": [
|
||
"rtk",
|
||
"proxy",
|
||
"npm.cmd",
|
||
"test",
|
||
"--",
|
||
"--runInBand",
|
||
"--watchAll=false",
|
||
"--json",
|
||
"--outputFile=E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\phase7\\current\\unit\\career-id-metadata-green-20261012T061027Z.json",
|
||
"src/profileCv.test.ts",
|
||
"src/profile-page.test.tsx",
|
||
"src/career-workspace-page.test.tsx"
|
||
],
|
||
"startedUtc": "2026-10-12T06:10:27.310871+00:00",
|
||
"finishedUtc": "2026-10-12T06:10:43.298188+00:00",
|
||
"exitCode": 0,
|
||
"counts": {
|
||
"numPassedTests": 46,
|
||
"numFailedTests": 0,
|
||
"numPendingTests": 0,
|
||
"numTodoTests": 0,
|
||
"numPassedTestSuites": 3,
|
||
"numFailedTestSuites": 0
|
||
}
|
||
},
|
||
"raw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/unit/career-id-metadata-green-20261012T061027Z-command.json",
|
||
"sha256": "84de6f47db72a7f9226d97ff711acce3561b91d571d9804f0a799cd8f8991c38",
|
||
"bytes": 717,
|
||
"hashPolicy": "Exact measured raw bytes"
|
||
},
|
||
"log": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/unit/career-id-metadata-green-20261012T061027Z.log",
|
||
"sha256": "500c3ad8ff26830b813c227cb8f7a21592291285587f653545ac98175258d1a0",
|
||
"bytes": 707,
|
||
"hashPolicy": "Exact measured raw bytes"
|
||
}
|
||
},
|
||
"caseDeltas": {
|
||
"newNormalizerCases": 8,
|
||
"newSuites": 1,
|
||
"existingProfile": 24,
|
||
"existingWorkspace": 14,
|
||
"totalAffected": 46,
|
||
"qualification": "Existing canonical payload assertion strengthened without adding case; unrelated early parser cases excluded before bounded RED, original histories retained."
|
||
},
|
||
"native": {
|
||
"career-source-ids": {
|
||
"command": {
|
||
"name": "career-source-ids",
|
||
"command": [
|
||
"rtk",
|
||
"proxy",
|
||
"node",
|
||
"node_modules/@playwright/test/cli.js",
|
||
"test",
|
||
"e2e/phase7-career-source-ids.spec.ts",
|
||
"--retries=0",
|
||
"--reporter=list,json",
|
||
"--output=E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\phase7\\current\\ui\\career-source-ids-results"
|
||
],
|
||
"startedUtc": "2026-10-12T06:12:25.298085+00:00",
|
||
"finishedUtc": "2026-10-12T06:12:37.583780+00:00",
|
||
"exitCode": 0,
|
||
"stats": {
|
||
"startTime": "2026-10-12T06:12:25.809Z",
|
||
"duration": 11739.815,
|
||
"expected": 2,
|
||
"skipped": 0,
|
||
"unexpected": 0,
|
||
"flaky": 0
|
||
}
|
||
},
|
||
"commandRaw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/runtime/career-source-ids-command.json",
|
||
"sha256": "780b56d52886a326ff31f04c5f400b2629627e0f03efa391c735ec965b3a87e7",
|
||
"bytes": 665,
|
||
"hashPolicy": "Exact measured raw bytes"
|
||
},
|
||
"reportRaw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/runtime/career-source-ids.json",
|
||
"sha256": "effe56f6ea9ab69bb4074e9afcbfc40b4e02d7626c56660a68992ed4704de20f",
|
||
"bytes": 389389,
|
||
"hashPolicy": "Exact measured raw bytes"
|
||
},
|
||
"logRaw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/runtime/career-source-ids.log",
|
||
"sha256": "7f1cd8aebbb41c1ce75b680fa5a77175094e2783c2cdb702a2659b999b093f6a",
|
||
"bytes": 927,
|
||
"hashPolicy": "Exact measured raw bytes"
|
||
},
|
||
"stats": {
|
||
"startTime": "2026-10-12T06:12:25.809Z",
|
||
"duration": 11739.815,
|
||
"expected": 2,
|
||
"skipped": 0,
|
||
"unexpected": 0,
|
||
"flaky": 0
|
||
},
|
||
"cases": [
|
||
{
|
||
"title": "[P7-03 PRES-C01 C03 C06 C07 C10 W05 W06] unrelated canonical UI save preserves four source IDs, existing CV overrides, sibling and frozen package",
|
||
"file": "phase7-career-source-ids.spec.ts",
|
||
"line": 69,
|
||
"expectedStatus": "passed",
|
||
"project": "chromium",
|
||
"resultStatuses": [
|
||
"passed"
|
||
],
|
||
"retries": [
|
||
0
|
||
],
|
||
"errors": [
|
||
[]
|
||
],
|
||
"durationMs": 3978
|
||
},
|
||
{
|
||
"title": "[P7-03 PRES-C01 C03 E05 E09] real HTTP bounds canonical last-writer saves and structured-history recovery without claiming stale-write protection",
|
||
"file": "phase7-career-source-ids.spec.ts",
|
||
"line": 185,
|
||
"expectedStatus": "passed",
|
||
"project": "chromium",
|
||
"resultStatuses": [
|
||
"passed"
|
||
],
|
||
"retries": [
|
||
0
|
||
],
|
||
"errors": [
|
||
[]
|
||
],
|
||
"durationMs": 877
|
||
}
|
||
],
|
||
"attachments": [
|
||
{
|
||
"test": "[P7-03 PRES-C01 C03 C06 C07 C10 W05 W06] unrelated canonical UI save preserves four source IDs, existing CV overrides, sibling and frozen package",
|
||
"name": "native-career-source-id-readbacks",
|
||
"contentType": "application/json",
|
||
"raw": {
|
||
"storage": "Base64 attachment in raw report",
|
||
"sha256": "463027b1e9b25842e69541aaadd3e6a4830d2ec2c743ebc2811c0b32a21c5b1f",
|
||
"bytes": 89557
|
||
},
|
||
"manualReview": "No individual inspection claimed by collector"
|
||
},
|
||
{
|
||
"test": "[P7-03 PRES-C01 C03 C06 C07 C10 W05 W06] unrelated canonical UI save preserves four source IDs, existing CV overrides, sibling and frozen package",
|
||
"name": "native-career-source-id-editor",
|
||
"contentType": "image/png",
|
||
"raw": {
|
||
"storage": "Base64 attachment in raw report",
|
||
"sha256": "a24e34a3d8fe47364b2d6a786542555f3711593bd5bccf6a1a16d179382bb466",
|
||
"bytes": 189632,
|
||
"extractedPNG": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/visuals/effe56f6ea9a/native-career-source-id-editor.png",
|
||
"sha256": "a24e34a3d8fe47364b2d6a786542555f3711593bd5bccf6a1a16d179382bb466",
|
||
"bytes": 189632,
|
||
"hashPolicy": "Exact measured raw bytes"
|
||
},
|
||
"originalEmbeddedReport": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/runtime/career-source-ids.json",
|
||
"sha256": "effe56f6ea9ab69bb4074e9afcbfc40b4e02d7626c56660a68992ed4704de20f",
|
||
"bytes": 389389,
|
||
"hashPolicy": "Exact measured raw bytes"
|
||
}
|
||
},
|
||
"manualReview": "No individual inspection claimed by collector"
|
||
},
|
||
{
|
||
"test": "[P7-03 PRES-C01 C03 E05 E09] real HTTP bounds canonical last-writer saves and structured-history recovery without claiming stale-write protection",
|
||
"name": "native-canonical-stale-contract-characterization",
|
||
"contentType": "application/json",
|
||
"raw": {
|
||
"storage": "Base64 attachment in raw report",
|
||
"sha256": "36aa851d09b68c8b6705e707a8385d1dd3d3141faf34e4293938b2fb344e76f7",
|
||
"bytes": 8996
|
||
},
|
||
"manualReview": "No individual inspection claimed by collector"
|
||
}
|
||
],
|
||
"reportErrors": [],
|
||
"configuration": {
|
||
"version": "1.62.1",
|
||
"workers": 1,
|
||
"projects": [
|
||
{
|
||
"name": "chromium",
|
||
"retries": 0
|
||
}
|
||
]
|
||
},
|
||
"accessibility": {
|
||
"scans": 0,
|
||
"ruleNodeCounts": [],
|
||
"contexts": [],
|
||
"qualification": "No axe attachments means no new axe coverage; retained P70299 incomplete contexts/manual gates remain. Full vectors stay in raw report where present."
|
||
}
|
||
},
|
||
"career-preservation": {
|
||
"command": {
|
||
"name": "career-preservation",
|
||
"command": [
|
||
"rtk",
|
||
"proxy",
|
||
"node",
|
||
"node_modules/@playwright/test/cli.js",
|
||
"test",
|
||
"e2e/redesign-preservation.spec.ts",
|
||
"--grep",
|
||
"mobile CV override|legacy workspace preserves frozen",
|
||
"--retries=0",
|
||
"--reporter=list,json",
|
||
"--output=E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\phase7\\current\\ui\\career-preservation-results"
|
||
],
|
||
"startedUtc": "2026-10-12T06:12:37.590840+00:00",
|
||
"finishedUtc": "2026-10-12T06:12:52.605547+00:00",
|
||
"exitCode": 0,
|
||
"stats": {
|
||
"startTime": "2026-10-12T06:12:38.101Z",
|
||
"duration": 14471.283000000001,
|
||
"expected": 2,
|
||
"skipped": 0,
|
||
"unexpected": 0,
|
||
"flaky": 0
|
||
}
|
||
},
|
||
"commandRaw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/runtime/career-preservation-command.json",
|
||
"sha256": "98cf49f4855f153f785908ce33c8f2a64bdda314c37f5ed9b53660595726b910",
|
||
"bytes": 751,
|
||
"hashPolicy": "Exact measured raw bytes"
|
||
},
|
||
"reportRaw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/runtime/career-preservation.json",
|
||
"sha256": "b155c1c4645f9085b71723305bfc0fd831287e150665f1f4de563771fd1565d2",
|
||
"bytes": 130872,
|
||
"hashPolicy": "Exact measured raw bytes"
|
||
},
|
||
"logRaw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/runtime/career-preservation.log",
|
||
"sha256": "06ae9d36d33e1971bcb628d99d25109b7adf06fb1ad7acf8b9f73b2995be951c",
|
||
"bytes": 866,
|
||
"hashPolicy": "Exact measured raw bytes"
|
||
},
|
||
"stats": {
|
||
"startTime": "2026-10-12T06:12:38.101Z",
|
||
"duration": 14471.283000000001,
|
||
"expected": 2,
|
||
"skipped": 0,
|
||
"unexpected": 0,
|
||
"flaky": 0
|
||
},
|
||
"cases": [
|
||
{
|
||
"title": "[PRES-C01 PRES-C06 PRES-C07 PRES-C10] mobile CV override persists without changing the canonical profile or sibling CV",
|
||
"file": "redesign-preservation.spec.ts",
|
||
"line": 43,
|
||
"expectedStatus": "passed",
|
||
"project": "chromium",
|
||
"resultStatuses": [
|
||
"passed"
|
||
],
|
||
"retries": [
|
||
0
|
||
],
|
||
"errors": [
|
||
[]
|
||
],
|
||
"durationMs": 3719
|
||
},
|
||
{
|
||
"title": "[PRES-W01 PRES-W05 PRES-W06 PRES-W07 PRES-W08] legacy workspace preserves frozen documents after current sources change",
|
||
"file": "redesign-preservation.spec.ts",
|
||
"line": 73,
|
||
"expectedStatus": "passed",
|
||
"project": "chromium",
|
||
"resultStatuses": [
|
||
"passed"
|
||
],
|
||
"retries": [
|
||
0
|
||
],
|
||
"errors": [
|
||
[]
|
||
],
|
||
"durationMs": 3721
|
||
}
|
||
],
|
||
"attachments": [
|
||
{
|
||
"test": "[PRES-W01 PRES-W05 PRES-W06 PRES-W07 PRES-W08] legacy workspace preserves frozen documents after current sources change",
|
||
"name": "native-frozen-package",
|
||
"contentType": "image/png",
|
||
"raw": {
|
||
"storage": "Base64 attachment in raw report",
|
||
"sha256": "1fcd650af0f5e913abd2635aafeb8c41042cfd5c42936de8928a44c5f47b27ea",
|
||
"bytes": 94122,
|
||
"extractedPNG": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/visuals/b155c1c4645f/native-frozen-package.png",
|
||
"sha256": "1fcd650af0f5e913abd2635aafeb8c41042cfd5c42936de8928a44c5f47b27ea",
|
||
"bytes": 94122,
|
||
"hashPolicy": "Exact measured raw bytes"
|
||
},
|
||
"originalEmbeddedReport": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/runtime/career-preservation.json",
|
||
"sha256": "b155c1c4645f9085b71723305bfc0fd831287e150665f1f4de563771fd1565d2",
|
||
"bytes": 130872,
|
||
"hashPolicy": "Exact measured raw bytes"
|
||
}
|
||
},
|
||
"manualReview": "No individual inspection claimed by collector"
|
||
},
|
||
{
|
||
"test": "[PRES-W01 PRES-W05 PRES-W06 PRES-W07 PRES-W08] legacy workspace preserves frozen documents after current sources change",
|
||
"name": "native-preservation-invariants",
|
||
"contentType": "application/json",
|
||
"raw": {
|
||
"storage": "Base64 attachment in raw report",
|
||
"sha256": "3686ad95bbc0b6b9a554d67bc94e34b44c164f2f839567a19a3b2000f980b5f6",
|
||
"bytes": 348
|
||
},
|
||
"manualReview": "No individual inspection claimed by collector"
|
||
}
|
||
],
|
||
"reportErrors": [],
|
||
"configuration": {
|
||
"version": "1.62.1",
|
||
"workers": 1,
|
||
"projects": [
|
||
{
|
||
"name": "chromium",
|
||
"retries": 0
|
||
}
|
||
]
|
||
},
|
||
"accessibility": {
|
||
"scans": 0,
|
||
"ruleNodeCounts": [],
|
||
"contexts": [],
|
||
"qualification": "No axe attachments means no new axe coverage; retained P70299 incomplete contexts/manual gates remain. Full vectors stay in raw report where present."
|
||
}
|
||
}
|
||
},
|
||
"unitHistory": [
|
||
{
|
||
"raw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/unit/career-id-metadata-green-20261012T061027Z.json",
|
||
"sha256": "bccd0cd98270c61f52f1d34967fcf08d346912bdf077dde6568666bce17ce466",
|
||
"bytes": 18991,
|
||
"hashPolicy": "Exact measured raw bytes"
|
||
},
|
||
"startedUnixMs": 1791785428247,
|
||
"passed": 46,
|
||
"failed": 0,
|
||
"pending": 0,
|
||
"total": 46,
|
||
"suites": 3,
|
||
"cases": [
|
||
{
|
||
"name": "meaningful identity initials use a readable foreground/background pair in [Function CareerProfilePage]",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "meaningful identity initials use a readable foreground/background pair in [Function ProfilePage]",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "Career Profile section headings describe the visible hierarchy without changing editing fields",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "account headings separate identity from security sections",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "account CV text status in en does not claim the CV library is empty",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "account CV text status in nb does not claim the CV library is empty",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "[PRES-E02/E09/C01] account save carries four identity fields and keeps career, email and CV writes separate",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "[PRES-E02/E08/E09] failed account save keeps a scoped error and the identity draft for explicit retry",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "[PRES-E02/E08] failed password update keeps a scoped error and secret draft until explicit retry succeeds",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "profile page loads persisted structured cv and can re-parse it",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "saving the career profile PUTs the structured profile and cv text unchanged (Phase 1 refactor invariant)",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "editing a field in an extracted section updates parent state and flows into save (Phase 1 increment 2)",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "profile page can reprocess from stored artifact history",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "active extraction polling refreshes run status without resetting unsaved career fields",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "profile page shows durable CV operation state and retries a failed run",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "profile page keeps raw extraction collapsed until expanded",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "saving the master profile (career) persists the structured profile via /career/profile",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "/career shows the profile completeness overview",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "/career profile exposes extraction progress",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "/career profile can queue a CV upload without visiting import review first",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "/career localizes completeness and review confidence without changing CV data",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "/career separates overview, profile and import while preserving unsaved profile edits",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "pending CV extraction can be reviewed and applied",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "account email changes require a password and use the confirmation flow",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "preserves the server item ID when normalizing jobs",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "preserves the server item ID when normalizing education",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "preserves the server item ID when normalizing certifications",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "preserves the server item ID when normalizing projects",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "legacy structured items without IDs remain usable and acquire no client-generated IDs",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "legacy parsed sections keep their facts without inventing structured item IDs",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "API null and missing numeric metadata remain absent rather than becoming zero",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "zero, finite numbers and numeric strings keep the established metadata number conversion",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "first-run workspace presents concise profile, import, general CV and job-specific actions",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "career workspace overview and import state render in Bokmål",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "returning workspace shows missing profile information and recent general and job-specific CVs",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "workspace exposes the pending_review import state as a resumable action",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "workspace exposes the queued import state as a resumable action",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "workspace exposes the failed import state as a resumable action",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "workspace represents loading and profile-load errors without inventing status",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "a settled failed profile read hides the completeness score and retries only through its existing owner",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "an unknown import read cannot claim no imports, completion or first-run guidance",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "a failed import read stays unknown and keeps its own retry separate from the profile read",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "failed recent-CV reads do not imply first-run and retry the same list without writes",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "the parent exposes failed import-read retry without canonical saves or history restores",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "overview retry cannot overwrite a dirty canonical draft after a failed source refresh",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "visited evidence keeps its draft across sections without an unvisited or repeated list request",
|
||
"status": "passed"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"raw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/unit/career-id-metadata-red-20261012T060859Z.json",
|
||
"sha256": "9a6911e75c8ef9877d4edcf9a8601534a94cff658a2867a5bf9b47b5baa5af66",
|
||
"bytes": 60108,
|
||
"hashPolicy": "Exact measured raw bytes"
|
||
},
|
||
"startedUnixMs": 1791785340795,
|
||
"passed": 26,
|
||
"failed": 6,
|
||
"pending": 0,
|
||
"total": 32,
|
||
"suites": 2,
|
||
"cases": [
|
||
{
|
||
"name": "meaningful identity initials use a readable foreground/background pair in [Function CareerProfilePage]",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "meaningful identity initials use a readable foreground/background pair in [Function ProfilePage]",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "Career Profile section headings describe the visible hierarchy without changing editing fields",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "account headings separate identity from security sections",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "account CV text status in en does not claim the CV library is empty",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "account CV text status in nb does not claim the CV library is empty",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "[PRES-E02/E09/C01] account save carries four identity fields and keeps career, email and CV writes separate",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "[PRES-E02/E08/E09] failed account save keeps a scoped error and the identity draft for explicit retry",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "[PRES-E02/E08] failed password update keeps a scoped error and secret draft until explicit retry succeeds",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "profile page loads persisted structured cv and can re-parse it",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "saving the career profile PUTs the structured profile and cv text unchanged (Phase 1 refactor invariant)",
|
||
"status": "failed"
|
||
},
|
||
{
|
||
"name": "editing a field in an extracted section updates parent state and flows into save (Phase 1 increment 2)",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "profile page can reprocess from stored artifact history",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "active extraction polling refreshes run status without resetting unsaved career fields",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "profile page shows durable CV operation state and retries a failed run",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "profile page keeps raw extraction collapsed until expanded",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "saving the master profile (career) persists the structured profile via /career/profile",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "/career shows the profile completeness overview",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "/career profile exposes extraction progress",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "/career profile can queue a CV upload without visiting import review first",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "/career localizes completeness and review confidence without changing CV data",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "/career separates overview, profile and import while preserving unsaved profile edits",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "pending CV extraction can be reviewed and applied",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "account email changes require a password and use the confirmation flow",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "preserves the server item ID when normalizing jobs",
|
||
"status": "failed"
|
||
},
|
||
{
|
||
"name": "preserves the server item ID when normalizing education",
|
||
"status": "failed"
|
||
},
|
||
{
|
||
"name": "preserves the server item ID when normalizing certifications",
|
||
"status": "failed"
|
||
},
|
||
{
|
||
"name": "preserves the server item ID when normalizing projects",
|
||
"status": "failed"
|
||
},
|
||
{
|
||
"name": "legacy structured items without IDs remain usable and acquire no client-generated IDs",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "legacy parsed sections keep their facts without inventing structured item IDs",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "API null and missing numeric metadata remain absent rather than becoming zero",
|
||
"status": "failed"
|
||
},
|
||
{
|
||
"name": "zero, finite numbers and numeric strings keep the established metadata number conversion",
|
||
"status": "passed"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"raw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/unit/career-id-red-20261012T055246Z.json",
|
||
"sha256": "0b3b3f9749e06e794ca802a3c3091a5ce82615c0e83d1fbc28a2124c2f141d1b",
|
||
"bytes": 59484,
|
||
"hashPolicy": "Exact measured raw bytes"
|
||
},
|
||
"startedUnixMs": 1791784369324,
|
||
"passed": 28,
|
||
"failed": 6,
|
||
"pending": 0,
|
||
"total": 34,
|
||
"suites": 2,
|
||
"cases": [
|
||
{
|
||
"name": "preserves the server item ID when normalizing jobs",
|
||
"status": "failed"
|
||
},
|
||
{
|
||
"name": "preserves the server item ID when normalizing education",
|
||
"status": "failed"
|
||
},
|
||
{
|
||
"name": "preserves the server item ID when normalizing certifications",
|
||
"status": "failed"
|
||
},
|
||
{
|
||
"name": "preserves the server item ID when normalizing projects",
|
||
"status": "failed"
|
||
},
|
||
{
|
||
"name": "legacy structured items without IDs remain usable and acquire no client-generated IDs",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "legacy parsed sections keep their facts without inventing structured item IDs",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "empty or invalid legacy JSON undefined retains the empty profile contract",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "empty or invalid legacy JSON \"\" retains the empty profile contract",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "empty or invalid legacy JSON \"not valid JSON\" retains the empty profile contract",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "empty or invalid legacy JSON \"null\" retains the empty profile contract",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "meaningful identity initials use a readable foreground/background pair in [Function CareerProfilePage]",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "meaningful identity initials use a readable foreground/background pair in [Function ProfilePage]",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "Career Profile section headings describe the visible hierarchy without changing editing fields",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "account headings separate identity from security sections",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "account CV text status in en does not claim the CV library is empty",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "account CV text status in nb does not claim the CV library is empty",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "[PRES-E02/E09/C01] account save carries four identity fields and keeps career, email and CV writes separate",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "[PRES-E02/E08/E09] failed account save keeps a scoped error and the identity draft for explicit retry",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "[PRES-E02/E08] failed password update keeps a scoped error and secret draft until explicit retry succeeds",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "profile page loads persisted structured cv and can re-parse it",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "saving the career profile PUTs the structured profile and cv text unchanged (Phase 1 refactor invariant)",
|
||
"status": "failed"
|
||
},
|
||
{
|
||
"name": "editing a field in an extracted section updates parent state and flows into save (Phase 1 increment 2)",
|
||
"status": "failed"
|
||
},
|
||
{
|
||
"name": "profile page can reprocess from stored artifact history",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "active extraction polling refreshes run status without resetting unsaved career fields",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "profile page shows durable CV operation state and retries a failed run",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "profile page keeps raw extraction collapsed until expanded",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "saving the master profile (career) persists the structured profile via /career/profile",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "/career shows the profile completeness overview",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "/career profile exposes extraction progress",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "/career profile can queue a CV upload without visiting import review first",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "/career localizes completeness and review confidence without changing CV data",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "/career separates overview, profile and import while preserving unsaved profile edits",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "pending CV extraction can be reviewed and applied",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "account email changes require a password and use the confirmation flow",
|
||
"status": "passed"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"raw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/unit/career-id-red-bounded-20261012T055452Z.json",
|
||
"sha256": "51606eaed128afce6c5fe21381bbf5e70952d1d4e243c868b35750ab28474b89",
|
||
"bytes": 56657,
|
||
"hashPolicy": "Exact measured raw bytes"
|
||
},
|
||
"startedUnixMs": 1791784493571,
|
||
"passed": 25,
|
||
"failed": 5,
|
||
"pending": 0,
|
||
"total": 30,
|
||
"suites": 2,
|
||
"cases": [
|
||
{
|
||
"name": "meaningful identity initials use a readable foreground/background pair in [Function CareerProfilePage]",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "meaningful identity initials use a readable foreground/background pair in [Function ProfilePage]",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "Career Profile section headings describe the visible hierarchy without changing editing fields",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "account headings separate identity from security sections",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "account CV text status in en does not claim the CV library is empty",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "account CV text status in nb does not claim the CV library is empty",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "[PRES-E02/E09/C01] account save carries four identity fields and keeps career, email and CV writes separate",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "[PRES-E02/E08/E09] failed account save keeps a scoped error and the identity draft for explicit retry",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "[PRES-E02/E08] failed password update keeps a scoped error and secret draft until explicit retry succeeds",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "profile page loads persisted structured cv and can re-parse it",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "saving the career profile PUTs the structured profile and cv text unchanged (Phase 1 refactor invariant)",
|
||
"status": "failed"
|
||
},
|
||
{
|
||
"name": "editing a field in an extracted section updates parent state and flows into save (Phase 1 increment 2)",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "profile page can reprocess from stored artifact history",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "active extraction polling refreshes run status without resetting unsaved career fields",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "profile page shows durable CV operation state and retries a failed run",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "profile page keeps raw extraction collapsed until expanded",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "saving the master profile (career) persists the structured profile via /career/profile",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "/career shows the profile completeness overview",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "/career profile exposes extraction progress",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "/career profile can queue a CV upload without visiting import review first",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "/career localizes completeness and review confidence without changing CV data",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "/career separates overview, profile and import while preserving unsaved profile edits",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "pending CV extraction can be reviewed and applied",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "account email changes require a password and use the confirmation flow",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "preserves the server item ID when normalizing jobs",
|
||
"status": "failed"
|
||
},
|
||
{
|
||
"name": "preserves the server item ID when normalizing education",
|
||
"status": "failed"
|
||
},
|
||
{
|
||
"name": "preserves the server item ID when normalizing certifications",
|
||
"status": "failed"
|
||
},
|
||
{
|
||
"name": "preserves the server item ID when normalizing projects",
|
||
"status": "failed"
|
||
},
|
||
{
|
||
"name": "legacy structured items without IDs remain usable and acquire no client-generated IDs",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "legacy parsed sections keep their facts without inventing structured item IDs",
|
||
"status": "passed"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"raw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/unit/career-id-red-repeat-20261012T055358Z.json",
|
||
"sha256": "da9204062cf64248e8d0b182bf3322fc2697eb2d576aece0b4719a6ffe345205",
|
||
"bytes": 59484,
|
||
"hashPolicy": "Exact measured raw bytes"
|
||
},
|
||
"startedUnixMs": 1791784439650,
|
||
"passed": 28,
|
||
"failed": 6,
|
||
"pending": 0,
|
||
"total": 34,
|
||
"suites": 2,
|
||
"cases": [
|
||
{
|
||
"name": "meaningful identity initials use a readable foreground/background pair in [Function CareerProfilePage]",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "meaningful identity initials use a readable foreground/background pair in [Function ProfilePage]",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "Career Profile section headings describe the visible hierarchy without changing editing fields",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "account headings separate identity from security sections",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "account CV text status in en does not claim the CV library is empty",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "account CV text status in nb does not claim the CV library is empty",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "[PRES-E02/E09/C01] account save carries four identity fields and keeps career, email and CV writes separate",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "[PRES-E02/E08/E09] failed account save keeps a scoped error and the identity draft for explicit retry",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "[PRES-E02/E08] failed password update keeps a scoped error and secret draft until explicit retry succeeds",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "profile page loads persisted structured cv and can re-parse it",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "saving the career profile PUTs the structured profile and cv text unchanged (Phase 1 refactor invariant)",
|
||
"status": "failed"
|
||
},
|
||
{
|
||
"name": "editing a field in an extracted section updates parent state and flows into save (Phase 1 increment 2)",
|
||
"status": "failed"
|
||
},
|
||
{
|
||
"name": "profile page can reprocess from stored artifact history",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "active extraction polling refreshes run status without resetting unsaved career fields",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "profile page shows durable CV operation state and retries a failed run",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "profile page keeps raw extraction collapsed until expanded",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "saving the master profile (career) persists the structured profile via /career/profile",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "/career shows the profile completeness overview",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "/career profile exposes extraction progress",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "/career profile can queue a CV upload without visiting import review first",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "/career localizes completeness and review confidence without changing CV data",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "/career separates overview, profile and import while preserving unsaved profile edits",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "pending CV extraction can be reviewed and applied",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "account email changes require a password and use the confirmation flow",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "preserves the server item ID when normalizing jobs",
|
||
"status": "failed"
|
||
},
|
||
{
|
||
"name": "preserves the server item ID when normalizing education",
|
||
"status": "failed"
|
||
},
|
||
{
|
||
"name": "preserves the server item ID when normalizing certifications",
|
||
"status": "failed"
|
||
},
|
||
{
|
||
"name": "preserves the server item ID when normalizing projects",
|
||
"status": "failed"
|
||
},
|
||
{
|
||
"name": "legacy structured items without IDs remain usable and acquire no client-generated IDs",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "legacy parsed sections keep their facts without inventing structured item IDs",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "empty or invalid legacy JSON undefined retains the empty profile contract",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "empty or invalid legacy JSON \"\" retains the empty profile contract",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "empty or invalid legacy JSON \"not valid JSON\" retains the empty profile contract",
|
||
"status": "passed"
|
||
},
|
||
{
|
||
"name": "empty or invalid legacy JSON \"null\" retains the empty profile contract",
|
||
"status": "passed"
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"baselineHistory": [
|
||
{
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/baseline/identity.json",
|
||
"evidence": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/baseline/identity.json",
|
||
"sha256": "0cdf3e1ab08453e53c702b5e8cda93dd968dd04a303efa129f4831d4f01ba393",
|
||
"bytes": 3043,
|
||
"hashPolicy": "Exact measured raw bytes"
|
||
},
|
||
"record": {
|
||
"schemaVersion": 1,
|
||
"checkpoint": "P7-03",
|
||
"scope": "Source-ID prerequisite repair baseline",
|
||
"frozenUtc": "2026-10-12T06:06:36.221265+00:00",
|
||
"acceptedCommit": "8b4d5c21125e800199d3ecc2d9c059a80ac5125d",
|
||
"sourceRefs": [
|
||
{
|
||
"originalSourcePath": "job-tracker-ui/src/profileCv.ts",
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/baseline/source/job-tracker-ui/src/profileCv.ts",
|
||
"sha256Raw": "a8d96474a6cf0adb66ac04af92bb9c256ea5622eef3c3414ac595348d0312451",
|
||
"bytes": 11619,
|
||
"canonicalLfSha256": "a398c182d2111e3f2a78d3bbf4005b967eac4b613af2a6f027a29851fd7240e7",
|
||
"acceptedGitCanonicalLfSha256": "a398c182d2111e3f2a78d3bbf4005b967eac4b613af2a6f027a29851fd7240e7",
|
||
"gitShowCommand": [
|
||
"rtk",
|
||
"proxy",
|
||
"git",
|
||
"show",
|
||
"8b4d5c21125e800199d3ecc2d9c059a80ac5125d:job-tracker-ui/src/profileCv.ts"
|
||
],
|
||
"gitShowExitCode": 0,
|
||
"verified": "Canonical LF bytes equal accepted git show; copied raw bytes unchanged"
|
||
},
|
||
{
|
||
"originalSourcePath": "job-tracker-ui/src/views/CareerProfilePage.tsx",
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/baseline/source/job-tracker-ui/src/views/CareerProfilePage.tsx",
|
||
"sha256Raw": "a70c1f6aba86da0c34621b7812b30525dc5f96a67a983c6bf42826c116ad07b4",
|
||
"bytes": 48634,
|
||
"canonicalLfSha256": "961f992fe9684766abb253f939bf64ca28bd4e671ba3f6efb98904aba6dea091",
|
||
"acceptedGitCanonicalLfSha256": "961f992fe9684766abb253f939bf64ca28bd4e671ba3f6efb98904aba6dea091",
|
||
"gitShowCommand": [
|
||
"rtk",
|
||
"proxy",
|
||
"git",
|
||
"show",
|
||
"8b4d5c21125e800199d3ecc2d9c059a80ac5125d:job-tracker-ui/src/views/CareerProfilePage.tsx"
|
||
],
|
||
"gitShowExitCode": 0,
|
||
"verified": "Canonical LF bytes equal accepted git show; copied raw bytes unchanged"
|
||
}
|
||
],
|
||
"frontendExport": {
|
||
"buildId": "qG82wPnFf-IsAkFvXkmn6",
|
||
"exportFiles": 75,
|
||
"exportSha256": "50896e8ad6934b909b83cc487eaf3579516921fde54b19e50a9039db68e04869",
|
||
"immutableRoot": ".artifacts/phase7/p7-02/career-final/export",
|
||
"qualification": "Existing accepted P7-02 export referenced without duplicate or rebuilt export; native RED outcome pending"
|
||
},
|
||
"unitBaseline": {
|
||
"status": "REPRODUCED_RED",
|
||
"passed": 25,
|
||
"failed": 5,
|
||
"total": 30,
|
||
"rawPrefix": ".artifacts/phase7/current/unit/career-id-red-bounded-20261012T055452Z",
|
||
"qualification": "Bounded normalizer6 plus existingProfile24; meaningful missing-ID/payload assertions, no skip-based acceptance; final GREEN not executed yet"
|
||
},
|
||
"nativeStatus": "PENDING",
|
||
"limitations": [
|
||
"Forward preservation cannot safely remap older orphaned overrides automatically; existing historical records remain and require a separately justified recovery decision.",
|
||
"Possible nullable metadata fidelity concern is pending actual native artifact; no additional repair or success claimed.",
|
||
"Planned full616/90 is derived only, latest full573/89 remains inherited."
|
||
]
|
||
}
|
||
},
|
||
{
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/baseline/native-first/identity.json",
|
||
"evidence": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/baseline/native-first/identity.json",
|
||
"sha256": "93b4098e97085162b18665f59da568b572ff4be16ed228eb0b90ab61f1553c14",
|
||
"bytes": 6155,
|
||
"hashPolicy": "Exact measured raw bytes"
|
||
},
|
||
"record": {
|
||
"schemaVersion": 1,
|
||
"status": "HISTORICAL_FIRST_NATIVE_DIAGNOSTIC_NOT_ACCEPTANCE",
|
||
"command": {
|
||
"name": "career-source-ids",
|
||
"command": [
|
||
"rtk",
|
||
"proxy",
|
||
"node",
|
||
"node_modules/@playwright/test/cli.js",
|
||
"test",
|
||
"e2e/phase7-career-source-ids.spec.ts",
|
||
"--retries=0",
|
||
"--reporter=list,json",
|
||
"--output=E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\phase7\\current\\ui\\career-source-ids-results"
|
||
],
|
||
"startedUtc": "2026-10-12T06:06:22.720694+00:00",
|
||
"finishedUtc": "2026-10-12T06:06:36.235817+00:00",
|
||
"exitCode": 1,
|
||
"failureLog": "E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\phase7\\current\\ui\\career-source-ids.log",
|
||
"stats": {
|
||
"startTime": "2026-10-12T06:06:23.250Z",
|
||
"duration": 12950.169,
|
||
"expected": 1,
|
||
"skipped": 0,
|
||
"unexpected": 1,
|
||
"flaky": 0
|
||
}
|
||
},
|
||
"stats": {
|
||
"startTime": "2026-10-12T06:06:23.250Z",
|
||
"duration": 12950.169,
|
||
"expected": 1,
|
||
"skipped": 0,
|
||
"unexpected": 1,
|
||
"flaky": 0
|
||
},
|
||
"report": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/baseline/native-first/career-source-ids.json",
|
||
"sha256": "31019c3b6b3b826f7e637ff85df8e7726f90e61a8f1ea1ca44ae2357a11f4635",
|
||
"bytes": 395866,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
},
|
||
"savedFiles": [
|
||
{
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/baseline/native-first/career-source-ids.json",
|
||
"sha256": "31019c3b6b3b826f7e637ff85df8e7726f90e61a8f1ea1ca44ae2357a11f4635",
|
||
"bytes": 395866,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
},
|
||
{
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/baseline/native-first/career-source-ids.log",
|
||
"sha256": "1bad990febabbdce1a915800f93eacd6caf79ce4907809ba597b010271706266",
|
||
"bytes": 4362,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
},
|
||
{
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/baseline/native-first/career-source-ids-command.json",
|
||
"sha256": "06df79985df46274f50f4e1a2ff6df30c775cea0f746dd089d04f4a8b0c4ee9f",
|
||
"bytes": 784,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
},
|
||
{
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/baseline/native-first/career-source-ids-results/.last-run.json",
|
||
"sha256": "9264dc74ba27f0b8e16a085fa8e59920a6f5b39ae205edfa84d2d7b9da8cf231",
|
||
"bytes": 96,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
},
|
||
{
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/baseline/native-first/career-source-ids-results/phase7-career-source-ids---bfbe4--sibling-and-frozen-package-chromium/error-context.md",
|
||
"sha256": "b74ff4015ded25cfc32b14846e815aee96b312b59c0c937513db2fd389c8398c",
|
||
"bytes": 39658,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
},
|
||
{
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/baseline/native-first/career-source-ids-results/phase7-career-source-ids---bfbe4--sibling-and-frozen-package-chromium/test-failed-1.png",
|
||
"sha256": "f653953528b2a8ecffb330af3900c40079c734af10934cf3ec7804eb37e12b20",
|
||
"bytes": 36813,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
},
|
||
{
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/baseline/native-first/career-source-ids-results/phase7-career-source-ids---bfbe4--sibling-and-frozen-package-chromium/trace.zip",
|
||
"sha256": "9ca53762d499d759f8361845fdb83e2e8883ca2c526e747d8258acb32e0335f3",
|
||
"bytes": 926632,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
}
|
||
],
|
||
"embeddedAttachments": [
|
||
{
|
||
"name": "native-career-source-id-readbacks",
|
||
"contentType": "application/json",
|
||
"raw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/baseline/native-first/embedded/01-native-career-source-id-readbacks.json",
|
||
"sha256": "ab91bd8d15a926bf1a39a5adba919ab9a94cd1f3f7d87710a17df1de2fa5d4f8",
|
||
"bytes": 89476,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
},
|
||
"originalEmbeddedReport": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/baseline/native-first/career-source-ids.json",
|
||
"sha256": "31019c3b6b3b826f7e637ff85df8e7726f90e61a8f1ea1ca44ae2357a11f4635",
|
||
"bytes": 395866,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
}
|
||
},
|
||
{
|
||
"name": "native-career-source-id-editor",
|
||
"contentType": "image/png",
|
||
"raw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/baseline/native-first/embedded/02-native-career-source-id-editor.png",
|
||
"sha256": "fed9826625ee6fab043090b95b9b7ffc926438557d4de7588943755079945fca",
|
||
"bytes": 189851,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
},
|
||
"originalEmbeddedReport": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/baseline/native-first/career-source-ids.json",
|
||
"sha256": "31019c3b6b3b826f7e637ff85df8e7726f90e61a8f1ea1ca44ae2357a11f4635",
|
||
"bytes": 395866,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
}
|
||
},
|
||
{
|
||
"name": "native-canonical-stale-contract-characterization",
|
||
"contentType": "application/json",
|
||
"raw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/baseline/native-first/embedded/03-native-canonical-stale-contract-characterization.json",
|
||
"sha256": "0e5157a04c14b4d716736f9e5707b0631989797e41e4f915d8745685cbeb56aa",
|
||
"bytes": 9003,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
},
|
||
"originalEmbeddedReport": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/baseline/native-first/career-source-ids.json",
|
||
"sha256": "31019c3b6b3b826f7e637ff85df8e7726f90e61a8f1ea1ca44ae2357a11f4635",
|
||
"bytes": 395866,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
}
|
||
}
|
||
],
|
||
"build": "Unchanged accepted qG82wPnFf-IsAkFvXkmn6 export",
|
||
"qualification": "Historical first diagnostic one fail/one pass: selected-DTO updatedAtUtc association fixture flaw was corrected for the authoritative native RED. Missing-ID/nullable metadata observations retained; not final acceptance. Original report internal execution paths remain unchanged; copied files/embedded bytes preserved exactly. Zero skip/retry/flaky."
|
||
}
|
||
},
|
||
{
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/baseline/native-red/identity.json",
|
||
"evidence": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/baseline/native-red/identity.json",
|
||
"sha256": "278682920aee102d0c01bc855e5d345c7b056a61f3760f70cf8b119be19e0ae1",
|
||
"bytes": 6164,
|
||
"hashPolicy": "Exact measured raw bytes"
|
||
},
|
||
"record": {
|
||
"schemaVersion": 1,
|
||
"status": "AUTHORITATIVE_NATIVE_RED",
|
||
"command": {
|
||
"name": "career-source-ids",
|
||
"command": [
|
||
"rtk",
|
||
"proxy",
|
||
"node",
|
||
"node_modules/@playwright/test/cli.js",
|
||
"test",
|
||
"e2e/phase7-career-source-ids.spec.ts",
|
||
"--retries=0",
|
||
"--reporter=list,json",
|
||
"--output=E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\phase7\\current\\ui\\career-source-ids-results"
|
||
],
|
||
"startedUtc": "2026-10-12T06:08:57.903506+00:00",
|
||
"finishedUtc": "2026-10-12T06:09:10.383980+00:00",
|
||
"exitCode": 1,
|
||
"failureLog": "E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\phase7\\current\\ui\\career-source-ids.log",
|
||
"stats": {
|
||
"startTime": "2026-10-12T06:08:58.411Z",
|
||
"duration": 11935,
|
||
"expected": 1,
|
||
"skipped": 0,
|
||
"unexpected": 1,
|
||
"flaky": 0
|
||
}
|
||
},
|
||
"stats": {
|
||
"startTime": "2026-10-12T06:08:58.411Z",
|
||
"duration": 11935,
|
||
"expected": 1,
|
||
"skipped": 0,
|
||
"unexpected": 1,
|
||
"flaky": 0
|
||
},
|
||
"report": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/baseline/native-red/career-source-ids.json",
|
||
"sha256": "d3f284813f9b774de4db3ec13cf2ab762e2a60ba6374f0d7f81293ca65863161",
|
||
"bytes": 395762,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
},
|
||
"savedFiles": [
|
||
{
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/baseline/native-red/career-source-ids.json",
|
||
"sha256": "d3f284813f9b774de4db3ec13cf2ab762e2a60ba6374f0d7f81293ca65863161",
|
||
"bytes": 395762,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
},
|
||
{
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/baseline/native-red/career-source-ids.log",
|
||
"sha256": "ffb5a96accdd77ec3765f276c4afae3d8894ed1631b1d04805b0bad70b4604e0",
|
||
"bytes": 4363,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
},
|
||
{
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/baseline/native-red/career-source-ids-command.json",
|
||
"sha256": "357c50d9527c38e45fa5c9ed8773bad8dab861ede685a68c6c8baac2e6f30f36",
|
||
"bytes": 780,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
},
|
||
{
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/baseline/native-red/career-source-ids-results/.last-run.json",
|
||
"sha256": "9264dc74ba27f0b8e16a085fa8e59920a6f5b39ae205edfa84d2d7b9da8cf231",
|
||
"bytes": 96,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
},
|
||
{
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/baseline/native-red/career-source-ids-results/phase7-career-source-ids---bfbe4--sibling-and-frozen-package-chromium/error-context.md",
|
||
"sha256": "aff78965b59932b6fc5f5942ef4d7322c7d23fc33a206dc03857050a8d656a36",
|
||
"bytes": 39765,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
},
|
||
{
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/baseline/native-red/career-source-ids-results/phase7-career-source-ids---bfbe4--sibling-and-frozen-package-chromium/test-failed-1.png",
|
||
"sha256": "0f20757880ffbdb01012a3b6fc411f8dab05cfb7f8930afc87a30af57a2c7a0d",
|
||
"bytes": 36818,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
},
|
||
{
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/baseline/native-red/career-source-ids-results/phase7-career-source-ids---bfbe4--sibling-and-frozen-package-chromium/trace.zip",
|
||
"sha256": "d9ec955f1cba282b48a35442a2ad42647adf6170e1397a2cb99ee0a07e4ffc43",
|
||
"bytes": 958494,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
}
|
||
],
|
||
"embeddedAttachments": [
|
||
{
|
||
"name": "native-career-source-id-readbacks",
|
||
"contentType": "application/json",
|
||
"raw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/baseline/native-red/embedded/01-native-career-source-id-readbacks.json",
|
||
"sha256": "040d15a0982611e0d3bc8592cc1a1382f53a0fe4425ab6fbcc21d1335f651b73",
|
||
"bytes": 89475,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
},
|
||
"originalEmbeddedReport": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/baseline/native-red/career-source-ids.json",
|
||
"sha256": "d3f284813f9b774de4db3ec13cf2ab762e2a60ba6374f0d7f81293ca65863161",
|
||
"bytes": 395762,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
}
|
||
},
|
||
{
|
||
"name": "native-career-source-id-editor",
|
||
"contentType": "image/png",
|
||
"raw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/baseline/native-red/embedded/02-native-career-source-id-editor.png",
|
||
"sha256": "d84d5b91bc6a617ccce161aca8d0581a9cff1ba21434847ca23abf921121691d",
|
||
"bytes": 189778,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
},
|
||
"originalEmbeddedReport": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/baseline/native-red/career-source-ids.json",
|
||
"sha256": "d3f284813f9b774de4db3ec13cf2ab762e2a60ba6374f0d7f81293ca65863161",
|
||
"bytes": 395762,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
}
|
||
},
|
||
{
|
||
"name": "native-canonical-stale-contract-characterization",
|
||
"contentType": "application/json",
|
||
"raw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/baseline/native-red/embedded/03-native-canonical-stale-contract-characterization.json",
|
||
"sha256": "b56ed3f1e57e02b8042f80cacec64556c243bf2c4453c6f87ced7c8669005243",
|
||
"bytes": 9003,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
},
|
||
"originalEmbeddedReport": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/baseline/native-red/career-source-ids.json",
|
||
"sha256": "d3f284813f9b774de4db3ec13cf2ab762e2a60ba6374f0d7f81293ca65863161",
|
||
"bytes": 395762,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
}
|
||
}
|
||
],
|
||
"build": "Unchanged accepted qG82wPnFf-IsAkFvXkmn6 export",
|
||
"qualification": "Authoritative corrected fixture: requested/persisted IDs false, override title/bullet true→false, selected/sibling DTO+both histories+frozen unchanged TRUE; three nullable metadata fields become0. Actual one fail/one pass; no final repair, PDF/concurrency or whole-checkpoint acceptance. Original report internal execution paths remain unchanged; copied files/embedded bytes preserved exactly. Zero skip/retry/flaky."
|
||
}
|
||
}
|
||
],
|
||
"rawRetention": {
|
||
"root": ".artifacts/phase7/p7-03/source-id-repair/final",
|
||
"runtimeFiles": 16,
|
||
"unitFiles": 15,
|
||
"qualification": "All six final root lane receipts/raw, result attachments, relevant unit history, one product owner/three test owners, BUILD_ID/export/runner/config/API identity/entry retained byte-for-byte. Baseline source/RED capsules remain separately immutable; do not rerun collector after subsequent build/source changes."
|
||
},
|
||
"derivedExpectationsOnly": {
|
||
"frontend": "618/90",
|
||
"ordinaryBrowser": 216,
|
||
"backend": 1034,
|
||
"latestFullFrontend": "Inherited573/89; no new full suite run",
|
||
"qualification": "Finite native packs/targeted guards overlap; derived totals are not fresh whole-suite execution."
|
||
},
|
||
"preservation": {
|
||
"groups": 57,
|
||
"partial": 56,
|
||
"deferred": 1,
|
||
"routes": 32
|
||
},
|
||
"limitations": [
|
||
"Forward optional-ID preservation cannot safely remap older orphaned overrides; historical records remain.",
|
||
"Qualified stale200/append-restore/raw-current/owner-denial characterization is not a concurrency repair or new revision/schema protocol.",
|
||
"No PDF/renderer/model/provider/automatic extraction action; P703 editor/import presentation remains pending.",
|
||
"M01–M12 human/device/zoom/contextual requirements carry; P5-13/C11 deferred, Phase8 separate, main unchanged/production NO-GO."
|
||
],
|
||
"pushReceipt": {
|
||
"status": "PUSHED_AND_DIRECTLY_VERIFIED",
|
||
"repairCommit": "3047b6c4a87c43de6f397e4a3d109be9ce3ddeca",
|
||
"hygieneCommit": "704637ab375c32d14aa46f9d4ef0f210136de4d9",
|
||
"record": {
|
||
"observedUtc": "2026-10-12T06:34:48.620963+00:00",
|
||
"branch": "codex/ui-redesign-phase4",
|
||
"sourceRepairCommit": "3047b6c4a87c43de6f397e4a3d109be9ce3ddeca",
|
||
"hygieneCommit": "704637ab375c32d14aa46f9d4ef0f210136de4d9",
|
||
"head": "704637ab375c32d14aa46f9d4ef0f210136de4d9",
|
||
"originDevelopment": "704637ab375c32d14aa46f9d4ef0f210136de4d9",
|
||
"liveDevelopment": "704637ab375c32d14aa46f9d4ef0f210136de4d9",
|
||
"main": "27657f31131cd95d42f0e1290853ec9c9b3959a4",
|
||
"originMain": "27657f31131cd95d42f0e1290853ec9c9b3959a4",
|
||
"liveMain": "27657f31131cd95d42f0e1290853ec9c9b3959a4",
|
||
"workingTreePorcelain": "",
|
||
"push": "normal; both new commits; no force/main push"
|
||
},
|
||
"raw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/push-receipt.json",
|
||
"sha256": "fa8ae1e5170110070e4ca02507517628fce8b5aed1512a6ef44e1d76275a15dd",
|
||
"bytes": 687,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
},
|
||
"qualification": "Actual normal chronological two-commit push; no rewrite/force/main push. Measured runtime/test source3047 and the one-LF hygiene relation remain historical and unchanged."
|
||
},
|
||
"readbackPayloads": [
|
||
{
|
||
"name": "native-career-source-id-readbacks",
|
||
"raw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/readback/native-career-source-id-readbacks.json",
|
||
"sha256": "463027b1e9b25842e69541aaadd3e6a4830d2ec2c743ebc2811c0b32a21c5b1f",
|
||
"bytes": 89557,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
},
|
||
"originalEmbeddedReport": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/runtime/career-source-ids.json",
|
||
"sha256": "effe56f6ea9ab69bb4074e9afcbfc40b4e02d7626c56660a68992ed4704de20f",
|
||
"bytes": 389389,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
}
|
||
},
|
||
{
|
||
"name": "native-canonical-stale-contract-characterization",
|
||
"raw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/readback/native-canonical-stale-contract-characterization.json",
|
||
"sha256": "36aa851d09b68c8b6705e707a8385d1dd3d3141faf34e4293938b2fb344e76f7",
|
||
"bytes": 8996,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
},
|
||
"originalEmbeddedReport": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/runtime/career-source-ids.json",
|
||
"sha256": "effe56f6ea9ab69bb4074e9afcbfc40b4e02d7626c56660a68992ed4704de20f",
|
||
"bytes": 389389,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
}
|
||
}
|
||
],
|
||
"parentReview": {
|
||
"inspectedPNG": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/visuals/effe56f6ea9a/native-career-source-id-editor.png",
|
||
"sha256": "a24e34a3d8fe47364b2d6a786542555f3711593bd5bccf6a1a16d179382bb466",
|
||
"bytes": 189632,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
},
|
||
"parentReviewedDuplicate": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/parent-reviewed-editor.png",
|
||
"sha256": "a24e34a3d8fe47364b2d6a786542555f3711593bd5bccf6a1a16d179382bb466",
|
||
"bytes": 189632,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
},
|
||
"additionalPreservationPNG": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/visuals/b155c1c4645f/native-frozen-package.png",
|
||
"sha256": "1fcd650af0f5e913abd2635aafeb8c41042cfd5c42936de8928a44c5f47b27ea",
|
||
"bytes": 94122,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
},
|
||
"originalEmbeddedReport": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/runtime/career-source-ids.json",
|
||
"sha256": "effe56f6ea9ab69bb4074e9afcbfc40b4e02d7626c56660a68992ed4704de20f",
|
||
"bytes": 389389,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
},
|
||
"visualReceipt": "Root opened two final PNGs with view_image: full-page390x4683 original editor (resized display171x2048) and native-frozen-package; separately inspected corrected RED failure viewport image. Final Save/content reaches original editor; presentation migration remains pending.",
|
||
"payloadReceipt": "Root checked all11 observed booleans TRUE; all three source-ID snapshots match and nullable metadata before/after are exact.",
|
||
"qualification": "Two finite existing-owner samples only. Editor image has sticky chrome at actual scroll capture; frozen-package dialog image blends underlying workspace/chrome, with transition cause not diagnosed. Neither establishes settled dialog/responsive/theme/axe/human/provider/PDF conformance; P706/P711 visual qualification remains. Stale200/append-restore/raw-current/owner-denial case characterizes current protocol; it does not repair concurrency."
|
||
},
|
||
"parentHashVerification": {
|
||
"raw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/parent-hash-verification.json",
|
||
"sha256": "afa1c2731d0c568cd6e6c27e71a3270a816c19a44e739afff06ccd72117ff0f3",
|
||
"bytes": 28347,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
},
|
||
"qualification": "Original verification applies before the EOF-only correction. Exact complete file-check vectors/original paths remain in the hashed raw receipt; aggregate retains its compact observed summary and immutable as-run references.",
|
||
"summary": {
|
||
"status": "PASS_AT_ORIGINAL_OBSERVATION",
|
||
"references": 81,
|
||
"uniqueReferencedFiles": 62,
|
||
"exportFiles": 75,
|
||
"exportSha256": "812182947b7af96a00f9568a83de1098f2824c53550c7119c76ec41803e71fbf"
|
||
}
|
||
},
|
||
"staticGate": {
|
||
"status": "PASS",
|
||
"checkedUtc": "2026-10-12T06:21:53.962988+00:00",
|
||
"evidence": {
|
||
"path": "docs/redesign/phase-7/p7-03/evidence/source-id-static-checks.json",
|
||
"sha256": "3a910cd0041f2cf855484c161b21bc4f4b1de7446af80600315b4fcf18e76863",
|
||
"bytes": 3166,
|
||
"hashPolicy": "Portable JSON UTF-8 with CRLF normalized to LF"
|
||
},
|
||
"immutableRawSnapshot": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/static/source-id-static-checks.json",
|
||
"sha256": "3a910cd0041f2cf855484c161b21bc4f4b1de7446af80600315b4fcf18e76863",
|
||
"bytes": 3166,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
},
|
||
"logs": [
|
||
{
|
||
"name": "secret-scan",
|
||
"originalLog": ".artifacts/phase7/current/static/20261012T062150Z/secret-scan.log",
|
||
"raw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/static/secret-scan.log",
|
||
"sha256": "c5a88d5ebdc042adba125c1eaacbe44f9f4a5c19898c0f195573c00d511aa28d",
|
||
"bytes": 153,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
}
|
||
},
|
||
{
|
||
"name": "working-whitespace",
|
||
"originalLog": ".artifacts/phase7/current/static/20261012T062150Z/working-whitespace.log",
|
||
"raw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/static/working-whitespace.log",
|
||
"sha256": "436a42b59983ec462f084c8728fedaff39a8c806159aac9a1a729531aa7fda5b",
|
||
"bytes": 1104,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
}
|
||
},
|
||
{
|
||
"name": "staged-whitespace",
|
||
"originalLog": ".artifacts/phase7/current/static/20261012T062150Z/staged-whitespace.log",
|
||
"raw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/static/staged-whitespace.log",
|
||
"sha256": "d2993bc68ad9a63f711c8f5473155e2ba00fdcd461220cc3849185f2f9ad93e6",
|
||
"bytes": 78,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
}
|
||
},
|
||
{
|
||
"name": "phase7-whitespace",
|
||
"originalLog": ".artifacts/phase7/current/static/20261012T062150Z/phase7-whitespace.log",
|
||
"raw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/static/phase7-whitespace.log",
|
||
"sha256": "5ca1538c7d0fbd5ad380f1af7ce928e68c7e7158dd2cddaa077fcf07d7105a00",
|
||
"bytes": 1104,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
}
|
||
}
|
||
],
|
||
"record": {
|
||
"schemaVersion": 1,
|
||
"checkpoint": "p7-03",
|
||
"status": "PASS",
|
||
"checkedUtc": "2026-10-12T06:21:53.962988+00:00",
|
||
"commands": [
|
||
{
|
||
"name": "secret-scan",
|
||
"command": [
|
||
"rtk",
|
||
"proxy",
|
||
"C:\\Users\\Connor\\AppData\\Local\\Programs\\Python\\Python312\\python.exe",
|
||
"-X",
|
||
"utf8",
|
||
"scripts/supply-chain.py",
|
||
"scan-secrets"
|
||
],
|
||
"startedUtc": "2026-10-12T06:21:50.989006+00:00",
|
||
"finishedUtc": "2026-10-12T06:21:53.334042+00:00",
|
||
"exitCode": 0,
|
||
"log": ".artifacts/phase7/current/static/20261012T062150Z/secret-scan.log",
|
||
"logSha256Raw": "c5a88d5ebdc042adba125c1eaacbe44f9f4a5c19898c0f195573c00d511aa28d"
|
||
},
|
||
{
|
||
"name": "working-whitespace",
|
||
"command": [
|
||
"rtk",
|
||
"proxy",
|
||
"git",
|
||
"diff",
|
||
"--check"
|
||
],
|
||
"startedUtc": "2026-10-12T06:21:53.334561+00:00",
|
||
"finishedUtc": "2026-10-12T06:21:53.432831+00:00",
|
||
"exitCode": 0,
|
||
"log": ".artifacts/phase7/current/static/20261012T062150Z/working-whitespace.log",
|
||
"logSha256Raw": "436a42b59983ec462f084c8728fedaff39a8c806159aac9a1a729531aa7fda5b"
|
||
},
|
||
{
|
||
"name": "staged-whitespace",
|
||
"command": [
|
||
"rtk",
|
||
"proxy",
|
||
"git",
|
||
"diff",
|
||
"--cached",
|
||
"--check"
|
||
],
|
||
"startedUtc": "2026-10-12T06:21:53.433325+00:00",
|
||
"finishedUtc": "2026-10-12T06:21:53.510414+00:00",
|
||
"exitCode": 0,
|
||
"log": ".artifacts/phase7/current/static/20261012T062150Z/staged-whitespace.log",
|
||
"logSha256Raw": "d2993bc68ad9a63f711c8f5473155e2ba00fdcd461220cc3849185f2f9ad93e6"
|
||
},
|
||
{
|
||
"name": "phase7-whitespace",
|
||
"command": [
|
||
"rtk",
|
||
"proxy",
|
||
"git",
|
||
"diff",
|
||
"--check",
|
||
"b5319981ad3d1bd635daff861453d23c0de5320b"
|
||
],
|
||
"startedUtc": "2026-10-12T06:21:53.510414+00:00",
|
||
"finishedUtc": "2026-10-12T06:21:53.638067+00:00",
|
||
"exitCode": 0,
|
||
"log": ".artifacts/phase7/current/static/20261012T062150Z/phase7-whitespace.log",
|
||
"logSha256Raw": "5ca1538c7d0fbd5ad380f1af7ce928e68c7e7158dd2cddaa077fcf07d7105a00"
|
||
}
|
||
],
|
||
"untrackedSecretScan": {
|
||
"files": 5,
|
||
"findings": 0
|
||
},
|
||
"documentation": {
|
||
"files": 10,
|
||
"relativeLinks": 370,
|
||
"errors": []
|
||
},
|
||
"preservation": {
|
||
"groups": 57,
|
||
"statuses": {
|
||
"PARTIAL": 56,
|
||
"PASS": 0,
|
||
"FAIL": 0,
|
||
"DEFERRED": 1
|
||
},
|
||
"originalRoutesPreserved": true,
|
||
"currentConcreteRoutes": 32
|
||
},
|
||
"production": {
|
||
"main": "27657f31131cd95d42f0e1290853ec9c9b3959a4",
|
||
"originMain": "27657f31131cd95d42f0e1290853ec9c9b3959a4",
|
||
"status": "NO-GO",
|
||
"qualification": "Local fetched refs; direct push observation recorded separately."
|
||
},
|
||
"hashPolicy": "Portable JSON UTF8 LF; raw log hashes measure exact saved bytes.",
|
||
"limits": [
|
||
"Pattern scanner skips binary and files over2MiB; not historical Git/production secrets.",
|
||
"Local links check target existence, not URL/heading anchors.",
|
||
"Static evidence is not runtime/manual/device/provider/production acceptance."
|
||
]
|
||
},
|
||
"qualification": "Earlier static observation PASS06:21:53; subsequent final staged check failed and the root committed without handling it. Current repository hygiene is separately pending correction recheck in repositoryHygiene; prior measured static/runtime records remain unchanged."
|
||
},
|
||
"repositoryHygiene": {
|
||
"status": "CORRECTED_SUCCESSOR_COMMITTED_AND_NORMAL_PUSH_VERIFIED",
|
||
"repairCommit": "3047b6c4a87c43de6f397e4a3d109be9ce3ddeca",
|
||
"pushStatus": "PUSHED_AND_DIRECTLY_VERIFIED",
|
||
"reportedOriginalStagedCheckExitCode": 1,
|
||
"historicalCommittedCheck": {
|
||
"record": {
|
||
"command": [
|
||
"rtk",
|
||
"proxy",
|
||
"git",
|
||
"show",
|
||
"--format=",
|
||
"--check",
|
||
"3047b6c4a87c43de6f397e4a3d109be9ce3ddeca"
|
||
],
|
||
"startedUtc": "2026-10-12T06:26:17.873507+00:00",
|
||
"finishedUtc": "2026-10-12T06:26:17.966522+00:00",
|
||
"exitCode": 2,
|
||
"qualification": "Root committed after not handling staged exit1. This raw historical check confirms the single new blank EOF line; no source assertion or product logic changed. Correction must pass before normal push."
|
||
},
|
||
"recordRaw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/hygiene/committed-whitespace-command.json",
|
||
"sha256": "86106b28558a74cad04c14ee671f31cec0a9e92500b429bd059e273a99e3b157",
|
||
"bytes": 509,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
},
|
||
"logRaw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/hygiene/committed-whitespace.log",
|
||
"sha256": "881272de5ac0ba097f7f770bf291787fd2bd784a42d741c23b8cfec085bf27c1",
|
||
"bytes": 142,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
},
|
||
"qualification": "Actual recorded subprocess exit2 differs from earlier adapter-reported staged exit1; these are different observations. Only defect: profileCv.test.ts line75 new blank EOF line."
|
||
},
|
||
"currentCorrectedTest": {
|
||
"originalSourcePath": "job-tracker-ui/src/profileCv.test.ts",
|
||
"rawSnapshot": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/hygiene/corrected-source/job-tracker-ui/src/profileCv.test.ts",
|
||
"sha256": "c1c482bed380429489f1757852811e0d1e7f48b71af2bd7899693d2e8475ac9d",
|
||
"bytes": 4316,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
},
|
||
"canonicalLf": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/hygiene/corrected-source/job-tracker-ui/src/profileCv.test.ts",
|
||
"sha256": "c1c482bed380429489f1757852811e0d1e7f48b71af2bd7899693d2e8475ac9d",
|
||
"bytes": 4316,
|
||
"hashPolicy": "UTF-8 with CRLF normalized to LF"
|
||
}
|
||
},
|
||
"correction": "Exactly one final blank LF removed; no product logic, assertions, test count or runtime behavior changes. No test/build/native rerun required for this whitespace-only successor. Frozen as-run test/source/export/raw reports remain untouched.",
|
||
"commitPolicy": "Retain local repair3047b6c4; separately commit transparent test-whitespace/docs successor after fresh staged checks. No amend/reset/force push; normal push only after successor gate passes.",
|
||
"correctedGate": {
|
||
"status": "PASS",
|
||
"checkedUtc": "2026-10-12T06:32:12.321381+00:00",
|
||
"evidence": {
|
||
"path": "docs/redesign/phase-7/p7-03/evidence/source-id-hygiene-correction-static-checks.json",
|
||
"sha256": "24c3147e21e266e2b2d9e22cc1f0f716da791b730d280328d3ceae02fb5e67e1",
|
||
"bytes": 3166,
|
||
"hashPolicy": "Portable JSON UTF-8 with CRLF normalized to LF"
|
||
},
|
||
"immutableRawSnapshot": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/hygiene/static-corrected/source-id-hygiene-correction-static-checks.json",
|
||
"sha256": "24c3147e21e266e2b2d9e22cc1f0f716da791b730d280328d3ceae02fb5e67e1",
|
||
"bytes": 3166,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
},
|
||
"logs": [
|
||
{
|
||
"name": "secret-scan",
|
||
"originalLog": ".artifacts/phase7/current/static/20261012T063209Z/secret-scan.log",
|
||
"raw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/hygiene/static-corrected/secret-scan.log",
|
||
"sha256": "c5a88d5ebdc042adba125c1eaacbe44f9f4a5c19898c0f195573c00d511aa28d",
|
||
"bytes": 153,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
}
|
||
},
|
||
{
|
||
"name": "working-whitespace",
|
||
"originalLog": ".artifacts/phase7/current/static/20261012T063209Z/working-whitespace.log",
|
||
"raw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/hygiene/static-corrected/working-whitespace.log",
|
||
"sha256": "d2993bc68ad9a63f711c8f5473155e2ba00fdcd461220cc3849185f2f9ad93e6",
|
||
"bytes": 78,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
}
|
||
},
|
||
{
|
||
"name": "staged-whitespace",
|
||
"originalLog": ".artifacts/phase7/current/static/20261012T063209Z/staged-whitespace.log",
|
||
"raw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/hygiene/static-corrected/staged-whitespace.log",
|
||
"sha256": "d2993bc68ad9a63f711c8f5473155e2ba00fdcd461220cc3849185f2f9ad93e6",
|
||
"bytes": 78,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
}
|
||
},
|
||
{
|
||
"name": "phase7-whitespace",
|
||
"originalLog": ".artifacts/phase7/current/static/20261012T063209Z/phase7-whitespace.log",
|
||
"raw": {
|
||
"path": ".artifacts/phase7/p7-03/source-id-repair/final/hygiene/static-corrected/phase7-whitespace.log",
|
||
"sha256": "d2993bc68ad9a63f711c8f5473155e2ba00fdcd461220cc3849185f2f9ad93e6",
|
||
"bytes": 78,
|
||
"hashPolicy": "Exact saved raw bytes"
|
||
}
|
||
}
|
||
],
|
||
"record": {
|
||
"schemaVersion": 1,
|
||
"checkpoint": "p7-03",
|
||
"status": "PASS",
|
||
"checkedUtc": "2026-10-12T06:32:12.321381+00:00",
|
||
"commands": [
|
||
{
|
||
"name": "secret-scan",
|
||
"command": [
|
||
"rtk",
|
||
"proxy",
|
||
"C:\\Users\\Connor\\AppData\\Local\\Programs\\Python\\Python312\\python.exe",
|
||
"-X",
|
||
"utf8",
|
||
"scripts/supply-chain.py",
|
||
"scan-secrets"
|
||
],
|
||
"startedUtc": "2026-10-12T06:32:09.430634+00:00",
|
||
"finishedUtc": "2026-10-12T06:32:11.725703+00:00",
|
||
"exitCode": 0,
|
||
"log": ".artifacts/phase7/current/static/20261012T063209Z/secret-scan.log",
|
||
"logSha256Raw": "c5a88d5ebdc042adba125c1eaacbe44f9f4a5c19898c0f195573c00d511aa28d"
|
||
},
|
||
{
|
||
"name": "working-whitespace",
|
||
"command": [
|
||
"rtk",
|
||
"proxy",
|
||
"git",
|
||
"diff",
|
||
"--check"
|
||
],
|
||
"startedUtc": "2026-10-12T06:32:11.726204+00:00",
|
||
"finishedUtc": "2026-10-12T06:32:11.807622+00:00",
|
||
"exitCode": 0,
|
||
"log": ".artifacts/phase7/current/static/20261012T063209Z/working-whitespace.log",
|
||
"logSha256Raw": "d2993bc68ad9a63f711c8f5473155e2ba00fdcd461220cc3849185f2f9ad93e6"
|
||
},
|
||
{
|
||
"name": "staged-whitespace",
|
||
"command": [
|
||
"rtk",
|
||
"proxy",
|
||
"git",
|
||
"diff",
|
||
"--cached",
|
||
"--check"
|
||
],
|
||
"startedUtc": "2026-10-12T06:32:11.808142+00:00",
|
||
"finishedUtc": "2026-10-12T06:32:11.892541+00:00",
|
||
"exitCode": 0,
|
||
"log": ".artifacts/phase7/current/static/20261012T063209Z/staged-whitespace.log",
|
||
"logSha256Raw": "d2993bc68ad9a63f711c8f5473155e2ba00fdcd461220cc3849185f2f9ad93e6"
|
||
},
|
||
{
|
||
"name": "phase7-whitespace",
|
||
"command": [
|
||
"rtk",
|
||
"proxy",
|
||
"git",
|
||
"diff",
|
||
"--check",
|
||
"b5319981ad3d1bd635daff861453d23c0de5320b"
|
||
],
|
||
"startedUtc": "2026-10-12T06:32:11.893035+00:00",
|
||
"finishedUtc": "2026-10-12T06:32:12.009070+00:00",
|
||
"exitCode": 0,
|
||
"log": ".artifacts/phase7/current/static/20261012T063209Z/phase7-whitespace.log",
|
||
"logSha256Raw": "d2993bc68ad9a63f711c8f5473155e2ba00fdcd461220cc3849185f2f9ad93e6"
|
||
}
|
||
],
|
||
"untrackedSecretScan": {
|
||
"files": 0,
|
||
"findings": 0
|
||
},
|
||
"documentation": {
|
||
"files": 10,
|
||
"relativeLinks": 374,
|
||
"errors": []
|
||
},
|
||
"preservation": {
|
||
"groups": 57,
|
||
"statuses": {
|
||
"PARTIAL": 56,
|
||
"PASS": 0,
|
||
"FAIL": 0,
|
||
"DEFERRED": 1
|
||
},
|
||
"originalRoutesPreserved": true,
|
||
"currentConcreteRoutes": 32
|
||
},
|
||
"production": {
|
||
"main": "27657f31131cd95d42f0e1290853ec9c9b3959a4",
|
||
"originMain": "27657f31131cd95d42f0e1290853ec9c9b3959a4",
|
||
"status": "NO-GO",
|
||
"qualification": "Local fetched refs; direct push observation recorded separately."
|
||
},
|
||
"hashPolicy": "Portable JSON UTF8 LF; raw log hashes measure exact saved bytes.",
|
||
"limits": [
|
||
"Pattern scanner skips binary and files over2MiB; not historical Git/production secrets.",
|
||
"Local links check target existence, not URL/heading anchors.",
|
||
"Static evidence is not runtime/manual/device/provider/production acceptance."
|
||
]
|
||
},
|
||
"qualification": "Fresh actual staged correction gate PASS; subsequent normal hygiene successor704637a and two-commit push directly verified. Original failure/local3047/as-run snapshots remain immutable."
|
||
},
|
||
"hygieneCommit": "704637ab375c32d14aa46f9d4ef0f210136de4d9"
|
||
}
|
||
}
|