docs(cv): bind library lifetime verification and E-drive graph
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
# CV library action lifetime
|
||||
|
||||
11 November 2026. Source commit `de2fb452`, based on `cef45404`, branch `codex/a3-ui-10`.
|
||||
|
||||
The library allowed a create response to navigate after unmount and a PDF response to trigger a download after leaving or session invalidation. Confirmed delete and a rename read could also continue into a write after session loss. Duplicate completion could start another read and announce success in the stale context.
|
||||
|
||||
Reused the existing session-boundary cookie/context/invalidation functions and the BackupCard mount-generation pattern. Guarded profile-outline completion, create navigation, duplicate reload/feedback, deletion confirmation/completion, rename prompt/read/write completion, PDF download and asynchronous error decoding. Existing action locking, focus, drafts, current-language feedback, revision payloads and confirmations remain. No JSX, route, schema, canonical profile, renderer or PDF style changes.
|
||||
|
||||
## Verification
|
||||
|
||||
- RED: seven new deferred-response cases failed on the original source; 24 other library cases were filtered out. The first wrapper had environment-assignment errors before Jest; Jest still executed and produced the seven expected assertion failures. Its raw receipt is retained, not presented as a clean command execution.
|
||||
- GREEN: 85 distinct cases across five suites passed, no skips: CV library 35, CV API helpers 15, session boundary 15, job-export lifetime 16, backup lifetime four. This includes 11 added library cases. The earlier 31-case library pass overlaps this result.
|
||||
- TypeScript `tsc --noEmit --incremental false`: exit 0. Scoped ESLint on the two changed files: exit 0. `git diff --check`: passed.
|
||||
- Tests use real React/MUI dialogs with mocked API responses and controlled boundary signals. Existing session-boundary suite checks the actual boundary implementation separately. Active PDF test uses synthetic bytes and observes filename and URL revocation.
|
||||
|
||||
## Limits and preservation
|
||||
|
||||
No fresh export build/native browser journey, real API/session/cookie-switch integration, physical PDF or accessibility acceptance is claimed. The previous export is stale for this frontend change. No cancellation or rollback of an already accepted server write is promised; stale completions are discarded. Initial library reads remain owned by the existing useViewResource/API path, which is outside this fix. All final A3, security, Phase 10 and release gates remain open. AttachmentStorage destination-ownership race remains source-backed and unproven; it was not changed.
|
||||
|
||||
Evidence is under [cv-library-lifetime](evidence/cv-library-lifetime/SOURCE_RECEIPTS.json). Normalised source hashes and raw receipt hashes bind this bounded result.
|
||||
|
||||
AST graph refresh PASSED on an exact 1,003-file tracked-code snapshot on E: (E:/Storage/Projects/Active/temp docs/jobjakt-local-build/a3-cv-library-source). SOURCE_MANIFEST.json binds files to source commit de2fb452; 10,345 nodes and 36,111 edges. 51 no-symbol warnings retained. Code-only snapshot excludes documentation. Stale generated integration graph: all 2,721 files (97,063,540 bytes) preserved and SHA256-verified on E before replacing its C directory with a junction; no tracked source or evidence removed.
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"sourceCommit": "de2fb452210b128a8b5a3729e5971b8e2ddbba7c",
|
||||
"sourcesLfSha256": {
|
||||
"job-tracker-ui/src/views/CvBuilderPage.tsx": "63eb7348efcf4aaf5f3cb7e5d98fe6c5223896ac7ad64caa4111e251135f162e",
|
||||
"job-tracker-ui/src/cv-builder-page.test.tsx": "5871bfef73499f2c7b2d9424e245436ded8f2e0838c4d5e6c08b49525f9822b7",
|
||||
"job-tracker-ui/src/sessionBoundary.ts": "09edca77c98294818d2ad0c409ce595f1b6ca0c1f60419fc1078b70f96f5b7b9",
|
||||
"job-tracker-ui/src/cvBuilder.ts": "c021bafeabbc8ad3526d1b10b90ad8f7f0958ded8ed26eac8c1d28b53098b64d",
|
||||
"job-tracker-ui/jest.config.cjs": "de323cd3aa8693b11a028b2c026682f05ab988d182ed860861a051d66e53c286"
|
||||
},
|
||||
"evidenceSha256": {
|
||||
"green.txt": "cdd95bb125faddbc952d3b3588b3329eb8100dda6c6322b04b10ae150393230f",
|
||||
"lint.txt": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"red.txt": "658bccf93a58b3ea639635ccc33810ef7b87163c45ab91425673d0b50afec9c1",
|
||||
"results.json": "f9c9dccfd13445d19aa803467ebd3aa3410a2b10054b278b22dfa90709224c8a",
|
||||
"SOURCE_RECEIPTS.json": "609aade9b200454fc4bf05cc7913615d2faba6718e2a64b74e1533f1311db183",
|
||||
"types.txt": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"graph.txt": "b2b80b86f868b619d66445bd6d71d750ca091f8d6bee5dc40758fade72f22a67"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
Re-extracting code files in . (no LLM needed)...
|
||||
AST cache: 0/1004 files served from cache (0%); 1004 to extract
|
||||
AST extraction: 100/1004 uncached files (9%) [16 workers]
|
||||
AST extraction: 200/1004 uncached files (19%) [16 workers]
|
||||
AST extraction: 300/1004 uncached files (29%) [16 workers]
|
||||
AST extraction: 400/1004 uncached files (39%) [16 workers]
|
||||
AST extraction: 500/1004 uncached files (49%) [16 workers]
|
||||
AST extraction: 600/1004 uncached files (59%) [16 workers]
|
||||
AST extraction: 700/1004 uncached files (69%) [16 workers]
|
||||
AST extraction: 800/1004 uncached files (79%) [16 workers]
|
||||
AST extraction: 900/1004 uncached files (89%) [16 workers]
|
||||
AST extraction: 1000/1004 uncached files (99%) [16 workers]
|
||||
AST extraction: 1004/1004 uncached files (100%) [16 workers]
|
||||
warning: 8 .sql file(s) contributed nothing to the graph because a dependency is missing: tree_sitter_sql not installed. Install it with: pip install "graphifyy[sql]" (#1745)
|
||||
warning: 51 code file(s) yielded no symbols (0.12 MB) — a data file, or source this extractor models no symbols for: JobTrackerApi.Tests/PdfBrowserStub/Program.cs, JobTrackerApi/Program.cs, JobTrackerApi/Properties/AssemblyInfo.cs, browser-extension/tests/capture-url.test.mjs, docs/cv-import/benchmarks/harness/Program.cs (+46 more)
|
||||
Graph has 10345 nodes (above 5000 limit). Building aggregated community view...
|
||||
graph.html written (aggregated: 273 community nodes, 2404 cross-community edges)
|
||||
Tip: run with --obsidian for full node-level detail.
|
||||
[graphify watch] Rebuilt: 10345 nodes, 36111 edges, 273 communities
|
||||
[graphify watch] graph.json, graph.html and GRAPH_REPORT.md updated in graphify-out
|
||||
Code graph updated. For doc/paper/image changes run /graphify --update in your AI assistant.
|
||||
Tip: set GEMINI_API_KEY or GOOGLE_API_KEY to use Gemini for semantic extraction.
|
||||
@@ -0,0 +1,7 @@
|
||||
|
||||
Test Suites: 5 passed, 5 total
|
||||
Tests: 85 passed, 85 total
|
||||
Snapshots: 0 total
|
||||
Time: 25.539 s
|
||||
Ran all test suites matching src/cv-builder-page.test.tsx|src/cvBuilder.test.ts|src/session-boundary.test.ts|src/backup-lifetime.test.tsx|src/job-export-lifetime.test.tsx.
|
||||
Test results written to: E:\Storage\Projects\Active\temp docs\jobjakt-local-build\cv-library-results.json
|
||||
Binary file not shown.
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user