Compare commits
15 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 7a9de940df | |||
| 773c943165 | |||
| f0c8c6d321 | |||
| e2327c1fa2 | |||
| a88310481f | |||
| e5a979386d | |||
| fba80ef346 | |||
| 194e01ed7f | |||
| 7e410e795d | |||
| 19dad316ab | |||
| 6f801251b0 | |||
| 027907a806 | |||
| c9c6b1abc1 | |||
| 172074e90f | |||
| 98e9502af5 |
@@ -4,6 +4,7 @@ using JobTrackerApi.Models;
|
||||
using JobTrackerApi.Services;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Data.Sqlite;
|
||||
using Moq;
|
||||
using Xunit;
|
||||
|
||||
@@ -11,6 +12,75 @@ namespace JobTrackerApi.Tests;
|
||||
|
||||
public sealed class ApplicationCalendarControllerTests
|
||||
{
|
||||
[Fact]
|
||||
public async Task Agenda_date_window_translates_on_sqlite_and_keeps_legacy_wall_clock_date()
|
||||
{
|
||||
await using var connection = new SqliteConnection("Data Source=:memory:");
|
||||
await connection.OpenAsync();
|
||||
var current = new Mock<ICurrentUserService>(); current.SetupGet(service => service.UserId).Returns("owner-1");
|
||||
await using var db = new JobTrackerContext(new DbContextOptionsBuilder<JobTrackerContext>().UseSqlite(connection).Options, current.Object);
|
||||
await db.Database.EnsureCreatedAsync();
|
||||
var job = await SeedJobAsync(db, "owner-1");
|
||||
job.Status = "Saved"; job.FollowUpAt = null; job.Deadline = new DateTime(2026, 9, 30, 23, 59, 59);
|
||||
await db.SaveChangesAsync(); db.ChangeTracker.Clear();
|
||||
var controller = CreateController(db, "owner-1", new Mock<IGmailOAuthService>(MockBehavior.Strict).Object, new Mock<IMicrosoftGraphOAuthService>(MockBehavior.Strict).Object);
|
||||
var result = await controller.Agenda(new DateOnly(2026, 9, 1), new DateOnly(2026, 9, 30), default);
|
||||
var row = Assert.Single(Assert.IsAssignableFrom<IEnumerable<ApplicationCalendarController.CalendarAgendaItemDto>>(Assert.IsType<OkObjectResult>(result.Result).Value));
|
||||
Assert.Equal("2026-09-30", row.Date);
|
||||
Assert.Equal(new DateTime(2026, 9, 30, 23, 59, 59), row.RecordedAt);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Agenda_includes_saved_deadlines_and_preserves_recorded_dates_without_provider_access()
|
||||
{
|
||||
await using var db = CreateDb("owner-1");
|
||||
var job = await SeedJobAsync(db, "owner-1");
|
||||
job.Status = "Saved";
|
||||
job.FollowUpAt = new DateTime(2026, 9, 2, 0, 0, 0, DateTimeKind.Unspecified);
|
||||
job.Deadline = new DateTime(2026, 9, 15, 23, 30, 0, DateTimeKind.Unspecified);
|
||||
await db.SaveChangesAsync();
|
||||
var controller = CreateController(db, "owner-1", new Mock<IGmailOAuthService>(MockBehavior.Strict).Object, new Mock<IMicrosoftGraphOAuthService>(MockBehavior.Strict).Object);
|
||||
|
||||
var response = await controller.Agenda(new DateOnly(2026, 9, 1), new DateOnly(2026, 9, 30), default);
|
||||
var rows = Assert.IsAssignableFrom<IEnumerable<ApplicationCalendarController.CalendarAgendaItemDto>>(Assert.IsType<OkObjectResult>(response.Result).Value).ToList();
|
||||
|
||||
Assert.Equal(2, rows.Count);
|
||||
Assert.Equal("follow-up", rows[0].Kind);
|
||||
Assert.Equal("2026-09-02", rows[0].Date);
|
||||
Assert.Equal("deadline", rows[1].Kind);
|
||||
Assert.Equal("2026-09-15", rows[1].Date);
|
||||
Assert.Equal(job.Deadline, rows[1].RecordedAt);
|
||||
Assert.Equal(DateTimeKind.Unspecified, rows[1].RecordedAt.Kind);
|
||||
Assert.All(rows, row => { Assert.Equal(job.Id, row.JobApplicationId); Assert.Equal("Acme", row.CompanyName); });
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Agenda_excludes_other_owners_deleted_and_out_of_range_dates()
|
||||
{
|
||||
await using var db = CreateDb("owner-1");
|
||||
await SeedJobAsync(db, "owner-2");
|
||||
var deleted = await SeedJobAsync(db, "owner-1"); deleted.IsDeleted = true;
|
||||
var outside = await SeedJobAsync(db, "owner-1"); outside.FollowUpAt = new DateTime(2026, 8, 31); outside.Deadline = new DateTime(2026, 10, 1);
|
||||
var edge = await SeedJobAsync(db, "owner-1"); edge.FollowUpAt = null; edge.Deadline = new DateTime(2026, 9, 30, 23, 59, 59);
|
||||
await db.SaveChangesAsync();
|
||||
var controller = CreateController(db, "owner-1", Mock.Of<IGmailOAuthService>(), Mock.Of<IMicrosoftGraphOAuthService>());
|
||||
var response = await controller.Agenda(new DateOnly(2026, 9, 1), new DateOnly(2026, 9, 30), default);
|
||||
var rows = Assert.IsAssignableFrom<IEnumerable<ApplicationCalendarController.CalendarAgendaItemDto>>(Assert.IsType<OkObjectResult>(response.Result).Value);
|
||||
Assert.Equal(edge.Id, Assert.Single(rows).JobApplicationId);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData("2026-09-30", "2026-09-01")]
|
||||
[InlineData("2026-01-01", "2026-12-31")]
|
||||
[InlineData("9999-12-01", "9999-12-31")]
|
||||
public async Task Agenda_rejects_unbounded_or_invalid_ranges(string from, string to)
|
||||
{
|
||||
await using var db = CreateDb("owner-1");
|
||||
var controller = CreateController(db, "owner-1", Mock.Of<IGmailOAuthService>(), Mock.Of<IMicrosoftGraphOAuthService>());
|
||||
var response = await controller.Agenda(DateOnly.Parse(from), DateOnly.Parse(to), default);
|
||||
Assert.IsType<BadRequestObjectResult>(response.Result);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task Status_distinguishes_connection_from_calendar_consent()
|
||||
{
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Globalization;
|
||||
using JobTrackerApi.Data;
|
||||
using JobTrackerApi.Models;
|
||||
using JobTrackerApi.Services;
|
||||
@@ -18,6 +19,34 @@ public sealed class ApplicationCalendarController(
|
||||
IGmailOAuthService google,
|
||||
IMicrosoftGraphOAuthService microsoft) : ControllerBase
|
||||
{
|
||||
[HttpGet("agenda")]
|
||||
public async Task<ActionResult<List<CalendarAgendaItemDto>>> Agenda([FromQuery] DateOnly from, [FromQuery] DateOnly to, CancellationToken cancellationToken)
|
||||
{
|
||||
var owner = RequiredOwner();
|
||||
if (from == default || to < from || to.DayNumber - from.DayNumber > 61 || to == DateOnly.MaxValue)
|
||||
return BadRequest("Choose a calendar range of at most 62 days.");
|
||||
var start = from.ToDateTime(TimeOnly.MinValue);
|
||||
var end = to.AddDays(1).ToDateTime(TimeOnly.MinValue);
|
||||
var jobs = await db.JobApplications.AsNoTracking()
|
||||
.Where(job => job.OwnerUserId == owner && !job.IsDeleted)
|
||||
.Where(job => (job.Deadline >= start && job.Deadline < end) || (job.FollowUpAt >= start && job.FollowUpAt < end))
|
||||
.Select(job => new { job.Id, job.JobTitle, CompanyName = job.Company.OwnerUserId == owner ? job.Company.Name : null, job.Deadline, job.FollowUpAt })
|
||||
.ToListAsync(cancellationToken);
|
||||
var rows = new List<CalendarAgendaItemDto>();
|
||||
foreach (var job in jobs)
|
||||
{
|
||||
Add("deadline", job.Deadline);
|
||||
Add("follow-up", job.FollowUpAt);
|
||||
void Add(string kind, DateTime? recorded)
|
||||
{
|
||||
if (recorded is not { } date || date < start || date >= end) return;
|
||||
// Calendar grouping uses the stored calendar date; legacy timezone/precision is not reconstructed.
|
||||
rows.Add(new(job.Id, job.JobTitle, job.CompanyName, kind, date.ToString("yyyy-MM-dd", CultureInfo.InvariantCulture), date));
|
||||
}
|
||||
}
|
||||
return Ok(rows.OrderBy(row => row.Date).ThenBy(row => row.Kind).ThenBy(row => row.JobApplicationId).ToList());
|
||||
}
|
||||
|
||||
[HttpGet("status")]
|
||||
public async Task<ActionResult<CalendarStatusDto>> Status(CancellationToken cancellationToken)
|
||||
{
|
||||
@@ -141,4 +170,5 @@ public sealed class ApplicationCalendarController(
|
||||
public sealed record CalendarStatusDto(CalendarProviderStatusDto Google, CalendarProviderStatusDto Microsoft);
|
||||
public sealed record CreateCalendarEventRequest(string? Provider, string? Kind);
|
||||
public sealed record CalendarEventDto(string Provider, string? Id, string? WebUrl);
|
||||
public sealed record CalendarAgendaItemDto(int JobApplicationId, string JobTitle, string? CompanyName, string Kind, string Date, DateTime RecordedAt);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
# A3-IM09 publication and owner acceptance
|
||||
|
||||
3 November 2026. Implementation `773c943165669bfc97bee46c53f73f124f398c0c` on `codex/a3-ui-09` is published and independently remotely verified. All45 source/143 evidence manifest entries match committed bytes;80 export assets separately hashed. Validation: `ACCOUNT_ADMIN_VALIDATION.md`.
|
||||
|
||||
Owner explicitly answered **"Approve IM09 and A3-IM10"**. IM09 Gate F is ACCEPTED; do not repeat. Next authorised scope: cross-application consistency, preserved secondary routes, responsive/localisation/accessibility checks and combined affected regression. Human/native-language, real providers/models, final integrated security/recovery and release approval remain separate.
|
||||
|
||||
143 distinct frontend cases/11 suites and69 local backend cases passed. Initial full browser16 controlled journeys/128 states passed; visual review exposed processing label/column issues and an affected rerun reproduced a focus race. Corrected processing19-case unit suite and16-configuration browser successor passed. Final distinct browser coverage is112 retained states plus16 refreshed processing states=128. Pilots, failed attempts and focused reruns are not added. Confirmation dialogs were cancelled and16 explicit export requests received fixture403; no real mutation, credential/provider/model operation or deletion.
|
||||
|
||||
Keep earlier IM08 granular Ghosted pause and mounted AI-entitlement refresh gaps OPEN. Independently published attachment-size delta `1ce93ca0e3a906673e636e56f1b910756ca78bb2` still needs narrow integration against this newer baseline; never replace the application tree with its older branch.
|
||||
|
||||
Full Phase10/Product Review/Global Jobs/European localisation, native/provider, final integrated security/recovery/hosted CI and release qualifications remain OPEN. No orchestrator/pre-P10/main/production changes.
|
||||
@@ -0,0 +1,31 @@
|
||||
# A3-IM09 Account and administration validation
|
||||
|
||||
3 November 2026. Owner explicitly approved **"Approve IM08 and A3-IM09"**. Isolated `codex/a3-ui-09` starts at published/remotely verified IM08 acceptance receipt `f0c8c6d321a70b4d477e99c7b9557246b6361cdf`. This is a presentation increment, not final authentication/security/release acceptance.
|
||||
|
||||
## Changes and preservation
|
||||
|
||||
- Account overview adds named navigation to identity, sign-in/connections and password/security groups. Keyboard actions focus and scroll existing groups. Forms remain mounted: changing sections does not reset an unsaved identity draft. Existing account avatar, local/external restrictions, password, 2FA, trusted-device, provider and session controls remain with their existing owners. Career Profile is still canonical and separate.
|
||||
- The account data link enters existing Settings Backup controls through `/settings?section=data`. Only this exact initial query selects section3; unsupported queries retain General. Existing sections, lifecycle availability, recent-sign-in export requirement, deletion phrase and confirmation writers remain unchanged.
|
||||
- Processing monitor has named filter/result targets and keyboard jump/return actions. No filter submission, reads, polling or mutations occur merely from moving focus. Visual inspection then found native-select labels overlapping the selected All value and a long failure chip squeezing Duration. Four labels now shrink above the value; failure chips wrap and the duration column retains readable width. An affected browser rerun exposed intermittent detail focus loss: the animation-frame callback could execute before React committed the heading ref. A failing scheduling regression reproduced it. Requested focus now runs after commit with the existing owner/session guards. Existing identity cancellation, permission failures, bounded events, pause/resume and owner-permitted job links remain. Existing admin users/audit/system components are retained and qualified alongside these changes.
|
||||
|
||||
No API, schema, migration, dependency, worker/provider/model configuration or physical renderer change. Rollback reverts this UI increment; no database rollback required. The IM08 granular Ghosted pause and mounted AI-entitlement refresh gaps remain OPEN.
|
||||
|
||||
## Verification
|
||||
|
||||
| Check | Result and scope |
|
||||
|---|---|
|
||||
| Frontend | **143 distinct cases PASSED** across11 suites. Initial stable application-source run142 passed, zero failed/skipped. Final processing successor19 passed, replacing the18 processing cases in142 and adding one scheduling regression:142−18+19=143. Profile/account security/presentation/providers/data export, admin users/audit/system/processing, Settings and translation catalogue. Native reports under `evidence/account-admin/frontend`. Intermediate18-case visual rerun overlaps these totals. |
|
||||
| Red contracts | Four expected failures before implementation, one supported-default case passed;65 filtered cases NOT RUN. Focused successor five passed; these overlap142. |
|
||||
| Initial broad attempt | `EARLY-MIXED.json`:135 passed/two new-contract failures across137 cases. Regression tests were added while the command ran, so this is **not a clean baseline** and provides no acceptance count. Superseded by the stable application-source142-case run. |
|
||||
| Backend | **69 PASSED**, zero failed/skipped. Users/last-admin, 2FA, session revocation/controller, processing, account export and API authorization posture. Native TRX under `evidence/account-admin/backend`. Local mock/InMemory/temp SQLite fixtures; no production accounts or providers. |
|
||||
| Static checks | Typecheck, full ESLint, static-export build, scoped verifier ESLint/syntax and diff check PASSED. Initial build/typecheck rejected unsupported test-query `exact` options; removed without changing product behavior. System `dotnet` could not resolve the SDK; existing user SDK/DOTNET_ROOT succeeded without config changes. |
|
||||
| Browser | Full16 controlled journeys/128 scans passed across EN/NB, light/dark,320/390/768/1440; `evidence/account-admin/browser/BROWSER.json`, with16 intercepted export denials and no mutations. Processing visual/focus corrections passed the affected16-configuration successor under `PROCESSING.json`. Final distinct coverage remains128 (112 unchanged states plus16 processing), not an additional full pass. Geometric checks verify native labels above selected text and Duration width. Pilot overlaps, not extra cases. Representative phone account and final desktop NB/dark processing captures were visually inspected. |
|
||||
| Review/graph | Independent source/verifier review, including the visual and postcommit focus fixes, found no actionable issues. No extra test reruns counted. Final AST-only update passed:18,858 nodes/46,544 edges/1,109 communities. Optional SQL parser absent and144 files yielded no symbols; generated graph remains local. |
|
||||
|
||||
Browser journeys exercise unsaved identity drafts across keyboard section jumps, cancelled session-revocation and account-deletion confirmations, an explicit export request rejected by a fixture403, disconnected-provider presentation, disabled last-admin deletion/demotion, empty audit, unavailable system reads and paused processing drill-down with a non-openable linked job. The verifier blocks external origins and unexpected writes; all API responses are synthetic. No credential change, reset, account deletion, provider connect/disconnect, model or production operation is executed. System normal-state actions and detailed audit action scenarios are covered by selected unit tests, not the browser's unavailable/empty captures. The first geometry-check selector matched both Task and the search label; the failed followup is retained and the selector now uses the control's actual label association. The saved diagnostic image shows the visual defect that axe did not detect; it is not an accepted final capture.
|
||||
|
||||
NOT RUN: real authentication/OAuth/email/2FA delivery, MariaDB/hosted CI, native device/screen-reader, live security attack simulation, complete European native-language review, integrated recovery/restore or release qualification. Reused physical-PDF acceptance is unaffected; no PDF rerun was justified.
|
||||
|
||||
## Next gate
|
||||
|
||||
After final browser evidence, source/evidence reconciliation, publication and independent remote readback, request Gate F for IM09 and progression to IM10: cross-application consistency, secondary-route preservation, responsive/localisation/accessibility and combined affected regression. The approved proposal requires owner milestone review before the next increment. Do not infer IM10 approval from the earlier IM09 answer. Full Phase10, Global Jobs dependencies and final integrated security/release gates remain separate.
|
||||
@@ -0,0 +1,13 @@
|
||||
# A3-IM08 bounded stale-proposal repair
|
||||
|
||||
3 November2026. IM08 is authorised and remains IN PROGRESS. This subpackage fixes a reproduced section-assistant defect without changing any model/provider/API/schema or acceptance writer.
|
||||
|
||||
The shared assistant sends source text, targetId, document/output language, context and sectionName when generating a proposal. Its existing invalidation effect omitted the last two inputs. CvBuilderEditor entry callers include edited entry title/subtitle in context, so a user could change facts while a request was pending, then see and apply the previous suggestion; a displayed review also survived those changes. Four controlled regressions reproduced both pending/visible cases for context and section name before the fix.
|
||||
|
||||
Added context and sectionName to the same invalidation effect. Existing requestId guards reject late success/failure/finally work and clear the old proposal. Generation remains explicit, Apply still requires server token acceptance, and parent source flush/revision/epoch guards remain unchanged. No silent content write or automatic regeneration. A translated section label may conservatively discard a prompt-bound proposal; it never changes document/output language to match UI language.
|
||||
|
||||
Checks PASSED:23 section-assistant cases plus59 parent studio cases,82 disjoint cases/2 suites; typecheck, scoped zero-warning lint and production build. Independent static review found no actionable issue and did not repeat tests. Initial58-case Settings/AI baseline overlaps the section cases and is not added. Parent suite emitted existing direct-focus act warnings at cv-builder-deep-link.test.tsx475/782; all59 cases passed, but this is not a warning-free test run. Fixture-only callbacks/tokens, no live model or semantic AI-quality claim.
|
||||
|
||||
NOT RUN for this one-line dependency repair:backend rerun, new browser sweep, physical PDF, native device, live models/providers, final integrated security/release. Existing rendered document layouts are unchanged; controlled React regressions exercise the affected async behavior directly. Other IM08 Settings/automation presentation and final scope qualification remain open; no Gate F acceptance is requested for this subpackage alone.
|
||||
|
||||
Native baseline/red/green/parent reports and source manifest are in evidence/ai-context. Red run:4 failed,4 passed,15 intentionally excluded by test-name filter. Final complete section suite23 passed,zero failed/pending; parent59 passed. Rollback reverts the effect-dependency change; no database/data rollback.
|
||||
@@ -0,0 +1,11 @@
|
||||
# A3-IM08 publication and owner acceptance
|
||||
|
||||
3 November 2026. Implementation `e2327c1fa2ceaf785d4058c802bafe0d3428c235` on `codex/a3-ui-08` is published and independently remotely verified. Earlier section-context fix `a88310481fbfa7701478043e8bf192ee45c7c28e` is also published/verified. Validation: `AI_SETTINGS_VALIDATION.md`;131 distinct frontend cases/eight suites,68 local backend cases,96 scoped accessibility scans/captures and16 controlled journeys. Capture refreshes, pilots and independent review overlap those totals.
|
||||
|
||||
Owner explicitly answered **"Approve IM08 and A3-IM09"**. IM08 Gate F is ACCEPTED; do not repeat. This approval was given with two disclosed open gaps: no per-user Ghosted-processing pause in the six-number rules contract, and mounted entitlement presentation requiring a full reload after saving AI preferences. Backend enforcement remains authoritative. Neither gap is silently closed by milestone acceptance.
|
||||
|
||||
Next authorised scope: IM09 account/security/session/connections/data controls and administration/processing presentation. Preserve authentication/recovery/RBAC/owner boundaries, last-admin/self restrictions, task-state permissions, safe diagnostics and explicit export/delete confirmation. No actual deletion for visual verification, production operation, live model or provider activation.
|
||||
|
||||
Independent attachment-size localisation `1ce93ca0e3a906673e636e56f1b910756ca78bb2` on `codex/i18n-attachment-sizes` is published/remotely verified;61 affected tests, types/scoped lint/build and static review passed. Its seven committed source/evidence hashes match. Keep that delta isolated until reconciled against the newer application baseline; do not merge its older tree wholesale.
|
||||
|
||||
Full Phase10, European localisation, Product Review/Global Jobs dependencies, final integrated security/recovery/native/provider/release qualification remain open. No orchestrator/pre-P10 changes, main merge or production deployment.
|
||||
@@ -0,0 +1,31 @@
|
||||
# A3-IM08 AI and automation validation
|
||||
|
||||
3 November 2026. Owner approved **"Approve calendar/documents/mail and A3-IM08"**. Isolated `codex/a3-ui-08` starts at accepted IM07 `fba80ef346bc021e675024638dacf9ccef7243db`, with published acceptance receipt `e5a979386d6377138e7ea7fd44958adb22838886`. First bounded context fix `a88310481fbfa7701478043e8bf192ee45c7c28e` is published and independently remotely verified. Its immutable source/evidence record remains `AI_CONTEXT_VALIDATION.md` at that commit.
|
||||
|
||||
## Result and preservation
|
||||
|
||||
Settings now has an Automation entry on desktop and mobile, using existing notification preference state and its explicit Save action. Its email-reminder switch is the same persisted preference shown in Notifications; changing sections preserves drafts. Links lead to AI privacy/usage, follow-up thresholds and individual saved-search alerts. Keyboard activation of the AI link focuses the existing settings group. Existing numeric section values and routes remain stable.
|
||||
|
||||
The copy follows actual service contracts: optional email delivery checks roughly every six hours, confirmed account address, at most one email per application per day. Six day thresholds influence reminders and optional Ghosted status processing; they are not pause switches. Per-search alerts and AI privacy have their existing owners. No workers, providers or backlog orchestration were activated or configured.
|
||||
|
||||
Section AI proposals now invalidate when context or section name changes, for pending responses and displayed reviews. Whole-document proposals now invalidate when output language changes, without generating again or applying the old result. A Pro account without AI entitlement sees manual-editing guidance and a Settings link instead of an upgrade prompt. Free-plan upgrade behavior and session dismissal remain intact.
|
||||
|
||||
The existing Career Profile owner, CV null-as-inherit settings, save queue, undo/history, revision preconditions, opaque proposal token and explicit review/apply remain authoritative. UI language stays separate from document output language. No renderer, API, schema, dependency, model configuration or provider permissions changed. Reverting IM08 source commits restores prior presentation; no database rollback is required.
|
||||
|
||||
## Evidence
|
||||
|
||||
- **131 distinct frontend cases across eight suites PASSED**. This is the union of Automation45, whole-document studio60, section assistant23, and notice/catalogue6 with three catalogue cases overlapping Automation45. Reports are under `evidence/ai-settings/frontend` and the published `evidence/ai-context/a3-ai-context-green.json`. Older baseline58, parent59, pilot and independent-review reruns are not extra cases. Studio tests emit existing direct-focus React act warnings; this is not a warning-free test claim.
|
||||
- **68 local backend cases PASSED**, no failures/skips: notification settings, tenant-bound worker fixtures, AI privacy policy, usage metering and CV AI readiness. Native TRX under `evidence/ai-settings/backend`. InMemory/temp SQLite and mocked/captured providers; no MariaDB, model inference, real email or hosted CI qualification.
|
||||
- **16 controlled browser journeys and96 scoped axe scans/captures PASSED**. EN/NB, light/dark,320/390/768/1440. Final report is `evidence/ai-settings/browser/BROWSER.json`; capture refreshes overlap the same cases. Final captures wait for instant scroll-to-top; phones use viewport captures, tablets/desktop full-page captures. Representative phone EN/light and desktop NB/dark images were visually inspected. Six states exercise saved reminder preference, AI preference disabled, manual CV save without inference, proposal review, language-change discard and explicit token apply. Each journey intercepts five mutations and two proposal responses. No canonical-profile write is accepted by the fixture. Actual API/model responses are synthetic; this is not backend end-to-end or semantic AI/translation acceptance.
|
||||
- Typecheck, full ESLint, static-export build and scoped browser-script lint PASSED. One initial import-casing error failed build/typecheck and was corrected to tracked `accountPlan`; subsequent checks passed. Initial browser pilot failed because a Select accessible name includes its value; selector corrected, pilot passed. An earlier unavailable export server and an accidental wrong test-runner invocation are not test evidence; package files are unchanged.
|
||||
- Independent source review found the same import-casing issue, corrected before final build. No remaining findings in shared drafts/save guards, AI focus, entitlement presentation or language invalidation. Its27 selected tests overlap the131 total. Final harness review found no actionable issues in interception or count assertions. AST-only graph refresh completed; optional SQL parser and symbol-less-file limits remain explicit. Generated graph stays local.
|
||||
|
||||
Red regressions remain available: context/name changes four failures before the fix; document-language one failure; missing Automation contract three failures; paid-plan notice two failures. Filtered cases were not executed in those red runs. Initial capture/pilot reports do not inflate final coverage.
|
||||
|
||||
## Open qualifications and next gate
|
||||
|
||||
Granular user pause for automatic Ghosted status processing is not represented by the existing six-number rules contract. It remains a capability gap; no fake switch or silent schema expansion was introduced. Existing AI preference changes are reflected by server-backed entitlement hydration on a full page reload, as exercised here. The card does not currently refresh the mounted App entitlement context after saving, so internal navigation alone can retain stale presentation until reload; backend enforcement remains authoritative. This existing UX gap is OPEN. Reusing the auth-changed event blindly would set authResolved false and risks unmounting drafts; investigate a safe refresh separately. This increment adds no new session or entitlement authority.
|
||||
|
||||
NOT RUN: live models, semantic output quality, paid/real providers, physical PDF, native device/screen reader, full integrated security, recovery/restore, hosted CI or production checks. Complete European localisation, Phase10 acceptance, Global Jobs dependencies, public launch and release readiness remain open. Root security policy remains on its isolated security branch.
|
||||
|
||||
The approved implementation proposal requires **Gate F: owner milestone review before the next increment**. After final publication/readback, request acceptance of IM08 and progression to IM09 account/session/connections/data/admin/processing presentation, preserving RBAC, owner isolation, last-admin/session safeguards and explicit destructive-action confirmation. No main merge, deployment, live-model activation or additional provider authority is included.
|
||||
@@ -0,0 +1,7 @@
|
||||
# Application-tracking publication and next review
|
||||
|
||||
3 November2026. Implementation `98e9502af5039429fb6da45353e719a27e8aa22d` on codex/a3-ui-04 pushed successfully. Independent remote readback returned that exact hash. Committed manifest verification returned zero mismatches:20 sources and56 evidence files;80 exported assets are separately hashed.
|
||||
|
||||
Owner already accepted dashboard/onboarding and authorised this increment with **"Approve dashboard/onboarding and A3-IM04"**. Do not repeat that decision. Application-tracking Gate F is now pending in this chat, requesting progression to A3-IM05 discovery presentation/filters and permitted saved-search UX. This does not approve new international providers, geography behavior, licensing, live services or release.
|
||||
|
||||
See [qualification](APPLICATIONS_VALIDATION.md), [desktop detail](evidence/applications/browser/detail-en-light-1440.png), [mobile board](evidence/applications/browser/board-nb-dark-320.png). Preserve UI03/UI02 refs and the original integration d3d33837. Independent document-date ca519cac remains on its own branch; do not claim it is integrated here. Other independently eligible roadmap work may continue while this review is pending.
|
||||
@@ -0,0 +1,39 @@
|
||||
# A3-IM04 B1 applications and right context
|
||||
|
||||
3 November2026. Authorised by the owner's exact reply **"Approve dashboard/onboarding and A3-IM04"**. codex/a3-ui-04 starts at accepted dashboard receipt dc93b589, without merging the older design tree. Implementation preserves existing task, data, revision and permission owners.
|
||||
|
||||
## Result
|
||||
|
||||
Table and Board retain shared filters/search/counts, all columns, density, paging, saved views, selection/bulk/trash and precise status controls. Filters now use quiet separators instead of another rounded container; results/board cards follow the D1/B1 foundation. Board's contained horizontal scroller is explicitly named and keyboard-focusable; existing pickup/drop/cancel and exact-status menu remain. No feature/action was removed to match a mockup.
|
||||
|
||||
Full detail puts primary task content left and recorded context right above1000px. Context follows primary content in DOM and stacks below it on narrow/compact-preview layouts. Jump focuses the named context heading; Return focuses the current labelled task panel without route changes. Source/company/location/country/salary/tags and recorded dates remain visible across sections. Existing overview dates move into this shared context; missing dates remain unknown and date-only deadlines remain local calendar dates. Original detail disclosure, description/translation distinction, preparation/next action/activity and every tab/subtab stay available. No new API read/write is introduced.
|
||||
|
||||
Visual review reproduced an existing trust defect: a null nextStep claimed the application was fully prepared despite missing CV/letter data. Two EN/NB tests failed first; the existing message now says no next action is recorded and asks the user to review preparation, with informational severity. It no longer infers readiness from absence of a next action.
|
||||
|
||||
## Evidence and preservation
|
||||
|
||||
| Lane | Result / exact scope |
|
||||
|---|---|
|
||||
| Baseline |62 tests/7 suites PASSED before changes |
|
||||
| Test-first contracts |Two missing-context failures; separately two false-readiness failures reproduced before their fixes |
|
||||
| Final core frontend |69 tests/8 suites PASSED, including new focus/context/readiness cases, table/board/workspace, daily/trust loop and catalogue |
|
||||
| Disjoint writer suites |57 tests/2 suites PASSED: application-assets and edit-job-revision.126 unique selected frontend cases across10 suites; reviewer52 and baseline overlap, never added |
|
||||
| Backend preservation |88 tests PASSED, zero failed/skipped: ApplicationWorkspace, JobQueryParity, Rd21JobPersistence, JobApplicationsAuthorization, JobPipeline, JobApplicationsAppliedDateHistory. InMemory/isolated SQLite and mocked summarizer; no real models/providers or MariaDB |
|
||||
| Typecheck / full lint / build |PASSED on final implementation sources; static export includes the copy correction |
|
||||
| Browser |Actual built React with local synthetic API responses;16 configurations at320/390/768/1440 × EN/NB × light/dark.48 axe scans/captures, zero returned violations.16 search → Board → precise Waiting status → full detail → context jump/return → originating filtered Board journeys |
|
||||
| Writes |16 PATCH status requests explicitly fulfilled by fixtures. Zero unexpected writes/page exceptions; no request reached a real backend. All external requests aborted. This is separate from backend service/controller tests |
|
||||
| Independent review |No actionable findings.52 tests/3 suites passed independently but overlap core69. Native horizontal ArrowRight scroll behavior was not explicitly asserted by the browser verifier |
|
||||
|
||||
Tests retain sorting, page size, optional columns, shared query/view history/membership, saved-view account ownership, partial bulk failures, trash restore, custom statuses, precise menu, keyboard pickup/drop/Escape/focus, dirty-letter/answers navigation, coherent/stale Answers snapshots, legacy documents/correspondence/notes links, aggregate errors/retry, CV source revisions, attachments/history/frozen packages and edit revision conflict behavior. Secondary domain unit tests use controlled components/services; browser journeys above exercise the actual table/board/overview only. They do not establish successful live workflows for every task/document tab.
|
||||
|
||||
Intermediate verification exposed one old date-summary selector after moving that summary into context; corrected to the new named landmark, retaining checks for recorded and unknown dates. Typecheck caught an unsupported testing-library exact option; removed it. Both were resolved before final runs. Baseline/red native reports remain separate from green evidence. Source/evidence manifest binds final sources and exported assets. UI language still does not change source job content or document language.
|
||||
|
||||
## Open qualifications and rollback
|
||||
|
||||
No backend implementation, schema, dependency, route, permissions or revision writer changed. All57 inherited groups/34 route declarations remain; membership is not blanket functional/security acceptance. Canonical Career Profile/CV override/revision/RD21 contracts and physical document renderer remain untouched. No reason to reopen accepted PDF metrics or visuals.
|
||||
|
||||
Rollback this presentation increment on its branch; no data rollback. Existing application records, filters and saved views use the same owners. UI03 agenda compatibility remains documented separately. The independently published document-date patch ca519cac remains separate and is not silently included in these results.
|
||||
|
||||
NOT RUN: MariaDB, real service-backed browser/database end-to-end, hosted CI, native devices/touch/screen-reader/actual zoom, native-language review, licensed providers/live AI, final integrated security or release qualification. Final all-route integrated acceptance remains A3-IM10. Phase10, Product Review overall, Global Jobs, full Europe localisation, homepage and release gates remain open.
|
||||
|
||||
Next: publish/read back this increment, then required owner Gate F before A3-IM05 discovery presentation/permitted saved-search UX. Provider/geography expansion remains governed by the separate Global Jobs prerequisites and rights.
|
||||
@@ -0,0 +1,29 @@
|
||||
# A3-IM07 calendar subpackage — local qualification
|
||||
|
||||
3 November 2026. Owner approved progression to A3-IM07 after UI06. This calendar subpackage is independently implemented and locally qualified; **A3-IM07 remains open** for correspondence/document presentation and combined preservation evidence. No next milestone acceptance is requested yet.
|
||||
|
||||
The existing `/reminders` route now opens a date-level agenda above the unchanged workflow reminders. Agenda is default, with a persisted owner-scoped Month toggle. Upcoming recorded dates precede earlier dates; month selection and native calendar-day buttons retain linked application access. No view action creates a provider event or alters a reminder. Earlier reminder snooze/clear/retry/focus behavior remains with RemindersView.
|
||||
|
||||
Added authenticated `GET /api/calendar/agenda?from=YYYY-MM-DD&to=YYYY-MM-DD` to the existing ApplicationCalendarController. The inclusive range is limited to62 days and translated to an exclusive next-day query boundary. Explicit owner and nondeleted filters precede a narrow projection; company labels also require matching ownership. Deadline-only Saved applications are included even though the reminder attention feed excludes them. The response contains jobApplicationId,jobTitle,companyName,kind(deadline/follow-up),date and unchanged recordedAt. There are no schema, migration, model, writer or provider changes. Existing ICS and consent-scoped provider event endpoints are unchanged.
|
||||
|
||||
Calendar grouping retains the stored date; the view does not convert an unzoned legacy timestamp into an inferred timezone or appointment time. Original recordedAt stays on the time element and linked application. Current data has no interview appointment date and lacks original source precision/timezone metadata; that remains an explicit capability gap. Interviews are not fabricated from stage or note text. Undated work remains in the existing reminder workflow, not a guessed event.
|
||||
|
||||
| Evidence | Result |
|
||||
|---|---|
|
||||
| Baseline |70 existing reminders/calendar/documents/inbox cases across4 suites passed; not additional to overlapping later checks |
|
||||
| New contract red |Backend compilation failed because Agenda/DTO did not exist. Frontend suite could not resolve new component. These are missing-contract red checks, not executed runtime test failures |
|
||||
| Intermediate defect |Initial new month-navigation test failed: shared resource hook requires explicit dependency values, not just a new callback. Supplying from/to deps fixed actual missing month reload; no shared hook behavior changed |
|
||||
| Final frontend |25 selected cases/4 suites passed: new agenda8, existing reminder/calendar preservation and catalogue coverage. Reviewed7-case rerun overlaps and predates final upcoming-order case |
|
||||
| Backend |10 passed, zero failed/skipped. InMemory/isolated SQLite: saved deadlines, raw wall-clock date, inclusive last-day boundary, sibling-owner/deleted/outside exclusion, invalid/oversized ranges, and unchanged provider/ICS contracts. Strict provider mocks prove no calendar-read provider access |
|
||||
| Types/full lint/build |Passed after source fixes. Initial typecheck found unsupported test query options and missing required error title; corrected, not relabelled passing. Final build includes TypeScript validation |
|
||||
| Rendered React |16 configs320/390/768/1440 × EN/NB × light/dark;48 whole-page axe scans/captures, zero violations/overflow/page errors/unexpected writes. Final rerun after upcoming-first order supersedes prior overlapping browser report |
|
||||
| Connected controlled journey |Three occupations; agenda date provenance, month/day selection, next-month empty and previous-month read, persisted view on reload, keyboard-linked deadline to application detail/context. Every API intercepted; no live backend/provider or mutations |
|
||||
| Independent review |No important/critical source findings;7 overlapping frontend cases passed. Awaiting empty state fixed reviewer's test-only act warning; no provider/backend/browser run independently repeated |
|
||||
|
||||
Native frontend/backend/browser evidence and source manifest are under [evidence/calendar](evidence/calendar). Native API tests use the repository SDK at C:\Users\Connor\.dotnet and no restore/network. Browser verifier: `rtk proxy node scripts/verify-a3-calendar.mjs` from job-tracker-ui against static export localhost4338. Pilot/previous-source reports overlap and are not added to totals. Selected browser fixture dates are recorded synthetic dates, never advertised as live appointments.
|
||||
|
||||
Rollback reverts this subpackage; no database/data rollback. Existing route, reminder rules/actions, provider consent, calendar export behavior, Career/CV/letter revisions and frozen package contracts remain. Full Phase10, Product Review, European localisation, Global Jobs, final integrated security and release acceptance remain open.
|
||||
|
||||
NOT RUN: real backend/browser integration, MariaDB, hosted CI, native devices/screen readers/touch/zoom, actual reminder delivery, Google/Outlook live calendar, timezone/precision migration, interview scheduling, final security/release qualification. The existing legacy follow-up export precision/timezone behavior is preserved, not newly qualified by the date-only calendar.
|
||||
|
||||
Next authorised work: narrowly reconcile validated document date patch ca519cac, complete document/inbox connected presentation and preservation checks, then publish complete IM07 evidence for its required Gate F. No provider activation or final UI08 gate is implied.
|
||||
@@ -0,0 +1,11 @@
|
||||
# Career/document publication and next owner gate
|
||||
|
||||
3 November 2026. Implementation `6f801251b0d44e0dfb18365ba3102a3d4d482313` on `codex/a3-ui-06` was pushed successfully. Independent `git ls-remote --heads origin refs/heads/codex/a3-ui-06` returned that exact commit. Committed source/evidence manifest verification matched all26 sources and151 evidence files with zero mismatches;80 static-export assets are separately hashed.
|
||||
|
||||
Local qualification:212 unique selected frontend cases/ten suites and103 isolated backend cases passed; types/full lint/build and final verifier lint/diff check passed. Full16-config browser matrix has96 axe scans; six EN/light boundary/focus configs have36 scans, four configs overlap,108 unique validated screenshots (plus one failed diagnostic PNG). All14 edit targets passed visible/unobscured focus at320/390/768/1000/1001/1440. Deliberate saves are intercepted fixtures only. Independent source review57 passing cases overlaps212; independent verifier review reconciled counts and fixture limits.
|
||||
|
||||
The original A3-IM06 implementation authorisation is satisfied within [CAREER_VALIDATION.md](CAREER_VALIDATION.md)'s scope. Owner then explicitly answered **"Approve Career/CV/letter and A3-IM07"**. Gate F is ACCEPTED; do not ask again. A3-IM07 Calendar/reminders/correspondence/documents is authorised, preserving closing-date provenance/precision/timezones, linked context, ICS/provider consent, attachment previews/downloads and mail conflicts/confirmed-send. Real provider activation remains separate. Earlier UI01–05 approvals remain accepted and must not be repeated.
|
||||
|
||||
Do not treat this as full Phase10, Product Review, European localisation, Global Jobs provider, import-engine, native-device, physical PDF, final integrated security or release acceptance. No main merge/deployment. Independent `ca519cac` date localisation and `de3d5031` security policy remain isolated; no older workstream source was wholesale merged. The generated graph remains local and untracked.
|
||||
|
||||
Next independent eligible candidate while the owner reviews: reproduce and localise fixed-decimal attachment size presentation in the existing attachment owners on the separate localisation branch. Follow the existing number-formatting contract, preserve units/thresholds and unknown/zero semantics, test EN/NB, then reconcile that small patch before any A3 integration. Final integration of completed isolated patches requires combined checks.
|
||||
@@ -0,0 +1,36 @@
|
||||
# A3-IM06 Career Profile and document workflows
|
||||
|
||||
3 November 2026. Owner approved **"Approve discovery and A3-IM06"**. Isolated `codex/a3-ui-06` starts at discovery receipt `027907a80666f7ddd51c848411ceaacec6768f20`. No unrelated workstream was merged. Local qualification is complete within the boundaries below; owner Gate F remains pending. Publication identity is recorded separately in CAREER_PUBLICATION.md.
|
||||
|
||||
Career overview now offers immediate edit actions for all fourteen existing canonical sections. Saved completeness indicators come from the server's existing seven-section assessment; unscored sections invite review, and unsaved drafts hide stale indicators. Editing projects and certifications now reaches every supported field through the existing canonical profile draft and versioned Save. Edits preserve opaque IDs, metadata and sibling facts. No new profile, score, API, schema or writer was introduced.
|
||||
|
||||
CV editing remains left and live preview right above 1000px; 768–1000px stacks both panes, and narrower phones retain the existing edit/preview switch. Cover letters use the same boundaries. Library cards reuse existing translated template labels while retaining unknown legacy IDs. A shared disabled-toolbar tooltip wrapper follows the existing MUI pattern. Renderers, physical document CSS, history/coalescing, autosave queues, conflict handling, null-as-inherit settings, frozen packages and RD21 remain unchanged.
|
||||
|
||||
| Evidence | Result and qualification boundary |
|
||||
|---|---|
|
||||
| Initial baseline |142 tests / seven suites passed before implementation; historical baseline, not added to final total |
|
||||
| Test-first regressions |Canonical project/certification controls, fourteen section edit destinations, tablet CV mode, friendly library names and tablet letter preview reproduced missing behavior before fixes |
|
||||
| Final frontend selection |212 unique selected cases / ten suites passed, zero failed/pending; latest full execution per disjoint suite in `a3-career-final-selection.json` |
|
||||
| Backend preservation |103 passed, zero failed/skipped: CareerProfileServiceTests, CvRevisionReadinessTests, CoverLetterWriterTests, CvBuilderTests; InMemory/temporary SQLite and mocked exporter/summarizer, not MariaDB/live models or physical PDF acceptance |
|
||||
| Types / full lint / production build |Passed after final application changes; final browser harness scoped zero-warning lint and diff check also passed |
|
||||
| Independent review |No actionable source or verifier safety findings.57 cases / three suites independently passed, overlapping212. Separate verifier review independently reconciled browser counts and unavailable fixture reads; browser/backend/build not independently rerun |
|
||||
| Rendered browser matrix |16 configurations:320/390/768/1440 × EN/NB × light/dark;96 whole-page axe scans, zero violations/overflow/page errors/unexpected writes. Six screens per journey:overview,profile,import review,library,CV editor,letter |
|
||||
| Boundary/focus checks |Six EN/light configurations:320/390/768/1000/1001/1440;36 scans, zero violations. All14 direct edit targets have visible/unobscured focus; CV/letter stack through1000 and split at1001. Four configurations overlap the main matrix:108 unique screen/config captures overall, not132 unique cases |
|
||||
| Fixture mutation boundaries |Main matrix48 explicit saves, boundary run18; three per journey:canonical project save preserving IDs/metadata/certifications/raw source, document-only rename preserving settings/version, manual letter save preserving revision precondition. All fulfilled in memory; no real API writes |
|
||||
| Publication |See CAREER_PUBLICATION.md for exact commit/ref and independent readback |
|
||||
|
||||
The broad intermediate frontend run passed152 of153 cases and failed an existing typing-burst undo test. Production history code was unchanged. The test's simulated synchronous burst crossed its real one-second grouping clock under slow rendering. An unchanged isolated rerun passed. The fixture now pins only that simulated burst's clock and restores it in `finally`; a separate regression advances two seconds and requires two undo steps. The complete59-case studio suite then passed. Earlier failed reports remain FAILED, with that suite superseded by the later complete studio execution; totals never add overlapping runs.
|
||||
|
||||
Two early tablet attempts lacked `matchMedia` in JSDOM and are harness failures, not behavioral red evidence. A corrected viewport fixture reproduced the actual old768px mobile-mode behavior. The first browser pilot assumed desktop tabs on phones; the source already uses a mobile selector. The corrected pilot completed six scans and three fixture mutations. A visibility probe initially sampled the mobile selector's exiting invisible modal backdrop; the verifier now waits for unobscured focus rather than weakening application behavior. No source fix was needed for these harness issues.
|
||||
|
||||
Source imports, review/retention/conflict/history and render contracts are covered by selected existing frontend/backend tests; browser import review exercises the legacy pending comparison, low-confidence selection and no Apply. It does not qualify a parser, model or the separately deferred CV-import overhaul. Controlled CV HTML previews are not real exporter output. Prior accepted physical PDF metrics/visual evidence is reused only for unchanged renderer/fixture sources; no fresh PDF or native-language visual acceptance is claimed.
|
||||
|
||||
No production backend, provider, model or source data is accessed by the browser verifier. Every API request is intercepted; unavailable secondary reads are recorded and appear as honest unavailable states (company list, optional thumbnail preview and linked-CV assistance). Deliberate Career Save, CV rename and letter Save are in-memory fixture mutations. All external requests are blocked. Fixed mobile navigation can appear within a full-page scroll capture; screenshots do not establish native-device behavior. Representative mobile320,tablet768,boundary1001 and desktop1440 captures were visually inspected; this is scoped engineering review, not owner/native-language acceptance.
|
||||
|
||||
Native reports, failed attempts, captures and source/evidence manifest are under [evidence/career](evidence/career). There are108 unique validated screen captures plus one FAILED-focus.png diagnostic,109 PNG files total. Frontend aggregate references reports in its own frontend directory. To repeat rendered checks from job-tracker-ui against the built static export on localhost4338: `rtk proxy node scripts/verify-a3-career.mjs`; set `A3_BOUNDARY=1` for the six additional boundary/focus configurations. The pilot is an overlapping diagnostic, never added to the final total. AST-only graphify update passed; missing optional SQL parser and symbol-less file diagnostics remain tool limitations, with no LLM/provider activation.
|
||||
|
||||
Rollback reverts this presentation/control increment on its feature branch; no data/database rollback is required. Version guards and existing conflict recovery remain required. The independent document-date patch `ca519cac` and root security policy `de3d5031` remain separate. All188 historical dynamic translation-call reviews are accounted for; this increment's paired literal EN/NB keys do not complete European localisation.
|
||||
|
||||
NOT RUN: real backend/browser end-to-end, MariaDB, hosted CI, native screen reader/device/touch/zoom, live models/providers, physical PDF rerender, final integrated security/recovery/release. Phase10, Product Review, Global Jobs, European localisation and release acceptance remain open. No main merge or production deployment.
|
||||
|
||||
Next mandatory Gate F: owner review of this published increment before A3-IM07 Calendar/reminders/correspondence/documents. Preserve deadline date precision, consent, existing ICS/export and confirmed-send boundaries. Other independently eligible roadmap work may continue while that decision is pending.
|
||||
@@ -0,0 +1,7 @@
|
||||
# Discovery publication and owner acceptance
|
||||
|
||||
3 November2026. Implementation `c9c6b1abc1f87a907d1e37062cfa5e2ed3fd933c` on codex/a3-ui-05 pushed successfully; independent remote readback matched. Committed source/evidence manifest had zero mismatches (14 sources,54 evidence files;80 exported assets separately hashed).
|
||||
|
||||
Owner then explicitly answered **"Approve discovery and A3-IM06"**. Discovery Gate F is ACCEPTED; do not ask again. Next authorised scope is Career Profile overview, CV library/editor/templates/import review and cover-letter presentation, preserving canonical ownership, editor-left/preview-right, null-as-inherit, undo/save/conflicts/history, frozen packages and RD21. Deferred CV-import engine overhaul remains excluded. This acceptance does not accept Global Jobs provider expansion, Phase10, final integrated security or release readiness.
|
||||
|
||||
See DISCOVERY_VALIDATION.md and UI-05.md for evidence/boundaries. The original integration/UI01–04 refs remain separate. Root security policy de3d5031 and document-date ca519cac remain on their independent branches and are not silently included.
|
||||
@@ -0,0 +1,31 @@
|
||||
# A3-IM05 existing discovery presentation qualification
|
||||
|
||||
3 November2026. Owner explicitly answered **"Approve applications and A3-IM05"**. Branch codex/a3-ui-05 starts at accepted application receipt172074e9. No older design tree or unrelated implementation branch merged.
|
||||
|
||||
Filters and saved searches form a left rail beside a single result list above1000px. Narrow screens preserve filters-before-results DOM order; Jump to results and Return to search filters move focus without requests or route changes. Source coverage explanation is above both columns. Existing query/location fields, sort, saved-search create/run/pause/delete/dismiss, source attribution/provenance/original links, Save-to-tracker route and busy/empty/error/retry owners remain unchanged. Added only three paired EN/NB labels. UI language does not translate source content.
|
||||
|
||||
This is presentation of the existing NAV workflow. No new country, provider, radius, taxonomy, matching or in-app full-description capability was fabricated. Global Jobs' future three-pane authorised-detail experience depends on GJ prerequisites, rights and actual data contracts. GJ-00 planning is separate; GJ-01+ acceptance/provider activation is not implied. Source master and initial planning pack were read at `E:\Storage\Projects\Active\Job tracker\docs\planning\global-jobs-prompts\` because this older integration branch does not contain that pack. The original external source's provider/prerequisite constraints remain intact.
|
||||
|
||||
| Evidence | Result and boundary |
|
||||
|---|---|
|
||||
| Baseline |21 discovery tests passed before edits |
|
||||
| Test-first focus contracts |Two EN/NB missing-landmark failures reproduced before implementation |
|
||||
| Final frontend |32 tests/3 suites passed: discovery23, provider6, catalogue3; reviewer23 and baseline overlap, not additional cases |
|
||||
| Backend preservation |14 passed, zero failures/skips: JobDiscoveryControllerTests, SavedJobSearchSqliteTests, SavedJobSearchAlertTests. Synthetic HTTP handler/FakeDiscovery, InMemory/isolated SQLite; no live NAV/provider request or app worker activation |
|
||||
| Types/full lint/build |Passed; new browser script also passed scoped zero-warning lint |
|
||||
| Built React browser |16 conditions:320/390/768/1440 × EN/NB × light/dark;48 whole-page axe scans, zero violations,48 PNGs |
|
||||
| Connected journeys |All16: initial guidance/no automatic provider search, keyboard jump/return, wide/stack geometry, three-occupation search, save nurse/Oslo query, pause alerts, manual saved run, retained original link, dismiss and separately confirmed deletion |
|
||||
| Mutation boundary |80 explicit requests fulfilled only by in-memory fixtures:16 each create/pause/run/dismiss/delete. Zero unexpected writes/page errors. All external requests aborted; no real backend/provider writes |
|
||||
| Independent review |No actionable findings;23 tests/one suite passed independently, overlapping32. Reviewer did not independently execute browser/backend |
|
||||
|
||||
Native reports/captures and source manifest: [evidence/discovery](evidence/discovery). Browser harness runs from job-tracker-ui: `rtk proxy node scripts/verify-a3-discovery.mjs`, against the static export on localhost4338. Synthetic nurse/teacher/engineer listings are fixtures, never represented as current live search results. Source data remains in its original language even in Bokmål UI.
|
||||
|
||||
Two harness defects were corrected: initial URL used a nonexistent /jobs/discover path instead of /discover; immediate uncheck assumed optimistic switch state. The final verifier clicks the control and waits for the existing backend-acknowledged state. No application behavior was weakened to satisfy either harness issue. Failed attempts are not passing journeys. Fixed bars can appear within full-page scroll captures; native-device layout is not qualified by those captures.
|
||||
|
||||
Existing unit coverage retains sorting/metadata, initial versus empty results, saved-list validation/loading/retry, per-search result boundaries, stale-free request snapshots, failure-retained drafts/toggles/deletion/dismissal, duplicate-start prevention, current-language errors without replay, and explicit mutation recovery. These are controlled contracts; the browser did not repeat every failure path or perform actual Save-to-tracker import.
|
||||
|
||||
No backend/schema/API/dependency/revision writer/route or physical document renderer changes. Existing owner/persistence/right checks stay with their services. Rollback reverts this UI increment; no database or data rollback. The separate ca519cac document-date patch and de3d5031 security policy are not silently combined here.
|
||||
|
||||
NOT RUN: live NAV/commercial providers, MariaDB, real backend/browser end-to-end, hosted CI, native screen-reader/device/touch/actual zoom/native-language review, final integrated security/recovery/release. Complete Product Review, Global Jobs, European localisation and Phase10 remain open. No production/main changes.
|
||||
|
||||
Next protected dependency: publish/remote verify and owner Gate F before A3-IM06 Career overview/CV/letter workflows. Deferred CV-import engine overhaul remains excluded; canonical Career Profile, null-as-inherit settings, undo/save/conflict/history and RD21 must be preserved.
|
||||
@@ -0,0 +1,17 @@
|
||||
# A3-IM04 — B1 applications and persistent right context
|
||||
|
||||
Owner reply3 November 2026: **"Approve dashboard/onboarding and A3-IM04"**. Dashboard implementation c7d26d35 and publication receipt dc93b589 are accepted for progression. Isolated codex/a3-ui-04 starts at dc93b589; no older design-tree merge. A3 frozen design237c79b8 and original five concepts remain unchanged.
|
||||
|
||||
## Bounded implementation plan
|
||||
|
||||
- [x] Baseline62 tests/7 suites passed before edits.
|
||||
- [x] B1 quiet filter/results surfaces and compact board cards through existing MUI owners. Existing density/sort/filter/page/columns/saved views/bulk/trash owners retained.
|
||||
- [x] Persistent right context above1000px; context follows the task in DOM and narrow/compact layouts. Named jump/return controls. Existing dates moved, next action/preparation/activity/details and tabs retained.
|
||||
- [x] Full-page/preview, list return/focus, unsaved guards, source language, precise status menu and revision writers retained. Corrected reproduced unsupported fully-prepared claim when next action is absent.
|
||||
- [x] Test new focus/navigation contract first; final126 selected frontend,88 backend, types/lint/build and16 controlled browser journeys/48 scans/captures passed. Limits in APPLICATIONS_VALIDATION.md.
|
||||
- [x] Independent read-only review: no actionable findings; reviewer52 tests overlap selected totals.
|
||||
- [ ] Final source-bound evidence, coherent commits, publish/remote verify and Gate F before A3-IM05.
|
||||
|
||||
Affected callers: JobTable's jobs/trash/table/board modes; Kanban card/status navigation; ApplicationWorkspace full-page and overlay callers, primary/secondary tabs; shared EN/NB keys/tests/browser fixtures. APIs, persistence, schema, permissions and physical document rendering are unchanged. No provider/model calls, database migrations or dependency changes.
|
||||
|
||||
Rollback: revert this presentation increment on its branch; no data rollback. Do not modify revision writers just to ease fixtures. Remaining breadth must stay OPEN until qualified; baseline tests alone are not complete IM04 or Phase10 acceptance.
|
||||
@@ -0,0 +1,13 @@
|
||||
# A3-IM05 — discovery presentation and existing saved searches
|
||||
|
||||
3 November2026 owner reply: **"Approve applications and A3-IM05"**. Application implementation98e9502a/publication receipt172074e9 accepted for progression. Isolated codex/a3-ui-05 starts at172074e9. No new international provider or geography authorization is inferred.
|
||||
|
||||
## Bounded plan
|
||||
|
||||
- [x] Baseline21 existing discovery tests passed.
|
||||
- [x] Filter/saved-search rail left, result list right above1000px; narrow logical stack and named jump/return focus. Existing source explanation prominent.
|
||||
- [x] All existing handlers/semantics retained; no unsupported provider/country/radius controls or API changes.
|
||||
- [x]32 selected frontend/3 suites,14 mocked-provider/local backend tests, type/lint/build,16 controlled browser journeys/48 scans/captures passed. Independent review found no actionable issue; reviewer23 overlaps32.
|
||||
- [ ] Publish/readback, Gate F before A3-IM06 Career/CV/letter work.
|
||||
|
||||
Callers: JobDiscoveryPage, its EN/NB messages, tests and browser fixtures only. Existing API/data/provider owners retained. Canonical occupation/geography expansion remains Global Jobs work with its own prerequisites and permissions; GJ-01+ is not accepted by a presentation change. Rollback reverts presentation/tests; no migration or data rollback. Preserve source ads and generated-content language distinction.
|
||||
@@ -0,0 +1,21 @@
|
||||
# A3-IM06 — Career Profile and document workflows
|
||||
|
||||
3 November2026. Owner explicitly answered **"Approve discovery and A3-IM06"**. Isolated codex/a3-ui-06 starts at published/independently verified discovery receipt027907a80666f7ddd51c848411ceaacec6768f20. No older design/source tree merged. Root security policy and independent document-date fix remain separate.
|
||||
|
||||
## Scope and work packages
|
||||
|
||||
- [x] Inspect current CareerProfilePage/overview/section owners, CV library/editor/preview and letter presentation. Existing editor already places edit left/preview right and owns queues, conflicts, undo and export; retain these behaviors.
|
||||
- [x] Establish selected Career/import/library/studio/letter baseline; no full-suite/PDF rerun merely for restart.
|
||||
- [x] Career overview: useful section indicators and immediate section edit/focus actions, using existing canonical profile/draft state. Preserve unknown/loading/error states and source-backed overall completeness; do not count skipped setup as complete.
|
||||
- [x] Audit every canonical section against actual editable controls. Initial source shows projects/certifications in StructuredCvProfile but no corresponding CareerProfileSections controls; investigate and close supported UI gaps through the existing revision writer, preserving stable IDs/metadata, or record a precise limitation.
|
||||
- [x] Align studio responsive presentation with approved1000px split contract and existing mobile edit/preview mode; keep focus, controls, template/gallery/history/import review, library actions and letter workflow connected. Refine quiet chrome where needed, not physical document CSS.
|
||||
- [x] Qualify existing import/source/proposed/selected/conflict/retention and letter history/revision behavior. No import-engine overhaul, new schema/API/dependency, provider/model activation or changed renderer metrics.
|
||||
- [x] Fix affected bounded EN/NB display issues without rewriting working terminology. Fixed decimal attachment-size display remains a known candidate, not yet fixed.
|
||||
- [x] Targeted frontend/backend/types/lint/build plus actual React controlled Career/CV/letter journeys, responsive/theme/locale/accessibility checks and independent review. Reuse unchanged accepted physical PDF metrics/visuals; distinguish controlled previews from physical exports.
|
||||
- [ ] Commit/publish/remote verify each coherent package; only request next Gate F after this increment is complete and reviewable. A3-IM07 Calendar/reminders/correspondence/documents still needs that gate.
|
||||
|
||||
Affected callers: CareerProfilePage and CareerWorkspaceOverview/section editors; existing CV library/editor/template/preview and ApplicationCoverLetterSection/Document chrome; their tests and EN/NB catalogue. Canonical state, API writers, revisions and renderers stay in existing owners. Rollback presentation/controls commits on this branch; no database/data rollback. Changes must not silently replace source facts or reset null-as-inherit overrides.
|
||||
|
||||
Source comparison identified current studio compact boundary899.95px while the approved A3 handoff uses1000px. Verify field/preview geometry and focus at the boundary before changing it. The overall milestone remains IN PROGRESS; baseline/reused evidence alone cannot accept it.
|
||||
|
||||
Local qualification:212 unique frontend cases/10 suites,103 backend cases,types/full lint/build,16 controlled browser journeys/96 axe scans plus six boundary journeys/36 scans (four configurations overlap;108 unique captures), independent review57 overlapping cases. Exact evidence and limitations:CAREER_VALIDATION.md. Physical renderer and backend sources unchanged. Gate F before IM07 remains pending.
|
||||
@@ -0,0 +1,20 @@
|
||||
# A3-IM07 Calendar, correspondence and documents
|
||||
|
||||
3 November 2026. Owner explicitly answered **"Approve Career/CV/letter and A3-IM07"**. Isolated `codex/a3-ui-07` starts at accepted/published UI06 receipt19dad316. Approval record7e410e79 is published/remotely verified. UI06 implementation6f801251 and all earlier approvals remain accepted; no repeat gate.
|
||||
|
||||
- [x] Inspect current reminder, calendar/provider, document and inbox owners and approved A3 journeys/coverage.
|
||||
- [x] Establish selected baseline; preserve existing reminder mutation/retry/focus and correspondence/document trust boundaries.
|
||||
- [x] Calendar: agenda first with persisted view-only preference and accessible optional month view; include recorded deadlines even for saved applications missing from attention feed. Keep workflow reminders available, linked context, raw date provenance, unknown-date disclosure, loading/error/retry. Do not derive interview times from stage or assume timezone/precision lost in legacy DateTime storage.
|
||||
- [x] Qualify owner-scoped bounded calendar read and server/local date boundaries, including soft-deleted and sibling-owner exclusion. No schema migration/provider activation/calendar writes needed for calendar display.
|
||||
- [x] Correspondence: quiet inbox/context presentation using current read/draft/send owners; preserve uncertain outcomes/conflicts/explicit confirmed-send and provider permissions. No live send.
|
||||
- [x] Documents: connected library/filter/source/download presentation, preserve URL allowlists, frozen data, private/public state and failures. Reconcile the independently validated ca519cac date patch narrowly before combining it.
|
||||
- [x] Targeted frontend/backend/types/lint/build and controlled rendered EN/NB/themes/widths/focus/accessibility journeys; independent review.
|
||||
- [ ] Publish coherent validated checkpoints, verify remote refs, update evidence and durable handoff. Next mandatory Gate F before A3-IM08.
|
||||
|
||||
Scope reaches existing RemindersView, ApplicationCalendarController, correspondence/document presentation and their tests/fixtures/catalogues/navigation. Existing reminder attention feed excludes deadline-only Saved applications; using it as a complete calendar would silently omit deadlines. Add a narrow bounded read to the existing calendar owner instead of changing the attention feed's meaning or fetching an unbounded full board. Existing calendar ICS/provider exports remain unchanged and require explicit user actions/consent.
|
||||
|
||||
Current JobApplication fields store Deadline/FollowUpAt as nullable DateTime, with no independent interview appointment or original source precision/timezone metadata. Display recorded calendar dates with raw values retained, label the date-level boundary, and do not manufacture appointments. Any later interview scheduling/data-model qualification must be recorded separately. Unknown-date attention remains the existing reminder workflow, not a guessed calendar event.
|
||||
|
||||
Rollback: revert this feature increment; no database/data rollback for presentation and bounded read. Preserve canonical Career Profile, CV/letter history/settings, RD21 and all previous routes. Full roadmap/security/release acceptance remains open.
|
||||
|
||||
Local final qualification:WORKSPACE_VALIDATION.md;108 unique frontend cases/8 suites,52 backend cases,types/lint/build,48 final calendar plus96 document/mail browser scans/captures. Interview scheduling/original date precision-timezone data remains an explicit gap, not fabricated appointments. Initial calendar194e01ed published/remotely verified; complete increment publication/next Gate F pending.
|
||||
@@ -0,0 +1,14 @@
|
||||
# A3-IM08 Contextual AI and Settings automation
|
||||
|
||||
3 November2026. Owner explicitly approved **"Approve calendar/documents/mail and A3-IM08"**. Isolated codex/a3-ui-08 starts at accepted UI07 fba80ef346bc021e675024638dacf9ccef7243db. Acceptance receipt e5a979386d6377138e7ea7fd44958adb22838886 is published and independently remotely verified. No live model activation; application automation controls are distinct from the paused, untouched backlog orchestrator.
|
||||
|
||||
- [x] Inspect SettingsView, rules/notification owners, AI privacy/usage and contextual section-assistant callers.
|
||||
- [x] Initial selected baseline:58 cases/5 suites passed, not blanket AI quality or full roadmap acceptance.
|
||||
- [x] Contextual assistance: context/section-name invalidation published at a8831048; output-language invalidation reproduced and fixed. Manual editing, explicit review/token apply, source/document-language separation and existing quota/consent/failure/retry/close retained.
|
||||
- [x] Settings Automation entry exposes the existing persisted email-reminder switch and links to AI privacy, numeric follow-up thresholds and individual saved-search alerts. Shared drafts and preference writers retained. Service timing/disable limits are explicit; granular Ghosted processing pause remains a data-contract gap, not a fake control.
|
||||
- [x] Scoped EN/NB, responsive/focus/accessibility presentation;131 distinct frontend cases/eight suites,68 local backend cases,16 controlled journeys/96 scoped scans. Types/full lint/build and independent review passed after correcting an import-casing error. Capture reruns overlap, not extra coverage. See AI_SETTINGS_VALIDATION.md.
|
||||
- [ ] Publish validated checkpoints and exact evidence; update durable handoff. Next Gate F before IM09 account/session/connections/admin/processing views.
|
||||
|
||||
Remaining source limitation:rules expose only six integer day thresholds1–365, not independent enable flags; email-follow-up notifications and AI/privacy preferences have actual existing boolean controls. Do not represent thresholds as disable switches or imply a general worker-control API. A Pro account with unavailable AI now receives manual-editing/settings guidance while free-tier upgrade behavior remains intact.
|
||||
|
||||
No schema/dependency/migration planned for presentation and bounded stale-proposal fix. Existing canonical Career Profile, CV/letter history/settings, RD21, per-owner data, quota/consent and server review/apply stay authoritative. Rollback reverts this UI increment; no database rollback. Full integrated AI/security/native/provider/release qualifications remain separate.
|
||||
@@ -0,0 +1,14 @@
|
||||
# A3-IM09 Account and administration
|
||||
|
||||
3 November 2026. Owner explicitly approved **"Approve IM08 and A3-IM09"**. Isolated `codex/a3-ui-09` starts at published/remotely verified acceptance receipt `f0c8c6d321a70b4d477e99c7b9557246b6361cdf`, from implementation `e2327c1fa2ceaf785d4058c802bafe0d3428c235`. No repeat approval required for this scope.
|
||||
|
||||
- [x] Reconcile actual Git state; retain generated graph locally and all prior milestone refs.
|
||||
- [x] Inspect ProfilePage identity/password/providers, existing 2FA/sessions, ConnectedAccountsPage, BackupCard, admin users/audit/system and processing owners.
|
||||
- [x] Account presentation: named section navigation/focus targets, mounted forms and retained drafts, direct data-settings entry without new writers. Identity/Career Profile separation and existing local/external/security/provider actions preserved.
|
||||
- [x] Processing presentation: named filters/results and keyboard jump/return; existing polling/identity/events/permissions retained. Corrected native-label overlap, constrained duration column and a reproduced precommit detail-focus race. Existing admin presentation retained.
|
||||
- [x]143 distinct frontend cases/11 suites,69 local backend cases,128 distinct scoped browser states across16 configurations.112 unchanged states reused plus16 refreshed processing scans;18/19-case reruns overlap, not added. Types/full lint plus affected successor lint/build and independent review passed. See ACCOUNT_ADMIN_VALIDATION.md.
|
||||
- [ ] Commit/publish validated checkpoints, verify remote refs, update durable handoff; Gate F before IM10.
|
||||
|
||||
No API/schema/dependency/migration/model/provider change planned. No real account deletion, security-credential reset, production operation or provider activation for visual verification. Existing confirmations and backend permission checks remain authoritative; fixture tests do not establish live security acceptance. IM08 granular Ghosted pause and mounted AI entitlement-refresh gaps remain OPEN, not silently addressed by this presentation increment.
|
||||
|
||||
Affected callers: /profile, /settings data entry, /admin/processing and existing tests. All existing routes and handlers remain. Rollback reverts the isolated UI increment; no database rollback. Full Phase10, European/local/native/provider, final integrated security/recovery/release gates remain separate.
|
||||
@@ -0,0 +1,9 @@
|
||||
# A3-IM07 publication and owner acceptance
|
||||
|
||||
3 November 2026. Implementation `fba80ef346bc021e675024638dacf9ccef7243db` on `codex/a3-ui-07` was pushed successfully and independently verified by remote ref readback. Committed workspace manifest verification matched all28 sources and169 evidence entries;80 final static-export assets are separately hashed. Earlier calendar subpackage194e01ed was also published/read back; it is not an additional test total.
|
||||
|
||||
Owner then explicitly answered **"Approve calendar/documents/mail and A3-IM08"**. IM07 Gate F is ACCEPTED; do not ask again. Next authorised scope is contextual AI presentation and Settings automation, retaining manual fallback, explicit consent/review/apply, stale-input protections, usage/limits, errors/retry/cancel and accurate per-rule controls. No live model activation or production/provider operation is approved by this UI milestone.
|
||||
|
||||
Evidence: [WORKSPACE_VALIDATION.md](WORKSPACE_VALIDATION.md).108 unique selected frontend cases/eight suites,52 backend cases,144 scoped axe scans/captures,32 controlled journey executions. Browser draft-save/send responses were intercepted fixtures, not real deliveries. Independent reviewer70 plus earlier7 overlap, not extra cases. Actual interview scheduling and original source date precision/timezone metadata remain explicit data-model gaps; owner milestone acceptance does not fabricate those capabilities or waive their qualification.
|
||||
|
||||
Full Phase10/Product Review/Global Jobs/European localisation, physical/native/live-service, final integrated security/recovery/release qualifications remain open. Root security policy de3d5031 remains isolated. No orchestrator use, pre-P10 edit, main merge or production deployment. Feature refs UI01–07 remain preserved; next branch isolates UI08 from this checkpoint.
|
||||
@@ -0,0 +1,33 @@
|
||||
# A3-IM07 Calendar, correspondence and document qualification
|
||||
|
||||
3 November 2026. Owner explicitly approved **"Approve Career/CV/letter and A3-IM07"**. This increment is implemented and locally qualified within the boundaries below. Gate F remains required before A3-IM08. Feature branch `codex/a3-ui-07` preserves prior published UI01–06 refs and original integration baseline; no main merge or production deployment.
|
||||
|
||||
Calendar subpackage `194e01ed7ffbdad6f2e5ac61c88f47628987b337` was published and independently remotely verified. Its committed17-source/61-evidence manifest matched exactly. Current follow-up includes a localised MUI month selector, document and inbox keyboard landmarks, and a narrow integration of independently validated date patch ca519cac. Final publication receipt is recorded separately. The earlier calendar manifest describes immutable checkpoint194e01ed; use the final workspace manifest for current combined sources/evidence.
|
||||
|
||||
Calendar offers agenda first and an optional owner-scoped persisted month view, prioritises upcoming dates, and includes recorded application closing dates even for Saved applications omitted by the attention feed. Existing reminder groups/actions remain below it on `/reminders`. The narrow authenticated calendar read is explicitly owner/nondeleted scoped, inclusive and limited to62 days; it retains original recordedAt and stored calendar day. It does not infer an interview appointment, source precision or timezone missing from legacy data. Existing ICS/provider actions and consent remain unchanged.
|
||||
|
||||
The first rendered Bokmål calendar capture exposed a native month control displaying an English month name in an English-configured browser. The replacement reuses MUI Select and Intl for the selected UI language, with adjacent-month choices and previous/next navigation. A red locale regression preceded the fix; all eight agenda tests and a fresh48-scan browser run pass with exact EN/NB month-label assertions. A verifier lookup initially expected a label-only accessible name; MUI includes its selected value. Corrected that harness lookup and retained the failed attempt; no application behavior was weakened.
|
||||
|
||||
Documents retain existing metadata table/mobile cards, filters, pagination, linked sources, public/private/frozen distinctions, exact source/download allowlists and permission/error recovery. Named filters and Jump/Return move focus without requests. The ca519cac date patch was applied only to DocumentsPage and its ten EN/NB regression cases; both resulting blobs matched the isolated accepted patch before additional focus changes (02f4de2e and64090d7e). It rejects impossible/overflow/trailing-junk unzoned timestamps while preserving fractional-second metadata and wall-clock display. No whole localisation branch was merged.
|
||||
|
||||
Correspondence retains the existing inbox, inline plain-text message read, linked job context, draft editor, provider status, review queue and confirmation owners. Named filters/results include current loading/unlink/empty/detail/pagination notices; jump and return only move focus. Draft conflict/revision, definitive failure/new-attempt, uncertain-result lock, explicit send confirmation, saved draft retention and tenant protections remain unchanged. No external mail was sent.
|
||||
|
||||
| Evidence | Exact result and boundary |
|
||||
|---|---|
|
||||
| Final selected frontend |108 unique cases / eight suites passed, zero failed/pending. Latest complete execution per suite:agenda8,reminders11,calendar actions3,catalogue3,documents33,inbox37,attachments5,file-picker8. Baselines and independent reruns overlap and are not added |
|
||||
| Backend |52 unique cases:calendar10 plus document/inbox/provider/draft/send/attempt preservation42, all passed with zero failed/skipped. InMemory/temporary SQLite, mocked providers; MariaDB SQL composition test does not connect to MariaDB |
|
||||
| Types/lint/build |Passed. Final build's TypeScript validation and scoped verifier lint passed; earlier failed typecheck and failed navigation/month regressions remain failed historical attempts |
|
||||
| Calendar browser |16 configs320/390/768/1440 × EN/NB × light/dark,48 axe scans/captures on final localised month control; zero violations/overflow/page errors/writes |
|
||||
| Documents/mail browser |Same16 configs,96 axe scans/captures:documents,filtered document,inbox,message,send confirmation,uncertain result. Zero violations/overflow/page errors/unexpected writes. Relevant document/inbox sources and fixtures unchanged by subsequent calendar-only selector fix; that evidence is reused, not described as another fresh execution |
|
||||
| Browser total |32 controlled journey executions across two work packages,144 distinct route/state/config captures; no overlapping rerun totals added |
|
||||
| Controlled interactions |Document filter and request-free keyboard jump/return; explicit fixture-file download with verified bytes/name/source URL/raw date metadata. Inbox jump/return, inert script-looking plain text, manual reply, saved draft, confirmation before send, uncertain-result retention and disabled repeat send |
|
||||
| Mutation qualification |32 intercepted requests in the full document/mail matrix:16 draft saves and16 confirmed-send fixtures returning uncertain. Calendar0 writes. All API requests intercepted and all external origins blocked; no real storage/mailbox/OAuth/delivery |
|
||||
| Independent review |No actionable document/inbox source/verifier findings;70 matching frontend cases independently passed, overlapping108. Earlier calendar review covered seven cases before the extra ordering case, overlapping108; browser/backend/build not independently repeated |
|
||||
|
||||
Native suite aggregation is under [evidence/workspace](evidence/workspace); original reports remain under calendar and documents-inbox. Browser scripts are verify-a3-calendar.mjs and verify-a3-documents-inbox.mjs against the actual built React static export on localhost4338. Synthetic provider capability flags are fixtures, not access grants. Native download verifies a controlled text fixture, not licensed files or real storage integrity. Existing attachment preview/file-picker behavior is tested locally; physical PDF rendering is not reopened. Representative320px mobile and1440px Bokmål/dark captures were visually inspected. Fixed navigation can appear within full-page scroll captures; native-device behavior is not thereby accepted.
|
||||
|
||||
Known open capabilities and qualifications: actual interview scheduling and original date precision/timezone migration; current calendar is explicitly date-level. Live Google/Outlook consent/events, real mailbox/delivery/reminder service, real storage/backend-browser integration, MariaDB, hosted CI, native device/screen reader/touch/zoom and native-language review remain NOT RUN. Broader attachment decimal formatting remains an independent localisation candidate. European localisation, full Product Review/Global Jobs, Phase10, recovery, final integrated security and release readiness remain open.
|
||||
|
||||
No schema/dependency/migration or reminder/mail/file writer change in this presentation increment; the calendar read is additive. All existing routes, canonical Career Profile, document settings/history/frozen packages, RD21 and provider rights are retained. Rollback reverts the increment; no database/data rollback is required. Root security policy de3d5031 remains isolated and is not silently merged.
|
||||
|
||||
Next protected gate: owner review of the published IM07 result before A3-IM08 contextual AI presentation and Settings automation. Preserve manual fallback, explicit consent/review/apply, stale inputs, usage/limits, accurate rule controls, errors/retry/cancel. No live model activation follows from that UI gate. Independently eligible localisation/security/release preparation may continue while awaiting the decision.
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"date": "2026-11-03",
|
||||
"branch": "codex/a3-ui-09",
|
||||
"base": "f0c8c6d321a70b4d477e99c7b9557246b6361cdf",
|
||||
"ownerApproval": "Approve IM08 and A3-IM09",
|
||||
"frontend": { "status": "PASSED", "distinctCases": 143, "suites": 11, "union": "Initial stable application-source142 minus18 earlier processing plus19 final processing cases", "focusedReruns": "Five contract cases and intermediate18 processing cases overlap; do not add.", "earlyAttempt": "EARLY-MIXED137 cases135passed2failed is not a clean baseline because regressions were added during execution. No acceptance claim." },
|
||||
"red": { "contracts": "Four expected failures, one default case passed,65 filtered NOT RUN", "focusRace": "One expected failure,18 filtered NOT RUN before moving requested focus after React commit" },
|
||||
"backend": { "status": "PASSED", "cases": 69, "failed": 0, "skipped": 0, "classes": ["UsersControllerTests", "TwoFactorControllerTests", "AuthSessionRevocationTests", "SessionsControllerTests", "AdminProcessingControllerTests", "AccountDataExportTests", "ApiAuthorizationPostureTests"], "environment": "Local mocks/InMemory/temp SQLite; no real account or provider operations. Existing user SDK/DOTNET_ROOT used after system dotnet lacked the pinned SDK; no config changed." },
|
||||
"static": { "typecheck": "PASSED", "fullLint": "PASSED", "finalAffectedLint": "PASSED", "buildIncludingTypecheck": "PASSED", "verifierSyntax": "PASSED", "diffCheck": "PASSED", "initialFailure": "Unsupported exact option in testing-library queries removed; no product behavior change." },
|
||||
"browser": { "status": "PASSED", "distinctConfigurations": 16, "distinctStates": 128, "aggregate": "112 unchanged account/admin states retained from BROWSER plus16 final processing states in PROCESSING", "configuration": "320/390/768/1440 x EN/NB x light/dark", "mutations": 0, "exportRequests": "16 explicit requests intercepted with fixture403", "limitations": "System capture is unavailable state; audit empty. No credential, revoke/delete, reset, provider, model or production operation.", "followups": "Visual defect escaped axe; label/column fixes then actual intermittent focus race reproduced and corrected. Failed selector/focus reports and diagnostic image retained, not accepted final states." },
|
||||
"review": "Independent source, verifier, visual correction and postcommit focus-fix reviews found no remaining actionable findings; no independent rerun totals added.",
|
||||
"notRun": ["Real authentication/OAuth/email/2FA delivery", "MariaDB/hosted CI", "Native devices/screen readers", "Integrated security attack simulation", "Recovery/restore/release/production qualification", "Physical PDF rerun, unaffected renderer"],
|
||||
"remaining": ["Gate F before IM10", "IM08 granular Ghosted pause and mounted AI entitlement refresh gaps", "Full Phase10/European localisation/Global Jobs/launch/security/release qualifications"]
|
||||
}
|
||||
@@ -0,0 +1,278 @@
|
||||
{
|
||||
"base": "f0c8c6d321a70b4d477e99c7b9557246b6361cdf",
|
||||
"policy": "LF-normalised text, raw PNG SHA256",
|
||||
"sources": {
|
||||
"job-tracker-ui/src/views/ProfilePage.tsx": "ef05e15a7d841fb75ebef0e2843b710c38e0c73d317b976e2b1da76a25723439",
|
||||
"job-tracker-ui/src/views/ConnectedAccountsPage.tsx": "09cbe497948cecacacc9e6e1b6c216bb0feb24977afcfe6c3a1ed0c10bd2708e",
|
||||
"job-tracker-ui/src/views/AdminProcessingPage.tsx": "e58d9a86dc937eac291c2d7114b514576b9d38bb6232e8a6a15bfac9b3137304",
|
||||
"job-tracker-ui/src/views/AdminUsersPage.tsx": "ed2377d7e004c78c3274c43d534c0a3db7b3468b2de2fa11210841e2cf31b53a",
|
||||
"job-tracker-ui/src/views/AdminAuditPage.tsx": "a9415d7c759e67079b5db64c05c9cecfe9d062cc5b0532c909261fc064c91343",
|
||||
"job-tracker-ui/src/views/AdminSystemPage.tsx": "64e85d9b13088b5229b6635674e9e6ff9ee6c4a62db7f66accb1dcddcedd16c0",
|
||||
"job-tracker-ui/src/components/SettingsView.tsx": "441e8e6b2aea95233a85fb425f07c7549d4bda3ccea4680fab7e7805a5ff24f8",
|
||||
"job-tracker-ui/src/components/SessionsSettingsCard.tsx": "057397bed9c98131f2913ec597f636af359e6d70984f37216816b0b7b78f5442",
|
||||
"job-tracker-ui/src/components/TwoFactorSettingsCard.tsx": "2945f262db833978a12653e0a155f5e979a8bd39b240ece3991649fc0cde888f",
|
||||
"job-tracker-ui/src/components/BackupCard.tsx": "94178fe3485b6812f1767628b4deb47357a9fa1cc6912d861acf75ebb6a85d89",
|
||||
"job-tracker-ui/src/components/EmailProviderConnections.tsx": "5c5211c49012f6dc77d049e7164dd1f5807c9254e3278c2f47158d7f6209d73d",
|
||||
"job-tracker-ui/src/components/GoogleAuthCard.tsx": "747afc361183bff1c558110eae9e2108d1e0ddb793dc789719623a7f3f38f4df",
|
||||
"job-tracker-ui/src/components/MicrosoftAuthCard.tsx": "36558ba83de1bca2a5b60d55c891c18a0d87ca9795404027e332ea1c67545ca5",
|
||||
"job-tracker-ui/src/App.tsx": "a176e52d81c4b6ded63c5f38cb27e853aa09312f2cc45fc7e5b5e44573e0fef3",
|
||||
"job-tracker-ui/src/auth.ts": "1cbdd59f73c5a961613b2569679f96630cded407974876a4ca8abccf28780b0e",
|
||||
"job-tracker-ui/src/sessionBoundary.ts": "09edca77c98294818d2ad0c409ce595f1b6ca0c1f60419fc1078b70f96f5b7b9",
|
||||
"job-tracker-ui/src/i18n/translations.ts": "d3167487ec82e302bb26c9269b4a79b03a269b85ed8414b11cf38a9bb8f3d0a7",
|
||||
"job-tracker-ui/src/profile-page.test.tsx": "37233ca196062ae91a6dcc9ce7146cc4e242c28ac2836c27c894bdbaec13d86e",
|
||||
"job-tracker-ui/src/account-security-flows.test.tsx": "8ff99509f50342fbb8ada67ec5f646404ac60773f2d72c84b772aca063c7cc8b",
|
||||
"job-tracker-ui/src/account-security-presentation.test.tsx": "12f8fc05eea372c6b1b7d60907f14845a23dcf79b7f44848ad04eb80ae5a0d35",
|
||||
"job-tracker-ui/src/account-providers.test.tsx": "fbb7748829fe01fa33e977a0c77bd8bc5b850a33fb43866a37c81962c090c664",
|
||||
"job-tracker-ui/src/account-data-export.test.tsx": "05e55a62459d7c2c4d04d110e411b25a53786460b13d375bf50b482699e154e5",
|
||||
"job-tracker-ui/src/admin-users-page.test.tsx": "af86966ae40f05115b38bd592ba6f43f6f78c7cdfda14eaa7189c2fded893eeb",
|
||||
"job-tracker-ui/src/admin-audit-page.test.tsx": "45f2a6274f465aa0c2b805d1ef163cee920b806827b2f3199ef7f89d76b1de3f",
|
||||
"job-tracker-ui/src/admin-system-page.test.tsx": "794fc020315dad975453102001b8d2e405dc289f020d5b817c4dc4d7c970a60c",
|
||||
"job-tracker-ui/src/admin-processing-page.test.tsx": "e6cb36eaa4d1a245f4f3ec1cad59395aed458cf5d655bf326e48d93aa0637391",
|
||||
"job-tracker-ui/src/settings-view.test.tsx": "819ff890e95bd3ee4ca5d696adccecce6b423c768df98f98c62644d546a48576",
|
||||
"job-tracker-ui/src/translation-catalogue.test.ts": "f20e8099f2c4dda76574ea3ed1e95b743eef5da82507d7cbc3f9925d52356b98",
|
||||
"job-tracker-ui/scripts/verify-a3-account-admin.mjs": "2332269be94223a56056a0134067b8fb49de305312c32d0a3d543cb1e0f8ffd3",
|
||||
"job-tracker-ui/package.json": "3745394e406cefa40d30a87e840bccb359be147bac6ffba736e2ae90898a8626",
|
||||
"job-tracker-ui/package-lock.json": "bf31e90d7af03e8af059db2aaf893925b9e8881a30a1688034ed88ef45d4fcab",
|
||||
"docs/ui-modernisation/UI-09.md": "633b384ecccf56e423d3e3fd36876f7ff20fc285bd68378c29216a7289d963df",
|
||||
"docs/ui-modernisation/ACCOUNT_ADMIN_VALIDATION.md": "a0979fe4a707094d2f948d182f883669725a8733233a106eaa0b7235b945c5a4",
|
||||
"global.json": "fd22f0dd0b4266472917812222b4ab513b0986fc303507a2dff7ffbb65e3c461",
|
||||
"JobTrackerApi.Tests/UsersControllerTests.cs": "6af9651f681db19ff8b7e9177b1c45e54d2ae7eec73cd052da493a80c9829ca7",
|
||||
"JobTrackerApi.Tests/TwoFactorControllerTests.cs": "dcd66852eda22f5ad5d9c8c9e59343941801ffa58432a9c2a42bac6050340232",
|
||||
"JobTrackerApi.Tests/AuthSessionRevocationTests.cs": "beb647dbadaa3f006d59737dd974788c28ad88701e0ffd1bfd47a9034e3f2835",
|
||||
"JobTrackerApi.Tests/SessionsControllerTests.cs": "e8c26af41f6194644e75d9c7f981c8f6528bcce1ef51df2c585e05fb22767d98",
|
||||
"JobTrackerApi.Tests/AdminProcessingControllerTests.cs": "61706c6d54cb05a444c969ac757837339b4039b5626f0c1ace2a86aa357af66d",
|
||||
"JobTrackerApi.Tests/AccountDataExportTests.cs": "df70bac7b1c2b43a0cc93082994db05436cb218acae77bbf68e8d91e067c58a0",
|
||||
"JobTrackerApi.Tests/ApiAuthorizationPostureTests.cs": "dc90d52e78e9810a296b4cfddc548f90db93378f4ef97b062bead9e83563b038",
|
||||
"JobTrackerApi/Controllers/UsersController.cs": "038198e3fda32688e7986998bbc3ddbe6777f892b05654c888cf70fd80429c3d",
|
||||
"JobTrackerApi/Controllers/TwoFactorController.cs": "413b95b217bff645bf7240539abee90a22650c54d6b84439ba5f6f58b048b233",
|
||||
"JobTrackerApi/Controllers/SessionsController.cs": "555be479e9be8261ccdfe67a460d006794e23bb00540071f39da9b03621db403",
|
||||
"JobTrackerApi/Controllers/AdminProcessingController.cs": "00d5ffdf2c7e88d5ab73e129ed8cd600d8d2f84bcf5dcb41e348e48f8deb6632"
|
||||
},
|
||||
"evidence": {
|
||||
"backend/a3-account-admin.trx": "b2231a264bab7f46da866f6c0012345843bab8549fa05dac31147eb754ec2d5e",
|
||||
"browser/account-en-dark-1440.png": "312a19684870357e94ae13f363ffd9b6f2f8ff09f6d5da5cc2ca356011257d8d",
|
||||
"browser/account-en-dark-320.png": "e11892c1350738a65f05a24b9ab30a99656df37afadc8cd1bfa5713063b9b6d6",
|
||||
"browser/account-en-dark-390.png": "0f09087ea340bbfd6e6c14626b2a1f817f4a1fa484b490c1f0f4a898c8239d3c",
|
||||
"browser/account-en-dark-768.png": "4ad5b191470a9aebcd21a82d30482f5b3f5f04c9881996c66093517d08013cf9",
|
||||
"browser/account-en-light-1440.png": "f097c8336d09c23a6308a682873bf7a4c150aa261068aaf2ad8e6df62f27ef6d",
|
||||
"browser/account-en-light-320.png": "deb9a9f1396636b2e773d999fea917930f29f85ea93cf827e77acc0774f6fac3",
|
||||
"browser/account-en-light-390.png": "854a103914531126a298378f1f5f2d6f3f15e7516164fc33461a2f305cd9b24f",
|
||||
"browser/account-en-light-768.png": "15a84024a902e58821c9facaca0996fb44dfa5222d6e9b8ea4f798fee3cbfe1f",
|
||||
"browser/account-nb-dark-1440.png": "b2ec47cceb3c7608dfac01f111d3d465a2b9f7a8840b3e899550f1bf64e97e34",
|
||||
"browser/account-nb-dark-320.png": "a97bd892a24356a080a28f283fd208e58337b525df27af0304a90129986bf842",
|
||||
"browser/account-nb-dark-390.png": "27361e6ac1cb2fa508cc455e82faaf586c011667f3007feff5359d04811934dc",
|
||||
"browser/account-nb-dark-768.png": "8dcfbe33f265bbffcbb52002d06c3589c23045550b2687ff4f3df9daf7b82332",
|
||||
"browser/account-nb-light-1440.png": "95b6378311b64650178b3b3c66119c8f045a67e84426c74bb52a0c931ab0a1d9",
|
||||
"browser/account-nb-light-320.png": "0e991de716e1fad299d7a70582f75e32a7f4cc6116086492289d8486a889922f",
|
||||
"browser/account-nb-light-390.png": "1c568a88328087d907472ff3531b3c5b0591a61c33355aeb9786382d5735718d",
|
||||
"browser/account-nb-light-768.png": "37f1cfd7c928e2b7e995878d144e95a1283135500e406afbe92ea4c7a8b03954",
|
||||
"browser/audit-empty-en-dark-1440.png": "f5a064b6748af23c30e346122b897d6bf923f4dda09d609e379116f9c96b3245",
|
||||
"browser/audit-empty-en-dark-320.png": "59deb082162fd39056298cb9328709e4699979b81ff8efae2bf9519a9f59a926",
|
||||
"browser/audit-empty-en-dark-390.png": "bbdfe4f3dccc877ca59433c2bf14cf83b3d32dc1bd15785c2c1cf2cd89bd5cf3",
|
||||
"browser/audit-empty-en-dark-768.png": "3374647e8248d1d9f49c6692adfed87d704d92f0cc1c422ec2a3e82ff262c91f",
|
||||
"browser/audit-empty-en-light-1440.png": "89d374d89c8dcf0957951b07869cb8b668649814f3b9c9100ca254b70edbcdc7",
|
||||
"browser/audit-empty-en-light-320.png": "ab4de07cdcb2535ad8e511e4b53e5e4065bfdb868f978828a098fcee245efbc3",
|
||||
"browser/audit-empty-en-light-390.png": "003c37665e1d1b8ac5835b51f25e077421b17695ed2892c7701aaa996e1bb1f3",
|
||||
"browser/audit-empty-en-light-768.png": "8343544a9ec13bfcfb64c4b153f4c7cddba343ab728940f84b5e1beaf4e6574e",
|
||||
"browser/audit-empty-nb-dark-1440.png": "4f487b80e9a7285acae2304d2aae9a28979418981d5bc39bd291e278a5106282",
|
||||
"browser/audit-empty-nb-dark-320.png": "e5f2fe733209a42ae12949769945446b608b25cf06908858f57ebfdd386ae0ba",
|
||||
"browser/audit-empty-nb-dark-390.png": "ab27ed4a92076caa9368d39926f74a8ad5cf340738afa21d8df33db048acf712",
|
||||
"browser/audit-empty-nb-dark-768.png": "dbb096c95a598e43eb1390ec24ea2310a70454673039da01dac3765b1274d484",
|
||||
"browser/audit-empty-nb-light-1440.png": "66d5bde26ec949c70528a495c4d95ccd2cb2ec149f3c58d2afcce9e353d963ec",
|
||||
"browser/audit-empty-nb-light-320.png": "e6f12ff4e64b7c944296b35488e2ebaa209bfc2bf6d1df7b973035bc836885ce",
|
||||
"browser/audit-empty-nb-light-390.png": "625573ab66f4d5d9d82df43ded61fcc7a46b78a5abdefc36a4395c896f675149",
|
||||
"browser/audit-empty-nb-light-768.png": "c5cb57e8501d68b4003f4a8444b8c2829ff67d52e0db2b37ebdfd45e1c895061",
|
||||
"browser/BROWSER.json": "a429dcc54a7191618d3cd45d82111e7f5bccdfa81a36830197972b067d1e60cc",
|
||||
"browser/connections-en-dark-1440.png": "5833a6e84522fc882fe5d2f68fc37e71d9530b079903917902fc3dbc8de2d1c1",
|
||||
"browser/connections-en-dark-320.png": "73e087e19d82cba08c581d7835207aa19cf8b1f786eb41f6626ca35f4376ead5",
|
||||
"browser/connections-en-dark-390.png": "bb8bbaea133aa56b3317331aefd9d0428af2cf33cdb3da82923f9db3f43e4e4f",
|
||||
"browser/connections-en-dark-768.png": "b6191b87cce449a1219b68cef6fc670aec51f1e240ecaa41ec1779fb81c3e66b",
|
||||
"browser/connections-en-light-1440.png": "ce08652198241065bcf521d2e3a8afa203f81d5b0462619abbe598e7112b0bbb",
|
||||
"browser/connections-en-light-320.png": "1385ebcd14623950c344293ce1b00707637f9ab9d7dc2b03e8dca06ab9c2ca4c",
|
||||
"browser/connections-en-light-390.png": "dc39bc33ac4ab22f147a826f5edd651e619de4fdc88d48967518fed690adcb43",
|
||||
"browser/connections-en-light-768.png": "f33764a3938a503092e357047e5e536a345686a9acd065a4edd33fb297b577c3",
|
||||
"browser/connections-nb-dark-1440.png": "ef40e26345be1548f36cd02625a8ea3e12698514a7dcd766a2e641b275546cd0",
|
||||
"browser/connections-nb-dark-320.png": "3e0aa3dd9ffcaec4d73eda99fb5f55dd4be4530d1e5e66ba479beac0e11d8082",
|
||||
"browser/connections-nb-dark-390.png": "d2bf47d3e2242ab9b77e25ae407b95d027f620003e32c56f5f9f5b895d60aae0",
|
||||
"browser/connections-nb-dark-768.png": "b35ee6e7587a1e81419236825b792dd52dc6d0c2d2713d0222325f8691d52d9d",
|
||||
"browser/connections-nb-light-1440.png": "ed3b23aa9b7351e1f4b78a1802959ab4eb96c0978974ea052d2c97b7b7f28c91",
|
||||
"browser/connections-nb-light-320.png": "71b3cd827b4397fe077c2f5c592d3eb91eb93f5ca6eae91b6537c4c3761162f7",
|
||||
"browser/connections-nb-light-390.png": "a9455e0aa234bd531983c5a2475c9c763ec1750ddfc8dad3b4172fd06a5c60d9",
|
||||
"browser/connections-nb-light-768.png": "c676f6fee7e0d13fa660a842fd518a6539b67987644d3c3609e449f08db224fe",
|
||||
"browser/data-confirmation-en-dark-1440.png": "00593f6a7df481dfe1780a354fd279712b03c656532a442d23ba58567176abb0",
|
||||
"browser/data-confirmation-en-dark-320.png": "ce7ccd2e85b7415a41fb8b46e84c079ce0f18a358f32766807a2e0b7efb8d864",
|
||||
"browser/data-confirmation-en-dark-390.png": "3f228e625a94d64301a2792ba3d510af6ca83860a0895d4445bd4e325e041858",
|
||||
"browser/data-confirmation-en-dark-768.png": "020cb5a6015ee60057d3115da9d18f2ba3f709801dccf052895f57ab4199a5fd",
|
||||
"browser/data-confirmation-en-light-1440.png": "ffb996ae39c64dfde4bef6cedc51b8ab3bac93f1db6fd6075f6764b65892340d",
|
||||
"browser/data-confirmation-en-light-320.png": "9d396778a016291d7bd1cd6c109dd5ed07d17094ca14e06badc7326b4a54e97b",
|
||||
"browser/data-confirmation-en-light-390.png": "7eede982c752be4a72e60656cba17752f09344dc6b19addb4431f0b09835865e",
|
||||
"browser/data-confirmation-en-light-768.png": "57aa98764e7344f54bac2a9b76b94a203e649048429fd0b21ec947c61051af61",
|
||||
"browser/data-confirmation-nb-dark-1440.png": "f539f8e0bf57c97e757262e4ae77a04625d82b13b7d83e6a588326b2f66e9b44",
|
||||
"browser/data-confirmation-nb-dark-320.png": "e01d53f5a416a3396c9e3a08f8eda510492465fb3419070654e01304cecd3266",
|
||||
"browser/data-confirmation-nb-dark-390.png": "0ce246cf1499bddad3cae89b57c86ac259b4ea5881199a3d9abf558c50798299",
|
||||
"browser/data-confirmation-nb-dark-768.png": "097452eb9d99e08a471240cb522ed0cfe432fc080395550efa0a02778d15ef0d",
|
||||
"browser/data-confirmation-nb-light-1440.png": "4624974d46ecbb1a6e49b3ae455ed1dc452a44a45a6bc75f92a96cbac6448839",
|
||||
"browser/data-confirmation-nb-light-320.png": "dcecfc1167e9d2835440a8b51ce6f9d75949b649f1580f5c01286037be3794f3",
|
||||
"browser/data-confirmation-nb-light-390.png": "12a0511b6316002a1b067e931eb6c1710e0e2c25c3d07fa80a870bff331517bc",
|
||||
"browser/data-confirmation-nb-light-768.png": "3ecea84e17f96389c48965f8f535650505d145f341938be46a475e98d2b1f8e6",
|
||||
"browser/DIAGNOSTIC-processing-en-dark-1440.png": "dc097dc658e24b2cc52e98e381c4de9a5dc722fbd47a3ef3cd6a1a3844cb4d33",
|
||||
"browser/last-admin-en-dark-1440.png": "69e18f7ee4ac23b5db2048ac2caa1cd03d884cc5ca348f2fca59384ca9d6ae2b",
|
||||
"browser/last-admin-en-dark-320.png": "9758fdf20bf94cf8c06e60c08a84f89bd1ae3e3e3c93cfeb96bb5138482fce1f",
|
||||
"browser/last-admin-en-dark-390.png": "c4009a35125a3cd3c147589c442505e72556e022b4c8dffb5f47d47fbbac93b8",
|
||||
"browser/last-admin-en-dark-768.png": "f924e1d2ecb55495c4809e925ded6cff917b250953ecb1c60ea3381d16f8b12b",
|
||||
"browser/last-admin-en-light-1440.png": "fcd84ea36ce7f6ecbc4b3a833bfd2fb2042cf3c1950e544075b288fa5b44f0d6",
|
||||
"browser/last-admin-en-light-320.png": "8563406cd5049091242bfcef3de8706fb840b41a25fbb034248cdbee27c0f0d5",
|
||||
"browser/last-admin-en-light-390.png": "2a38b94b67c8a88a49cf7092d7f49e1f483038551c23588401d15e3e534c9917",
|
||||
"browser/last-admin-en-light-768.png": "9a747128a4697e48f0653080e8d92102cc476df0e19ff9d3ea96890e6900391e",
|
||||
"browser/last-admin-nb-dark-1440.png": "0d5b20937b36d106b6b266f1f9fca722b13760723b305faa868632d6eaecd3cb",
|
||||
"browser/last-admin-nb-dark-320.png": "4b5f340ca7498c1f073a6d208c941042a355d2a71606c20fc043e197e2a12c2f",
|
||||
"browser/last-admin-nb-dark-390.png": "16862b263e2d38774e7236285c5d057dc745194315ed38d1fb64c99c12670044",
|
||||
"browser/last-admin-nb-dark-768.png": "71d4151ed9d471487c0e82bf5a9e00e9cc59516e706c86e3dcffbc8a306024ae",
|
||||
"browser/last-admin-nb-light-1440.png": "0db0b99f4afefef2195728534a7859ffb2231cad9aea2f290ea6a4a240656a03",
|
||||
"browser/last-admin-nb-light-320.png": "79fb6979de2663d6e6db124d17011f0b4ba348b3fbbdaa0b0834ed7966a88cba",
|
||||
"browser/last-admin-nb-light-390.png": "b6f26151f802e7fdd75fabe906c1d9b05841cd0c773f2534ed0d2260315c09a4",
|
||||
"browser/last-admin-nb-light-768.png": "622aa1ea4897dc223232bea50fd72a028a1cbdb5d9222ade3336eb83c48b8b1e",
|
||||
"browser/PILOT.json": "f12253c8d625e0d01970af6e2e88e04ac110084a8cf7d3b8f5fb1cee37fac0ab",
|
||||
"browser/processing-detail-en-dark-1440.png": "df8e6b45f22652fba8e9284048eac87862e9b0c194a49f0252968c4966c45d1a",
|
||||
"browser/processing-detail-en-dark-320.png": "409ab47edaaf8616dc38f54d3df414aa7a5b39526cd8e54d35a999f7317656b8",
|
||||
"browser/processing-detail-en-dark-390.png": "5025d103291f6a6e8c3d65687ef26252499bda4312668220ff392570308ba656",
|
||||
"browser/processing-detail-en-dark-768.png": "2a963c520af031ec67062c5350a20657afccd8d46185518f99f3f2a757cbf27b",
|
||||
"browser/processing-detail-en-light-1440.png": "e107f573f14d1193ac8d7539027e9ae4466cead93b114bd363fe3c8dca23373b",
|
||||
"browser/processing-detail-en-light-320.png": "39b2a7d4f571f5f7ddceedb7433c80be8146a6691c2f0c5f8e0385d93328653d",
|
||||
"browser/processing-detail-en-light-390.png": "01a412d2021e03197dbbe0fd1b3e961a365f705c821edd4f91f9200774a6803e",
|
||||
"browser/processing-detail-en-light-768.png": "c998727f22c2a9c9bfe337d144e0a89df7e0588cb9a4bffd5a12e67c3112c9fb",
|
||||
"browser/processing-detail-nb-dark-1440.png": "04fe773bcb0debe4477895a52800ea5649312cf5f9f6b5d69b32764046088ad8",
|
||||
"browser/processing-detail-nb-dark-320.png": "792e92b333611ee02b9dfea5c54f33449b5ed2618d13f77dff91ef36fd518e25",
|
||||
"browser/processing-detail-nb-dark-390.png": "648e2ba2f1dfb6a458131a0a891e09e8147494421c8e58e5c86708b1ea160d8b",
|
||||
"browser/processing-detail-nb-dark-768.png": "1c369b9193a8e22e5e91dd3ffd8688f359be3c5fca414e2bcf91bf0a3fc978af",
|
||||
"browser/processing-detail-nb-light-1440.png": "060eef411e9e726b01240764b9cb6eb013ba8d74420b16a611d49c0c04dcfbe9",
|
||||
"browser/processing-detail-nb-light-320.png": "08cfc058f7084e9ce6987f56d89c2a0e6de613059fdaec91228b0022dfd802de",
|
||||
"browser/processing-detail-nb-light-390.png": "217525914575c5dd83e43ed4f04c7d1e81038255559dd3a91a29b2412e416668",
|
||||
"browser/processing-detail-nb-light-768.png": "e7dcf4c7167a66826103c023ed65882c70e9cd58799075caef4d66b5461e23db",
|
||||
"browser/PROCESSING-FOCUS-FAILURE.json": "a4a4299ca46be25c86e4bd6845ae7a8d54b2c933e580baa1d1d75cbf4f4852e8",
|
||||
"browser/PROCESSING-SELECTOR-FAILURE.json": "222b4ded745c97097372841633c24c33f2f2ae7288a53da51e482de9e74c6b18",
|
||||
"browser/PROCESSING.json": "1f94e9f879e775b0550bf6ab79219fd4068c728e0bd0383b0b6e81cacf76d722",
|
||||
"browser/session-confirmation-en-dark-1440.png": "d4f076ac65e892871de3b77f66e1136a956a13e7ddd6b76271bf3652b551bde5",
|
||||
"browser/session-confirmation-en-dark-320.png": "7cfa5ab5b4b3073ef98502bb6eeef8a87b1e7ab7611f65647f995ea71bc6b6b0",
|
||||
"browser/session-confirmation-en-dark-390.png": "47844007c4a47454fb662c2526abeb630cb23a20b21ce78ed14dbc8033eb56e0",
|
||||
"browser/session-confirmation-en-dark-768.png": "da5681552922f8406548a790e360b5cfe7e7edcff511133c26ad0f1bca3e0877",
|
||||
"browser/session-confirmation-en-light-1440.png": "a28533fd8d56c5351115b6cd1528b61f10d8673e8150ad1cba695394d329b5f7",
|
||||
"browser/session-confirmation-en-light-320.png": "b974599c525fbf15c560cb7de6d63abef494e7d8dd88f146c5dac8bda5aa0222",
|
||||
"browser/session-confirmation-en-light-390.png": "86c35e888d6a5cbdcf965ca62bf22ab7183b790215b56ee867a045b18cc4484c",
|
||||
"browser/session-confirmation-en-light-768.png": "11a662b899b187feb16d1f21b2b25d5d777e894dfbc1be92e9c8b211be734dcf",
|
||||
"browser/session-confirmation-nb-dark-1440.png": "907c377c06520569714a933bf8df4390d59a05382eceae1f81ce6242fe1cbd48",
|
||||
"browser/session-confirmation-nb-dark-320.png": "2ff35e814f11dc13a5d0a3639fa822a9b447b6bf36f3b7b63d76afef6a6b16fd",
|
||||
"browser/session-confirmation-nb-dark-390.png": "2a2a5cc16fcbb5b33b3144ea17592649bf388c6f30f5c2597a2b9eaf46eeccf7",
|
||||
"browser/session-confirmation-nb-dark-768.png": "0d31988dfb055c57781c4494ab8327c1228a7041fcb24132062b07c6153bb433",
|
||||
"browser/session-confirmation-nb-light-1440.png": "26e947c72034b871926c5b36fea9e94bd28564faa3089720bacac17a6a805eba",
|
||||
"browser/session-confirmation-nb-light-320.png": "2f7182dac97e25d3e66f899d9bbec6d541193475be5cba3c3fef6e64d02c6b22",
|
||||
"browser/session-confirmation-nb-light-390.png": "c444040f296e56e39ef3a0ba8764b28e6962c017848d8c1fc2554fbacb3f1050",
|
||||
"browser/session-confirmation-nb-light-768.png": "4d34151694e777658ebc3db248ee8bd89502ecb26259cc3ed0eb883b3fb918a0",
|
||||
"browser/system-unavailable-en-dark-1440.png": "f150be599ab2553150f94031ec37fa78e405cef033948c2f6a4aee7cfe1c01fd",
|
||||
"browser/system-unavailable-en-dark-320.png": "38ad2690ba2b9238df74f4789ceaa6da3cb5f6b202efc747b937552ea4eca89e",
|
||||
"browser/system-unavailable-en-dark-390.png": "7b7f8d83166384382d1463747528d8848ef9732062c3c984c43ac711a162c680",
|
||||
"browser/system-unavailable-en-dark-768.png": "48d061f268576ee0a166c148a34444b462ce46acec3f510211ac0436388a4cf3",
|
||||
"browser/system-unavailable-en-light-1440.png": "db9983b2930ebb1cf6a7f538415fb051a5be126801f572ec75e00626d6c3d4e9",
|
||||
"browser/system-unavailable-en-light-320.png": "e49cf63329d2300e3969d1277acaa9d430fc089cab5e9f65867b34cbd35a56dc",
|
||||
"browser/system-unavailable-en-light-390.png": "5596c9a06b7df55b42aa37cdce4c30029ce2114ab19a2805e6616b82ee6c9270",
|
||||
"browser/system-unavailable-en-light-768.png": "f3190a85526feaedace3e4ad5173f378c5bb0f9f67a41b3dedc737d752da0683",
|
||||
"browser/system-unavailable-nb-dark-1440.png": "aee6c72e72487e8263675e7b058bc381d27d72433c5e686d7363c6b2b39540ca",
|
||||
"browser/system-unavailable-nb-dark-320.png": "b5453f3c4e90879a5ba601fbe7f38baa0769add396db014ec66b28eca0f67291",
|
||||
"browser/system-unavailable-nb-dark-390.png": "45cd536abf4c8bd59c277da58c5c0babf0b40309dd0f92d05340caf8906eb7ad",
|
||||
"browser/system-unavailable-nb-dark-768.png": "83808b28e03773061b840f6e8deb6a781e1ab674aa2012f45d2b4a28fe20b99b",
|
||||
"browser/system-unavailable-nb-light-1440.png": "17d151f3b306d20aa572e171c4c0464426099b6a2341494e8c0f1abf3c68dc72",
|
||||
"browser/system-unavailable-nb-light-320.png": "73de2d08f2be161a1660c1f6b06d20f341ead9aa6d733d693d63c095cfb8b7d1",
|
||||
"browser/system-unavailable-nb-light-390.png": "93787446e12eaef9af49360f787fe42c8eca33b80713338af9a0ddee24a09959",
|
||||
"browser/system-unavailable-nb-light-768.png": "1a03e3f2fd41467b5127cbd6bd168d7ad5ac59435f158acb1bdfbf7b4c9dbd07",
|
||||
"CHECKS.json": "bbbcb6e8f6f06c90647c27a564faceaceb3fb1a7c09b9155ea40348fb214a194",
|
||||
"frontend/a3-account-admin-focused.json": "655c2e2e4324e327ffd06ad3747c0534203ab1042c50230299714bacd501a2ac",
|
||||
"frontend/a3-account-admin-red.json": "20de17c1d8b4453e892488e812fc70dd62767244c78e5480bb5b17d37e7bb8b5",
|
||||
"frontend/a3-account-admin-tests.json": "c8388116b5ad8ddc47076622a4853c40916bff46308438a6d338850f6581bf37",
|
||||
"frontend/a3-processing-focus-red.json": "49682f344bbebb037d814837bf6cf65faa57b343a398a9eabda891d317024561",
|
||||
"frontend/a3-processing-focus-tests.json": "8bbfb741f03305423ae97f0b1b64586b6e94e1da94763c546ad93a8fa68f36d7",
|
||||
"frontend/a3-processing-visual-followup.json": "f5435a0d1cc63548af5870b7ebd234c0f1bf60a3b115089bfa086f43c29d4ed0",
|
||||
"frontend/EARLY-MIXED.json": "a5ebe1f73555605b16deaeed363c3dea906d24652b737a3e931f4311ccace25e"
|
||||
},
|
||||
"export": {
|
||||
"404.html": "954109e56c1cd08c8bf77822b01d4106a1ca1f47c859b27b56d4601750a0ee07",
|
||||
"__next.__PAGE__.txt": "e14c09bd8d4d294073a560d7684b64ef26286466166e42f85704c74d59898fd8",
|
||||
"__next._full.txt": "7da037b1ca24971bc461e03de6e9391e21dd6d554db4c4cf8cdf21297b3ea988",
|
||||
"__next._tree.txt": "47a1866d6447fc675e909b4374ac830a3760f0695a1123e39cf468fd2077e792",
|
||||
"_next/static/chunks/0-_aq6ipzcshj.js": "39f90c215bf52aef6274ed3dcc0f8af32e21a37fe8845b3bca0d6ea60da6a8c2",
|
||||
"_next/static/chunks/0ah1fzqmie05a.js": "5c65505a7dcbac63ac71d254e619a4c800943bfb4fa16cd40c10cdbe7e9b6e31",
|
||||
"_next/static/chunks/0bdt7ln111t48.js": "6184b1a61f22e2a640c17941634fdc75678ce93d142848d9f07f163e0d1fd201",
|
||||
"_next/static/chunks/0bwvt3mysnclc.js": "7705667a1b75812b7833d9c9dff47fe023015e58e382c40f4507d9948c973af4",
|
||||
"_next/static/chunks/0c-j9v44ea4gk.js": "d7e04926724f76dc50b5202522fab3bb553370d040396394e84c342de466512b",
|
||||
"_next/static/chunks/0cz1d0mv5g_q7.js": "0973c1d64c88adc8e3c950410cb58b288f72118d5965b78049438deb8f2f9683",
|
||||
"_next/static/chunks/0gamdsp7ql8cu.js": "f641cd9e2957f5c01234df02211a085f8e8fe2009cf84817e4143f3c477e1dc2",
|
||||
"_next/static/chunks/0h_-smu-bk788.js": "970ef0fa47ce6dfff261c624e08054841b6969b4afc5b0ebfad89126d7543bbc",
|
||||
"_next/static/chunks/0jcvc3qm6-lyk.js": "7c27e1fe373b822adc68c63096a5bf38444ad605b9743f0920271652989c56f1",
|
||||
"_next/static/chunks/0q1wd_b10phzr.js": "307f4a4ed0f1ef2d87b9de51dbcac2382a39aa8bab359994ee7aa41529215b4e",
|
||||
"_next/static/chunks/0q20g9o8x-k8z.js": "3d4d9086985419aa8866b032158196c774acb8bf318f3c8245508c8daa9c5148",
|
||||
"_next/static/chunks/0q_pwu9jxv4-d.js": "42a43b3d7245a413c7c29b4cbe87823037a6dbc637e2e282c92405470e0f575d",
|
||||
"_next/static/chunks/0yg1x7i96lj87.js": "2aad3c0f9e8b7b5a5123a2a439970c49db0be353236e22f9b6eafaaf01328c15",
|
||||
"_next/static/chunks/14-lfugawba2w.js": "6a5780ca3c84d7f130f3c0a14431c85c7a1e799e2645b8c171161dab40a64360",
|
||||
"_next/static/chunks/1435in_k_-dhc.js": "4757476512d5c4dd25f9264a18b304ed4824b23aff1c09e134fcbff21d9c36b6",
|
||||
"_next/static/chunks/145oicobmjvm7.js": "d6bbbdeed1381652dc7412e5ce673a077579ecd5cee8934cb6b533c814098764",
|
||||
"_next/static/chunks/14e7ovj0s3elm.js": "070567dd4d23fb9fa0b9ba132185a697af6578045d43b2b1c7bbb2a1594d935d",
|
||||
"_next/static/chunks/16lfece6cnlln.js": "716363ba044f30b0e70440756b4e5eafa2d25f2e1628e855e3bc4ab9eabee3d3",
|
||||
"_next/static/chunks/19zh-dmyml5oj.js": "2ab304f9b4155cdbac4d22e1b0b56b1c1f775c4bbb3ee93c425e297182bf522e",
|
||||
"_next/static/chunks/1_vy97gdckb4k.js": "93355d018547a26be1b678f43086179f2ad6de3d590b92eda5d7f8f9aaa9ec7f",
|
||||
"_next/static/chunks/1d0xrdyyzw7qc.js": "c11668ff1e152008e0d7b4454af12eb36c97df46a5860938e2eb5d8429b374a8",
|
||||
"_next/static/chunks/1ke8pzecwofrg.css": "32e9ab963ebadebcbe2c68dffb24cfbfc8cc24255ad91b48b7941fc777bf7439",
|
||||
"_next/static/chunks/1m4qrvmbq_fq9.js": "4d36c8ec83dc817f273178dc22f329ab026578075f58de68b6f133bcf911a8a1",
|
||||
"_next/static/chunks/1req80b9jj38r.js": "eee4d2e3789e1215195dba99ad0f09d34f8c83da848322b76054722233e9dae3",
|
||||
"_next/static/chunks/1xn023_28rgzj.js": "4f7f2108d030a48d039930736c92a55710975dddf419fe673f84d92899b1f575",
|
||||
"_next/static/chunks/1xwc-b795syag.css": "f73c002233f931ca14d0ae58815c47ca9f2659f25b1547a6d1fdca12a2a00b3f",
|
||||
"_next/static/chunks/1zi8i6dnxiac_.js": "8aea28bbe6a138e5d4b619429ca71570883a7aee974b86d5a4a746d90f704dbc",
|
||||
"_next/static/chunks/22wx8--1b9tnq.js": "3f7d8e762371262c6a740b4dac21725b424847319afac46055e97074a99ff5f5",
|
||||
"_next/static/chunks/2b2nivoqiaper.js": "f20a0bfbfc4fd335a0e8fa6abf552d24c94a81a2b01690fad1ea088c22fd2086",
|
||||
"_next/static/chunks/2b49wlharl6fd.js": "40619f8a5a03fc7479b0679717b1e5ec0dea0a1944ce77f4ce9d29d2486fdb5c",
|
||||
"_next/static/chunks/2br3ad_-bc7k9.js": "80fa55f7a32db4d743fda36747c36994fde00a0f53f2eb25b2a6d07c6fb97cd7",
|
||||
"_next/static/chunks/2dmc6iqxm14fz.js": "3b20898e0cde315c48d6fd46abd562269bbf73c850528a4be2cfc2b9aa0c8f5e",
|
||||
"_next/static/chunks/2ftgr1rx3r0dw.js": "8866e9ef62ab057bf9923604724edbb463bbdd6dd3fcbf614585f76005874811",
|
||||
"_next/static/chunks/2ghgf2s9b2iou.js": "23d8ff31e2128d0541c1887785fb75885323fea7c5d4f35826513b75c12c2ae3",
|
||||
"_next/static/chunks/2itnratrnd9c5.js": "8be0b191c2d54f7233ebf2f1e169b3bfef680fa93da21c08d8c43b05c3ec174f",
|
||||
"_next/static/chunks/2kpcazmi6n6mk.js": "bea0de681fceff50056bfeccc5d035aff54d20918288051cb64bb259edd250c7",
|
||||
"_next/static/chunks/2s2gjr6ro25dj.js": "7489e2ac285a05b563c2bcb4eaf9274bf930f2a7385f17d6d5e6850064b88b10",
|
||||
"_next/static/chunks/2u5qve004opku.js": "be388d9a6aa423082bafb4584c3facc65ddfed71bcfa5c1d06b097b408c5ff97",
|
||||
"_next/static/chunks/2xkey6z2nw7xp.js": "0f25bf09513b31298148cd262507b20b5a9ca5533317168c16481c544c6ffd6f",
|
||||
"_next/static/chunks/2z42el0b2mp8_.js": "86ff990ef32c90c4839583e4f1d1bcbddb165dad3141b9fcd2ecec67f4ff24b8",
|
||||
"_next/static/chunks/2z9e_b61gtc22.js": "b9d717dad26828438d4ff56cabca41a8055f5eaa54420fd0aeb6b4ba7d5baa0d",
|
||||
"_next/static/chunks/31n24zcvyae0y.js": "110921bad10425af1d689cb939d97be75c7c0af9c35f8b16c5ff237db6fce893",
|
||||
"_next/static/chunks/324qfub45abd6.js": "77ef8e17b89234fb19a80796d5d04d3e297c459e5cb41b35b5bc78c0b10b4984",
|
||||
"_next/static/chunks/32_ah983ce851.js": "0c3cd0d2a5ad789e31226a9ea0506c50016804311a58548c7784b7b45aaecd14",
|
||||
"_next/static/chunks/3329nxgnx3721.js": "ceedc7c69bf0617733b65bbf9f6a682a5d53177d4e8fdb86b8982cda2175f232",
|
||||
"_next/static/chunks/357yqeklh7414.js": "0192ab7198ebbe299d34a934c504dd4b562d1cccebb6e9d4c5163930c881b14c",
|
||||
"_next/static/chunks/3721l8sfm8icl.js": "06b67611b3a93515a375b803b54fe7063c049824f1ebf5c7f7db8701b5091e7c",
|
||||
"_next/static/chunks/3bqn9b34na0b9.js": "f1b8ebcc1b22251c33c9f3a5d11c1f893cad2da2e8744a441e790f7347aa9e73",
|
||||
"_next/static/chunks/3ckk_j5ril9ag.js": "87f631dae7b648d32171e9e05a3e000753ecb54f8d3b86a4401c0e4ab4d73553",
|
||||
"_next/static/chunks/3gkylew_qn7cw.js": "7e6c74c81be0c41ab433e36d65b914f62c48f332922e27f7cc953476f4dd78cb",
|
||||
"_next/static/chunks/3la4obitihzpv.js": "9a5a57b46db389b98f1fd5baa86eba1a360300dae9d1ff3ffeae7bc3378135b9",
|
||||
"_next/static/chunks/3q4v10rrqy40n.js": "d87ff7b7a0f07d0d92eab3876481eb686a12d9c43d8b92cbe406aefa227a11c1",
|
||||
"_next/static/chunks/3u61o8t7m_jza.js": "86231c12e0f8cacc8638bed0bc4b34f645fc35e60de342dc154d3cce0c9a5afa",
|
||||
"_next/static/chunks/3vu8rhjp4sv29.js": "a89673de9ad162f1a7dbb98af4027e67f84502c346abe94fb0341eff22385432",
|
||||
"_next/static/chunks/40y_aqqilokr2.js": "1f5a5260316134d6bffe949400752ee6b42addf908ae714ef4ae4ebde916dddd",
|
||||
"_next/static/chunks/43b5x8qjjh3ax.js": "6ee7261cf9a63e0e6ea181bbb09125e09948588b6e10b5c02727c686a6062a3a",
|
||||
"_next/static/chunks/turbopack-25fzg9ay_1ss-.js": "c40f39e993a30c96d6247bb3a7b581538bb046efe8ef8ec07bea3ba32291750f",
|
||||
"_next/static/k5Uv9-xecPcDM03XeUb81/_buildManifest.js": "9476e0afd3f9da68a64e6ec58631191fd3eaca62c9f5a377e7517fe9a89e59ea",
|
||||
"_next/static/k5Uv9-xecPcDM03XeUb81/_clientMiddlewareManifest.js": "5483e3295dc35dfe29ea932efc85341c916f10ff78ff5b0e965e003710893a4a",
|
||||
"_next/static/k5Uv9-xecPcDM03XeUb81/_ssgManifest.js": "678f6ce2cb80b1fe72fc67e7412be6e2ab6ada083111b64f7c40d35e3cba5e00",
|
||||
"_not-found/__next._full.txt": "381b6b4c6b9fb38cf51eb052390a12a2b25b45e793032d67beee54c88c92881a",
|
||||
"_not-found/__next._not-found/__PAGE__.txt": "76e9f4864f8bd355500a8bae9b077d4f9264678c9fcd6ec88f0809fffa7836e0",
|
||||
"_not-found/__next._tree.txt": "176fea8c3bfee7c85f5f9ee1dece5d2ff6c92cebaa844b73cab1e2267ff1b9f3",
|
||||
"_not-found.html": "954109e56c1cd08c8bf77822b01d4106a1ca1f47c859b27b56d4601750a0ee07",
|
||||
"_not-found.txt": "381b6b4c6b9fb38cf51eb052390a12a2b25b45e793032d67beee54c88c92881a",
|
||||
"favicon.ico": "8d4923e2c487805ea9f852a685b2cf0fb10512ded8290d2a5c37d1cc8fd0702a",
|
||||
"favicon.svg": "63ecf8f37f8bb146ecfae3917187c6b692d4e801641e8a314486a4007912f3a3",
|
||||
"index.html": "29ad9d608dd66506dbf8dc02d24d69afe92ff852644ef68d207cd0da19f52d68",
|
||||
"index.txt": "7da037b1ca24971bc461e03de6e9391e21dd6d554db4c4cf8cdf21297b3ea988",
|
||||
"logo192.png": "bc652031597fabd19b9f14e22a71f809490d218037521b3b64d013418c1390b4",
|
||||
"logo512.png": "5129e9bc1ba812b711fd9a646d3a38a906d365a26ee685df183b8752458944d4",
|
||||
"manifest.json": "2667ce63c2e0835b7007239816a5597639321d333da396a78638dfa9e8a7c935",
|
||||
"mockups/dashboard.svg": "318be3adb1324c26eb30f05572a29528a3e38331c6a604652eef75b54f8c29dc",
|
||||
"mockups/pipeline.svg": "db2ef41faabeb90e7ce85413e168581686c54535d970fc7d8deda3888a479de4",
|
||||
"mockups/workspace.svg": "9bbab22349147c7b01d6e18c93c622a6f8aed6dedaf23715189ab54d60e1ddbd",
|
||||
"robots.txt": "e5ab0d231eeb01b4a982d1c79a6729cac9797ad15a69247e4f28ba6afc149b4c"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,442 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TestRun id="543dd54d-cf92-436a-be12-ed4c316f2a97" name="Connor@CESNIMDA 2026-11-03 19:36:52" runUser="Cesnimda\Connor" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
|
||||
<Times creation="2026-11-03T19:36:52.6655627+01:00" queuing="2026-11-03T19:36:52.6655631+01:00" start="2026-11-03T19:36:48.5720372+01:00" finish="2026-11-03T19:37:04.8480589+01:00" />
|
||||
<TestSettings name="default" id="6b001c56-1ad6-4b64-a5ed-1101ac2bfa36">
|
||||
<Deployment runDeploymentRoot="Connor_CESNIMDA_2026-11-03_19_36_52" />
|
||||
</TestSettings>
|
||||
<Results>
|
||||
<UnitTestResult executionId="8c5b5e3e-6b88-4129-a8c5-25ca8afabb98" testId="811715cd-47a0-c1dd-1dc7-cfb874cd9cb3" testName="JobTrackerApi.Tests.SessionsControllerTests.RevokeOthers_revokes_every_other_session_but_leaves_the_current_one_usable" computerName="CESNIMDA" duration="00:00:00.0117103" startTime="2026-11-03T19:36:53.8272847+01:00" endTime="2026-11-03T19:36:53.8272849+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="8c5b5e3e-6b88-4129-a8c5-25ca8afabb98" />
|
||||
<UnitTestResult executionId="c1890c2a-1eed-4be5-89d8-7f0c88327365" testId="b9e6b511-16dc-188e-b0b4-b3c6d1ea5901" testName="JobTrackerApi.Tests.AdminProcessingControllerTests.Processing_reads_share_a_bounded_account_rate_limit" computerName="CESNIMDA" duration="00:00:00.3704136" startTime="2026-11-03T19:37:00.6851917+01:00" endTime="2026-11-03T19:37:00.6851923+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="c1890c2a-1eed-4be5-89d8-7f0c88327365" />
|
||||
<UnitTestResult executionId="8b6dc4f2-d2f0-4c59-8f6c-fbf894a521fa" testId="4bd6fee0-c227-757a-f276-68c01ee512d8" testName="JobTrackerApi.Tests.AdminProcessingControllerTests.Diagnostic_filters_are_applied_before_pagination(query: "jobId=9999")" computerName="CESNIMDA" duration="00:00:00.3216283" startTime="2026-11-03T19:36:56.8166972+01:00" endTime="2026-11-03T19:36:56.8166976+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="8b6dc4f2-d2f0-4c59-8f6c-fbf894a521fa" />
|
||||
<UnitTestResult executionId="53b236b9-1f0c-4bda-97ce-560f2dbfc641" testId="4d32ba02-105a-512c-8d73-cbe2ab1e1f04" testName="JobTrackerApi.Tests.AdminProcessingControllerTests.Diagnostic_filters_are_applied_before_pagination(query: "worker=untracked")" computerName="CESNIMDA" duration="00:00:00.3266894" startTime="2026-11-03T19:36:57.5248514+01:00" endTime="2026-11-03T19:36:57.5248521+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="53b236b9-1f0c-4bda-97ce-560f2dbfc641" />
|
||||
<UnitTestResult executionId="09151881-21d2-4326-a43c-38d379aa90e7" testId="60b6bfd7-91ef-c23f-ffe4-217e3ea1388b" testName="JobTrackerApi.Tests.UsersControllerTests.List_marks_the_current_user_and_last_admin_safety_state" computerName="CESNIMDA" duration="00:00:00.9463192" startTime="2026-11-03T19:36:51.9790630+01:00" endTime="2026-11-03T19:36:51.9790637+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="09151881-21d2-4326-a43c-38d379aa90e7" />
|
||||
<UnitTestResult executionId="3d166b11-e5e4-48d8-aff2-05762ae9560d" testId="f4f25456-ee0d-29ca-3483-47a23d62bba6" testName="JobTrackerApi.Tests.ApiAuthorizationPostureTests.Admin_controllers_require_the_admin_role_not_merely_a_signed_in_user" computerName="CESNIMDA" duration="00:00:00.0032809" startTime="2026-11-03T19:36:51.9436670+01:00" endTime="2026-11-03T19:36:51.9436674+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="3d166b11-e5e4-48d8-aff2-05762ae9560d" />
|
||||
<UnitTestResult executionId="e41b3484-9519-4aae-8afd-ba9e539f9b27" testId="a55b51f5-22e2-c043-4279-8e10e60d7349" testName="JobTrackerApi.Tests.UsersControllerTests.SetRoles_revokes_existing_sessions_and_trusted_devices_when_roles_change" computerName="CESNIMDA" duration="00:00:00.2886598" startTime="2026-11-03T19:36:54.5532612+01:00" endTime="2026-11-03T19:36:54.5532618+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="e41b3484-9519-4aae-8afd-ba9e539f9b27" />
|
||||
<UnitTestResult executionId="8057b950-194c-4cb1-b1d6-fa7fb2837f9c" testId="d044b79a-5986-914c-d41a-518baadb7963" testName="JobTrackerApi.Tests.AccountDataExportTests.Account_export_requires_a_session_created_within_fifteen_minutes" computerName="CESNIMDA" duration="00:00:03.9819997" startTime="2026-11-03T19:36:55.0148289+01:00" endTime="2026-11-03T19:36:55.0148293+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="8057b950-194c-4cb1-b1d6-fa7fb2837f9c" />
|
||||
<UnitTestResult executionId="44b56b4e-2968-4e4f-8771-6fecc4a150c2" testId="2e1eabfd-4621-c98f-059d-33f191976c67" testName="JobTrackerApi.Tests.SessionsControllerTests.TwoFactor_challenge_creates_a_user_session_row_on_completion" computerName="CESNIMDA" duration="00:00:02.6409119" startTime="2026-11-03T19:36:53.6737842+01:00" endTime="2026-11-03T19:36:53.6737844+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="44b56b4e-2968-4e4f-8771-6fecc4a150c2" />
|
||||
<UnitTestResult executionId="c785d69f-aeb3-4bd6-bf31-588bd0e347c0" testId="1cb270c5-b90d-5d22-75bd-18446f0697ab" testName="JobTrackerApi.Tests.AdminProcessingControllerTests.Failure_metadata_uses_the_recorded_failure_instead_of_later_success(status: "waiting_for_retry")" computerName="CESNIMDA" duration="00:00:00.5119080" startTime="2026-11-03T19:36:55.5173834+01:00" endTime="2026-11-03T19:36:55.5173844+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="c785d69f-aeb3-4bd6-bf31-588bd0e347c0" />
|
||||
<UnitTestResult executionId="5f1168de-b7d8-4e8b-be1f-03dfe64f6085" testId="e559103d-3dbf-ce6f-6174-0323c94be871" testName="JobTrackerApi.Tests.AuthSessionRevocationTests.Session_validator_requires_sid_and_user_to_match_the_same_row" computerName="CESNIMDA" duration="00:00:02.5636693" startTime="2026-11-03T19:36:53.5963423+01:00" endTime="2026-11-03T19:36:53.5963427+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="5f1168de-b7d8-4e8b-be1f-03dfe64f6085" />
|
||||
<UnitTestResult executionId="a62b5fd1-aa95-429a-8fee-84081339fb1b" testId="f94b62f1-217b-7b58-433f-78fa92c3b291" testName="JobTrackerApi.Tests.AdminProcessingControllerTests.Invalid_diagnostic_filters_fail_closed(query: "createdFrom=2026-11-01T00:00:00Z&createdBefore=202"···)" computerName="CESNIMDA" duration="00:00:00.3078795" startTime="2026-11-03T19:37:01.8758221+01:00" endTime="2026-11-03T19:37:01.8758226+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="a62b5fd1-aa95-429a-8fee-84081339fb1b" />
|
||||
<UnitTestResult executionId="af93fd66-4880-4840-b7d2-371f6e3d6797" testId="6e346171-7903-22b0-1ca1-205bad580edd" testName="JobTrackerApi.Tests.AdminProcessingControllerTests.Invalid_diagnostic_filters_fail_closed(query: "failureCode=SECRET")" computerName="CESNIMDA" duration="00:00:00.2430848" startTime="2026-11-03T19:37:02.1193357+01:00" endTime="2026-11-03T19:37:02.1193364+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="af93fd66-4880-4840-b7d2-371f6e3d6797" />
|
||||
<UnitTestResult executionId="c17a1d3a-1698-4320-95b3-38b12c1b2d14" testId="3703cdc9-1200-4a8e-e91b-e5b255b6349a" testName="JobTrackerApi.Tests.AdminProcessingControllerTests.Diagnostic_filters_preserve_actual_owner_relationships(query: "failureCode=processing_failed", expected: 1)" computerName="CESNIMDA" duration="00:00:00.2667201" startTime="2026-11-03T19:36:58.8019569+01:00" endTime="2026-11-03T19:36:58.8019572+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="c17a1d3a-1698-4320-95b3-38b12c1b2d14" />
|
||||
<UnitTestResult executionId="7863527a-1b7f-44eb-8b60-ce4c12257b34" testId="1d05c8f0-b4f5-5979-c2ee-b89fb865b0c0" testName="JobTrackerApi.Tests.UsersControllerTests.Delete_rejects_deleting_the_final_administrator" computerName="CESNIMDA" duration="00:00:00.0061113" startTime="2026-11-03T19:36:54.5595671+01:00" endTime="2026-11-03T19:36:54.5595676+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="7863527a-1b7f-44eb-8b60-ce4c12257b34" />
|
||||
<UnitTestResult executionId="f07d0729-575c-4bb1-a069-3918e64ff780" testId="5e6c8ff2-b0d7-8172-d7f7-7a4377ce492f" testName="JobTrackerApi.Tests.AdminProcessingControllerTests.Processing_routes_require_the_server_administrator_role(identity: "admin", expected: OK)" computerName="CESNIMDA" duration="00:00:00.3603257" startTime="2026-11-03T19:37:03.2897863+01:00" endTime="2026-11-03T19:37:03.2897866+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="f07d0729-575c-4bb1-a069-3918e64ff780" />
|
||||
<UnitTestResult executionId="9e82d083-3bf5-4773-8e1f-e595d4efbe92" testId="d484bbaa-c1ab-50e5-2d49-c179ebefddee" testName="JobTrackerApi.Tests.TwoFactorControllerTests.Challenge_with_valid_totp_code_completes_sign_in" computerName="CESNIMDA" duration="00:00:00.0102180" startTime="2026-11-03T19:36:53.8536816+01:00" endTime="2026-11-03T19:36:53.8536824+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="9e82d083-3bf5-4773-8e1f-e595d4efbe92" />
|
||||
<UnitTestResult executionId="3dff5ee7-9faa-4b5a-acf7-4777bc001f1a" testId="32aacf15-e389-7087-866a-a63f62c5ad1b" testName="JobTrackerApi.Tests.AuthSessionRevocationTests.Logout_best_effort_revokes_an_expired_cookie_without_an_authenticated_principal" computerName="CESNIMDA" duration="00:00:00.0870171" startTime="2026-11-03T19:36:53.9339579+01:00" endTime="2026-11-03T19:36:53.9339584+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="3dff5ee7-9faa-4b5a-acf7-4777bc001f1a" />
|
||||
<UnitTestResult executionId="c6f012e2-8568-450c-b644-5efb722ed7b5" testId="dea07b3b-d253-0f24-49a5-19cddbb41e3d" testName="JobTrackerApi.Tests.AdminProcessingControllerTests.Invalid_diagnostic_filters_fail_closed(query: "jobId=-1")" computerName="CESNIMDA" duration="00:00:00.2417380" startTime="2026-11-03T19:37:02.3614912+01:00" endTime="2026-11-03T19:37:02.3614914+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="c6f012e2-8568-450c-b644-5efb722ed7b5" />
|
||||
<UnitTestResult executionId="d5557621-d57e-4b3e-a628-b4afcfac8399" testId="779e2ed4-8fe8-b1c3-9d65-a1c3f97de65f" testName="JobTrackerApi.Tests.AccountDataExportTests.Readable_zip_is_complete_checksummed_owner_isolated_and_redacted" computerName="CESNIMDA" duration="00:00:00.8616868" startTime="2026-11-03T19:36:55.8777801+01:00" endTime="2026-11-03T19:36:55.8777805+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="d5557621-d57e-4b3e-a628-b4afcfac8399" />
|
||||
<UnitTestResult executionId="2fb373cf-32dc-490e-975b-c723417802a2" testId="e371116d-e426-f109-65b7-9aacdf55f26c" testName="JobTrackerApi.Tests.AdminProcessingControllerTests.Diagnostic_filters_are_applied_before_pagination(query: "q=SECRET_CV_CONTENT")" computerName="CESNIMDA" duration="00:00:00.5468021" startTime="2026-11-03T19:36:56.4944496+01:00" endTime="2026-11-03T19:36:56.4944500+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="2fb373cf-32dc-490e-975b-c723417802a2" />
|
||||
<UnitTestResult executionId="90c526e9-4ba8-4357-bc9e-92ac8a0cc141" testId="0a75f3cb-7d09-99b1-2e39-a35c68f98968" testName="JobTrackerApi.Tests.TwoFactorControllerTests.Setup_then_verify_with_correct_code_enables_2fa_and_returns_recovery_codes" computerName="CESNIMDA" duration="00:00:02.5867113" startTime="2026-11-03T19:36:53.6194452+01:00" endTime="2026-11-03T19:36:53.6194465+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="90c526e9-4ba8-4357-bc9e-92ac8a0cc141" />
|
||||
<UnitTestResult executionId="0673d87e-1df5-4b1d-9f14-5729b14a2a09" testId="e7dde882-9dbd-fe9b-1c50-f8b697c75f1a" testName="JobTrackerApi.Tests.ApiAuthorizationPostureTests.Every_action_on_the_mixed_auth_controllers_declares_its_own_intent" computerName="CESNIMDA" duration="00:00:00.0022356" startTime="2026-11-03T19:36:51.9461032+01:00" endTime="2026-11-03T19:36:51.9461036+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="0673d87e-1df5-4b1d-9f14-5729b14a2a09" />
|
||||
<UnitTestResult executionId="2442a86c-a74b-492a-b2dc-8295ca20006c" testId="a6518151-ac5c-524e-92da-8332dad6bdbb" testName="JobTrackerApi.Tests.AccountDataExportTests.Account_export_is_rate_limited" computerName="CESNIMDA" duration="00:00:00.0005130" startTime="2026-11-03T19:36:55.0154403+01:00" endTime="2026-11-03T19:36:55.0154406+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="2442a86c-a74b-492a-b2dc-8295ca20006c" />
|
||||
<UnitTestResult executionId="4971ef52-54d5-47e1-be81-16c72743faad" testId="b8f46cd4-f2a5-f097-e27f-3affe2027882" testName="JobTrackerApi.Tests.SessionsControllerTests.LocalSessionValidator_rejects_a_token_with_no_sid_claim" computerName="CESNIMDA" duration="00:00:00.0006778" startTime="2026-11-03T19:36:53.8388652+01:00" endTime="2026-11-03T19:36:53.8388663+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="4971ef52-54d5-47e1-be81-16c72743faad" />
|
||||
<UnitTestResult executionId="af7588be-4023-41ab-858a-18dfeee9430f" testId="c00a81b0-f7f1-eb06-24f9-4006c08ebd54" testName="JobTrackerApi.Tests.AuthSessionRevocationTests.Password_change_rotates_the_session_and_keeps_only_the_current_trusted_device" computerName="CESNIMDA" duration="00:00:00.0412435" startTime="2026-11-03T19:36:53.8467398+01:00" endTime="2026-11-03T19:36:53.8467401+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="af7588be-4023-41ab-858a-18dfeee9430f" />
|
||||
<UnitTestResult executionId="fa581f3b-7a8c-40bc-831e-d71d7340292b" testId="b069a367-2cbf-d37f-5287-950c362c5164" testName="JobTrackerApi.Tests.SessionsControllerTests.List_returns_only_the_callers_own_active_sessions" computerName="CESNIMDA" duration="00:00:00.0107177" startTime="2026-11-03T19:36:53.8380703+01:00" endTime="2026-11-03T19:36:53.8380709+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="fa581f3b-7a8c-40bc-831e-d71d7340292b" />
|
||||
<UnitTestResult executionId="675dc708-f92a-409c-a447-93b682f82f0d" testId="a567652f-e534-e420-c70b-91c31c5e4264" testName="JobTrackerApi.Tests.SessionsControllerTests.Revoke_enforces_ownership_and_blocks_a_subsequent_request_using_that_sessions_token" computerName="CESNIMDA" duration="00:00:00.0873934" startTime="2026-11-03T19:36:53.8040202+01:00" endTime="2026-11-03T19:36:53.8040205+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="675dc708-f92a-409c-a447-93b682f82f0d" />
|
||||
<UnitTestResult executionId="b9e60944-2f77-4022-858b-86de70f5f944" testId="70049eab-88eb-4514-024e-9b688c008eef" testName="JobTrackerApi.Tests.AdminProcessingControllerTests.Failure_metadata_uses_the_recorded_failure_instead_of_later_success(status: "succeeded")" computerName="CESNIMDA" duration="00:00:03.9670839" startTime="2026-11-03T19:36:55.0038816+01:00" endTime="2026-11-03T19:36:55.0038827+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="b9e60944-2f77-4022-858b-86de70f5f944" />
|
||||
<UnitTestResult executionId="49f5051e-4c27-4e71-9f78-a5eeba8ff22a" testId="816e3003-dfa8-7268-d543-c991372b114d" testName="JobTrackerApi.Tests.TwoFactorControllerTests.Challenge_with_unknown_pending_token_is_rejected" computerName="CESNIMDA" duration="00:00:00.0023758" startTime="2026-11-03T19:36:53.6220052+01:00" endTime="2026-11-03T19:36:53.6220058+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="49f5051e-4c27-4e71-9f78-a5eeba8ff22a" />
|
||||
<UnitTestResult executionId="8f2ff498-3935-4b9d-b20f-2ae8e2eed509" testId="49384e74-fc74-cc87-a819-9b1ba4a72e05" testName="JobTrackerApi.Tests.UsersControllerTests.SetRoles_allows_a_confirmed_self_demotion_when_another_admin_exists" computerName="CESNIMDA" duration="00:00:00.0136384" startTime="2026-11-03T19:36:52.0084065+01:00" endTime="2026-11-03T19:36:52.0084070+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="8f2ff498-3935-4b9d-b20f-2ae8e2eed509" />
|
||||
<UnitTestResult executionId="26714290-6b58-47ca-a025-8bd570c0cadf" testId="1942bf4b-fda0-7b4a-34e9-25989c8770bd" testName="JobTrackerApi.Tests.AdminProcessingControllerTests.Diagnostic_filters_preserve_actual_owner_relationships(query: "q=Owned%20job%20title", expected: 1)" computerName="CESNIMDA" duration="00:00:00.3297992" startTime="2026-11-03T19:36:59.1322854+01:00" endTime="2026-11-03T19:36:59.1322857+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="26714290-6b58-47ca-a025-8bd570c0cadf" />
|
||||
<UnitTestResult executionId="52d2407e-7d30-470b-b900-f29493b00887" testId="369cf2cd-6a6b-3b6b-6836-0b22e26fda39" testName="JobTrackerApi.Tests.AdminProcessingControllerTests.Admin_projection_filters_owners_and_never_returns_raw_processing_contents_or_lease_data" computerName="CESNIMDA" duration="00:00:00.5524532" startTime="2026-11-03T19:37:04.6735728+01:00" endTime="2026-11-03T19:37:04.6735735+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="52d2407e-7d30-470b-b900-f29493b00887" />
|
||||
<UnitTestResult executionId="d94dbadb-25a0-48cd-893c-9d84e01bb11b" testId="5c11c8bf-6b3e-8d84-fbeb-c90b49b4f37a" testName="JobTrackerApi.Tests.SessionsControllerTests.LocalSessionValidator_rejects_an_expired_session" computerName="CESNIMDA" duration="00:00:00.0013845" startTime="2026-11-03T19:36:53.8061644+01:00" endTime="2026-11-03T19:36:53.8061647+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="d94dbadb-25a0-48cd-893c-9d84e01bb11b" />
|
||||
<UnitTestResult executionId="0a874f65-6ae7-4ee7-8a4f-223e0d0599dc" testId="fd2553a8-50d5-ecf3-5513-f884a32acc75" testName="JobTrackerApi.Tests.ApiAuthorizationPostureTests.Every_controller_either_requires_authorization_or_is_listed_as_public" computerName="CESNIMDA" duration="00:00:00.0041425" startTime="2026-11-03T19:36:51.9401736+01:00" endTime="2026-11-03T19:36:51.9401741+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="0a874f65-6ae7-4ee7-8a4f-223e0d0599dc" />
|
||||
<UnitTestResult executionId="2f6a5c02-cb8e-4edb-8900-92090daf4485" testId="9e050f47-50a9-9f5b-1d85-26726f8b830d" testName="JobTrackerApi.Tests.SessionsControllerTests.Register_creates_a_user_session_row_when_it_completes_sign_in" computerName="CESNIMDA" duration="00:00:00.0424825" startTime="2026-11-03T19:36:53.7165126+01:00" endTime="2026-11-03T19:36:53.7165129+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="2f6a5c02-cb8e-4edb-8900-92090daf4485" />
|
||||
<UnitTestResult executionId="c6f5fa23-4595-4491-bcac-eb5cdd06af2c" testId="a7460ecd-2dcf-3c01-9f4f-b564984877a7" testName="JobTrackerApi.Tests.AdminProcessingControllerTests.User_authored_identity_labels_are_bounded_before_admin_projection" computerName="CESNIMDA" duration="00:00:00.3190019" startTime="2026-11-03T19:37:04.1205079+01:00" endTime="2026-11-03T19:37:04.1205095+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="c6f5fa23-4595-4491-bcac-eb5cdd06af2c" />
|
||||
<UnitTestResult executionId="c0a452ce-bc45-4e8f-ac09-573a694a8c3a" testId="39824df1-8c70-de08-b4d5-78902eb85b38" testName="JobTrackerApi.Tests.ApiAuthorizationPostureTests.The_user_owned_controllers_that_used_to_rely_on_the_fallback_policy_are_now_explicit" computerName="CESNIMDA" duration="00:00:00.0073201" startTime="2026-11-03T19:36:51.9356966+01:00" endTime="2026-11-03T19:36:51.9356976+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="c0a452ce-bc45-4e8f-ac09-573a694a8c3a" />
|
||||
<UnitTestResult executionId="660321ca-aa50-4ea3-b4e1-1f48f2a71452" testId="e8ec61a8-3045-28f2-d1c2-1d24f4b43888" testName="JobTrackerApi.Tests.AdminProcessingControllerTests.Diagnostic_filters_preserve_actual_owner_relationships(query: "q=owner%40example.test", expected: 2)" computerName="CESNIMDA" duration="00:00:00.3559378" startTime="2026-11-03T19:36:58.2462469+01:00" endTime="2026-11-03T19:36:58.2462471+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="660321ca-aa50-4ea3-b4e1-1f48f2a71452" />
|
||||
<UnitTestResult executionId="5e3c533a-44fc-4b3b-a915-c3499fdfdfb0" testId="c651e3b0-51fd-2e41-a5cf-eaf4190ef276" testName="JobTrackerApi.Tests.AuthSessionRevocationTests.Password_reset_revokes_all_target_sessions_and_trusted_devices_but_preserves_two_factor" computerName="CESNIMDA" duration="00:00:00.0236876" startTime="2026-11-03T19:36:53.9897337+01:00" endTime="2026-11-03T19:36:53.9897341+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="5e3c533a-44fc-4b3b-a915-c3499fdfdfb0" />
|
||||
<UnitTestResult executionId="edcb9161-3f94-4512-8921-643943599277" testId="84f7e997-d635-149a-68bc-b02e9fcddd2d" testName="JobTrackerApi.Tests.AdminProcessingControllerTests.Diagnostic_filters_preserve_actual_owner_relationships(query: "jobId=2", expected: 1)" computerName="CESNIMDA" duration="00:00:00.3001105" startTime="2026-11-03T19:37:00.3139965+01:00" endTime="2026-11-03T19:37:00.3139971+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="edcb9161-3f94-4512-8921-643943599277" />
|
||||
<UnitTestResult executionId="005e59c9-cf56-40a7-9ca0-f5fb1b26a734" testId="812d5d43-7e52-ce08-7556-5a43f9ffdac0" testName="JobTrackerApi.Tests.AdminProcessingControllerTests.Diagnostic_filters_are_applied_before_pagination(query: "createdFrom=2099-01-01T00:00:00Z")" computerName="CESNIMDA" duration="00:00:00.3643454" startTime="2026-11-03T19:36:57.8897677+01:00" endTime="2026-11-03T19:36:57.8897680+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="005e59c9-cf56-40a7-9ca0-f5fb1b26a734" />
|
||||
<UnitTestResult executionId="50997746-1047-4f14-aa42-76d569e13dec" testId="47c8243a-256a-9cd2-b778-0c1e655f34b2" testName="JobTrackerApi.Tests.AdminProcessingControllerTests.Diagnostic_filters_are_applied_before_pagination(query: "createdBefore=2000-01-01T00:00:00Z")" computerName="CESNIMDA" duration="00:00:00.3805701" startTime="2026-11-03T19:36:57.1976646+01:00" endTime="2026-11-03T19:36:57.1976650+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="50997746-1047-4f14-aa42-76d569e13dec" />
|
||||
<UnitTestResult executionId="770b0203-97ae-4f3f-b374-d925f77327c9" testId="c306a523-edb1-3483-b9d9-2894e7823843" testName="JobTrackerApi.Tests.UsersControllerTests.Delete_never_falls_back_to_identity_only_removal" computerName="CESNIMDA" duration="00:00:00.0153031" startTime="2026-11-03T19:36:51.9945786+01:00" endTime="2026-11-03T19:36:51.9945792+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="770b0203-97ae-4f3f-b374-d925f77327c9" />
|
||||
<UnitTestResult executionId="91b06ee6-1e58-406f-891b-6a22026754b1" testId="a3b89ebc-353f-38b3-04d4-bd41ea0c21b8" testName="JobTrackerApi.Tests.AdminProcessingControllerTests.Processing_routes_require_the_server_administrator_role(identity: "ordinary", expected: Forbidden)" computerName="CESNIMDA" duration="00:00:00.2847856" startTime="2026-11-03T19:37:02.9289500+01:00" endTime="2026-11-03T19:37:02.9289504+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="91b06ee6-1e58-406f-891b-6a22026754b1" />
|
||||
<UnitTestResult executionId="8439b121-1461-45e7-83e6-7e8530b23782" testId="d1bcf14d-0120-eaa5-c023-78fbafc535af" testName="JobTrackerApi.Tests.TwoFactorControllerTests.Disable_with_wrong_password_is_rejected" computerName="CESNIMDA" duration="00:00:00.0059859" startTime="2026-11-03T19:36:53.6283455+01:00" endTime="2026-11-03T19:36:53.6283458+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="8439b121-1461-45e7-83e6-7e8530b23782" />
|
||||
<UnitTestResult executionId="fd40bd80-90d1-42c5-b709-9c28cfba5ac9" testId="7735a82a-1299-2185-0d4a-22577eac5bda" testName="JobTrackerApi.Tests.ApiAuthorizationPostureTests.The_public_cv_controller_stays_anonymous" computerName="CESNIMDA" duration="00:00:00.8924357" startTime="2026-11-03T19:36:51.9284137+01:00" endTime="2026-11-03T19:36:51.9284367+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="fd40bd80-90d1-42c5-b709-9c28cfba5ac9" />
|
||||
<UnitTestResult executionId="8e767f6f-8088-4520-a2ed-1a8e829d6e3e" testId="97ec8920-5827-6f9c-2b63-37a4e888d28f" testName="JobTrackerApi.Tests.SessionsControllerTests.Login_creates_a_user_session_row_and_threads_its_id_into_the_token" computerName="CESNIMDA" duration="00:00:00.0097767" startTime="2026-11-03T19:36:53.8153515+01:00" endTime="2026-11-03T19:36:53.8153518+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="8e767f6f-8088-4520-a2ed-1a8e829d6e3e" />
|
||||
<UnitTestResult executionId="00293cd3-de4b-4cb0-9464-5a1b978346ef" testId="76cd4cee-0aef-5769-359a-4daef2151107" testName="JobTrackerApi.Tests.TwoFactorControllerTests.Challenge_with_recovery_code_consumes_it_and_rejects_reuse" computerName="CESNIMDA" duration="00:00:00.0350139" startTime="2026-11-03T19:36:53.7323012+01:00" endTime="2026-11-03T19:36:53.7323022+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="00293cd3-de4b-4cb0-9464-5a1b978346ef" />
|
||||
<UnitTestResult executionId="77606ebf-a9bd-405a-9c0a-c1835c77d191" testId="a88e9f0f-4d46-d781-b335-cf25a24afff7" testName="JobTrackerApi.Tests.TwoFactorControllerTests.Challenge_without_trust_device_does_not_create_trusted_device" computerName="CESNIMDA" duration="00:00:00.0550789" startTime="2026-11-03T19:36:53.6837105+01:00" endTime="2026-11-03T19:36:53.6837119+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="77606ebf-a9bd-405a-9c0a-c1835c77d191" />
|
||||
<UnitTestResult executionId="4f885c24-4b73-440d-b174-dceba01dab21" testId="aa87bb5b-2b89-868b-47a2-39dc87ec48cf" testName="JobTrackerApi.Tests.UsersControllerTests.SetRoles_rejects_removing_the_final_administrator" computerName="CESNIMDA" duration="00:00:00.0047884" startTime="2026-11-03T19:36:54.2643375+01:00" endTime="2026-11-03T19:36:54.2643381+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="4f885c24-4b73-440d-b174-dceba01dab21" />
|
||||
<UnitTestResult executionId="912d9a9c-160c-44e6-b591-b013030527f2" testId="ba5e704b-ca66-a258-1f80-cf0cc45d1215" testName="JobTrackerApi.Tests.AdminProcessingControllerTests.Event_cursor_is_exact_ordered_bounded_retained_and_redacted" computerName="CESNIMDA" duration="00:00:00.3774026" startTime="2026-11-03T19:37:01.0629170+01:00" endTime="2026-11-03T19:37:01.0629176+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="912d9a9c-160c-44e6-b591-b013030527f2" />
|
||||
<UnitTestResult executionId="e45bff14-e2a8-408d-8e5d-58e709a9d7b3" testId="822738c0-7263-105c-c7a3-7287bfc84f37" testName="JobTrackerApi.Tests.AuthSessionRevocationTests.Session_validator_rejects_an_account_pending_deletion" computerName="CESNIMDA" duration="00:00:00.0021896" startTime="2026-11-03T19:36:53.8034299+01:00" endTime="2026-11-03T19:36:53.8034301+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="e45bff14-e2a8-408d-8e5d-58e709a9d7b3" />
|
||||
<UnitTestResult executionId="92cae6af-55b9-4ea2-8c73-8d65338be663" testId="07351a69-1a47-c2e2-c18a-4769689406b0" testName="JobTrackerApi.Tests.AdminProcessingControllerTests.Missing_failure_history_does_not_turn_success_time_into_failure_evidence" computerName="CESNIMDA" duration="00:00:00.4274655" startTime="2026-11-03T19:36:55.9464906+01:00" endTime="2026-11-03T19:36:55.9464918+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="92cae6af-55b9-4ea2-8c73-8d65338be663" />
|
||||
<UnitTestResult executionId="a151b574-aacc-4c04-bd08-86c6a416f46e" testId="eff0c740-5766-74d7-2b54-9a9d370feaf4" testName="JobTrackerApi.Tests.AdminProcessingControllerTests.Diagnostic_filters_preserve_actual_owner_relationships(query: "createdBefore=2026-10-16T00:00:00Z", expected: 1)" computerName="CESNIMDA" duration="00:00:00.2944771" startTime="2026-11-03T19:36:59.4272807+01:00" endTime="2026-11-03T19:36:59.4272820+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="a151b574-aacc-4c04-bd08-86c6a416f46e" />
|
||||
<UnitTestResult executionId="7ff0a76c-0bb2-4546-b4b3-4d298ed7425c" testId="ac07d402-750e-5b2a-1f18-bdbcfd79741f" testName="JobTrackerApi.Tests.AuthSessionRevocationTests.Logout_revokes_the_exact_session_and_a_copied_principal_stops_working" computerName="CESNIMDA" duration="00:00:00.0317210" startTime="2026-11-03T19:36:53.9660509+01:00" endTime="2026-11-03T19:36:53.9660514+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="7ff0a76c-0bb2-4546-b4b3-4d298ed7425c" />
|
||||
<UnitTestResult executionId="f5a5166e-365c-4c45-8a7a-748a3791d713" testId="74c020c1-6f43-8b47-6887-592371457b96" testName="JobTrackerApi.Tests.AdminProcessingControllerTests.Detail_exposes_import_identity_and_links_only_the_administrators_own_application" computerName="CESNIMDA" duration="00:00:00.5098463" startTime="2026-11-03T19:37:03.8004166+01:00" endTime="2026-11-03T19:37:03.8004169+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="f5a5166e-365c-4c45-8a7a-748a3791d713" />
|
||||
<UnitTestResult executionId="65fcac94-f2bd-4020-a9ff-2ff065aea5a5" testId="96738a1a-a206-81ed-d93b-a35bcdcf8da7" testName="JobTrackerApi.Tests.TwoFactorControllerTests.Trusted_devices_can_be_listed_revoked_and_revoked_in_bulk_scoped_to_owner" computerName="CESNIMDA" duration="00:00:00.0793119" startTime="2026-11-03T19:36:53.8432936+01:00" endTime="2026-11-03T19:36:53.8432939+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="65fcac94-f2bd-4020-a9ff-2ff065aea5a5" />
|
||||
<UnitTestResult executionId="74c74439-6f49-4b64-b8f0-e249bd9b2fc4" testId="d077a711-68af-18dd-b1f4-2f8b79f50253" testName="JobTrackerApi.Tests.AuthSessionRevocationTests.Password_security_stamp_change_invalidates_a_pending_two_factor_challenge" computerName="CESNIMDA" duration="00:00:00.0018044" startTime="2026-11-03T19:36:53.8053580+01:00" endTime="2026-11-03T19:36:53.8053582+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="74c74439-6f49-4b64-b8f0-e249bd9b2fc4" />
|
||||
<UnitTestResult executionId="49d35fbe-08e4-4047-b6eb-9ebd7c31f52f" testId="ba0da408-71da-37ae-bf26-9a719966e64f" testName="JobTrackerApi.Tests.TwoFactorControllerTests.Challenge_with_trust_device_true_creates_trusted_device_and_sets_cookie" computerName="CESNIMDA" duration="00:00:00.0314020" startTime="2026-11-03T19:36:53.7638403+01:00" endTime="2026-11-03T19:36:53.7638407+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="49d35fbe-08e4-4047-b6eb-9ebd7c31f52f" />
|
||||
<UnitTestResult executionId="5947b5fd-69e6-4f36-b18f-0c27c24335e5" testId="51ac4bbe-d7e5-71bc-246b-d1e99716f584" testName="JobTrackerApi.Tests.AdminProcessingControllerTests.Invalid_diagnostic_filters_fail_closed(query: "createdFrom=0001-01-01T00:00:00Z")" computerName="CESNIMDA" duration="00:00:00.2541271" startTime="2026-11-03T19:37:01.5674724+01:00" endTime="2026-11-03T19:37:01.5674727+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="5947b5fd-69e6-4f36-b18f-0c27c24335e5" />
|
||||
<UnitTestResult executionId="4e5bb025-60d0-45e7-b270-13e020c05d42" testId="3a3b5a1e-a289-cbf2-1ddf-19df428ac764" testName="JobTrackerApi.Tests.AuthSessionRevocationTests.Session_validator_rejects_an_unconfirmed_account_when_verification_is_required" computerName="CESNIMDA" duration="00:00:00.2045213" startTime="2026-11-03T19:36:53.8010665+01:00" endTime="2026-11-03T19:36:53.8010668+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="4e5bb025-60d0-45e7-b270-13e020c05d42" />
|
||||
<UnitTestResult executionId="b6c462dd-03c6-4941-9830-3156c8f64ba4" testId="c6411e65-2573-9b0a-b091-546a25c749e9" testName="JobTrackerApi.Tests.AdminProcessingControllerTests.Processing_routes_require_the_server_administrator_role(identity: null, expected: Unauthorized)" computerName="CESNIMDA" duration="00:00:00.2814385" startTime="2026-11-03T19:37:02.6436791+01:00" endTime="2026-11-03T19:37:02.6436795+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="b6c462dd-03c6-4941-9830-3156c8f64ba4" />
|
||||
<UnitTestResult executionId="ff3f55bf-7aa0-496d-b9c4-77f8a3f474f6" testId="32c56667-1720-3596-61ec-a84c2c1a0741" testName="JobTrackerApi.Tests.TwoFactorControllerTests.Verify_setup_with_wrong_code_is_rejected_and_does_not_enable_2fa" computerName="CESNIMDA" duration="00:00:00.0132296" startTime="2026-11-03T19:36:53.6971428+01:00" endTime="2026-11-03T19:36:53.6971431+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="ff3f55bf-7aa0-496d-b9c4-77f8a3f474f6" />
|
||||
<UnitTestResult executionId="6209858e-1d10-4312-a891-f3f728670cdd" testId="cc37b055-0622-5c79-604c-d07a5ef838f8" testName="JobTrackerApi.Tests.AdminProcessingControllerTests.Diagnostic_filters_preserve_actual_owner_relationships(query: "failureCode=timeout", expected: 1)" computerName="CESNIMDA" duration="00:00:00.2881429" startTime="2026-11-03T19:36:58.5348132+01:00" endTime="2026-11-03T19:36:58.5348135+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="6209858e-1d10-4312-a891-f3f728670cdd" />
|
||||
<UnitTestResult executionId="53ae69df-7e0d-40c0-8b71-95be1571fe53" testId="c290d6c2-2e12-8508-613f-1faef3e1e045" testName="JobTrackerApi.Tests.UsersControllerTests.List_uses_a_fixed_number_of_role_queries_for_many_users" computerName="CESNIMDA" duration="00:00:02.2505677" startTime="2026-11-03T19:36:54.2592133+01:00" endTime="2026-11-03T19:36:54.2592153+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="53ae69df-7e0d-40c0-8b71-95be1571fe53" />
|
||||
<UnitTestResult executionId="dbed89d9-76a4-4b5f-889c-275839b4db9c" testId="925a248b-9a4e-193d-bb27-e3e23b1e39da" testName="JobTrackerApi.Tests.AdminProcessingControllerTests.Diagnostic_filters_preserve_actual_owner_relationships(query: "worker=document", expected: 1)" computerName="CESNIMDA" duration="00:00:00.2849883" startTime="2026-11-03T19:36:59.7127430+01:00" endTime="2026-11-03T19:36:59.7127434+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="dbed89d9-76a4-4b5f-889c-275839b4db9c" />
|
||||
<UnitTestResult executionId="b31e76b4-ffa4-4858-8526-4de5c576ff22" testId="44ff09f3-f13f-afad-c8bf-307264ed7dc8" testName="JobTrackerApi.Tests.AdminProcessingControllerTests.Diagnostic_filters_preserve_actual_owner_relationships(query: "worker=ai", expected: 2)" computerName="CESNIMDA" duration="00:00:00.2995010" startTime="2026-11-03T19:37:00.0130282+01:00" endTime="2026-11-03T19:37:00.0130287+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="b31e76b4-ffa4-4858-8526-4de5c576ff22" />
|
||||
<UnitTestResult executionId="6a4b82a9-4269-4ff6-b618-2a55c9ee6453" testId="ee5f8413-131e-d373-5831-cf9def629bf1" testName="JobTrackerApi.Tests.AdminProcessingControllerTests.Invalid_diagnostic_filters_fail_closed(query: "worker=SECRET")" computerName="CESNIMDA" duration="00:00:00.2492636" startTime="2026-11-03T19:37:01.3128713+01:00" endTime="2026-11-03T19:37:01.3128717+01:00" testType="13cdc9d9-ddb5-4fa4-a97d-d965ccfc6d4b" outcome="Passed" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" relativeResultsDirectory="6a4b82a9-4269-4ff6-b618-2a55c9ee6453" />
|
||||
</Results>
|
||||
<TestDefinitions>
|
||||
<UnitTest name="JobTrackerApi.Tests.AdminProcessingControllerTests.Diagnostic_filters_preserve_actual_owner_relationships(query: "jobId=2", expected: 1)" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="84f7e997-d635-149a-68bc-b02e9fcddd2d">
|
||||
<Execution id="edcb9161-3f94-4512-8921-643943599277" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.AdminProcessingControllerTests" name="Diagnostic_filters_preserve_actual_owner_relationships" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.SessionsControllerTests.Login_creates_a_user_session_row_and_threads_its_id_into_the_token" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="97ec8920-5827-6f9c-2b63-37a4e888d28f">
|
||||
<Execution id="8e767f6f-8088-4520-a2ed-1a8e829d6e3e" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.SessionsControllerTests" name="Login_creates_a_user_session_row_and_threads_its_id_into_the_token" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.AccountDataExportTests.Account_export_requires_a_session_created_within_fifteen_minutes" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="d044b79a-5986-914c-d41a-518baadb7963">
|
||||
<Execution id="8057b950-194c-4cb1-b1d6-fa7fb2837f9c" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.AccountDataExportTests" name="Account_export_requires_a_session_created_within_fifteen_minutes" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.AdminProcessingControllerTests.Processing_routes_require_the_server_administrator_role(identity: "admin", expected: OK)" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="5e6c8ff2-b0d7-8172-d7f7-7a4377ce492f">
|
||||
<Execution id="f07d0729-575c-4bb1-a069-3918e64ff780" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.AdminProcessingControllerTests" name="Processing_routes_require_the_server_administrator_role" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.TwoFactorControllerTests.Disable_with_wrong_password_is_rejected" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="d1bcf14d-0120-eaa5-c023-78fbafc535af">
|
||||
<Execution id="8439b121-1461-45e7-83e6-7e8530b23782" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.TwoFactorControllerTests" name="Disable_with_wrong_password_is_rejected" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.AdminProcessingControllerTests.Invalid_diagnostic_filters_fail_closed(query: "failureCode=SECRET")" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="6e346171-7903-22b0-1ca1-205bad580edd">
|
||||
<Execution id="af93fd66-4880-4840-b7d2-371f6e3d6797" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.AdminProcessingControllerTests" name="Invalid_diagnostic_filters_fail_closed" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.AdminProcessingControllerTests.Diagnostic_filters_are_applied_before_pagination(query: "createdBefore=2000-01-01T00:00:00Z")" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="47c8243a-256a-9cd2-b778-0c1e655f34b2">
|
||||
<Execution id="50997746-1047-4f14-aa42-76d569e13dec" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.AdminProcessingControllerTests" name="Diagnostic_filters_are_applied_before_pagination" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.TwoFactorControllerTests.Challenge_with_trust_device_true_creates_trusted_device_and_sets_cookie" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="ba0da408-71da-37ae-bf26-9a719966e64f">
|
||||
<Execution id="49d35fbe-08e4-4047-b6eb-9ebd7c31f52f" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.TwoFactorControllerTests" name="Challenge_with_trust_device_true_creates_trusted_device_and_sets_cookie" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.ApiAuthorizationPostureTests.The_public_cv_controller_stays_anonymous" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="7735a82a-1299-2185-0d4a-22577eac5bda">
|
||||
<Execution id="fd40bd80-90d1-42c5-b709-9c28cfba5ac9" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.ApiAuthorizationPostureTests" name="The_public_cv_controller_stays_anonymous" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.AdminProcessingControllerTests.Detail_exposes_import_identity_and_links_only_the_administrators_own_application" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="74c020c1-6f43-8b47-6887-592371457b96">
|
||||
<Execution id="f5a5166e-365c-4c45-8a7a-748a3791d713" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.AdminProcessingControllerTests" name="Detail_exposes_import_identity_and_links_only_the_administrators_own_application" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.AdminProcessingControllerTests.Diagnostic_filters_preserve_actual_owner_relationships(query: "failureCode=timeout", expected: 1)" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="cc37b055-0622-5c79-604c-d07a5ef838f8">
|
||||
<Execution id="6209858e-1d10-4312-a891-f3f728670cdd" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.AdminProcessingControllerTests" name="Diagnostic_filters_preserve_actual_owner_relationships" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.AdminProcessingControllerTests.Event_cursor_is_exact_ordered_bounded_retained_and_redacted" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="ba5e704b-ca66-a258-1f80-cf0cc45d1215">
|
||||
<Execution id="912d9a9c-160c-44e6-b591-b013030527f2" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.AdminProcessingControllerTests" name="Event_cursor_is_exact_ordered_bounded_retained_and_redacted" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.AdminProcessingControllerTests.Invalid_diagnostic_filters_fail_closed(query: "worker=SECRET")" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="ee5f8413-131e-d373-5831-cf9def629bf1">
|
||||
<Execution id="6a4b82a9-4269-4ff6-b618-2a55c9ee6453" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.AdminProcessingControllerTests" name="Invalid_diagnostic_filters_fail_closed" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.AdminProcessingControllerTests.Invalid_diagnostic_filters_fail_closed(query: "createdFrom=2026-11-01T00:00:00Z&createdBefore=202"···)" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="f94b62f1-217b-7b58-433f-78fa92c3b291">
|
||||
<Execution id="a62b5fd1-aa95-429a-8fee-84081339fb1b" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.AdminProcessingControllerTests" name="Invalid_diagnostic_filters_fail_closed" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.UsersControllerTests.Delete_never_falls_back_to_identity_only_removal" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="c306a523-edb1-3483-b9d9-2894e7823843">
|
||||
<Execution id="770b0203-97ae-4f3f-b374-d925f77327c9" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.UsersControllerTests" name="Delete_never_falls_back_to_identity_only_removal" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.AuthSessionRevocationTests.Password_security_stamp_change_invalidates_a_pending_two_factor_challenge" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="d077a711-68af-18dd-b1f4-2f8b79f50253">
|
||||
<Execution id="74c74439-6f49-4b64-b8f0-e249bd9b2fc4" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.AuthSessionRevocationTests" name="Password_security_stamp_change_invalidates_a_pending_two_factor_challenge" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.AuthSessionRevocationTests.Logout_best_effort_revokes_an_expired_cookie_without_an_authenticated_principal" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="32aacf15-e389-7087-866a-a63f62c5ad1b">
|
||||
<Execution id="3dff5ee7-9faa-4b5a-acf7-4777bc001f1a" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.AuthSessionRevocationTests" name="Logout_best_effort_revokes_an_expired_cookie_without_an_authenticated_principal" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.AdminProcessingControllerTests.User_authored_identity_labels_are_bounded_before_admin_projection" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="a7460ecd-2dcf-3c01-9f4f-b564984877a7">
|
||||
<Execution id="c6f5fa23-4595-4491-bcac-eb5cdd06af2c" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.AdminProcessingControllerTests" name="User_authored_identity_labels_are_bounded_before_admin_projection" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.UsersControllerTests.SetRoles_allows_a_confirmed_self_demotion_when_another_admin_exists" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="49384e74-fc74-cc87-a819-9b1ba4a72e05">
|
||||
<Execution id="8f2ff498-3935-4b9d-b20f-2ae8e2eed509" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.UsersControllerTests" name="SetRoles_allows_a_confirmed_self_demotion_when_another_admin_exists" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.AuthSessionRevocationTests.Password_change_rotates_the_session_and_keeps_only_the_current_trusted_device" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="c00a81b0-f7f1-eb06-24f9-4006c08ebd54">
|
||||
<Execution id="af7588be-4023-41ab-858a-18dfeee9430f" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.AuthSessionRevocationTests" name="Password_change_rotates_the_session_and_keeps_only_the_current_trusted_device" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.AdminProcessingControllerTests.Diagnostic_filters_preserve_actual_owner_relationships(query: "createdBefore=2026-10-16T00:00:00Z", expected: 1)" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="eff0c740-5766-74d7-2b54-9a9d370feaf4">
|
||||
<Execution id="a151b574-aacc-4c04-bd08-86c6a416f46e" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.AdminProcessingControllerTests" name="Diagnostic_filters_preserve_actual_owner_relationships" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.SessionsControllerTests.List_returns_only_the_callers_own_active_sessions" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="b069a367-2cbf-d37f-5287-950c362c5164">
|
||||
<Execution id="fa581f3b-7a8c-40bc-831e-d71d7340292b" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.SessionsControllerTests" name="List_returns_only_the_callers_own_active_sessions" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.AdminProcessingControllerTests.Failure_metadata_uses_the_recorded_failure_instead_of_later_success(status: "waiting_for_retry")" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="1cb270c5-b90d-5d22-75bd-18446f0697ab">
|
||||
<Execution id="c785d69f-aeb3-4bd6-bf31-588bd0e347c0" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.AdminProcessingControllerTests" name="Failure_metadata_uses_the_recorded_failure_instead_of_later_success" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.UsersControllerTests.Delete_rejects_deleting_the_final_administrator" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="1d05c8f0-b4f5-5979-c2ee-b89fb865b0c0">
|
||||
<Execution id="7863527a-1b7f-44eb-8b60-ce4c12257b34" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.UsersControllerTests" name="Delete_rejects_deleting_the_final_administrator" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.UsersControllerTests.List_marks_the_current_user_and_last_admin_safety_state" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="60b6bfd7-91ef-c23f-ffe4-217e3ea1388b">
|
||||
<Execution id="09151881-21d2-4326-a43c-38d379aa90e7" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.UsersControllerTests" name="List_marks_the_current_user_and_last_admin_safety_state" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.UsersControllerTests.List_uses_a_fixed_number_of_role_queries_for_many_users" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="c290d6c2-2e12-8508-613f-1faef3e1e045">
|
||||
<Execution id="53ae69df-7e0d-40c0-8b71-95be1571fe53" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.UsersControllerTests" name="List_uses_a_fixed_number_of_role_queries_for_many_users" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.AuthSessionRevocationTests.Password_reset_revokes_all_target_sessions_and_trusted_devices_but_preserves_two_factor" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="c651e3b0-51fd-2e41-a5cf-eaf4190ef276">
|
||||
<Execution id="5e3c533a-44fc-4b3b-a915-c3499fdfdfb0" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.AuthSessionRevocationTests" name="Password_reset_revokes_all_target_sessions_and_trusted_devices_but_preserves_two_factor" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.TwoFactorControllerTests.Challenge_with_recovery_code_consumes_it_and_rejects_reuse" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="76cd4cee-0aef-5769-359a-4daef2151107">
|
||||
<Execution id="00293cd3-de4b-4cb0-9464-5a1b978346ef" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.TwoFactorControllerTests" name="Challenge_with_recovery_code_consumes_it_and_rejects_reuse" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.ApiAuthorizationPostureTests.Every_action_on_the_mixed_auth_controllers_declares_its_own_intent" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="e7dde882-9dbd-fe9b-1c50-f8b697c75f1a">
|
||||
<Execution id="0673d87e-1df5-4b1d-9f14-5729b14a2a09" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.ApiAuthorizationPostureTests" name="Every_action_on_the_mixed_auth_controllers_declares_its_own_intent" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.SessionsControllerTests.LocalSessionValidator_rejects_an_expired_session" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="5c11c8bf-6b3e-8d84-fbeb-c90b49b4f37a">
|
||||
<Execution id="d94dbadb-25a0-48cd-893c-9d84e01bb11b" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.SessionsControllerTests" name="LocalSessionValidator_rejects_an_expired_session" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.AuthSessionRevocationTests.Session_validator_rejects_an_unconfirmed_account_when_verification_is_required" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="3a3b5a1e-a289-cbf2-1ddf-19df428ac764">
|
||||
<Execution id="4e5bb025-60d0-45e7-b270-13e020c05d42" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.AuthSessionRevocationTests" name="Session_validator_rejects_an_unconfirmed_account_when_verification_is_required" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.AdminProcessingControllerTests.Failure_metadata_uses_the_recorded_failure_instead_of_later_success(status: "succeeded")" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="70049eab-88eb-4514-024e-9b688c008eef">
|
||||
<Execution id="b9e60944-2f77-4022-858b-86de70f5f944" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.AdminProcessingControllerTests" name="Failure_metadata_uses_the_recorded_failure_instead_of_later_success" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.SessionsControllerTests.LocalSessionValidator_rejects_a_token_with_no_sid_claim" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="b8f46cd4-f2a5-f097-e27f-3affe2027882">
|
||||
<Execution id="4971ef52-54d5-47e1-be81-16c72743faad" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.SessionsControllerTests" name="LocalSessionValidator_rejects_a_token_with_no_sid_claim" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.AdminProcessingControllerTests.Admin_projection_filters_owners_and_never_returns_raw_processing_contents_or_lease_data" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="369cf2cd-6a6b-3b6b-6836-0b22e26fda39">
|
||||
<Execution id="52d2407e-7d30-470b-b900-f29493b00887" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.AdminProcessingControllerTests" name="Admin_projection_filters_owners_and_never_returns_raw_processing_contents_or_lease_data" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.TwoFactorControllerTests.Trusted_devices_can_be_listed_revoked_and_revoked_in_bulk_scoped_to_owner" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="96738a1a-a206-81ed-d93b-a35bcdcf8da7">
|
||||
<Execution id="65fcac94-f2bd-4020-a9ff-2ff065aea5a5" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.TwoFactorControllerTests" name="Trusted_devices_can_be_listed_revoked_and_revoked_in_bulk_scoped_to_owner" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.AdminProcessingControllerTests.Diagnostic_filters_preserve_actual_owner_relationships(query: "q=owner%40example.test", expected: 2)" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="e8ec61a8-3045-28f2-d1c2-1d24f4b43888">
|
||||
<Execution id="660321ca-aa50-4ea3-b4e1-1f48f2a71452" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.AdminProcessingControllerTests" name="Diagnostic_filters_preserve_actual_owner_relationships" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.AdminProcessingControllerTests.Processing_routes_require_the_server_administrator_role(identity: null, expected: Unauthorized)" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="c6411e65-2573-9b0a-b091-546a25c749e9">
|
||||
<Execution id="b6c462dd-03c6-4941-9830-3156c8f64ba4" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.AdminProcessingControllerTests" name="Processing_routes_require_the_server_administrator_role" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.AccountDataExportTests.Account_export_is_rate_limited" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="a6518151-ac5c-524e-92da-8332dad6bdbb">
|
||||
<Execution id="2442a86c-a74b-492a-b2dc-8295ca20006c" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.AccountDataExportTests" name="Account_export_is_rate_limited" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.AccountDataExportTests.Readable_zip_is_complete_checksummed_owner_isolated_and_redacted" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="779e2ed4-8fe8-b1c3-9d65-a1c3f97de65f">
|
||||
<Execution id="d5557621-d57e-4b3e-a628-b4afcfac8399" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.AccountDataExportTests" name="Readable_zip_is_complete_checksummed_owner_isolated_and_redacted" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.TwoFactorControllerTests.Setup_then_verify_with_correct_code_enables_2fa_and_returns_recovery_codes" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="0a75f3cb-7d09-99b1-2e39-a35c68f98968">
|
||||
<Execution id="90c526e9-4ba8-4357-bc9e-92ac8a0cc141" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.TwoFactorControllerTests" name="Setup_then_verify_with_correct_code_enables_2fa_and_returns_recovery_codes" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.ApiAuthorizationPostureTests.Every_controller_either_requires_authorization_or_is_listed_as_public" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="fd2553a8-50d5-ecf3-5513-f884a32acc75">
|
||||
<Execution id="0a874f65-6ae7-4ee7-8a4f-223e0d0599dc" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.ApiAuthorizationPostureTests" name="Every_controller_either_requires_authorization_or_is_listed_as_public" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.ApiAuthorizationPostureTests.Admin_controllers_require_the_admin_role_not_merely_a_signed_in_user" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="f4f25456-ee0d-29ca-3483-47a23d62bba6">
|
||||
<Execution id="3d166b11-e5e4-48d8-aff2-05762ae9560d" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.ApiAuthorizationPostureTests" name="Admin_controllers_require_the_admin_role_not_merely_a_signed_in_user" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.AdminProcessingControllerTests.Diagnostic_filters_are_applied_before_pagination(query: "worker=untracked")" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="4d32ba02-105a-512c-8d73-cbe2ab1e1f04">
|
||||
<Execution id="53b236b9-1f0c-4bda-97ce-560f2dbfc641" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.AdminProcessingControllerTests" name="Diagnostic_filters_are_applied_before_pagination" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.AdminProcessingControllerTests.Diagnostic_filters_preserve_actual_owner_relationships(query: "worker=document", expected: 1)" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="925a248b-9a4e-193d-bb27-e3e23b1e39da">
|
||||
<Execution id="dbed89d9-76a4-4b5f-889c-275839b4db9c" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.AdminProcessingControllerTests" name="Diagnostic_filters_preserve_actual_owner_relationships" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.AdminProcessingControllerTests.Diagnostic_filters_are_applied_before_pagination(query: "createdFrom=2099-01-01T00:00:00Z")" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="812d5d43-7e52-ce08-7556-5a43f9ffdac0">
|
||||
<Execution id="005e59c9-cf56-40a7-9ca0-f5fb1b26a734" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.AdminProcessingControllerTests" name="Diagnostic_filters_are_applied_before_pagination" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.AdminProcessingControllerTests.Invalid_diagnostic_filters_fail_closed(query: "jobId=-1")" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="dea07b3b-d253-0f24-49a5-19cddbb41e3d">
|
||||
<Execution id="c6f012e2-8568-450c-b644-5efb722ed7b5" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.AdminProcessingControllerTests" name="Invalid_diagnostic_filters_fail_closed" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.AdminProcessingControllerTests.Diagnostic_filters_preserve_actual_owner_relationships(query: "q=Owned%20job%20title", expected: 1)" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="1942bf4b-fda0-7b4a-34e9-25989c8770bd">
|
||||
<Execution id="26714290-6b58-47ca-a025-8bd570c0cadf" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.AdminProcessingControllerTests" name="Diagnostic_filters_preserve_actual_owner_relationships" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.AdminProcessingControllerTests.Diagnostic_filters_preserve_actual_owner_relationships(query: "worker=ai", expected: 2)" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="44ff09f3-f13f-afad-c8bf-307264ed7dc8">
|
||||
<Execution id="b31e76b4-ffa4-4858-8526-4de5c576ff22" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.AdminProcessingControllerTests" name="Diagnostic_filters_preserve_actual_owner_relationships" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.SessionsControllerTests.Register_creates_a_user_session_row_when_it_completes_sign_in" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="9e050f47-50a9-9f5b-1d85-26726f8b830d">
|
||||
<Execution id="2f6a5c02-cb8e-4edb-8900-92090daf4485" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.SessionsControllerTests" name="Register_creates_a_user_session_row_when_it_completes_sign_in" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.TwoFactorControllerTests.Challenge_without_trust_device_does_not_create_trusted_device" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="a88e9f0f-4d46-d781-b335-cf25a24afff7">
|
||||
<Execution id="77606ebf-a9bd-405a-9c0a-c1835c77d191" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.TwoFactorControllerTests" name="Challenge_without_trust_device_does_not_create_trusted_device" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.AdminProcessingControllerTests.Missing_failure_history_does_not_turn_success_time_into_failure_evidence" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="07351a69-1a47-c2e2-c18a-4769689406b0">
|
||||
<Execution id="92cae6af-55b9-4ea2-8c73-8d65338be663" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.AdminProcessingControllerTests" name="Missing_failure_history_does_not_turn_success_time_into_failure_evidence" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.UsersControllerTests.SetRoles_revokes_existing_sessions_and_trusted_devices_when_roles_change" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="a55b51f5-22e2-c043-4279-8e10e60d7349">
|
||||
<Execution id="e41b3484-9519-4aae-8afd-ba9e539f9b27" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.UsersControllerTests" name="SetRoles_revokes_existing_sessions_and_trusted_devices_when_roles_change" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.AdminProcessingControllerTests.Diagnostic_filters_are_applied_before_pagination(query: "jobId=9999")" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="4bd6fee0-c227-757a-f276-68c01ee512d8">
|
||||
<Execution id="8b6dc4f2-d2f0-4c59-8f6c-fbf894a521fa" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.AdminProcessingControllerTests" name="Diagnostic_filters_are_applied_before_pagination" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.SessionsControllerTests.TwoFactor_challenge_creates_a_user_session_row_on_completion" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="2e1eabfd-4621-c98f-059d-33f191976c67">
|
||||
<Execution id="44b56b4e-2968-4e4f-8771-6fecc4a150c2" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.SessionsControllerTests" name="TwoFactor_challenge_creates_a_user_session_row_on_completion" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.AuthSessionRevocationTests.Session_validator_rejects_an_account_pending_deletion" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="822738c0-7263-105c-c7a3-7287bfc84f37">
|
||||
<Execution id="e45bff14-e2a8-408d-8e5d-58e709a9d7b3" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.AuthSessionRevocationTests" name="Session_validator_rejects_an_account_pending_deletion" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.AdminProcessingControllerTests.Diagnostic_filters_are_applied_before_pagination(query: "q=SECRET_CV_CONTENT")" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="e371116d-e426-f109-65b7-9aacdf55f26c">
|
||||
<Execution id="2fb373cf-32dc-490e-975b-c723417802a2" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.AdminProcessingControllerTests" name="Diagnostic_filters_are_applied_before_pagination" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.TwoFactorControllerTests.Challenge_with_unknown_pending_token_is_rejected" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="816e3003-dfa8-7268-d543-c991372b114d">
|
||||
<Execution id="49f5051e-4c27-4e71-9f78-a5eeba8ff22a" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.TwoFactorControllerTests" name="Challenge_with_unknown_pending_token_is_rejected" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.AdminProcessingControllerTests.Invalid_diagnostic_filters_fail_closed(query: "createdFrom=0001-01-01T00:00:00Z")" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="51ac4bbe-d7e5-71bc-246b-d1e99716f584">
|
||||
<Execution id="5947b5fd-69e6-4f36-b18f-0c27c24335e5" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.AdminProcessingControllerTests" name="Invalid_diagnostic_filters_fail_closed" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.AuthSessionRevocationTests.Logout_revokes_the_exact_session_and_a_copied_principal_stops_working" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="ac07d402-750e-5b2a-1f18-bdbcfd79741f">
|
||||
<Execution id="7ff0a76c-0bb2-4546-b4b3-4d298ed7425c" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.AuthSessionRevocationTests" name="Logout_revokes_the_exact_session_and_a_copied_principal_stops_working" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.TwoFactorControllerTests.Verify_setup_with_wrong_code_is_rejected_and_does_not_enable_2fa" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="32c56667-1720-3596-61ec-a84c2c1a0741">
|
||||
<Execution id="ff3f55bf-7aa0-496d-b9c4-77f8a3f474f6" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.TwoFactorControllerTests" name="Verify_setup_with_wrong_code_is_rejected_and_does_not_enable_2fa" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.ApiAuthorizationPostureTests.The_user_owned_controllers_that_used_to_rely_on_the_fallback_policy_are_now_explicit" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="39824df1-8c70-de08-b4d5-78902eb85b38">
|
||||
<Execution id="c0a452ce-bc45-4e8f-ac09-573a694a8c3a" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.ApiAuthorizationPostureTests" name="The_user_owned_controllers_that_used_to_rely_on_the_fallback_policy_are_now_explicit" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.AdminProcessingControllerTests.Diagnostic_filters_preserve_actual_owner_relationships(query: "failureCode=processing_failed", expected: 1)" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="3703cdc9-1200-4a8e-e91b-e5b255b6349a">
|
||||
<Execution id="c17a1d3a-1698-4320-95b3-38b12c1b2d14" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.AdminProcessingControllerTests" name="Diagnostic_filters_preserve_actual_owner_relationships" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.SessionsControllerTests.Revoke_enforces_ownership_and_blocks_a_subsequent_request_using_that_sessions_token" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="a567652f-e534-e420-c70b-91c31c5e4264">
|
||||
<Execution id="675dc708-f92a-409c-a447-93b682f82f0d" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.SessionsControllerTests" name="Revoke_enforces_ownership_and_blocks_a_subsequent_request_using_that_sessions_token" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.SessionsControllerTests.RevokeOthers_revokes_every_other_session_but_leaves_the_current_one_usable" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="811715cd-47a0-c1dd-1dc7-cfb874cd9cb3">
|
||||
<Execution id="8c5b5e3e-6b88-4129-a8c5-25ca8afabb98" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.SessionsControllerTests" name="RevokeOthers_revokes_every_other_session_but_leaves_the_current_one_usable" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.UsersControllerTests.SetRoles_rejects_removing_the_final_administrator" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="aa87bb5b-2b89-868b-47a2-39dc87ec48cf">
|
||||
<Execution id="4f885c24-4b73-440d-b174-dceba01dab21" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.UsersControllerTests" name="SetRoles_rejects_removing_the_final_administrator" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.AdminProcessingControllerTests.Processing_reads_share_a_bounded_account_rate_limit" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="b9e6b511-16dc-188e-b0b4-b3c6d1ea5901">
|
||||
<Execution id="c1890c2a-1eed-4be5-89d8-7f0c88327365" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.AdminProcessingControllerTests" name="Processing_reads_share_a_bounded_account_rate_limit" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.TwoFactorControllerTests.Challenge_with_valid_totp_code_completes_sign_in" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="d484bbaa-c1ab-50e5-2d49-c179ebefddee">
|
||||
<Execution id="9e82d083-3bf5-4773-8e1f-e595d4efbe92" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.TwoFactorControllerTests" name="Challenge_with_valid_totp_code_completes_sign_in" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.AuthSessionRevocationTests.Session_validator_requires_sid_and_user_to_match_the_same_row" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="e559103d-3dbf-ce6f-6174-0323c94be871">
|
||||
<Execution id="5f1168de-b7d8-4e8b-be1f-03dfe64f6085" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.AuthSessionRevocationTests" name="Session_validator_requires_sid_and_user_to_match_the_same_row" />
|
||||
</UnitTest>
|
||||
<UnitTest name="JobTrackerApi.Tests.AdminProcessingControllerTests.Processing_routes_require_the_server_administrator_role(identity: "ordinary", expected: Forbidden)" storage="c:\users\connor\.codex\worktrees\direct-roadmap-integration\job tracker\jobtrackerapi.tests\bin\debug\net9.0\jobtrackerapi.tests.dll" id="a3b89ebc-353f-38b3-04d4-bd41ea0c21b8">
|
||||
<Execution id="91b06ee6-1e58-406f-891b-6a22026754b1" />
|
||||
<TestMethod codeBase="C:\Users\Connor\.codex\worktrees\direct-roadmap-integration\Job tracker\JobTrackerApi.Tests\bin\Debug\net9.0\JobTrackerApi.Tests.dll" adapterTypeName="executor://xunit/VsTestRunner2/netcoreapp" className="JobTrackerApi.Tests.AdminProcessingControllerTests" name="Processing_routes_require_the_server_administrator_role" />
|
||||
</UnitTest>
|
||||
</TestDefinitions>
|
||||
<TestEntries>
|
||||
<TestEntry testId="811715cd-47a0-c1dd-1dc7-cfb874cd9cb3" executionId="8c5b5e3e-6b88-4129-a8c5-25ca8afabb98" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="b9e6b511-16dc-188e-b0b4-b3c6d1ea5901" executionId="c1890c2a-1eed-4be5-89d8-7f0c88327365" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="4bd6fee0-c227-757a-f276-68c01ee512d8" executionId="8b6dc4f2-d2f0-4c59-8f6c-fbf894a521fa" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="4d32ba02-105a-512c-8d73-cbe2ab1e1f04" executionId="53b236b9-1f0c-4bda-97ce-560f2dbfc641" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="60b6bfd7-91ef-c23f-ffe4-217e3ea1388b" executionId="09151881-21d2-4326-a43c-38d379aa90e7" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="f4f25456-ee0d-29ca-3483-47a23d62bba6" executionId="3d166b11-e5e4-48d8-aff2-05762ae9560d" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="a55b51f5-22e2-c043-4279-8e10e60d7349" executionId="e41b3484-9519-4aae-8afd-ba9e539f9b27" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="d044b79a-5986-914c-d41a-518baadb7963" executionId="8057b950-194c-4cb1-b1d6-fa7fb2837f9c" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="2e1eabfd-4621-c98f-059d-33f191976c67" executionId="44b56b4e-2968-4e4f-8771-6fecc4a150c2" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="1cb270c5-b90d-5d22-75bd-18446f0697ab" executionId="c785d69f-aeb3-4bd6-bf31-588bd0e347c0" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="e559103d-3dbf-ce6f-6174-0323c94be871" executionId="5f1168de-b7d8-4e8b-be1f-03dfe64f6085" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="f94b62f1-217b-7b58-433f-78fa92c3b291" executionId="a62b5fd1-aa95-429a-8fee-84081339fb1b" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="6e346171-7903-22b0-1ca1-205bad580edd" executionId="af93fd66-4880-4840-b7d2-371f6e3d6797" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="3703cdc9-1200-4a8e-e91b-e5b255b6349a" executionId="c17a1d3a-1698-4320-95b3-38b12c1b2d14" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="1d05c8f0-b4f5-5979-c2ee-b89fb865b0c0" executionId="7863527a-1b7f-44eb-8b60-ce4c12257b34" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="5e6c8ff2-b0d7-8172-d7f7-7a4377ce492f" executionId="f07d0729-575c-4bb1-a069-3918e64ff780" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="d484bbaa-c1ab-50e5-2d49-c179ebefddee" executionId="9e82d083-3bf5-4773-8e1f-e595d4efbe92" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="32aacf15-e389-7087-866a-a63f62c5ad1b" executionId="3dff5ee7-9faa-4b5a-acf7-4777bc001f1a" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="dea07b3b-d253-0f24-49a5-19cddbb41e3d" executionId="c6f012e2-8568-450c-b644-5efb722ed7b5" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="779e2ed4-8fe8-b1c3-9d65-a1c3f97de65f" executionId="d5557621-d57e-4b3e-a628-b4afcfac8399" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="e371116d-e426-f109-65b7-9aacdf55f26c" executionId="2fb373cf-32dc-490e-975b-c723417802a2" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="0a75f3cb-7d09-99b1-2e39-a35c68f98968" executionId="90c526e9-4ba8-4357-bc9e-92ac8a0cc141" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="e7dde882-9dbd-fe9b-1c50-f8b697c75f1a" executionId="0673d87e-1df5-4b1d-9f14-5729b14a2a09" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="a6518151-ac5c-524e-92da-8332dad6bdbb" executionId="2442a86c-a74b-492a-b2dc-8295ca20006c" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="b8f46cd4-f2a5-f097-e27f-3affe2027882" executionId="4971ef52-54d5-47e1-be81-16c72743faad" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="c00a81b0-f7f1-eb06-24f9-4006c08ebd54" executionId="af7588be-4023-41ab-858a-18dfeee9430f" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="b069a367-2cbf-d37f-5287-950c362c5164" executionId="fa581f3b-7a8c-40bc-831e-d71d7340292b" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="a567652f-e534-e420-c70b-91c31c5e4264" executionId="675dc708-f92a-409c-a447-93b682f82f0d" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="70049eab-88eb-4514-024e-9b688c008eef" executionId="b9e60944-2f77-4022-858b-86de70f5f944" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="816e3003-dfa8-7268-d543-c991372b114d" executionId="49f5051e-4c27-4e71-9f78-a5eeba8ff22a" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="49384e74-fc74-cc87-a819-9b1ba4a72e05" executionId="8f2ff498-3935-4b9d-b20f-2ae8e2eed509" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="1942bf4b-fda0-7b4a-34e9-25989c8770bd" executionId="26714290-6b58-47ca-a025-8bd570c0cadf" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="369cf2cd-6a6b-3b6b-6836-0b22e26fda39" executionId="52d2407e-7d30-470b-b900-f29493b00887" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="5c11c8bf-6b3e-8d84-fbeb-c90b49b4f37a" executionId="d94dbadb-25a0-48cd-893c-9d84e01bb11b" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="fd2553a8-50d5-ecf3-5513-f884a32acc75" executionId="0a874f65-6ae7-4ee7-8a4f-223e0d0599dc" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="9e050f47-50a9-9f5b-1d85-26726f8b830d" executionId="2f6a5c02-cb8e-4edb-8900-92090daf4485" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="a7460ecd-2dcf-3c01-9f4f-b564984877a7" executionId="c6f5fa23-4595-4491-bcac-eb5cdd06af2c" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="39824df1-8c70-de08-b4d5-78902eb85b38" executionId="c0a452ce-bc45-4e8f-ac09-573a694a8c3a" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="e8ec61a8-3045-28f2-d1c2-1d24f4b43888" executionId="660321ca-aa50-4ea3-b4e1-1f48f2a71452" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="c651e3b0-51fd-2e41-a5cf-eaf4190ef276" executionId="5e3c533a-44fc-4b3b-a915-c3499fdfdfb0" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="84f7e997-d635-149a-68bc-b02e9fcddd2d" executionId="edcb9161-3f94-4512-8921-643943599277" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="812d5d43-7e52-ce08-7556-5a43f9ffdac0" executionId="005e59c9-cf56-40a7-9ca0-f5fb1b26a734" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="47c8243a-256a-9cd2-b778-0c1e655f34b2" executionId="50997746-1047-4f14-aa42-76d569e13dec" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="c306a523-edb1-3483-b9d9-2894e7823843" executionId="770b0203-97ae-4f3f-b374-d925f77327c9" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="a3b89ebc-353f-38b3-04d4-bd41ea0c21b8" executionId="91b06ee6-1e58-406f-891b-6a22026754b1" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="d1bcf14d-0120-eaa5-c023-78fbafc535af" executionId="8439b121-1461-45e7-83e6-7e8530b23782" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="7735a82a-1299-2185-0d4a-22577eac5bda" executionId="fd40bd80-90d1-42c5-b709-9c28cfba5ac9" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="97ec8920-5827-6f9c-2b63-37a4e888d28f" executionId="8e767f6f-8088-4520-a2ed-1a8e829d6e3e" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="76cd4cee-0aef-5769-359a-4daef2151107" executionId="00293cd3-de4b-4cb0-9464-5a1b978346ef" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="a88e9f0f-4d46-d781-b335-cf25a24afff7" executionId="77606ebf-a9bd-405a-9c0a-c1835c77d191" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="aa87bb5b-2b89-868b-47a2-39dc87ec48cf" executionId="4f885c24-4b73-440d-b174-dceba01dab21" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="ba5e704b-ca66-a258-1f80-cf0cc45d1215" executionId="912d9a9c-160c-44e6-b591-b013030527f2" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="822738c0-7263-105c-c7a3-7287bfc84f37" executionId="e45bff14-e2a8-408d-8e5d-58e709a9d7b3" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="07351a69-1a47-c2e2-c18a-4769689406b0" executionId="92cae6af-55b9-4ea2-8c73-8d65338be663" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="eff0c740-5766-74d7-2b54-9a9d370feaf4" executionId="a151b574-aacc-4c04-bd08-86c6a416f46e" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="ac07d402-750e-5b2a-1f18-bdbcfd79741f" executionId="7ff0a76c-0bb2-4546-b4b3-4d298ed7425c" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="74c020c1-6f43-8b47-6887-592371457b96" executionId="f5a5166e-365c-4c45-8a7a-748a3791d713" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="96738a1a-a206-81ed-d93b-a35bcdcf8da7" executionId="65fcac94-f2bd-4020-a9ff-2ff065aea5a5" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="d077a711-68af-18dd-b1f4-2f8b79f50253" executionId="74c74439-6f49-4b64-b8f0-e249bd9b2fc4" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="ba0da408-71da-37ae-bf26-9a719966e64f" executionId="49d35fbe-08e4-4047-b6eb-9ebd7c31f52f" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="51ac4bbe-d7e5-71bc-246b-d1e99716f584" executionId="5947b5fd-69e6-4f36-b18f-0c27c24335e5" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="3a3b5a1e-a289-cbf2-1ddf-19df428ac764" executionId="4e5bb025-60d0-45e7-b270-13e020c05d42" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="c6411e65-2573-9b0a-b091-546a25c749e9" executionId="b6c462dd-03c6-4941-9830-3156c8f64ba4" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="32c56667-1720-3596-61ec-a84c2c1a0741" executionId="ff3f55bf-7aa0-496d-b9c4-77f8a3f474f6" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="cc37b055-0622-5c79-604c-d07a5ef838f8" executionId="6209858e-1d10-4312-a891-f3f728670cdd" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="c290d6c2-2e12-8508-613f-1faef3e1e045" executionId="53ae69df-7e0d-40c0-8b71-95be1571fe53" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="925a248b-9a4e-193d-bb27-e3e23b1e39da" executionId="dbed89d9-76a4-4b5f-889c-275839b4db9c" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="44ff09f3-f13f-afad-c8bf-307264ed7dc8" executionId="b31e76b4-ffa4-4858-8526-4de5c576ff22" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestEntry testId="ee5f8413-131e-d373-5831-cf9def629bf1" executionId="6a4b82a9-4269-4ff6-b618-2a55c9ee6453" testListId="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
</TestEntries>
|
||||
<TestLists>
|
||||
<TestList name="Results Not in a List" id="8c84fa94-04c1-424b-9868-57a2d4851a1d" />
|
||||
<TestList name="All Loaded Results" id="19431567-8539-422a-85d7-44ee4e166bda" />
|
||||
</TestLists>
|
||||
<ResultSummary outcome="Completed">
|
||||
<Counters total="69" executed="69" passed="69" failed="0" error="0" timeout="0" aborted="0" inconclusive="0" passedButRunAborted="0" notRunnable="0" notExecuted="0" disconnected="0" warning="0" completed="0" inProgress="0" pending="0" />
|
||||
<Output>
|
||||
<StdOut>[xUnit.net 00:00:00.00] xUnit.net VSTest Adapter v2.8.2+699d445a1a (64-bit .NET 9.0.19)
|
||||
[xUnit.net 00:00:00.98] Discovering: JobTrackerApi.Tests
|
||||
[xUnit.net 00:00:01.29] Discovered: JobTrackerApi.Tests
|
||||
[xUnit.net 00:00:01.30] Starting: JobTrackerApi.Tests
|
||||
[xUnit.net 00:00:15.00] Finished: JobTrackerApi.Tests
|
||||
</StdOut>
|
||||
</Output>
|
||||
</ResultSummary>
|
||||
</TestRun>
|
||||
|
After Width: | Height: | Size: 160 KiB |
@@ -0,0 +1,108 @@
|
||||
{
|
||||
"screens": [
|
||||
{
|
||||
"width": 320,
|
||||
"language": "en",
|
||||
"mode": "light",
|
||||
"state": "account",
|
||||
"violations": []
|
||||
},
|
||||
{
|
||||
"width": 320,
|
||||
"language": "en",
|
||||
"mode": "light",
|
||||
"state": "session-confirmation",
|
||||
"violations": []
|
||||
},
|
||||
{
|
||||
"width": 320,
|
||||
"language": "en",
|
||||
"mode": "light",
|
||||
"state": "data-confirmation",
|
||||
"violations": []
|
||||
},
|
||||
{
|
||||
"width": 320,
|
||||
"language": "en",
|
||||
"mode": "light",
|
||||
"state": "connections",
|
||||
"violations": []
|
||||
},
|
||||
{
|
||||
"width": 320,
|
||||
"language": "en",
|
||||
"mode": "light",
|
||||
"state": "last-admin",
|
||||
"violations": []
|
||||
},
|
||||
{
|
||||
"width": 320,
|
||||
"language": "en",
|
||||
"mode": "light",
|
||||
"state": "audit-empty",
|
||||
"violations": []
|
||||
},
|
||||
{
|
||||
"width": 320,
|
||||
"language": "en",
|
||||
"mode": "light",
|
||||
"state": "system-unavailable",
|
||||
"violations": []
|
||||
},
|
||||
{
|
||||
"width": 320,
|
||||
"language": "en",
|
||||
"mode": "light",
|
||||
"state": "processing-detail",
|
||||
"violations": []
|
||||
}
|
||||
],
|
||||
"journeys": [
|
||||
{
|
||||
"width": 320,
|
||||
"language": "en",
|
||||
"mode": "light",
|
||||
"draftPreservedAcrossKeyboardSections": "PASS",
|
||||
"revocationAndDeletionCancelled": "PASS",
|
||||
"recentExportDenial": "PASS",
|
||||
"lastAdminActionsDisabled": "PASS",
|
||||
"processingKeyboardAndOwnerLink": "PASS"
|
||||
}
|
||||
],
|
||||
"errors": [],
|
||||
"unexpectedWrites": [],
|
||||
"exportDenials": [
|
||||
{
|
||||
"width": 320,
|
||||
"language": "en",
|
||||
"mode": "light"
|
||||
}
|
||||
],
|
||||
"unavailableReads": [
|
||||
"/api/companies",
|
||||
"/api/companies",
|
||||
"/api/companies",
|
||||
"/api/companies",
|
||||
"/api/companies",
|
||||
"/api/admin/system",
|
||||
"/api/admin/system/email-settings",
|
||||
"/api/admin/system/cv-benchmark",
|
||||
"/api/admin/system/maintenance-jobs",
|
||||
"/api/companies",
|
||||
"/api/companies"
|
||||
],
|
||||
"blockedExternal": [
|
||||
"https://fonts.googleapis.com",
|
||||
"https://fonts.googleapis.com",
|
||||
"https://fonts.googleapis.com",
|
||||
"https://fonts.googleapis.com",
|
||||
"https://fonts.googleapis.com",
|
||||
"https://fonts.googleapis.com",
|
||||
"https://fonts.googleapis.com"
|
||||
],
|
||||
"limits": [
|
||||
"Every API response is synthetic. Account export is a controlled 403; revocation/deletion confirmations are cancelled, not executed.",
|
||||
"System monitor capture is the controlled unavailable state, audit is empty; detailed success/action scenarios are unit tests, not live qualification.",
|
||||
"No real credentials, provider activation, model, native device, integrated security, production or release acceptance."
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,260 @@
|
||||
{
|
||||
"screens": [
|
||||
{
|
||||
"width": 320,
|
||||
"language": "en",
|
||||
"mode": "light",
|
||||
"state": "processing-detail",
|
||||
"violations": []
|
||||
},
|
||||
{
|
||||
"width": 320,
|
||||
"language": "en",
|
||||
"mode": "dark",
|
||||
"state": "processing-detail",
|
||||
"violations": []
|
||||
},
|
||||
{
|
||||
"width": 320,
|
||||
"language": "nb",
|
||||
"mode": "light",
|
||||
"state": "processing-detail",
|
||||
"violations": []
|
||||
},
|
||||
{
|
||||
"width": 320,
|
||||
"language": "nb",
|
||||
"mode": "dark",
|
||||
"state": "processing-detail",
|
||||
"violations": []
|
||||
},
|
||||
{
|
||||
"width": 390,
|
||||
"language": "en",
|
||||
"mode": "light",
|
||||
"state": "processing-detail",
|
||||
"violations": []
|
||||
},
|
||||
{
|
||||
"width": 390,
|
||||
"language": "en",
|
||||
"mode": "dark",
|
||||
"state": "processing-detail",
|
||||
"violations": []
|
||||
},
|
||||
{
|
||||
"width": 390,
|
||||
"language": "nb",
|
||||
"mode": "light",
|
||||
"state": "processing-detail",
|
||||
"violations": []
|
||||
},
|
||||
{
|
||||
"width": 390,
|
||||
"language": "nb",
|
||||
"mode": "dark",
|
||||
"state": "processing-detail",
|
||||
"violations": []
|
||||
},
|
||||
{
|
||||
"width": 768,
|
||||
"language": "en",
|
||||
"mode": "light",
|
||||
"state": "processing-detail",
|
||||
"violations": []
|
||||
},
|
||||
{
|
||||
"width": 768,
|
||||
"language": "en",
|
||||
"mode": "dark",
|
||||
"state": "processing-detail",
|
||||
"violations": []
|
||||
},
|
||||
{
|
||||
"width": 768,
|
||||
"language": "nb",
|
||||
"mode": "light",
|
||||
"state": "processing-detail",
|
||||
"violations": []
|
||||
},
|
||||
{
|
||||
"width": 768,
|
||||
"language": "nb",
|
||||
"mode": "dark",
|
||||
"state": "processing-detail",
|
||||
"violations": []
|
||||
}
|
||||
],
|
||||
"journeys": [
|
||||
{
|
||||
"width": 320,
|
||||
"language": "en",
|
||||
"mode": "light",
|
||||
"draftPreservedAcrossKeyboardSections": "NOT RUN",
|
||||
"revocationAndDeletionCancelled": "NOT RUN",
|
||||
"recentExportDenial": "NOT RUN",
|
||||
"lastAdminActionsDisabled": "NOT RUN",
|
||||
"processingKeyboardAndOwnerLink": "PASS",
|
||||
"processingFilterLabelsAndDurationGeometry": "PASS"
|
||||
},
|
||||
{
|
||||
"width": 320,
|
||||
"language": "en",
|
||||
"mode": "dark",
|
||||
"draftPreservedAcrossKeyboardSections": "NOT RUN",
|
||||
"revocationAndDeletionCancelled": "NOT RUN",
|
||||
"recentExportDenial": "NOT RUN",
|
||||
"lastAdminActionsDisabled": "NOT RUN",
|
||||
"processingKeyboardAndOwnerLink": "PASS",
|
||||
"processingFilterLabelsAndDurationGeometry": "PASS"
|
||||
},
|
||||
{
|
||||
"width": 320,
|
||||
"language": "nb",
|
||||
"mode": "light",
|
||||
"draftPreservedAcrossKeyboardSections": "NOT RUN",
|
||||
"revocationAndDeletionCancelled": "NOT RUN",
|
||||
"recentExportDenial": "NOT RUN",
|
||||
"lastAdminActionsDisabled": "NOT RUN",
|
||||
"processingKeyboardAndOwnerLink": "PASS",
|
||||
"processingFilterLabelsAndDurationGeometry": "PASS"
|
||||
},
|
||||
{
|
||||
"width": 320,
|
||||
"language": "nb",
|
||||
"mode": "dark",
|
||||
"draftPreservedAcrossKeyboardSections": "NOT RUN",
|
||||
"revocationAndDeletionCancelled": "NOT RUN",
|
||||
"recentExportDenial": "NOT RUN",
|
||||
"lastAdminActionsDisabled": "NOT RUN",
|
||||
"processingKeyboardAndOwnerLink": "PASS",
|
||||
"processingFilterLabelsAndDurationGeometry": "PASS"
|
||||
},
|
||||
{
|
||||
"width": 390,
|
||||
"language": "en",
|
||||
"mode": "light",
|
||||
"draftPreservedAcrossKeyboardSections": "NOT RUN",
|
||||
"revocationAndDeletionCancelled": "NOT RUN",
|
||||
"recentExportDenial": "NOT RUN",
|
||||
"lastAdminActionsDisabled": "NOT RUN",
|
||||
"processingKeyboardAndOwnerLink": "PASS",
|
||||
"processingFilterLabelsAndDurationGeometry": "PASS"
|
||||
},
|
||||
{
|
||||
"width": 390,
|
||||
"language": "en",
|
||||
"mode": "dark",
|
||||
"draftPreservedAcrossKeyboardSections": "NOT RUN",
|
||||
"revocationAndDeletionCancelled": "NOT RUN",
|
||||
"recentExportDenial": "NOT RUN",
|
||||
"lastAdminActionsDisabled": "NOT RUN",
|
||||
"processingKeyboardAndOwnerLink": "PASS",
|
||||
"processingFilterLabelsAndDurationGeometry": "PASS"
|
||||
},
|
||||
{
|
||||
"width": 390,
|
||||
"language": "nb",
|
||||
"mode": "light",
|
||||
"draftPreservedAcrossKeyboardSections": "NOT RUN",
|
||||
"revocationAndDeletionCancelled": "NOT RUN",
|
||||
"recentExportDenial": "NOT RUN",
|
||||
"lastAdminActionsDisabled": "NOT RUN",
|
||||
"processingKeyboardAndOwnerLink": "PASS",
|
||||
"processingFilterLabelsAndDurationGeometry": "PASS"
|
||||
},
|
||||
{
|
||||
"width": 390,
|
||||
"language": "nb",
|
||||
"mode": "dark",
|
||||
"draftPreservedAcrossKeyboardSections": "NOT RUN",
|
||||
"revocationAndDeletionCancelled": "NOT RUN",
|
||||
"recentExportDenial": "NOT RUN",
|
||||
"lastAdminActionsDisabled": "NOT RUN",
|
||||
"processingKeyboardAndOwnerLink": "PASS",
|
||||
"processingFilterLabelsAndDurationGeometry": "PASS"
|
||||
},
|
||||
{
|
||||
"width": 768,
|
||||
"language": "en",
|
||||
"mode": "light",
|
||||
"draftPreservedAcrossKeyboardSections": "NOT RUN",
|
||||
"revocationAndDeletionCancelled": "NOT RUN",
|
||||
"recentExportDenial": "NOT RUN",
|
||||
"lastAdminActionsDisabled": "NOT RUN",
|
||||
"processingKeyboardAndOwnerLink": "PASS",
|
||||
"processingFilterLabelsAndDurationGeometry": "PASS"
|
||||
},
|
||||
{
|
||||
"width": 768,
|
||||
"language": "en",
|
||||
"mode": "dark",
|
||||
"draftPreservedAcrossKeyboardSections": "NOT RUN",
|
||||
"revocationAndDeletionCancelled": "NOT RUN",
|
||||
"recentExportDenial": "NOT RUN",
|
||||
"lastAdminActionsDisabled": "NOT RUN",
|
||||
"processingKeyboardAndOwnerLink": "PASS",
|
||||
"processingFilterLabelsAndDurationGeometry": "PASS"
|
||||
},
|
||||
{
|
||||
"width": 768,
|
||||
"language": "nb",
|
||||
"mode": "light",
|
||||
"draftPreservedAcrossKeyboardSections": "NOT RUN",
|
||||
"revocationAndDeletionCancelled": "NOT RUN",
|
||||
"recentExportDenial": "NOT RUN",
|
||||
"lastAdminActionsDisabled": "NOT RUN",
|
||||
"processingKeyboardAndOwnerLink": "PASS",
|
||||
"processingFilterLabelsAndDurationGeometry": "PASS"
|
||||
},
|
||||
{
|
||||
"width": 768,
|
||||
"language": "nb",
|
||||
"mode": "dark",
|
||||
"draftPreservedAcrossKeyboardSections": "NOT RUN",
|
||||
"revocationAndDeletionCancelled": "NOT RUN",
|
||||
"recentExportDenial": "NOT RUN",
|
||||
"lastAdminActionsDisabled": "NOT RUN",
|
||||
"processingKeyboardAndOwnerLink": "PASS",
|
||||
"processingFilterLabelsAndDurationGeometry": "PASS"
|
||||
}
|
||||
],
|
||||
"errors": [],
|
||||
"unexpectedWrites": [],
|
||||
"exportDenials": [],
|
||||
"unavailableReads": [
|
||||
"/api/companies",
|
||||
"/api/companies",
|
||||
"/api/companies",
|
||||
"/api/companies",
|
||||
"/api/companies",
|
||||
"/api/companies",
|
||||
"/api/companies",
|
||||
"/api/companies",
|
||||
"/api/companies",
|
||||
"/api/companies",
|
||||
"/api/companies",
|
||||
"/api/companies",
|
||||
"/api/companies"
|
||||
],
|
||||
"blockedExternal": [
|
||||
"https://fonts.googleapis.com",
|
||||
"https://fonts.googleapis.com",
|
||||
"https://fonts.googleapis.com",
|
||||
"https://fonts.googleapis.com",
|
||||
"https://fonts.googleapis.com",
|
||||
"https://fonts.googleapis.com",
|
||||
"https://fonts.googleapis.com",
|
||||
"https://fonts.googleapis.com",
|
||||
"https://fonts.googleapis.com",
|
||||
"https://fonts.googleapis.com",
|
||||
"https://fonts.googleapis.com",
|
||||
"https://fonts.googleapis.com",
|
||||
"https://fonts.googleapis.com"
|
||||
],
|
||||
"limits": [
|
||||
"Every API response is synthetic. Account export is a controlled 403; revocation/deletion confirmations are cancelled, not executed.",
|
||||
"System monitor capture is the controlled unavailable state, audit is empty; detailed success/action scenarios are unit tests, not live qualification.",
|
||||
"No real credentials, provider activation, model, native device, integrated security, production or release acceptance."
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"screens": [],
|
||||
"journeys": [],
|
||||
"errors": [],
|
||||
"unexpectedWrites": [],
|
||||
"exportDenials": [],
|
||||
"unavailableReads": [
|
||||
"/api/companies"
|
||||
],
|
||||
"blockedExternal": [
|
||||
"https://fonts.googleapis.com"
|
||||
],
|
||||
"limits": [
|
||||
"Every API response is synthetic. Account export is a controlled 403; revocation/deletion confirmations are cancelled, not executed.",
|
||||
"System monitor capture is the controlled unavailable state, audit is empty; detailed success/action scenarios are unit tests, not live qualification.",
|
||||
"No real credentials, provider activation, model, native device, integrated security, production or release acceptance."
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,338 @@
|
||||
{
|
||||
"screens": [
|
||||
{
|
||||
"width": 320,
|
||||
"language": "en",
|
||||
"mode": "light",
|
||||
"state": "processing-detail",
|
||||
"violations": []
|
||||
},
|
||||
{
|
||||
"width": 320,
|
||||
"language": "en",
|
||||
"mode": "dark",
|
||||
"state": "processing-detail",
|
||||
"violations": []
|
||||
},
|
||||
{
|
||||
"width": 320,
|
||||
"language": "nb",
|
||||
"mode": "light",
|
||||
"state": "processing-detail",
|
||||
"violations": []
|
||||
},
|
||||
{
|
||||
"width": 320,
|
||||
"language": "nb",
|
||||
"mode": "dark",
|
||||
"state": "processing-detail",
|
||||
"violations": []
|
||||
},
|
||||
{
|
||||
"width": 390,
|
||||
"language": "en",
|
||||
"mode": "light",
|
||||
"state": "processing-detail",
|
||||
"violations": []
|
||||
},
|
||||
{
|
||||
"width": 390,
|
||||
"language": "en",
|
||||
"mode": "dark",
|
||||
"state": "processing-detail",
|
||||
"violations": []
|
||||
},
|
||||
{
|
||||
"width": 390,
|
||||
"language": "nb",
|
||||
"mode": "light",
|
||||
"state": "processing-detail",
|
||||
"violations": []
|
||||
},
|
||||
{
|
||||
"width": 390,
|
||||
"language": "nb",
|
||||
"mode": "dark",
|
||||
"state": "processing-detail",
|
||||
"violations": []
|
||||
},
|
||||
{
|
||||
"width": 768,
|
||||
"language": "en",
|
||||
"mode": "light",
|
||||
"state": "processing-detail",
|
||||
"violations": []
|
||||
},
|
||||
{
|
||||
"width": 768,
|
||||
"language": "en",
|
||||
"mode": "dark",
|
||||
"state": "processing-detail",
|
||||
"violations": []
|
||||
},
|
||||
{
|
||||
"width": 768,
|
||||
"language": "nb",
|
||||
"mode": "light",
|
||||
"state": "processing-detail",
|
||||
"violations": []
|
||||
},
|
||||
{
|
||||
"width": 768,
|
||||
"language": "nb",
|
||||
"mode": "dark",
|
||||
"state": "processing-detail",
|
||||
"violations": []
|
||||
},
|
||||
{
|
||||
"width": 1440,
|
||||
"language": "en",
|
||||
"mode": "light",
|
||||
"state": "processing-detail",
|
||||
"violations": []
|
||||
},
|
||||
{
|
||||
"width": 1440,
|
||||
"language": "en",
|
||||
"mode": "dark",
|
||||
"state": "processing-detail",
|
||||
"violations": []
|
||||
},
|
||||
{
|
||||
"width": 1440,
|
||||
"language": "nb",
|
||||
"mode": "light",
|
||||
"state": "processing-detail",
|
||||
"violations": []
|
||||
},
|
||||
{
|
||||
"width": 1440,
|
||||
"language": "nb",
|
||||
"mode": "dark",
|
||||
"state": "processing-detail",
|
||||
"violations": []
|
||||
}
|
||||
],
|
||||
"journeys": [
|
||||
{
|
||||
"width": 320,
|
||||
"language": "en",
|
||||
"mode": "light",
|
||||
"draftPreservedAcrossKeyboardSections": "NOT RUN",
|
||||
"revocationAndDeletionCancelled": "NOT RUN",
|
||||
"recentExportDenial": "NOT RUN",
|
||||
"lastAdminActionsDisabled": "NOT RUN",
|
||||
"processingKeyboardAndOwnerLink": "PASS",
|
||||
"processingFilterLabelsAndDurationGeometry": "PASS"
|
||||
},
|
||||
{
|
||||
"width": 320,
|
||||
"language": "en",
|
||||
"mode": "dark",
|
||||
"draftPreservedAcrossKeyboardSections": "NOT RUN",
|
||||
"revocationAndDeletionCancelled": "NOT RUN",
|
||||
"recentExportDenial": "NOT RUN",
|
||||
"lastAdminActionsDisabled": "NOT RUN",
|
||||
"processingKeyboardAndOwnerLink": "PASS",
|
||||
"processingFilterLabelsAndDurationGeometry": "PASS"
|
||||
},
|
||||
{
|
||||
"width": 320,
|
||||
"language": "nb",
|
||||
"mode": "light",
|
||||
"draftPreservedAcrossKeyboardSections": "NOT RUN",
|
||||
"revocationAndDeletionCancelled": "NOT RUN",
|
||||
"recentExportDenial": "NOT RUN",
|
||||
"lastAdminActionsDisabled": "NOT RUN",
|
||||
"processingKeyboardAndOwnerLink": "PASS",
|
||||
"processingFilterLabelsAndDurationGeometry": "PASS"
|
||||
},
|
||||
{
|
||||
"width": 320,
|
||||
"language": "nb",
|
||||
"mode": "dark",
|
||||
"draftPreservedAcrossKeyboardSections": "NOT RUN",
|
||||
"revocationAndDeletionCancelled": "NOT RUN",
|
||||
"recentExportDenial": "NOT RUN",
|
||||
"lastAdminActionsDisabled": "NOT RUN",
|
||||
"processingKeyboardAndOwnerLink": "PASS",
|
||||
"processingFilterLabelsAndDurationGeometry": "PASS"
|
||||
},
|
||||
{
|
||||
"width": 390,
|
||||
"language": "en",
|
||||
"mode": "light",
|
||||
"draftPreservedAcrossKeyboardSections": "NOT RUN",
|
||||
"revocationAndDeletionCancelled": "NOT RUN",
|
||||
"recentExportDenial": "NOT RUN",
|
||||
"lastAdminActionsDisabled": "NOT RUN",
|
||||
"processingKeyboardAndOwnerLink": "PASS",
|
||||
"processingFilterLabelsAndDurationGeometry": "PASS"
|
||||
},
|
||||
{
|
||||
"width": 390,
|
||||
"language": "en",
|
||||
"mode": "dark",
|
||||
"draftPreservedAcrossKeyboardSections": "NOT RUN",
|
||||
"revocationAndDeletionCancelled": "NOT RUN",
|
||||
"recentExportDenial": "NOT RUN",
|
||||
"lastAdminActionsDisabled": "NOT RUN",
|
||||
"processingKeyboardAndOwnerLink": "PASS",
|
||||
"processingFilterLabelsAndDurationGeometry": "PASS"
|
||||
},
|
||||
{
|
||||
"width": 390,
|
||||
"language": "nb",
|
||||
"mode": "light",
|
||||
"draftPreservedAcrossKeyboardSections": "NOT RUN",
|
||||
"revocationAndDeletionCancelled": "NOT RUN",
|
||||
"recentExportDenial": "NOT RUN",
|
||||
"lastAdminActionsDisabled": "NOT RUN",
|
||||
"processingKeyboardAndOwnerLink": "PASS",
|
||||
"processingFilterLabelsAndDurationGeometry": "PASS"
|
||||
},
|
||||
{
|
||||
"width": 390,
|
||||
"language": "nb",
|
||||
"mode": "dark",
|
||||
"draftPreservedAcrossKeyboardSections": "NOT RUN",
|
||||
"revocationAndDeletionCancelled": "NOT RUN",
|
||||
"recentExportDenial": "NOT RUN",
|
||||
"lastAdminActionsDisabled": "NOT RUN",
|
||||
"processingKeyboardAndOwnerLink": "PASS",
|
||||
"processingFilterLabelsAndDurationGeometry": "PASS"
|
||||
},
|
||||
{
|
||||
"width": 768,
|
||||
"language": "en",
|
||||
"mode": "light",
|
||||
"draftPreservedAcrossKeyboardSections": "NOT RUN",
|
||||
"revocationAndDeletionCancelled": "NOT RUN",
|
||||
"recentExportDenial": "NOT RUN",
|
||||
"lastAdminActionsDisabled": "NOT RUN",
|
||||
"processingKeyboardAndOwnerLink": "PASS",
|
||||
"processingFilterLabelsAndDurationGeometry": "PASS"
|
||||
},
|
||||
{
|
||||
"width": 768,
|
||||
"language": "en",
|
||||
"mode": "dark",
|
||||
"draftPreservedAcrossKeyboardSections": "NOT RUN",
|
||||
"revocationAndDeletionCancelled": "NOT RUN",
|
||||
"recentExportDenial": "NOT RUN",
|
||||
"lastAdminActionsDisabled": "NOT RUN",
|
||||
"processingKeyboardAndOwnerLink": "PASS",
|
||||
"processingFilterLabelsAndDurationGeometry": "PASS"
|
||||
},
|
||||
{
|
||||
"width": 768,
|
||||
"language": "nb",
|
||||
"mode": "light",
|
||||
"draftPreservedAcrossKeyboardSections": "NOT RUN",
|
||||
"revocationAndDeletionCancelled": "NOT RUN",
|
||||
"recentExportDenial": "NOT RUN",
|
||||
"lastAdminActionsDisabled": "NOT RUN",
|
||||
"processingKeyboardAndOwnerLink": "PASS",
|
||||
"processingFilterLabelsAndDurationGeometry": "PASS"
|
||||
},
|
||||
{
|
||||
"width": 768,
|
||||
"language": "nb",
|
||||
"mode": "dark",
|
||||
"draftPreservedAcrossKeyboardSections": "NOT RUN",
|
||||
"revocationAndDeletionCancelled": "NOT RUN",
|
||||
"recentExportDenial": "NOT RUN",
|
||||
"lastAdminActionsDisabled": "NOT RUN",
|
||||
"processingKeyboardAndOwnerLink": "PASS",
|
||||
"processingFilterLabelsAndDurationGeometry": "PASS"
|
||||
},
|
||||
{
|
||||
"width": 1440,
|
||||
"language": "en",
|
||||
"mode": "light",
|
||||
"draftPreservedAcrossKeyboardSections": "NOT RUN",
|
||||
"revocationAndDeletionCancelled": "NOT RUN",
|
||||
"recentExportDenial": "NOT RUN",
|
||||
"lastAdminActionsDisabled": "NOT RUN",
|
||||
"processingKeyboardAndOwnerLink": "PASS",
|
||||
"processingFilterLabelsAndDurationGeometry": "PASS"
|
||||
},
|
||||
{
|
||||
"width": 1440,
|
||||
"language": "en",
|
||||
"mode": "dark",
|
||||
"draftPreservedAcrossKeyboardSections": "NOT RUN",
|
||||
"revocationAndDeletionCancelled": "NOT RUN",
|
||||
"recentExportDenial": "NOT RUN",
|
||||
"lastAdminActionsDisabled": "NOT RUN",
|
||||
"processingKeyboardAndOwnerLink": "PASS",
|
||||
"processingFilterLabelsAndDurationGeometry": "PASS"
|
||||
},
|
||||
{
|
||||
"width": 1440,
|
||||
"language": "nb",
|
||||
"mode": "light",
|
||||
"draftPreservedAcrossKeyboardSections": "NOT RUN",
|
||||
"revocationAndDeletionCancelled": "NOT RUN",
|
||||
"recentExportDenial": "NOT RUN",
|
||||
"lastAdminActionsDisabled": "NOT RUN",
|
||||
"processingKeyboardAndOwnerLink": "PASS",
|
||||
"processingFilterLabelsAndDurationGeometry": "PASS"
|
||||
},
|
||||
{
|
||||
"width": 1440,
|
||||
"language": "nb",
|
||||
"mode": "dark",
|
||||
"draftPreservedAcrossKeyboardSections": "NOT RUN",
|
||||
"revocationAndDeletionCancelled": "NOT RUN",
|
||||
"recentExportDenial": "NOT RUN",
|
||||
"lastAdminActionsDisabled": "NOT RUN",
|
||||
"processingKeyboardAndOwnerLink": "PASS",
|
||||
"processingFilterLabelsAndDurationGeometry": "PASS"
|
||||
}
|
||||
],
|
||||
"errors": [],
|
||||
"unexpectedWrites": [],
|
||||
"exportDenials": [],
|
||||
"unavailableReads": [
|
||||
"/api/companies",
|
||||
"/api/companies",
|
||||
"/api/companies",
|
||||
"/api/companies",
|
||||
"/api/companies",
|
||||
"/api/companies",
|
||||
"/api/companies",
|
||||
"/api/companies",
|
||||
"/api/companies",
|
||||
"/api/companies",
|
||||
"/api/companies",
|
||||
"/api/companies",
|
||||
"/api/companies",
|
||||
"/api/companies",
|
||||
"/api/companies",
|
||||
"/api/companies"
|
||||
],
|
||||
"blockedExternal": [
|
||||
"https://fonts.googleapis.com",
|
||||
"https://fonts.googleapis.com",
|
||||
"https://fonts.googleapis.com",
|
||||
"https://fonts.googleapis.com",
|
||||
"https://fonts.googleapis.com",
|
||||
"https://fonts.googleapis.com",
|
||||
"https://fonts.googleapis.com",
|
||||
"https://fonts.googleapis.com",
|
||||
"https://fonts.googleapis.com",
|
||||
"https://fonts.googleapis.com",
|
||||
"https://fonts.googleapis.com",
|
||||
"https://fonts.googleapis.com",
|
||||
"https://fonts.googleapis.com",
|
||||
"https://fonts.googleapis.com",
|
||||
"https://fonts.googleapis.com",
|
||||
"https://fonts.googleapis.com"
|
||||
],
|
||||
"limits": [
|
||||
"Every API response is synthetic. Account export is a controlled 403; revocation/deletion confirmations are cancelled, not executed.",
|
||||
"System monitor capture is the controlled unavailable state, audit is empty; detailed success/action scenarios are unit tests, not live qualification.",
|
||||
"No real credentials, provider activation, model, native device, integrated security, production or release acceptance."
|
||||
]
|
||||
}
|
||||
|
After Width: | Height: | Size: 153 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 45 KiB |
|
After Width: | Height: | Size: 151 KiB |
|
After Width: | Height: | Size: 154 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 152 KiB |
|
After Width: | Height: | Size: 153 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 45 KiB |
|
After Width: | Height: | Size: 152 KiB |
|
After Width: | Height: | Size: 154 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 153 KiB |
|
After Width: | Height: | Size: 52 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 45 KiB |
|
After Width: | Height: | Size: 52 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 46 KiB |
|
After Width: | Height: | Size: 56 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 27 KiB |
|
After Width: | Height: | Size: 50 KiB |
|
After Width: | Height: | Size: 57 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 27 KiB |
|
After Width: | Height: | Size: 50 KiB |
|
After Width: | Height: | Size: 82 KiB |
|
After Width: | Height: | Size: 46 KiB |
|
After Width: | Height: | Size: 49 KiB |
|
After Width: | Height: | Size: 78 KiB |
|
After Width: | Height: | Size: 83 KiB |
|
After Width: | Height: | Size: 46 KiB |
|
After Width: | Height: | Size: 49 KiB |
|
After Width: | Height: | Size: 79 KiB |
|
After Width: | Height: | Size: 83 KiB |
|
After Width: | Height: | Size: 45 KiB |
|
After Width: | Height: | Size: 48 KiB |
|
After Width: | Height: | Size: 79 KiB |
|
After Width: | Height: | Size: 83 KiB |
|
After Width: | Height: | Size: 45 KiB |
|
After Width: | Height: | Size: 48 KiB |
|
After Width: | Height: | Size: 79 KiB |
|
After Width: | Height: | Size: 89 KiB |
|
After Width: | Height: | Size: 48 KiB |
|
After Width: | Height: | Size: 52 KiB |
|
After Width: | Height: | Size: 84 KiB |
|
After Width: | Height: | Size: 89 KiB |
|
After Width: | Height: | Size: 47 KiB |
|
After Width: | Height: | Size: 51 KiB |
|
After Width: | Height: | Size: 84 KiB |
|
After Width: | Height: | Size: 90 KiB |
|
After Width: | Height: | Size: 45 KiB |
|
After Width: | Height: | Size: 52 KiB |
|
After Width: | Height: | Size: 86 KiB |
|
After Width: | Height: | Size: 89 KiB |
|
After Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 51 KiB |
|
After Width: | Height: | Size: 85 KiB |
|
After Width: | Height: | Size: 69 KiB |
|
After Width: | Height: | Size: 36 KiB |
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 60 KiB |
|
After Width: | Height: | Size: 69 KiB |