7174f450ba00513e8648b1f016756d7ba4ad9285 486d91ca5f4cc4f096a1c24887e60dd3a682cf89 medzi <medzied.arbi@gmail.com> 1781962403 +0200	commit: docs: record secret-history purge + stale-hash / rotation caveats
486d91ca5f4cc4f096a1c24887e60dd3a682cf89 90f9d724fdd6c8693dbd1452d5b5ac4de7a8f4e9 medzi <medzied.arbi@gmail.com> 1781962726 +0200	commit: docs: CORE5 APAC marked WON'T DO (APAC region will never be used)
90f9d724fdd6c8693dbd1452d5b5ac4de7a8f4e9 488f1f2d4deba3125da6d0b39c2200249fc144da medzi <medzied.arbi@gmail.com> 1781963052 +0200	commit: CORE10/11: un-vendor Pyro5 + huey (drop trees, pin in requirements)
488f1f2d4deba3125da6d0b39c2200249fc144da c9792e296d6f83536021835f7f8f26c2f66f79b1 medzi <medzied.arbi@gmail.com> 1781963911 +0200	commit: db: detect TDS protocol version for FreeTDS (enables large NVARCHAR(MAX))
c9792e296d6f83536021835f7f8f26c2f66f79b1 6b7f4f1b58541e88395a4b2d2af8b835394cf12a medzi <medzied.arbi@gmail.com> 1782005491 +0200	commit: MSSQLJSON: hourly GC sweeper for orphaned REFS files (E5/PER1)
6b7f4f1b58541e88395a4b2d2af8b835394cf12a a0435880c41d2bc843b4265b07813af3b105ceca medzi <medzied.arbi@gmail.com> 1782005584 +0200	commit: docs: record MSSQLJSON decision (file-backing + GC) + remaining bugs
a0435880c41d2bc843b4265b07813af3b105ceca a519cfbc8f8410fba615863c501b9a65704faab5 medzi <medzied.arbi@gmail.com> 1782006112 +0200	commit: MSSQLJSON: fail-loud on missing file + MutableDict change tracking
a519cfbc8f8410fba615863c501b9a65704faab5 dae3a6622a903670f18bf7753975903170e4b133 medzi <medzied.arbi@gmail.com> 1782006136 +0200	commit: docs: MSSQLJSON fail-loud + MutableDict done; checksum/queryability still open
dae3a6622a903670f18bf7753975903170e4b133 9477b9766541422fee2bf13eedbf4a5d70cb3683 medzi <medzied.arbi@gmail.com> 1782006310 +0200	commit: MSSQLJSON: content checksum (sha256) for integrity
9477b9766541422fee2bf13eedbf4a5d70cb3683 2fdc43f746d565d4d12c613506d9a666ada9ac91 medzi <medzied.arbi@gmail.com> 1782006346 +0200	commit: docs: MSSQLJSON checksum done; only inherent limitations remain
2fdc43f746d565d4d12c613506d9a666ada9ac91 f40d8b234e6e8ca9e80c8bb43f148750abcf9296 medzi <medzied.arbi@gmail.com> 1782006560 +0200	commit: PER3: bound timeout + release proxy in master.call_slave_method
f40d8b234e6e8ca9e80c8bb43f148750abcf9296 854613148ae33814090c3fe902426090921fa03e medzi <medzied.arbi@gmail.com> 1782006787 +0200	commit: PER4 (session-per-tenant) + PER14 (orphan-job reconcile)
854613148ae33814090c3fe902426090921fa03e 100b42b6ded248f0147617d539594760ff2bc3fd medzi <medzied.arbi@gmail.com> 1782006858 +0200	commit: docs: PER3 + PER14 done, PER4 partial (session-per-tenant); retries deferred
100b42b6ded248f0147617d539594760ff2bc3fd a919814ebedbd92e131dfbfe93f59fdb11b7f0e6 medzi <medzied.arbi@gmail.com> 1782007096 +0200	commit: docs: refresh work-order handoff for a fresh session
a919814ebedbd92e131dfbfe93f59fdb11b7f0e6 a076f8406e906b82d9d5501ed8b78a2cc344bab7 medzi <medzied.arbi@gmail.com> 1782007544 +0200	commit: @
a076f8406e906b82d9d5501ed8b78a2cc344bab7 cfc5f61aae91d9db1075d66fa52baec2c479025d medzi <medzied.arbi@gmail.com> 1782008547 +0200	commit (amend): B.1: aggregate live-path pushdown effectiveness per extraction
cfc5f61aae91d9db1075d66fa52baec2c479025d 6588ecd2ca2029f78fa56f344032fcdc99d0e1a1 medzi <medzied.arbi@gmail.com> 1782008602 +0200	commit: docs: B.1 live-path ScanStats aggregation landed
6588ecd2ca2029f78fa56f344032fcdc99d0e1a1 559cfad038a2a05452e3c6fe541afcef85254707 medzi <medzied.arbi@gmail.com> 1782033115 +0200	commit: B.1 fix + cluster verification (measurement bug, PER14 on real MSSQL)
559cfad038a2a05452e3c6fe541afcef85254707 2385bb61d2822599e4539fec4712f1c243d6397f medzi <medzied.arbi@gmail.com> 1782033378 +0200	commit: Pushdown Step-2 integration test verified on a real running service
2385bb61d2822599e4539fec4712f1c243d6397f 61f822207eadfdce52b989fcb6dc707be3917f7d medzi <medzied.arbi@gmail.com> 1782033496 +0200	commit: docs: cluster verifications done + pushdown service SHELVED
61f822207eadfdce52b989fcb6dc707be3917f7d a9110f1f24a1e40c09985cd2b29b27f9fce7d191 medzi <medzied.arbi@gmail.com> 1782034454 +0200	commit: S3 secret rotation: local-sim end-to-end test (ALL PASS)
a9110f1f24a1e40c09985cd2b29b27f9fce7d191 9929f67941401e2c81c234999527bd7a73bf3ac6 medzi <medzied.arbi@gmail.com> 1782034676 +0200	commit: PER3 behavioral verification (timeout bounds fan-out + no proxy leak)
9929f67941401e2c81c234999527bd7a73bf3ac6 d2b151680156c5ee68506b5f748727e5d9da7c88 medzi <medzied.arbi@gmail.com> 1782034881 +0200	commit: PER4: fix with_auto_status proxy leak + latent NameError on error path
d2b151680156c5ee68506b5f748727e5d9da7c88 d8cbe113ca1fe718433b3a0ca1c5c78ac9f7d996 medzi <medzied.arbi@gmail.com> 1782035182 +0200	commit: PER4: safe huey retries/expires + base-runner idempotency guard
d8cbe113ca1fe718433b3a0ca1c5c78ac9f7d996 24e6aadcffba766f491d5bb32107f6ab5f1f35a9 medzi <medzied.arbi@gmail.com> 1782035279 +0200	commit: docs: PER3/PER4 done + verified, S3 rotation sim tested
24e6aadcffba766f491d5bb32107f6ab5f1f35a9 7267b105e8474e61a6c180c5835911db227dcf96 medzi <medzied.arbi@gmail.com> 1782035450 +0200	commit: Remove stray debug print(result) in AbstractJobRunner.run
7267b105e8474e61a6c180c5835911db227dcf96 d4a4aa795a36b9626581419bb280dc34c40900dd medzi <medzied.arbi@gmail.com> 1782036439 +0200	commit: cli: add guarded reset-db (drop + recreate all tables)
d4a4aa795a36b9626581419bb280dc34c40900dd a4651b40c518bf7d078cde3e841e7ab3156c0f78 medzi <medzied.arbi@gmail.com> 1782036642 +0200	commit: config: env-driven huey crontabs + comprehensive .env.example
a4651b40c518bf7d078cde3e841e7ab3156c0f78 df268ae761254a47e94bc768d4f47a2849ee3329 medzi <medzied.arbi@gmail.com> 1782036865 +0200	commit: CORE12: version-stable naive-UTC helper, drop deprecated datetime.utcnow()
df268ae761254a47e94bc768d4f47a2849ee3329 258be0a253512e68e3c66420681793d78c4aaafb medzi <medzied.arbi@gmail.com> 1782036991 +0200	commit (amend): CORE12: version-stable naive-UTC helper, drop deprecated datetime.utcnow()
258be0a253512e68e3c66420681793d78c4aaafb 2ea8eff2bd350c54569b38df64bdd1ccde648446 medzi <medzied.arbi@gmail.com> 1782038016 +0200	commit: AP13: consolidate audit routes under /api/audit (backend + frontend)
2ea8eff2bd350c54569b38df64bdd1ccde648446 d972f0b3607a5a9bf6d1f0ff2269a7735b8e6d19 medzi <medzied.arbi@gmail.com> 1782038120 +0200	commit: docs: PER13 retention + legal-hold design (for discussion)
d972f0b3607a5a9bf6d1f0ff2269a7735b8e6d19 50fe043a07d8263c9ca0bd2c3a8405a75d7d9e1d medzi <medzied.arbi@gmail.com> 1782038388 +0200	commit: docs: PER13 design — record decisions + file-vs-query mechanics
50fe043a07d8263c9ca0bd2c3a8405a75d7d9e1d 7fe9d403dc1f8c6c6f30f7d156082fee50e153ac medzi <medzied.arbi@gmail.com> 1782039218 +0200	commit: validation core: generic DB-backed approval/validation requests
7fe9d403dc1f8c6c6f30f7d156082fee50e153ac 23d19ab797d9090f943ad49fcdfac4bb321b6907 medzi <medzied.arbi@gmail.com> 1782039251 +0200	commit: docs: PER13 builds on the new validation core
23d19ab797d9090f943ad49fcdfac4bb321b6907 2b4aee4f9480dd296808c0fb9c25f6d5ec93a66b medzi <medzied.arbi@gmail.com> 1782040361 +0200	commit: email core: branded, Outlook-safe email + async queue + notify lists
2b4aee4f9480dd296808c0fb9c25f6d5ec93a66b 83271397971c9a61f04a6de2b1b53049be7148f9 medzi <medzied.arbi@gmail.com> 1782040420 +0200	commit: docs: PER13 — recipient lists on dataset/archive + email core built
83271397971c9a61f04a6de2b1b53049be7148f9 acf43cca7a3c206b3f590179a5fb9dbc35c7ded1 medzi <medzied.arbi@gmail.com> 1782040878 +0200	commit: docs: PER13 — NAS-only purge, query/row rewrite mode, extraction hold
acf43cca7a3c206b3f590179a5fb9dbc35c7ded1 8099b9fd60fb6792c2994e05ace2b49aad4ba8a0 medzi <medzied.arbi@gmail.com> 1782041411 +0200	commit: maintenance-hold core: scoped extraction lock for purge/maintenance
8099b9fd60fb6792c2994e05ace2b49aad4ba8a0 a17c9b229359e42b13781f929e5177de4a8329a6 medzi <medzied.arbi@gmail.com> 1782041490 +0200	commit: docs: PER13 — maintenance-hold core built; remaining build list
a17c9b229359e42b13781f929e5177de4a8329a6 e997b365fe3aa60a46e560889247943d5745531f medzi <medzied.arbi@gmail.com> 1782042290 +0200	commit: purge core: query/row rewrite engine + retention schema fields
e997b365fe3aa60a46e560889247943d5745531f 26681023ce39474afb6c558651475cb57384c55e medzi <medzied.arbi@gmail.com> 1782042493 +0200	commit: purge runner: run_purge orchestrator (NAS-only, hold, legal-hold, kill switch)
26681023ce39474afb6c558651475cb57384c55e 41779c9f2a24a43ac312ba08443dca4c611f998c medzi <medzied.arbi@gmail.com> 1782042554 +0200	commit: docs: PER13 purge runner built; remaining list updated
41779c9f2a24a43ac312ba08443dca4c611f998c 866ebd2dd12c647a5f69abfcfd7d39b6424fa196 medzi <medzied.arbi@gmail.com> 1782043310 +0200	commit: purge: gate actual delete on an APPROVED validation (not an env switch)
866ebd2dd12c647a5f69abfcfd7d39b6424fa196 cc6128013e1719345a05cde1d4720ec806382ed4 medzi <medzied.arbi@gmail.com> 1782043559 +0200	commit: ui: purge approval review page (/validations/review)
cc6128013e1719345a05cde1d4720ec806382ed4 1437d8950c0364b460ed9c3c536288182f64586d medzi <medzied.arbi@gmail.com> 1782043660 +0200	commit: docs: validation-gated purge + review page; env link vars
1437d8950c0364b460ed9c3c536288182f64586d a2955f14a8c5512516f4d7be925a90617d828d80 medzi <medzied.arbi@gmail.com> 1782043712 +0200	commit: chore: regenerate typed-router.d.ts for /validations/review route
a2955f14a8c5512516f4d7be925a90617d828d80 d309cf60d64c36f56ac5ca3bedb845ffe962be3c medzi <medzied.arbi@gmail.com> 1782044114 +0200	commit: rbac: add validation.approve permission (approve purges without full admin)
d309cf60d64c36f56ac5ca3bedb845ffe962be3c a29b5bcc91b78977b012502ec45283d588ce2cba medzi <medzied.arbi@gmail.com> 1782044622 +0200	commit: PER13: legal-hold-on-export enforcement + post-purge report email
a29b5bcc91b78977b012502ec45283d588ce2cba 0d25b85b874f0440f2eaad7392db51f1ebf34095 medzi <medzied.arbi@gmail.com> 1782044660 +0200	commit: docs: PER13 legal-hold-on-export + post-purge report done
0d25b85b874f0440f2eaad7392db51f1ebf34095 ac2b8182e40f8269c1a52a0b17f13ba784ca4974 medzi <medzied.arbi@gmail.com> 1782045076 +0200	commit: PER13: date-mode retention sweep (retention_until + auto purge requests)
ac2b8182e40f8269c1a52a0b17f13ba784ca4974 fefa018d8ac37dff60eacf137c38552dc4c12dca medzi <medzied.arbi@gmail.com> 1782045253 +0200	commit: PER13: two-way actions — retention.extend + legal_hold.request handlers
fefa018d8ac37dff60eacf137c38552dc4c12dca a96a28e932150aece689f7459bf06df3bdb8519c medzi <medzied.arbi@gmail.com> 1782045307 +0200	commit: docs: PER13 functionally complete (date-mode + two-way actions)
a96a28e932150aece689f7459bf06df3bdb8519c db793a84c2a0a21d2541818f75b2d85a1ec36828 medzi <medzied.arbi@gmail.com> 1782045691 +0200	commit: api: expose new retention fields + purge-request endpoint (UI backend)
db793a84c2a0a21d2541818f75b2d85a1ec36828 4b44a8a89f4fa616ba948e678921fdda08fc7c25 medzi <medzied.arbi@gmail.com> 1782045880 +0200	commit: ui: Approvals admin page + generalize the review page for all kinds
4b44a8a89f4fa616ba948e678921fdda08fc7c25 24fa2bda7c37b2f84073167703d0a0935e928e36 medzi <medzied.arbi@gmail.com> 1782046190 +0200	commit: ui: notify-lists editor (dataset/archive) + blocks_export on legal hold
24fa2bda7c37b2f84073167703d0a0935e928e36 8381cb64f3cffda0a4837c2b6dae1e579a9d87d4 medzi <medzied.arbi@gmail.com> 1782046344 +0200	commit: ui: promote-to-purge — "New purge request" on the Approvals page
8381cb64f3cffda0a4837c2b6dae1e579a9d87d4 74606cf28658f2d81a3046408fb43b59d049e077 medzi <medzied.arbi@gmail.com> 1782046446 +0200	commit: ui: surface blocks_export (holds) + retention_until (datasets/archives) in catalog lists
74606cf28658f2d81a3046408fb43b59d049e077 63ad3fa9d4735fe9d4652772ce54b0320567df61 medzi <medzied.arbi@gmail.com> 1782046990 +0200	commit: PER13: advance lead-time retention notices (T-30/7/1) + extend/hold UX
63ad3fa9d4735fe9d4652772ce54b0320567df61 001992b6ca0d46839f909dc83742941dfb5cbaf0 medzi <medzied.arbi@gmail.com> 1782047060 +0200	commit: docs: PER13 complete (advance notices + UI)
001992b6ca0d46839f909dc83742941dfb5cbaf0 2767506b54ddf20aab5d428b503556855b75b69b medzi <medzied.arbi@gmail.com> 1782047505 +0200	commit: ui: per-dataset Request-purge action + visual predicate builder
2767506b54ddf20aab5d428b503556855b75b69b 0b0870936be28db260a46106c7365ba31296fd84 medzi <medzied.arbi@gmail.com> 1782047535 +0200	commit: chore: regenerate typed-router.d.ts
0b0870936be28db260a46106c7365ba31296fd84 7156d5724cb6e109229f494639642f4c4d5d6a21 medzi <medzied.arbi@gmail.com> 1782047568 +0200	commit: docs: PER13 fully complete (request-purge action + predicate builder)
7156d5724cb6e109229f494639642f4c4d5d6a21 b00a94e359c58540f3cac84614e9fd2c40c3bfce medzi <medzied.arbi@gmail.com> 1782048148 +0200	commit: audit: record validation lifecycle + purge execution (compliance)
b00a94e359c58540f3cac84614e9fd2c40c3bfce 8d35a0f53b9f667166277a0be882b1480439a081 medzi <medzied.arbi@gmail.com> 1782048484 +0200	commit: consolidate deletion: single delete_col_file shared by purge + cleanup
8d35a0f53b9f667166277a0be882b1480439a081 f46ecc149f07bca20e50eb8000b030972bd0ab9e medzi <medzied.arbi@gmail.com> 1782048685 +0200	commit: retention: archive-scoped retention via policy propagation to datasets
f46ecc149f07bca20e50eb8000b030972bd0ab9e 3896cf884b4d6c861e14f4068d7b37032de90535 medzi <medzied.arbi@gmail.com> 1782050118 +0200	commit: fix: address code-review findings on the purge/validation surface
3896cf884b4d6c861e14f4068d7b37032de90535 1b85ea23794bb3b77722503007982790b3a3099c medzi <medzied.arbi@gmail.com> 1782051477 +0200	commit: consolidate deletion (part 2): shared delete_partition (file + DB row)
1b85ea23794bb3b77722503007982790b3a3099c dd5b72458f0d8b29292b53b36b566e00901d1b7c medzi <medzied.arbi@gmail.com> 1782054829 +0200	commit: ui: client GET cache + global toasts + hygiene (dead files, console.logs)
dd5b72458f0d8b29292b53b36b566e00901d1b7c 0f54c1cc440ddd68eb7c1b7f3ae53c5fd16f7474 medzi <medzied.arbi@gmail.com> 1782056110 +0200	commit: sse: emit only on change + idle heartbeat; add gunicorn (Linux) serving tier
0f54c1cc440ddd68eb7c1b7f3ae53c5fd16f7474 2cbca23a81481892a53cb60d41b33878e528956d medzi <medzied.arbi@gmail.com> 1782057178 +0200	commit: ui: shared loading/empty/error states (AsyncSection + EmptyState)
2cbca23a81481892a53cb60d41b33878e528956d abd005eb75dfa76016ae0a70bd11aee5db45f5b0 medzi <medzied.arbi@gmail.com> 1782059016 +0200	commit: ui: finish loading/empty/error rollout across remaining pages
abd005eb75dfa76016ae0a70bd11aee5db45f5b0 94354c1e3560812726075d3dea8ef3d918541668 medzi <medzied.arbi@gmail.com> 1782061877 +0200	commit: chore: restore CRLF on 23 frontend files (sed had flipped them to LF)
94354c1e3560812726075d3dea8ef3d918541668 b5b07ec9f2707e381ca6d07684098e4a15e8cdd1 medzi <medzied.arbi@gmail.com> 1782064285 +0200	commit: catalog: counts endpoint + lazy/paginated loading (was eager-load-everything)
b5b07ec9f2707e381ca6d07684098e4a15e8cdd1 47f25b2cf022e7460d9e881fa879e7b08ea1c0d6 medzi <medzied.arbi@gmail.com> 1782064845 +0200	commit: api: expose pagination total app-wide (json_ok flatten + count_total)
47f25b2cf022e7460d9e881fa879e7b08ea1c0d6 010f895704ec5288854006f28aca20eff7862bea medzi <medzied.arbi@gmail.com> 1782065221 +0200	commit: api: pagination total for RBAC (roles/scopes/bindings/permissions), groups, tenants
010f895704ec5288854006f28aca20eff7862bea 7dc43ad5bb6213ab3c12ea6dbc3317595a26f330 medzi <medzied.arbi@gmail.com> 1782065662 +0200	commit: users: server-paginate the users grid + split the add-member picker
7dc43ad5bb6213ab3c12ea6dbc3317595a26f330 969e8e54e9e4b42e70e0f6ac532951c34a5ac422 medzi <medzied.arbi@gmail.com> 1782065867 +0200	commit: exports: server-side filtering + pagination + tenant scoping
969e8e54e9e4b42e70e0f6ac532951c34a5ac422 63420ffbe2d4b5b7933b1831f8c049e5ff62a663 medzi <medzied.arbi@gmail.com> 1782066931 +0200	commit: fs: integrity guards — protect managed data from manual upload/delete/rename
63420ffbe2d4b5b7933b1831f8c049e5ff62a663 3f43a35abae435292535e9dc2851d6acb718537b medzi <medzied.arbi@gmail.com> 1782067337 +0200	commit: fs: add download + rename to the File System page
3f43a35abae435292535e9dc2851d6acb718537b e31879ce432ee4fd5aa38c55b8937f0d067c8f34 medzi <medzied.arbi@gmail.com> 1782067621 +0200	commit: fs: serve S3 tree from a daily-cached manifest + manual refresh
e31879ce432ee4fd5aa38c55b8937f0d067c8f34 ea817bebe63073e93300d81daa0af779262ec0db medzi <medzied.arbi@gmail.com> 1782068501 +0200	commit: fix(s3): manifest rebuild crashed on non-serializable Endpoint in cache meta
ea817bebe63073e93300d81daa0af779262ec0db ce124bbdbb8eb8a1a240374f3098aa46c3d46c45 medzi <medzied.arbi@gmail.com> 1782070779 +0200	commit: test: full create_app() boot + route smoke test (verification gate cleared)
ce124bbdbb8eb8a1a240374f3098aa46c3d46c45 9f673ded083f923d9487a0a33747b4af53d1bec4 medzi <medzied.arbi@gmail.com> 1782077324 +0200	commit: provisioning: group-membership model + role-scoped groups (+ cache/override fixes)
9f673ded083f923d9487a0a33747b4af53d1bec4 5414377321526c869e81fea085aaec681fcef0db medzi <medzied.arbi@gmail.com> 1782077524 +0200	commit: ui(rbac): configure a role's scopes in the role dialog
5414377321526c869e81fea085aaec681fcef0db 9fca44dd8a65e9f794ea902dc4725fbfc55033f2 medzi <medzied.arbi@gmail.com> 1782078968 +0200	commit: masking: rework row policies into enforced MASK/HIDE extraction rules
9fca44dd8a65e9f794ea902dc4725fbfc55033f2 4e1245049458e77578f5a3b721809394999955ac medzi <medzied.arbi@gmail.com> 1782082736 +0200	commit: ui(masking): rework the live policies editor to MASK/HIDE + user/group targeting
4e1245049458e77578f5a3b721809394999955ac 7a87ac3e0a938cd622a492548145795e566b6791 medzi <medzied.arbi@gmail.com> 1782086590 +0200	commit: masking: apply column rules to the live audit-trail query too
7a87ac3e0a938cd622a492548145795e566b6791 99ada7c61f9ce16e6f72cfc7eded7689e0e88b78 medzi <medzied.arbi@gmail.com> 1782087234 +0200	commit: seed: full demo environment for manual testing (users/roles/scopes/masking/data/S3)
99ada7c61f9ce16e6f72cfc7eded7689e0e88b78 f66e02c01101c094484126ec25a4c034656caa77 medzi <medzied.arbi@gmail.com> 1782089530 +0200	commit: provisioning: monitor + run via the job system (APS Jobs)
f66e02c01101c094484126ec25a4c034656caa77 6940f6c2d96701d3142e799ffb6c132934c94fe5 medzi <medzied.arbi@gmail.com> 1782096670 +0200	commit: fix(ui): home links on error/forbidden pages drop the /bankrec prefix
6940f6c2d96701d3142e799ffb6c132934c94fe5 7725c77b055c1ac93be3083842ee6d3ac2e4e014 medzi <medzied.arbi@gmail.com> 1782097826 +0200	commit: feat(query): implement the missing named ("saved") query backend
7725c77b055c1ac93be3083842ee6d3ac2e4e014 f718f108af732d42c5f3a041a3817fec0f429db4 medzi <medzied.arbi@gmail.com> 1782203307 +0200	commit: feat(archiving): lifecycle/audit/ingestion/purge-hold safety + role-based notifications + integrity
