kitos
42b05379f7
fix(deps): revert babel/core lock to 7.29.0 (npm ci fails with manual sub-dep mismatch)
Aegis CI / lint-and-test (push) Has been cancelled
Snyk Security Scan / Python vulnerabilities (backend) (push) Has been cancelled
Snyk Security Scan / npm vulnerabilities (frontend) (push) Has been cancelled
Snyk Security Scan / Docker image vulnerabilities (backend) (push) Has been cancelled
2026-07-07 10:47:23 +02:00
kitos
d6fbc2ffe8
fix(deps): bump starlette>=1.3.1, pydantic-settings>=2.14.2; override babel/core>=7.29.6, esbuild>=0.28.1
Aegis CI / lint-and-test (push) Has been cancelled
Snyk Security Scan / Python vulnerabilities (backend) (push) Has been cancelled
Snyk Security Scan / npm vulnerabilities (frontend) (push) Has been cancelled
Snyk Security Scan / Docker image vulnerabilities (backend) (push) Has been cancelled
2026-07-07 10:30:15 +02:00
kitos
949e5d42c4
fix(migration): cast CASE expression to enum type in b058 UPDATE statement
Aegis CI / lint-and-test (push) Has been cancelled
Snyk Security Scan / Python vulnerabilities (backend) (push) Has been cancelled
Snyk Security Scan / npm vulnerabilities (frontend) (push) Has been cancelled
Snyk Security Scan / Docker image vulnerabilities (backend) (push) Has been cancelled
2026-07-06 17:01:25 +02:00
kitos
c0a88fc489
feat(tests): attack_success 3-value UI, data classification badge, reorder containment options
Aegis CI / lint-and-test (push) Has been cancelled
Snyk Security Scan / Python vulnerabilities (backend) (push) Has been cancelled
Snyk Security Scan / npm vulnerabilities (frontend) (push) Has been cancelled
Snyk Security Scan / Docker image vulnerabilities (backend) (push) Has been cancelled
2026-07-06 16:19:50 +02:00
kitos
022c1c756a
feat(jira): pause/hold status mapping, RT/BT dates, TTP, attack_success 3-value field, hours
2026-07-06 16:19:39 +02:00
kitos
19c4866103
feat(tests): dispute resolution UI — manager escalation + red/blue queue selector
Aegis CI / lint-and-test (push) Has been cancelled
Snyk Security Scan / Python vulnerabilities (backend) (push) Has been cancelled
Snyk Security Scan / npm vulnerabilities (frontend) (push) Has been cancelled
Snyk Security Scan / Docker image vulnerabilities (backend) (push) Has been cancelled
2026-07-06 12:40:21 +02:00
kitos
f53e124c50
fix(tests): fix veto bug preventing disputed state, add manager notification and dispute-resolution routing
2026-07-06 12:40:05 +02:00
kitos
388c9773ab
docs(tests): implementation plan for red/blue review workflow
Aegis CI / lint-and-test (push) Has been cancelled
Snyk Security Scan / Python vulnerabilities (backend) (push) Has been cancelled
Snyk Security Scan / npm vulnerabilities (frontend) (push) Has been cancelled
Snyk Security Scan / Docker image vulnerabilities (backend) (push) Has been cancelled
2026-07-06 12:08:18 +02:00
kitos
d5e3df00f9
feat(tests): review panels, blind visibility UX, red_review/blue_review badges
2026-07-06 12:02:14 +02:00
kitos
82033b5037
feat(tests): types and API client for red/blue review workflow
2026-07-06 12:02:07 +02:00
kitos
8a028bf0ed
feat(tests): blind red/blue visibility until both reviews are approved
2026-07-06 11:42:35 +02:00
kitos
b527eeac7d
feat(tests): review-red/review-blue router endpoints
2026-07-06 11:42:34 +02:00
kitos
e3cd75bb56
feat(tests): retarget submit-red/submit-blue through review gates, add review decisions
2026-07-06 10:56:41 +02:00
kitos
22be620665
feat(tests): load-balanced reviewer selection and Jira reviewer sync
2026-07-06 10:56:40 +02:00
kitos
c41876b62f
feat(tests): migration for red_review/blue_review states and review columns
2026-07-06 10:40:39 +02:00
kitos
2d98ed5ec6
feat(tests): add review assignment columns to Test model
2026-07-06 10:39:54 +02:00
kitos
58d1da93ce
feat(tests): add red_review/blue_review states to test state machine
2026-07-06 10:38:15 +02:00
kitos
af65681179
fix(campaigns): hide direct remove-test button on active campaigns
...
Aegis CI / lint-and-test (push) Has been cancelled
Snyk Security Scan / Python vulnerabilities (backend) (push) Has been cancelled
Snyk Security Scan / npm vulnerabilities (frontend) (push) Has been cancelled
Snyk Security Scan / Docker image vulnerabilities (backend) (push) Has been cancelled
Direct test removal is now gated to draft-only at the service layer
(active campaigns must go through a modification request that a
manager approves). The trash-icon button on the tests table still
showed for active campaigns and would always fail with a 400 —
restrict it to draft, matching the backend gate.
2026-07-04 12:02:11 +02:00
kitos
164ef25393
fix(campaigns): complete ACTION_LABELS map and timeline cache invalidation
...
Adds the 4 backend-logged campaign actions missing from ACTION_LABELS
(delete_campaign, generate_campaign, schedule_campaign,
recurring_campaign_run), and wires campaign-timeline invalidation into
the remaining audit-logging mutations on the page (complete, schedule,
approve/reject modification request) so the timeline panel updates
live instead of only on next reload, consistent with submit/approve/
reject campaign.
2026-07-04 12:02:11 +02:00
kitos
83b4d2578a
feat(campaigns): audit timeline UI and manager role in role pickers
2026-07-04 12:02:10 +02:00
kitos
aeaf1cf243
fix(campaigns): reset modification-request modal state on close, not just on success
...
Previously action/testId/justification only reset inside the success
handler, so cancelling and reopening the modal left stale form values.
Mirrors the reset-on-close pattern already used by AddTestToCampaignModal.
2026-07-04 12:02:10 +02:00
kitos
952b6f27d7
feat(campaigns): modification request UI on campaign detail page
2026-07-04 12:02:10 +02:00
kitos
b106780102
fix(campaigns): drop dead force param from activateCampaign API client
...
The backend endpoint no longer accepts a force query param (a draft
campaign can never have a future start_date to force past). No frontend
code currently calls this function, but keep it matching the real
backend contract in case a future admin UI wires it up.
2026-07-04 12:02:10 +02:00
kitos
6b6375ddad
feat(campaigns): submit/approve/reject UI on campaign detail page
2026-07-04 12:02:10 +02:00
kitos
f19d10e19c
feat(campaigns): remove lead-set start dates, add pending-approval filter
2026-07-04 12:02:10 +02:00
kitos
858dd3e9e7
docs(campaigns): explain why CampaignModificationRequest.test_id can be null
2026-07-04 12:02:10 +02:00
kitos
15ef555131
feat(campaigns): API client for approval workflow
2026-07-04 12:02:10 +02:00
kitos
108743daa5
docs(campaigns): remove stale docstring reference to deleted scheduling filter
2026-07-04 12:02:10 +02:00
kitos
5bc71f677f
refactor(campaigns): remove dead future-start_date scheduling code
...
Now that only the manager sets start_date, and only at the moment of
approval (which immediately activates the campaign), a draft campaign
can never have a start_date. This made three things permanently
unreachable: the hourly _run_scheduled_campaign_activation cron job,
the activate_campaign 409/force future-date guard, and a query filter
hiding tests from scheduled-but-inactive draft campaigns. Removes all
three rather than leaving dead code behind. Also adds the missing
manager-cannot-directly-activate router test.
2026-07-04 12:02:10 +02:00
kitos
959def2f49
feat(campaigns): timeline endpoint, admin-only manual activation, remove lead-set dates
2026-07-04 12:02:09 +02:00
kitos
6186c246a4
feat(campaigns): modification-request router endpoints
2026-07-04 12:02:09 +02:00
kitos
95b5ac50c6
test(campaigns): promote cookie-safe request helper to shared conftest fixture
...
Moves the local _post cookie-clearing helper into a shared 'api' fixture
in conftest.py so later router tests in this plan (Tasks 10/11) don't
have to reinvent or forget the TestClient cookie-vs-Authorization-header
gotcha. Also adds a one-line comment at both require_any_role("manager")
call sites clarifying admin passthrough is automatic.
2026-07-04 12:02:09 +02:00
kitos
4f5ffcf3f9
feat(campaigns): submit/approve/reject router endpoints
2026-07-04 12:02:09 +02:00
kitos
6749daa7cb
feat(campaigns): add get_campaign_timeline service function
2026-07-04 12:02:09 +02:00
kitos
fd47db7bea
fix(campaigns): null-safe test_id serialization, correct stale comments
...
serialize_modification_request crashed toward a string 'None' instead of
JSON null for requests whose test_id was nulled by the SET NULL cascade.
Also corrects two comments that still described the debunked ordering
theory instead of the actual SET NULL fix, and fixes a test that
asserted post-cascade state without committing first (the ORM only
picks up out-of-band DB-side SET NULL on already-loaded objects after
expire_on_commit forces a re-read, matching real router behavior).
2026-07-04 12:02:09 +02:00
kitos
12a5484003
fix(campaigns): preserve modification-request audit row after test deletion
...
Approving a remove_test modification request deletes the underlying Test
row, which was cascading through test_id's ON DELETE CASCADE and wiping
out the request row itself before it could be read back. Changed to
ON DELETE SET NULL so the audit record (justification, reviewer,
decision) survives. Adds regression coverage plus double-approve/reject
idempotency tests.
2026-07-04 12:02:09 +02:00
kitos
dc5f206bf5
feat(campaigns): gate test edits to draft, add modification request workflow
2026-07-04 12:02:09 +02:00
kitos
6eadc7405b
test(campaigns): add EntityNotFoundError and reject-clears-approval coverage
2026-07-04 12:02:09 +02:00
kitos
385d402a57
feat(campaigns): submit/approve/reject service functions
2026-07-04 12:02:09 +02:00
kitos
79b573fb60
test(campaigns): add manager role fixtures
2026-07-04 12:02:08 +02:00
kitos
1c91bd543d
feat(campaigns): migration for campaign_modification_requests table
2026-07-04 12:02:08 +02:00
kitos
f6eac1641c
feat(campaigns): migration for campaign approval fields
2026-07-04 12:02:08 +02:00
kitos
a6b46f5f76
feat(campaigns): add approval fields and CampaignModificationRequest model
2026-07-04 12:02:08 +02:00
kitos
8e7f98301e
refactor(campaigns): fix approve() error message, add terminal-state test
2026-07-04 12:02:08 +02:00
kitos
a113f3687c
feat(campaigns): add pending_approval state to campaign domain entity
2026-07-04 12:02:08 +02:00
kitos
62e3bfebe8
docs(campaigns): implementation plan for manager approval workflow
2026-07-04 12:02:08 +02:00
kitos
74cb946317
docs(campaigns): design spec for manager approval workflow
2026-07-04 12:02:08 +02:00
kitos
f1e0e0acf0
fix(tempo): delegate user-token worklog path to log_worklog so tests can mock it
Aegis CI / lint-and-test (push) Has been cancelled
Snyk Security Scan / Python vulnerabilities (backend) (push) Has been cancelled
Snyk Security Scan / npm vulnerabilities (frontend) (push) Has been cancelled
Snyk Security Scan / Docker image vulnerabilities (backend) (push) Has been cancelled
2026-06-25 16:28:16 +02:00
kitos
7613f5ec8b
fix(deps): upgrade form-data 4.0.5 to 4.0.6 (CRLF injection fix)
Aegis CI / lint-and-test (push) Has been cancelled
Snyk Security Scan / Python vulnerabilities (backend) (push) Has been cancelled
Snyk Security Scan / npm vulnerabilities (frontend) (push) Has been cancelled
Snyk Security Scan / Docker image vulnerabilities (backend) (push) Has been cancelled
2026-06-25 14:54:56 +02:00
kitos
070b402358
fix(deps): pin urllib3>=2.7.0 and idna>=3.15; apk upgrade in nginx stage; form-data override
Aegis CI / lint-and-test (push) Has been cancelled
Snyk Security Scan / Python vulnerabilities (backend) (push) Has been cancelled
Snyk Security Scan / npm vulnerabilities (frontend) (push) Has been cancelled
Snyk Security Scan / Docker image vulnerabilities (backend) (push) Has been cancelled
2026-06-25 13:26:06 +02:00