feat(career): migrate overview and factual evidence
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# P7-02 — Onboarding and Career overview/evidence
|
||||
|
||||
**Status: implemented onboarding guidance CONDITIONAL GO; final hygiene PASS, normally pushed d21501aa with direct receipt. Career overview/evidence and whole P7-02 remain pending.** Follow the exact [approved handoff](../../phase-6/p6-05/PHASE7_HANDOFF.md#migration-order-and-commit-boundaries). This checkpoint has two bounded commits: onboarding guidance first, then Career overview/evidence. Structured Career editing/import/history remains P7-03; no alternative checkpoint order or new route is introduced.
|
||||
**Status: implemented P7-02 scope CONDITIONAL GO. Onboarding and the separate SQLite repair are pushed; Career runtime/visual acceptance and final slice hygiene PASS; normal push pending.** Follow the exact [approved handoff](../../phase-6/p6-05/PHASE7_HANDOFF.md#migration-order-and-commit-boundaries). This checkpoint has two bounded commits: onboarding guidance first, then Career overview/evidence. Structured Career editing/import/history remains P7-03; no alternative checkpoint order or new route is introduced.
|
||||
|
||||
## Accepted entry baseline
|
||||
|
||||
@@ -52,31 +52,45 @@ The bounded [controller](../../../../JobTrackerApi/Controllers/CareerEvidenceCon
|
||||
|
||||
Dedicated SQLite1/1 and fresh affected guards91/91 passed with zero failed/not-executed cases. Release test-project/API build passed00:01:26–00:01:28UTC with zero warnings/errors. Actual real-HTTP GREEN passed1/1 at00:01:48–00:01:58UTC, zero skip/flaky/unexpected/retry. The added ordinary backend case makes1,034 the **derived** future full expectation; only the91 affected guards have freshly executed. The dedicated1/HTTP1 overlap this coverage and later Career native coverage; do not add them to full totals.
|
||||
|
||||
Source/DLL, backend command/log/TRX and HTTP RED/GREEN report/log/result/trace/spec snapshots are immutable under `.artifacts/phase7/p7-02/evidence-list-repair/`, with34 file/hash references verified. The HTTP case executes local API contracts only; its uncommitted native-spec snapshot will be committed and rerun in the later Career slice. Existing onboarding frontend export is not a Career build or UI acceptance. Slice-specific [repair static checks](evidence/evidence-list-repair-static-checks.json) passed2026-10-12 00:04:59–00:05:02UTC: all four secret/working/staged/entry-whitespace commands exit0, nine Markdown documents/337 local links checked with0errors,57 groups/32routes retained, main unchanged. **Bounded local repair GO; final hygiene PASS, separate commit/push pending. Career UI/whole P7-02 remain pending.** This repair is committed separately before Career UI; no in-flight frontend implementation is included. A repair push observation may include the independent unfinished Career worktree; it must not claim that work complete or clean.
|
||||
Source/DLL, backend command/log/TRX and HTTP RED/GREEN report/log/result/trace/spec snapshots are immutable under `.artifacts/phase7/p7-02/evidence-list-repair/`, with34 file/hash references verified. The HTTP case executes local API contracts only; its uncommitted native-spec snapshot will be committed and rerun in the later Career slice. Existing onboarding frontend export is not a Career build or UI acceptance. Slice-specific [repair static checks](evidence/evidence-list-repair-static-checks.json) passed2026-10-12 00:04:59–00:05:02UTC: all four secret/working/staged/entry-whitespace commands exit0, nine Markdown documents/337 local links checked with0errors,57 groups/32routes retained, main unchanged. **Bounded local repair GO; final hygiene PASS, normally pushed01281f52 and directly verified. Career UI acceptance was pending at this repair gate; its successor result follows.** This repair is committed separately before Career UI; no in-flight frontend implementation is included. Actual receipt2026-10-12 00:06:47.145743UTC records development localHEAD=origin=live01281f52, local/origin/live main27657f3 unchanged and five independent unfinished Career paths. The worktree was explicitly not clean; the completed repair was normally pushed without discarding that work.
|
||||
|
||||
## Career overview/evidence commit
|
||||
|
||||
Entry is the normally pushed onboarding `d21501aa7e5f9040937fa821d6a77d823b7e08eb`, directly verified23:55:12.614723UTC with development local/origin/live equality, main unchanged and clean worktree. Its final32/13/4/source/build/axe evidence remains frozen and historical at that commit; later Career translation changes cannot be validated against the earlier workspace. Latest fresh full frontend remains inherited573/89; onboarding adds23 verified affected cases, giving only a derived596/89 expectation. In the frozen573 report, the existing Career workspace suite has7 cases and evidence suite1, **eight-case affected baseline**. This is inherited baseline evidence, not a new Career execution.
|
||||
Entry includes the normally pushed onboarding `d21501aa7e5f9040937fa821d6a77d823b7e08eb` and subsequent separate provider repair `01281f52d9279ecdbd3363a11d2e9cb71230bf49`. Each has its actual direct development/main receipt above. Onboarding's final32/13/4/source/build/axe evidence remains frozen and historical atd215; later Career translation changes cannot be validated against the earlier workspace. Latest fresh full frontend remains inherited573/89; onboarding adds23 verified affected cases, giving only a derived596/89 expectation. In the frozen573 report, the existing Career workspace suite has7 cases and evidence suite1, **eight-case affected baseline**. This is inherited baseline evidence, not a new Career execution. Fresh backend91 affected guards/Release/HTTP1 are from the separately pushed repair; fullbackend1,034 is derived only.
|
||||
|
||||
Existing [CareerWorkspacePage](../../../../job-tracker-ui/src/views/CareerWorkspacePage.tsx) delegates to [CareerProfilePage](../../../../job-tracker-ui/src/views/CareerProfilePage.tsx). Preserve the actual Overview/Profile/Evidence/Import section owner and query/history behavior, including removal of the default overview query. Scope the residual presentation to [CareerWorkspaceOverview](../../../../job-tracker-ui/src/views/career/CareerWorkspaceOverview.tsx) and [CareerEvidenceBank](../../../../job-tracker-ui/src/views/career/CareerEvidenceBank.tsx), with existing [workspace](../../../../job-tracker-ui/src/career-workspace-page.test.tsx) and [evidence](../../../../job-tracker-ui/src/career-evidence.test.tsx) tests.
|
||||
|
||||
Keep canonical `/career/profile` data and existing server-provided completeness labels/provenance, source/raw-copy/history links, `/career/evidence` list/create and owned delete contracts. Evidence creation keeps existing category/title/statement/tags/source semantics and explicit manual review; presentation does not invent achievements or change persistence. Improve bounded headings/state/form/retry/reflow using existing owners after reproduction. No structured editor/save/import/history owner or CV renderer change belongs here.
|
||||
|
||||
Required native evidence covers populated/empty/loading/error/retry, raw-copy/source/history destinations, actual evidence create/delete confirmation/no-write cancellation/readback, long/many items and keyboard/EN/NB/theme/narrow-screen states. Canonical/sibling/frozen boundaries and foreign-owner denial remain applicable. Any concurrency/save-owner change requires the separate P7-03 disposition; unavailable human/device evidence is carried explicitly. **Implementation/results/commit/push for this second boundary are PENDING.**
|
||||
The [finite Career manifest](evidence/career-results.json) records actual affected **46/46 in three suites**, ordinary Career **14/14** and separate existing preservation **2/2** passing, with zero skipped/flaky/unexpected/retry native cases. Final app/browser TypeScript, lint and build passed2026-10-12 00:18:30–00:19:05UTC. Career14 executed00:19:05–00:20:04UTC; the ordinary P2-D01 frozen-workspace and mobile-override cases executed00:20:04–00:20:19UTC. These two are freshly executed preservation proof, not inherited acceptance. The API-only provider case overlaps the separate repair HTTP case and is not added to totals.
|
||||
|
||||
| Career proof | Current evidence / required outcome |
|
||||
The source-worker RED passed8/22 and failed14 added assertions. First affected GREEN passed45/46; its remaining required-label selector harness error was corrected without changing the product contract or removing assertions. The initial native pack passed12/14 on build `KKwBMDeMkaRLM-O5e2Fb-`. One failure exposed genuine Delete-cancel focus loss: disabling the trigger before confirmation prevented restoration. The stronger unit RED passed7/8, then the minimal state-order correction passed46/46 at00:13:56UTC; the duplicate-operation guard and shared confirmation owner remain. The earlier jsdom focus-only8/8 diagnostic did not reproduce native disabled-element blur and stays historical. The other native failure was Windows clipboard LF→CRLF conversion. The final assertion normalizes only CRLF→LF and retains actual code points; no clipboard product change, trimming or byte-identical platform output claim follows.
|
||||
|
||||
Final workspace14/evidence8 replace inherited7+1, adding **14 net cases**; the existing Profile24 consumer cases also pass unchanged. Onboarding adds23 separately. Latest fresh full frontend remains P7-01 **573/89**; **610/89 is derived573+23+14**, not a new full run. Full backend1,034 is likewise derived from1,033+the new SQLite case; the fresh affected91 guard run is separate. Final full regression remains P7-12.
|
||||
|
||||
| Career proof | Actual finite outcome / remaining boundary |
|
||||
|---|---|
|
||||
| Reproduced presentation defects | Source-owner RED cases and exact failure causes **PENDING**; retain original operation/save/navigation semantics |
|
||||
| Affected unit regressions | Fresh workspace/evidence packet **PENDING**; reconcile names and net case changes against inherited7+1 without treating derived totals as a fresh full run |
|
||||
| Real local workflows and boundaries | Native actual create/delete/readback/cancel/retry/source/history/section-query flows and canonical/sibling/frozen no-write/foreign-owner assertions **PENDING**; provider/model execution excluded |
|
||||
| Finite responsive/localised/accessibility proof | EN/NB, light/dark, narrow/tablet/wide/short landscape, long/many items, semantic headings/forms, keyboard trap/restore, geometry and all axe findings **PENDING**; density only if an actual control exists |
|
||||
| Backend constraints | Targeted existing Career/evidence authorization and real SQLite endpoint guards **PENDING**; no schema/endpoint/data-save expansion implied |
|
||||
| Final source/export and exit | Fresh app/browser types/lint/build, exact measured source/export identity, actual image inspection, compact raw-report/hash evidence and slice-specific `career-static-checks.json` **PENDING**; normal push after passing bounded checks |
|
||||
| Truthful resource states and navigation | Populated/empty/pending/failed independent profile/run/variant reads, deliberate retry, section query/Back, existing source/history destinations and three unique CV links pass; structured editor/import/history remains P7-03 |
|
||||
| Evidence CRUD and isolation | Actual create, canceled delete/no write, failed save retaining draft, failed delete retaining row, deliberate retry/reconfirm and successful readback pass. Canonical Career and sibling CV readback after writes, owner denial and scoped requests remain asserted |
|
||||
| Keyboard/focus | Retry focus, actual section selection/subsequent form traversal and corrected cancel-trigger restoration pass. Failed-save/delete captures retain inherited shell Skip-link/scroll context; complete human focus/spoken-state acceptance remains unverified |
|
||||
| Responsive/localised visual review | Parent actually opened all22 final raw PNGs: eight EN/NB/theme samples320/360/390/768/1024/1280 short landscape/1440/1920 plus six pending/error states. Fields, titles and actions wrap without observed clipping; all22 recorded root-overflow values are0; the1440 many-item fixture has11 rows |
|
||||
| Accessibility | Twenty-two all-enabled scans retain0 violation nodes/99 incomplete occurrences. No automated result establishes reader/device/zoom conformance; density was not varied and Career has no global density control |
|
||||
| Exit | Runtime and actual22-image review support implemented-scope CONDITIONAL GO. Slice-specific final hygiene PASS; normal commit/push remains pending; main/production stays NO-GO |
|
||||
|
||||
Record final compact outcomes in `evidence/career-results.json` only after actual executions. Full axe node/check vectors remain in the identified immutable raw report; the portable record must retain every rule count and contextual triage, including incomplete results and errors. Keep source-worker/native failures, fixture corrections and exact count deltas; no skips/expected failures/assertion relaxation. The accepted onboarding evidence and `onboarding-static-checks.json` remain independent. Career/whole P7-02 acceptance, source/build identity and push are not claimed by this plan.
|
||||
All99 incomplete contexts remain recorded:96 `color-contrast` (74 `bgOverlap` plus22 invisible notification-badge `0`/`shortTextContent`) and3 `aria-hidden-focus` targeting `#menu-`, the hidden MUI section-select portal in narrow evidence states. The actual section and subsequent form keyboard workflows pass; **M09/M11** reader/contextual contrast/forced-colors requirements remain pending. Complete HTML/data/related-node/check vectors remain in the exact hashed raw report, with every rule/target/check context summarized in the portable manifest. Controlled English500 details are server-fixture text, distinct from translated product fallback. Sticky appbar/Skip-link placement in error captures reflects recorded scroll/focus context, not a new demonstrated overflow defect.
|
||||
|
||||
Final four-source LF digest is `190d0a24368bfc3cc76550ff0f74c272200d3a30f61218a86628449ac83735ce`; build `qG82wPnFf-IsAkFvXkmn6`; **75 exported files**, digest `50896e8ad6934b909b83cc487eaf3579516921fde54b19e50a9039db68e04869`. Final native report SHA256 is `f7a166ec33ecdedd9f0374290961c0daaf1279d8c89d3425fbe3b3a66c4a2360`. Source/test/build/export/runner/config, whole runtime/attempt tree, unit history and entry manifests are frozen under `.artifacts/phase7/p7-02/career-final/`:152 file-reference hashes verified,428 runtime files and81 unit files retained. Parent independently verified152 references/84 unique referenced files with0 errors. Raw hashes/counts remain measured bytes; portable JSON/source canonical-LF policies are explicit. Earlier first-build75-file export/report and failed unit/native attempts stay historical; the first source had already been corrected before export archival, so no original-source snapshot is claimed.
|
||||
|
||||
Slice-specific [Career static checks](evidence/career-static-checks.json) passed2026-10-12 05:48:28–05:48:32UTC: four secret/working/staged/entry-whitespace commands exit0; nine Markdown documents/347 local links checked with0errors at that observation;57 qualified groups/32 routes retained and main27657f3 unchanged. Canonical UTF-8/LF static SHA256 is `f575a6304bb4d00e11ee77270d60ebdee11f1cd8faf9692adb4c473961b4d8f4`. Final hygiene PASS; normal commit/push receipt remains pending. Runtime/source/export/manual qualifications are unchanged.
|
||||
|
||||
## Preservation and exit
|
||||
|
||||
S02/C02/C04/E09 and shared E08/S03 are the finite scope in the [57 matrix](../PRESERVATION.md). Retain all [debt](../DEBT.md), established auth/private-tree behavior, original routes and semantic action boundaries. Scoped truthful loading/retry does not establish the root cause of historical Dashboard/Board500 observations.
|
||||
S02/C01/C02/C04/C05/E09 and shared E08/S03 are the finite scope in the [57 matrix](../PRESERVATION.md). Retain all [debt](../DEBT.md), established auth/private-tree behavior, original routes and semantic action boundaries. Scoped truthful loading/retry does not establish the root cause of historical Dashboard/Board500 observations.
|
||||
|
||||
Each completed logical boundary must include reproduction/baseline, actual changes, automated and visual evidence, exact count explanation, source/export identity, manual qualifications and normal commit/push with remote=HEAD. Record observed results here after execution; no skips, expected failures or relaxed assertions can substitute for passing ordinary cases. P7-03 starts only after the applicable P7-02 fixtures/entry are verified. Production main/deployment, P5-13 activation and Phase8 Dashboard customization remain outside this checkpoint.
|
||||
|
||||
### Mandatory P7-03 entry conditions
|
||||
|
||||
Two independent source reviews identify an inherited stable-ID risk in [normalizeStructuredCv](../../../../job-tracker-ui/src/profileCv.ts): job/education/certification/project IDs are dropped, while CV overrides refer to source IDs and the API may assign replacements. **Before structured-edit presentation, separately reproduce and repair optional-ID preservation with normalizer/payload/native canonical-and-sibling proof.** This is a P7-03 entry condition, not a P7-02 regression or completed repair. No date-loss claim is made; server StartDate derives from Start.
|
||||
|
||||
Retain RD21 concurrency as a separate obligation. Prove dirty drafts survive locale/navigation/read-retry boundaries and held-PUT/pending-write ownership/recovery before changing save/history behavior; resolve or explicitly bound stale profile/job saves and creation-intent behavior using the existing contracts. Known canonical/sibling fixtures and actual server IDs remain the basis; no guessed revision/schema/provider behavior. P7-03 begins after this slice's successful normal push. Import/history remains its approved second boundary; P5-13 and Phase8 remain deferred.
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,104 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"checkpoint": "p7-02",
|
||||
"status": "PASS",
|
||||
"checkedUtc": "2026-10-12T05:48:32.289310+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-12T05:48:28.856155+00:00",
|
||||
"finishedUtc": "2026-10-12T05:48:31.685439+00:00",
|
||||
"exitCode": 0,
|
||||
"log": ".artifacts/phase7/current/static/20261012T054828Z/secret-scan.log",
|
||||
"logSha256Raw": "c5a88d5ebdc042adba125c1eaacbe44f9f4a5c19898c0f195573c00d511aa28d"
|
||||
},
|
||||
{
|
||||
"name": "working-whitespace",
|
||||
"command": [
|
||||
"rtk",
|
||||
"proxy",
|
||||
"git",
|
||||
"diff",
|
||||
"--check"
|
||||
],
|
||||
"startedUtc": "2026-10-12T05:48:31.685929+00:00",
|
||||
"finishedUtc": "2026-10-12T05:48:31.771415+00:00",
|
||||
"exitCode": 0,
|
||||
"log": ".artifacts/phase7/current/static/20261012T054828Z/working-whitespace.log",
|
||||
"logSha256Raw": "d2993bc68ad9a63f711c8f5473155e2ba00fdcd461220cc3849185f2f9ad93e6"
|
||||
},
|
||||
{
|
||||
"name": "staged-whitespace",
|
||||
"command": [
|
||||
"rtk",
|
||||
"proxy",
|
||||
"git",
|
||||
"diff",
|
||||
"--cached",
|
||||
"--check"
|
||||
],
|
||||
"startedUtc": "2026-10-12T05:48:31.771415+00:00",
|
||||
"finishedUtc": "2026-10-12T05:48:31.861097+00:00",
|
||||
"exitCode": 0,
|
||||
"log": ".artifacts/phase7/current/static/20261012T054828Z/staged-whitespace.log",
|
||||
"logSha256Raw": "d2993bc68ad9a63f711c8f5473155e2ba00fdcd461220cc3849185f2f9ad93e6"
|
||||
},
|
||||
{
|
||||
"name": "phase7-whitespace",
|
||||
"command": [
|
||||
"rtk",
|
||||
"proxy",
|
||||
"git",
|
||||
"diff",
|
||||
"--check",
|
||||
"b5319981ad3d1bd635daff861453d23c0de5320b"
|
||||
],
|
||||
"startedUtc": "2026-10-12T05:48:31.861097+00:00",
|
||||
"finishedUtc": "2026-10-12T05:48:31.981627+00:00",
|
||||
"exitCode": 0,
|
||||
"log": ".artifacts/phase7/current/static/20261012T054828Z/phase7-whitespace.log",
|
||||
"logSha256Raw": "d2993bc68ad9a63f711c8f5473155e2ba00fdcd461220cc3849185f2f9ad93e6"
|
||||
}
|
||||
],
|
||||
"untrackedSecretScan": {
|
||||
"files": 0,
|
||||
"findings": 0
|
||||
},
|
||||
"documentation": {
|
||||
"files": 9,
|
||||
"relativeLinks": 347,
|
||||
"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."
|
||||
]
|
||||
}
|
||||
@@ -2,7 +2,7 @@
|
||||
"schemaVersion": 1,
|
||||
"checkpoint": "P7-02",
|
||||
"slice": "SQLite evidence-list compatibility repair only",
|
||||
"acceptance": "GO for bounded local repair; final hygiene PASS, actual push pending",
|
||||
"acceptance": "GO for bounded local repair; hygiene PASS, normally pushed and directly verified",
|
||||
"entryCommit": "d21501aa7e5f9040937fa821d6a77d823b7e08eb",
|
||||
"problem": "EF SQLite9.0.14 cannot translate DateTimeOffset ORDER BY; owned evidence POST200 was followed by list GET500 and actual provider NotSupportedException.",
|
||||
"change": "Keep SQL owner filtering and AsNoTracking. SQLite materializes only owned rows then orders actual DTO instants; other providers retain existing SQL ordering.",
|
||||
@@ -591,7 +591,32 @@
|
||||
"qualification": "Exact backend command/log/TRX, frozen source/DLL, RED/GREEN HTTP raw reports/logs/result trees/traces and runner/spec snapshots; internal execution paths unchanged."
|
||||
},
|
||||
"pushReceipt": {
|
||||
"status": "PENDING_ACTUAL_PUSH"
|
||||
"checkpoint": "P7-02",
|
||||
"slice": "evidence list SQLite compatibility repair",
|
||||
"status": "PUSHED_AND_VERIFIED",
|
||||
"checkedUtc": "2026-10-12T00:06:47.145743+00:00",
|
||||
"head": "01281f52d9279ecdbd3363a11d2e9cb71230bf49",
|
||||
"originDevelopment": "01281f52d9279ecdbd3363a11d2e9cb71230bf49",
|
||||
"liveDevelopment": "01281f52d9279ecdbd3363a11d2e9cb71230bf49",
|
||||
"main": "27657f31131cd95d42f0e1290853ec9c9b3959a4",
|
||||
"originMain": "27657f31131cd95d42f0e1290853ec9c9b3959a4",
|
||||
"liveMain": "27657f31131cd95d42f0e1290853ec9c9b3959a4",
|
||||
"workingTreeClean": false,
|
||||
"pendingPaths": [
|
||||
"job-tracker-ui/src/career-evidence.test.tsx",
|
||||
"job-tracker-ui/src/career-workspace-page.test.tsx",
|
||||
"job-tracker-ui/src/i18n/translations.ts",
|
||||
"job-tracker-ui/src/views/career/CareerWorkspaceOverview.tsx",
|
||||
"job-tracker-ui/e2e/phase7-career-overview.spec.ts"
|
||||
],
|
||||
"qualification": "Only in-progress Career frontend source/tests remain uncommitted; repair is complete and normally pushed. No other work discarded.",
|
||||
"production": "NO-GO",
|
||||
"pushExitCode": 0,
|
||||
"raw": {
|
||||
"path": ".artifacts/phase7/p7-02/evidence-list-repair/push-receipt.json",
|
||||
"sha256": "4b673fb11248d185fd3d2b635a62d18d0423ea36dd7e4655fa0bb6279663a71b",
|
||||
"hashPolicy": "Exact observed raw bytes"
|
||||
}
|
||||
},
|
||||
"staticGate": {
|
||||
"evidence": {
|
||||
@@ -623,5 +648,6 @@
|
||||
"originalRoutesPreserved": true,
|
||||
"currentConcreteRoutes": 32
|
||||
}
|
||||
}
|
||||
},
|
||||
"sourceApplicability": "Frozen canonical source identities apply at01281f52d9279ecdbd3363a11d2e9cb71230bf49; sourceAndBinarySnapshots preserve exact measured bytes. API/test DLLs are local build provenance, not deployed production identities."
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user