feat(ui): migrate reminders and protect follow-up recovery

This commit is contained in:
cesnimda
2026-10-13 13:49:29 +02:00
parent c723a4e303
commit 627955afa9
14 changed files with 3412 additions and 51 deletions
@@ -3,7 +3,7 @@
"checkpoint": "P7-05",
"slice": "Offers",
"recordedUtc": "2026-10-13T11:18:51.433412+00:00",
"acceptance": "OFFERS_IMPLEMENTED_SCOPE_CONDITIONAL_GO_HYGIENE_PASS_NORMAL_PUSH_PENDING_REMINDERS_PENDING",
"acceptance": "OFFERS_IMPLEMENTED_SCOPE_CONDITIONAL_GO_HYGIENE_PASS_NORMAL_PUSH_VERIFIED_REMINDERS_PENDING",
"entryReceipt": {
"checkpoint": "P7-05",
"slice": "Offers",
@@ -1947,5 +1947,105 @@
"Local links check target existence, not URL/heading anchors.",
"Static evidence is not runtime/manual/device/provider/production acceptance."
]
},
"push": {
"observedUtc": "2026-10-13T11:19:57.030234+00:00",
"branch": "codex/ui-redesign-phase4",
"head": "c723a4e3032185da623d81ace241eec748506fc7",
"originDevelopment": "c723a4e3032185da623d81ace241eec748506fc7",
"liveDevelopment": "c723a4e3032185da623d81ace241eec748506fc7",
"main": "27657f31131cd95d42f0e1290853ec9c9b3959a4",
"originMain": "27657f31131cd95d42f0e1290853ec9c9b3959a4",
"liveMain": "27657f31131cd95d42f0e1290853ec9c9b3959a4",
"workingTreeClean": true,
"pendingPaths": [],
"commands": [
{
"command": [
"rtk",
"proxy",
"git",
"branch",
"--show-current"
],
"exitCode": 0,
"stdout": "codex/ui-redesign-phase4\n",
"stderr": "[rtk] /!\\ No hook installed — run `rtk init -g` for automatic token savings\n"
},
{
"command": [
"rtk",
"proxy",
"git",
"rev-parse",
"HEAD"
],
"exitCode": 0,
"stdout": "c723a4e3032185da623d81ace241eec748506fc7\n",
"stderr": "[rtk] /!\\ No hook installed — run `rtk init -g` for automatic token savings\n"
},
{
"command": [
"rtk",
"proxy",
"git",
"rev-parse",
"origin/codex/ui-redesign-phase4"
],
"exitCode": 0,
"stdout": "c723a4e3032185da623d81ace241eec748506fc7\n",
"stderr": "[rtk] /!\\ No hook installed — run `rtk init -g` for automatic token savings\n"
},
{
"command": [
"rtk",
"proxy",
"git",
"rev-parse",
"main"
],
"exitCode": 0,
"stdout": "27657f31131cd95d42f0e1290853ec9c9b3959a4\n",
"stderr": "[rtk] /!\\ No hook installed — run `rtk init -g` for automatic token savings\n"
},
{
"command": [
"rtk",
"proxy",
"git",
"rev-parse",
"origin/main"
],
"exitCode": 0,
"stdout": "27657f31131cd95d42f0e1290853ec9c9b3959a4\n",
"stderr": "[rtk] /!\\ No hook installed — run `rtk init -g` for automatic token savings\n"
},
{
"command": [
"rtk",
"proxy",
"git",
"ls-remote",
"origin",
"refs/heads/codex/ui-redesign-phase4",
"refs/heads/main"
],
"exitCode": 0,
"stdout": "c723a4e3032185da623d81ace241eec748506fc7\trefs/heads/codex/ui-redesign-phase4\n27657f31131cd95d42f0e1290853ec9c9b3959a4\trefs/heads/main\n",
"stderr": "[rtk] /!\\ No hook installed — run `rtk init -g` for automatic token savings\n"
},
{
"command": [
"rtk",
"proxy",
"git",
"status",
"--porcelain=v1"
],
"exitCode": 0,
"stdout": "",
"stderr": "[rtk] /!\\ No hook installed — run `rtk init -g` for automatic token savings\n"
}
]
}
}
@@ -0,0 +1,164 @@
{
"checkpoint": "P7-05",
"slice": "Reminders",
"entry": "CONDITIONAL_GO",
"previousOffersPush": {
"observedUtc": "2026-10-13T11:19:57.030234+00:00",
"branch": "codex/ui-redesign-phase4",
"head": "c723a4e3032185da623d81ace241eec748506fc7",
"originDevelopment": "c723a4e3032185da623d81ace241eec748506fc7",
"liveDevelopment": "c723a4e3032185da623d81ace241eec748506fc7",
"main": "27657f31131cd95d42f0e1290853ec9c9b3959a4",
"originMain": "27657f31131cd95d42f0e1290853ec9c9b3959a4",
"liveMain": "27657f31131cd95d42f0e1290853ec9c9b3959a4",
"workingTreeClean": true,
"pendingPaths": [],
"commands": [
{
"command": [
"rtk",
"proxy",
"git",
"branch",
"--show-current"
],
"exitCode": 0,
"stdout": "codex/ui-redesign-phase4\n",
"stderr": "[rtk] /!\\ No hook installed — run `rtk init -g` for automatic token savings\n"
},
{
"command": [
"rtk",
"proxy",
"git",
"rev-parse",
"HEAD"
],
"exitCode": 0,
"stdout": "c723a4e3032185da623d81ace241eec748506fc7\n",
"stderr": "[rtk] /!\\ No hook installed — run `rtk init -g` for automatic token savings\n"
},
{
"command": [
"rtk",
"proxy",
"git",
"rev-parse",
"origin/codex/ui-redesign-phase4"
],
"exitCode": 0,
"stdout": "c723a4e3032185da623d81ace241eec748506fc7\n",
"stderr": "[rtk] /!\\ No hook installed — run `rtk init -g` for automatic token savings\n"
},
{
"command": [
"rtk",
"proxy",
"git",
"rev-parse",
"main"
],
"exitCode": 0,
"stdout": "27657f31131cd95d42f0e1290853ec9c9b3959a4\n",
"stderr": "[rtk] /!\\ No hook installed — run `rtk init -g` for automatic token savings\n"
},
{
"command": [
"rtk",
"proxy",
"git",
"rev-parse",
"origin/main"
],
"exitCode": 0,
"stdout": "27657f31131cd95d42f0e1290853ec9c9b3959a4\n",
"stderr": "[rtk] /!\\ No hook installed — run `rtk init -g` for automatic token savings\n"
},
{
"command": [
"rtk",
"proxy",
"git",
"ls-remote",
"origin",
"refs/heads/codex/ui-redesign-phase4",
"refs/heads/main"
],
"exitCode": 0,
"stdout": "c723a4e3032185da623d81ace241eec748506fc7\trefs/heads/codex/ui-redesign-phase4\n27657f31131cd95d42f0e1290853ec9c9b3959a4\trefs/heads/main\n",
"stderr": "[rtk] /!\\ No hook installed — run `rtk init -g` for automatic token savings\n"
},
{
"command": [
"rtk",
"proxy",
"git",
"status",
"--porcelain=v1"
],
"exitCode": 0,
"stdout": "",
"stderr": "[rtk] /!\\ No hook installed — run `rtk init -g` for automatic token savings\n"
}
]
},
"baselineSources": [
{
"path": "job-tracker-ui/src/components/RemindersView.tsx",
"gitBlobSha256": "42780d9229c1ff3b56b33562da58ca17ab182b2397dafeaf9cdd7d3fb04a1f0c",
"bytes": 6075
},
{
"path": "job-tracker-ui/src/jobWorkflowSignals.ts",
"gitBlobSha256": "cde4372017c13f21de8b4e2259923d80beda36506784d7be089432622fbd6b0b",
"bytes": 2701
},
{
"path": "job-tracker-ui/src/daily-control-loop.test.tsx",
"gitBlobSha256": "9bd0a047e384ced6616129271e771658bd6bf133aaf7c3a7fa6d6a8f1e9a735e",
"bytes": 11650
},
{
"path": "job-tracker-ui/src/workflow-trust-signals.test.tsx",
"gitBlobSha256": "92a27f54f9b347a5069845f62524fe9cd5d2d10196ec6619e6895dbf04fe7b4b",
"bytes": 11688
},
{
"path": "JobTrackerApi/Controllers/JobApplicationLifecycleController.cs",
"gitBlobSha256": "a86e09a8c6b5564e47959f969e843855f2ba866ffad816e3ba41dd84d0a115ad",
"bytes": 6593
}
],
"baseline": "Fresh7/2 daily-control-loop/workflow-trust-signals, no separate missing helper test claimed. Source/prerun/raw frozen in ignored reminders/unit-baseline. Latest whole573/89/backend1033/sidecar49 inherited;696/93/frontend267browser/backend1034 derived only.",
"scope": "Existing upcomingDays14/all4groups/workflow reason precedence and destinations, original UTC+3/+7/clear followup PATCH andFollowUpSet event/noExpectedVersion. Protect held operations/durableexplicit recovery/readRetry, currentlocale/status/date/reflow/focus; no date/DST/provider/model/followMode/schema/production change.",
"backendBaseline": {
"command": [
"rtk",
"proxy",
"C:/Users/Connor/.dotnet/dotnet.exe",
"test",
"JobTrackerApi.Tests/JobTrackerApi.Tests.csproj",
"--configuration",
"Release",
"--no-build",
"--filter",
"FullyQualifiedName~JobApplicationsWorkflowSignalsTests|FullyQualifiedName~InterviewPrepTests.Setting_a_follow_up|FullyQualifiedName~InterviewPrepTests.Follow_up_counts|FullyQualifiedName~InterviewPrepTests.Clearing_a_follow_up|FullyQualifiedName~InterviewPrepTests.Follow_up_is_not_reachable",
"--logger",
"trx;LogFileName=career.trx",
"--results-directory",
"E:\\Storage\\Projects\\Active\\Job tracker\\.artifacts\\phase7\\current\\backend-career\\p705-reminders-20261013T112252Z"
],
"startedUtc": "2026-10-13T11:22:52.268196+00:00",
"finishedUtc": "2026-10-13T11:22:54.980345+00:00",
"exitCode": 0,
"logSha256": "ad0ef58d24b234fbeba0a693a2b4013e4ffd03e0ba13d2730ed985aa46829cc9",
"counts": {
"total": 6,
"passed": 6,
"failed": 0,
"notExecuted": 0
},
"resultSha256": "b46be1188b9460210f54d09c2dcb82928233069e14f8a7504425e8d4ff51d989"
},
"backendQualification": "Existing WorkflowSignals2+InterviewPrep followup4 pass on same verified unchanged Release DLL; no full backend rebuild/run and no mail delivery qualification."
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,104 @@
{
"schemaVersion": 1,
"checkpoint": "p7-05",
"status": "PASS",
"checkedUtc": "2026-10-13T11:48:29.328699+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-13T11:48:26.119344+00:00",
"finishedUtc": "2026-10-13T11:48:28.659087+00:00",
"exitCode": 0,
"log": ".artifacts/phase7/current/static/20261013T114826Z/secret-scan.log",
"logSha256Raw": "c5a88d5ebdc042adba125c1eaacbe44f9f4a5c19898c0f195573c00d511aa28d"
},
{
"name": "working-whitespace",
"command": [
"rtk",
"proxy",
"git",
"diff",
"--check"
],
"startedUtc": "2026-10-13T11:48:28.660091+00:00",
"finishedUtc": "2026-10-13T11:48:28.762104+00:00",
"exitCode": 0,
"log": ".artifacts/phase7/current/static/20261013T114826Z/working-whitespace.log",
"logSha256Raw": "0e9d3abafb46d589ad291e48e12aeb87ddf8e28f5b77a06ab2bddb34e1920bdc"
},
{
"name": "staged-whitespace",
"command": [
"rtk",
"proxy",
"git",
"diff",
"--cached",
"--check"
],
"startedUtc": "2026-10-13T11:48:28.762104+00:00",
"finishedUtc": "2026-10-13T11:48:28.838663+00:00",
"exitCode": 0,
"log": ".artifacts/phase7/current/static/20261013T114826Z/staged-whitespace.log",
"logSha256Raw": "d2993bc68ad9a63f711c8f5473155e2ba00fdcd461220cc3849185f2f9ad93e6"
},
{
"name": "phase7-whitespace",
"command": [
"rtk",
"proxy",
"git",
"diff",
"--check",
"b5319981ad3d1bd635daff861453d23c0de5320b"
],
"startedUtc": "2026-10-13T11:48:28.838663+00:00",
"finishedUtc": "2026-10-13T11:48:28.986924+00:00",
"exitCode": 0,
"log": ".artifacts/phase7/current/static/20261013T114826Z/phase7-whitespace.log",
"logSha256Raw": "a5b924c165678b49a53b6057628b86d2f2382969a42a62cf348b91e6d250137c"
}
],
"untrackedSecretScan": {
"files": 4,
"findings": 0
},
"documentation": {
"files": 12,
"relativeLinks": 437,
"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."
]
}