Commit Graph

33 Commits

Author SHA1 Message Date
cesnimda c3f4a57195 feat/Update_Controllers_to_Allow_for_Premium_Membership 2026-08-03 09:17:28 +02:00
cesnimda ce76046a29 feat: complete release readiness work
- consolidate API ownership and remove dead vendor code

- add Stripe billing, learning paths, and public CV hardening

- add migration, recovery, security, audit, and browser gates
2026-07-31 16:54:16 +02:00
cesnimda 6382e83e28 ci: report dependency vulnerabilities
CI and Deploy / test (push) Successful in 2m34s
CI and Deploy / deploy (push) Successful in 29s
2026-07-30 22:58:59 +02:00
cesnimda 3b59152782 docs(infra): runner fails at different stages across runs — nondeterministic
CI and Deploy / test (push) Failing after 1m0s
CI and Deploy / deploy (push) Has been skipped
Two post-reboot runs: the first reproduced the failure identically (smoke 1s
pass, suite 3s fail), the second failed earlier at `dotnet restore` in 0s — a
step that succeeded in 3-4s on every previous run, same commit, same runner.

That rules out stuck state (reboot changed nothing) and rules out a
deterministic sandbox policy such as seccomp/W^X blocking runtime IL emission,
which was the leading remaining hypothesis. Combined with host telemetry
showing no disk/memory/PID pressure, confidence in any specific mechanism drops
to ~25%; confidence that application code is not the cause stays high.

Removes the pure-vs-Moq diagnostic scaffolding (it never executed). No test
skipped or weakened.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-18 23:20:19 +02:00
cesnimda c4c0cd4e42 ci: test whether EF-InMemory/Moq (runtime IL emission) is the runner trigger
CI and Deploy / test (push) Failing after 52s
CI and Deploy / deploy (push) Has been skipped
2026-07-18 23:17:12 +02:00
cesnimda 55962bd29b docs(infra): conclude runner + deploy investigation — both outside the repo
CI and Deploy / test (push) Failing after 1m1s
CI and Deploy / deploy (push) Has been skipped
Moves the report to docs/infrastructure/runner-investigation.md with the
requested structure (evidence, experiments, hypothesis, confidence, required
infrastructure changes, why application code is no longer suspected).

Decisive new experiment: the suite was run from a clean `git archive HEAD`
tree — byte-identical to CI's checkout, without the gitignored runtime dirs
(jobtracker.db, keys/, CvArtifacts/, backups/) that earlier local runs had
silently included. 10/10 pass in 1s. That removes the last difference between
the local tree and the runner, eliminating application code (~95% confidence).

Also establishes, by route probe, that production is healthy but stale:
/api/public-cv/{unknown} returns 404 locally (route exists, AllowAnonymous) but
401 on prod, same as a nonsense path — PublicCvController is absent, so Phase 4
and Phase 5 have never deployed. Production therefore never ran the faulty
migration: no half-built tables exist there and no data cleanup is needed.

Deploy is a second, separate infrastructure failure: the first attempt reached
deploy.sh (37s, consistent with the MariaDB crash since fixed), every attempt
since dies at 3s at SSH connection time while the host serves traffic normally.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-18 23:00:27 +02:00
cesnimda b7dc07b045 docs(ci): report runner-only backend test failure investigation
CI and Deploy / test (push) Failing after 1m8s
CI and Deploy / deploy (push) Has been skipped
Bisected the failure across four CI runs (job logs are not readable via the
Gitea API) down to the AiWorkspace test classes — 10 tests that pass on
Windows, in a clean Linux container, under a 1GB memory cap, in CI's exact
step order, with a custom-dir SDK and no DOTNET_ROOT, serially, and under a
hostile locale/timezone.

Ruled out: Linux behaviour, case sensitivity, path separators, locale/culture,
time zone, environment variables, parallel execution, test ordering, shared
state, memory. Not testable remotely: host permissions/limits.

Assessment is environmental: the workflow already documents three failure
modes on this same runner with an identical signature (processes dying with no
error output — SDK cache corruption, npm ci SIGSEGV, CRA build OOM/SIGSEGV).
Report includes evidence table and recommended infrastructure fix.

Removes the temporary bisection scaffolding; keeps the restore/build/test split
and the host smoke. No test was weakened, skipped, or filtered.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-18 22:12:00 +02:00
cesnimda 0f62dc42c2 ci: split failing slice per test class to name the offender
CI and Deploy / test (push) Failing after 1m0s
CI and Deploy / deploy (push) Has been skipped
2026-07-18 21:57:29 +02:00
cesnimda 7fa3080a28 ci: bisect backend suite across steps to localise runner crash
CI and Deploy / test (push) Failing after 1m0s
CI and Deploy / deploy (push) Has been skipped
The host smoke passes, so the test host starts; the full suite still dies ~3s
in with parallelism disabled, so one specific test takes the process down on
this runner only. Job logs are unreadable via the API, so the suite is sliced
across four steps — the first failing step identifies the class. Temporary
diagnostic scaffolding; every test still runs, nothing is skipped.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-18 21:55:35 +02:00
cesnimda 2bdc4a9748 ci: isolate backend test-host failure and serialise the suite
CI and Deploy / test (push) Failing after 1m0s
CI and Deploy / deploy (push) Has been skipped
Restore and build pass on the self-hosted runner but the test run dies after
~3s — too fast to have executed 306 tests. The suite passes on Windows, in a
clean Linux container, under a 1GB memory cap, in CI's exact step order, and
with the SDK installed to a custom dir without DOTNET_ROOT, so the trigger is
specific to this runner rather than the code.

Adds a one-test host smoke step (separates "host cannot start" from "the suite
takes the host down" using step boundaries, since job logs are not readable via
the API) and disables xUnit collection parallelism for the full run — the same
remedy the frontend already needs (--runInBand) on this resource-flaky runner.
All 306 tests still run; only concurrency changes.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-18 21:52:26 +02:00
cesnimda 45725acc7c ci: split backend restore/build/test into separate steps
CI and Deploy / test (push) Failing after 1m0s
CI and Deploy / deploy (push) Has been skipped
The backend test step fails on the self-hosted runner after 8s while passing
on Windows, in a clean Linux container, and in CI's exact build-then-test
order. The job log is not readable via the Gitea API (401), so step boundaries
are the only available telemetry: splitting restore / build / test makes the
failing phase identifiable from step timings alone.

Restore retries once, mirroring the npm ci and dotnet SDK retries already in
this workflow for the same runner's known flakiness. The suite itself is
unchanged — still the whole suite, nothing filtered or skipped.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-18 21:35:16 +02:00
cesnimda cfba7fbbc4 fix(ci): actually run the backend test suite
CI and Deploy / test (push) Failing after 1m3s
CI and Deploy / deploy (push) Has been skipped
The build step only builds JobTrackerApi, so the test project was never
compiled — and `dotnet test --no-build` then made the step a ~1s no-op
(locally it errors "test source file not found"; on the persistent
self-hosted runner it can silently run a stale binary). The 306 backend
tests have not been gating CI.

Drop --no-build so the test project is compiled and the suite runs.
Verified locally: 306 passed in 14s instead of "succeeding" in 1s.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-18 20:47:44 +02:00
cesnimda 4f98195592 ci: retry frontend build once on silent failure
CI and Deploy / test (pull_request) Successful in 1m58s
CI and Deploy / deploy (pull_request) Has been skipped
npm run build (Terser minify + fork-ts-checker workers) has now died three
distinct ways on this runner in this session: a printed Terser minify error,
an explicit SIGSEGV, and a fully silent kill with zero output between
'Creating an optimized production build...' and the failure line (OOM/SIGSEGV
signature — process killed before it could flush an error). All three are the
same resource-starved-runner class as the npm ci and dotnet-install flakes
already retried elsewhere in this workflow. Retry once, matching that pattern.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-11 19:30:15 +02:00
cesnimda fc356012e6 ci: install .NET via retrying dotnet-install.sh instead of setup-dotnet
CI and Deploy / test (pull_request) Successful in 2m5s
CI and Deploy / deploy (pull_request) Has been skipped
The single self-hosted act_runner intermittently fails actions/setup-dotnet:
a partial extraction sticks in the shared tool-cache (tar: Cannot open: File
exists) or the SDK tarball download corrupts. Install into a clean private
$HOME/.dotnet via dotnet-install.sh with a rm -rf + retry-once, matching the
npm ci and NuGet publish retries already in this pipeline.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-11 13:02:37 +02:00
cesnimda 4b38f7c164 ci: retry npm ci once on the runner's intermittent SIGSEGV
CI and Deploy / test (pull_request) Successful in 2m12s
CI and Deploy / deploy (pull_request) Has been skipped
The frontend deps step occasionally crashes with "Segmentation fault (core
dumped)" (exit 139) during `npm ci` — a memory/native flake on the act_runner,
unrelated to the change under test (it failed the deploy-fix PR whose only change
is the Dockerfile). Retry once with a clean node_modules before failing.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 01:08:00 +02:00
cesnimda c41d1e8d0f ci: run the entire frontend test suite instead of a file whitelist
The whitelist silently skipped new suites; two regressions in
non-whitelisted suites reached main unnoticed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 22:00:27 +02:00
cesnimda 6fb7b57b09 Stop rebuilding AI service on every deploy 2026-04-09 19:51:32 +02:00
cesnimda a22ce08913 Do not block deploy on AI service health 2026-04-02 14:52:44 +02:00
cesnimda b53b2b5a35 Polish settings and auth flows 2026-03-27 21:56:16 +01:00
cesnimda b626d3b2f6 Harden frontend install step in CI 2026-03-27 13:25:38 +01:00
cesnimda dccbd11224 Wait for AI service health in deploy workflow 2026-03-27 11:01:14 +01:00
cesnimda 8d1ab8ae17 Harden frontend CI build for low-memory runners 2026-03-27 10:44:50 +01:00
cesnimda 2c6d3f8f6f Harden deploy workflow and record next-session handoff 2026-03-24 00:02:24 +01:00
cesnimda 6acd9f3e15 Fix workflow YAML and improve CV section editing 2026-03-23 22:24:48 +01:00
cesnimda 653f713a78 Evolve summarizer into AI service with OCR support 2026-03-23 20:12:34 +01:00
cesnimda 691f263bc0 fix: harden deploy workflow health and git sync 2026-03-22 23:29:36 +01:00
cesnimda c8e1c2b338 fix: deploy from server git checkout instead of scp overlay 2026-03-22 22:42:07 +01:00
cesnimda c4bb6f1474 fix: surface backend deploy failures in workflow 2026-03-22 22:01:28 +01:00
cesnimda 137ce81d5e fix: stop deleting deploy target during upload 2026-03-22 21:46:35 +01:00
cesnimda 87d4e38f70 ci: add frontend production build validation 2026-03-22 20:41:55 +01:00
cesnimda 87c9a11edc chore: document mariadb bootstrap and add deploy health checks 2026-03-22 18:55:40 +01:00
cesnimda 16b9960c08 feat: add mariadb production support deploy hardening and recruiter drafts 2026-03-22 18:53:41 +01:00
cesnimda 1fe3a68901 feat: add editable application drafts tests and gitea deploy workflow 2026-03-22 18:42:14 +01:00