AGENT NEO: BACKEND SOFTWARE DEVELOPER

v0.5.0
run 05e66e2917ae - Add endpoints to mainpulate AssetType<->SystemType mappings (mapping table alr (fork)
gate3
Timing total 2362098s
Intake conversation (in progress) 2362098s
Gate 2 (plan review) 283s
Specialists + checks 1359s
Gate 3 (diff review) (in progress) 2360456s
Token burn total 99,709 (in 16,806 / out 82,903) · est. cost $8.21
orchestrator 0  +  specialists 99,709  =  total 99,709
Phase Input Output Total Calls
specialist:postgres 7,961 29,276 37,237 1
specialist:api2 8,845 53,627 62,472 1
TOTAL 16,806 82,903 99,709 2
Agent Neo activity — live output from the architect & specialists
loading…
open full log
Candidate learnings 11 pending — harvested from specialist reports

Deviations and open questions the specialists flagged. Accepting appends the note to context/learnings.md, which the architect reads on future runs. Dismissing drops it. Nothing enters the agents' context until you accept it.

deviation specialist:postgres
**Insert procedure return mechanism.** The plan lists only the 4 input params and states it "returns the inserted mapping row." A PostgreSQL `PROCEDURE` cannot `RETURN QUERY`, so — following the repo's established INOUT convention (`usp_InsertProject_V2`, `usp_InsertModelFolder`) — the two generated columns are returned via INOUT params. Only `AssetTypeSystemTypeMappingId` and `InsertedOn` are server-generated; the other DTO fields are request inputs API2 already holds. This satisfies the single-round-trip requirement without a follow-up read.
deviation specialist:postgres
**`fn_InsertAsset` / `fn_UpdateAsset` inner projection** changed from `SELECT *` to an explicit 12-column list (not mentioned in the plan). This is required to avoid a runtime structure-mismatch once `fn_GetAsset` gained `SystemId`, and it keeps the Asset write-endpoint contract byte-for-byte identical. No behavioural change to write endpoints.
open_question specialist:postgres
**Cardinality (plan risk):** the scalar `SystemId` is resolved as the earliest-created mapping (`ORDER BY m."Id" ASC LIMIT 1`) — interpretation (b) "first/primary mapping". If the team instead wants 1:1 enforcement (interpretation (a)), add a unique constraint on `(ProjectShardId, AssetTypeId)` to `AssetTypeSystemTypeMapping` — a separate change, not done here.
open_question specialist:postgres
**Duplicate handling:** duplicates are rejected with a plain `RAISE EXCEPTION` (message contains "already mapped"). Confirm API2 maps this to 409/400 as desired.
open_question specialist:postgres
**Integration tests:** the plan's `testing_plan` asks for `IntegrationTest/main.py` scenarios. I did not add them because they cannot be executed here (no Docker) and unverified Python risks breaking the suite. Recommend the API2/integration owner add: insert happy-path + duplicate + missing AssetType/SystemType; delete happy-path + not-found; get + list pagination; and `fn_GetAsset`/`fn_GetAssetList` returning `SystemId` (mapped, unmapped→NULL, and no fan-out with multiple SystemTypes per AssetType).
deviation specialist:api2
**`egress.ts` not modified.** The spec's `files:` list includes `src/models/egress.ts`, but this repo keeps Asset/mapping DTOs in their service files (`SystemType` in `system.types.service.ts`, `Asset` in `assets.service.ts`). I followed that convention instead of adding a stray DTO to `egress.ts`.
deviation specialist:api2
**`src/services/asset.service.ts` (singular)** in the spec does not exist; the real file is `src/services/assets.service.ts`, which is what I edited.
open_question specialist:api2
**Field name `systemId` vs `systemTypeId`.** The spec calls the new Asset field `systemId` but derives it from the AssetType→SystemType mapping, whose target is a SystemType. I returned the mapping's `SystemTypeId` under the key `systemId` exactly as written. Confirm the field name is intended (vs. `systemTypeId`), since it affects the public API contract.
open_question specialist:api2
**DB function/column names.** No SQL for the mapping lives in this repo, so I assumed the sibling naming convention (`fn_GetAssetTypeSystemTypeMappingList`, `fn_GetAssetTypeSystemTypeMapping`, `fn_InsertAssetTypeSystemTypeMapping`, `usp_DeleteAssetTypeSystemTypeMapping`) and PK column `AssetTypeSystemTypeMappingId`. Please confirm these match the actual DB objects; if not, only the `SQL`/`mapRow` in the mappings service need editing.
open_question specialist:api2
**List pagination.** The mappings `GET` list returns a plain array (like `system-types`) rather than a paginated envelope (like `assets`). Confirm which shape is desired.
open_question specialist:api2
**Uniqueness / 409.** I map a unique-constraint violation containing `AssetTypeSystemTypeMapping` to a 409 (one mapping per asset type). Confirm the intended uniqueness rule and constraint name.

Conversation

you
- Add endpoints to mainpulate AssetType<->SystemType mappings (mapping table already implemented)
- Modify the Asset GET endpoints to also return SystemId relation or null if non-existing
Agent Neo
A few quick questions to nail down scope.
3 questions (already answered)
  • Which CRUD operations are needed for the AssetType↔SystemType mapping endpoints?
  • For the Asset GET endpoints, should SystemId be returned as a nested object or just the ID?
  • Which Asset GET endpoints should be modified?
you
**Which CRUD operations are needed for the AssetType↔SystemType mapping endpoints?**
→ Create mapping, Delete mapping, List mappings, Get single mapping

**For the Asset GET endpoints, should SystemId be returned as a nested object or just the ID?**
→ Just the ID

**Which Asset GET endpoints should be modified?**
→ Both GET by ID and GET list
Agent Neo
Enough to spec this out. Two concerns: mapping CRUD endpoints + enriching Asset GET responses with a nullable SystemId field.
Spec ready — see Gate 1 below.
Agent Neo
_Forked from run 14fd2c11. All prior context (conversation, spec, plan) was carried over; you can revise and proceed from here._
Chat closed — run has advanced past intake.

Spec

Plan

approve

Specialist bundles pending

Gate 3: approve, revise, or reject
Test verification:
api2: passed
test log & output
$ npx tsc --noEmit exit 0 full output

                        
                        
$ npm test exit 0 full output
 
  ...systemtype.mappings.controller.ts |     100 |      100 |     100 |     100 |                   
 src/api/v2/projects/batchfiles        |   78.78 |       25 |     100 |   78.78 |                   
  batchfiles.controller.ts             |   78.78 |       25 |     100 |   78.78 | 15-25,42,55       
 src/api/v2/projects/categoryTypes     |   91.57 |      100 |   88.23 |   91.02 |                   
  category.types.controller.ts         |   91.57 |      100 |   88.23 |   91.02 | 105-112           
 src/api/v2/projects/cde               |   50.56 |    47.82 |   46.66 |   48.82 |                   
  cde.controller.ts                    |   32.17 |        0 |      30 |   32.17 | ...60-176,180-242 
  cde.criteria.validator.ts            |   78.37 |       60 |   66.66 |   78.78 | 17-21,28-31,56-57 
  cde.link.validator.ts                |    92.3 |    88.88 |     100 |    90.9 | 44,61             
 ...projects/commissioning/taskFolders |     100 |      100 |     100 |     100 |                   
  ...ioning.task.folders.controller.ts |     100 |      100 |     100 |     100 |                   
 ...2/projects/commissioning/workflows |     100 |      100 |     100 |     100 |                   
  ...issioning.workflows.controller.ts |     100 |      100 |     100 |     100 |                   
 src/api/v2/projects/coordinates       |   90.98 |    84.11 |   91.93 |   90.41 |                   
  conflict.controller.ts               |     100 |      100 |     100 |     100 |                   
  conflict.validator.ts                |   94.73 |    91.66 |     100 |   93.75 | 43-44             
  coordinates.controller.ts            |   82.55 |    77.41 |   78.26 |    82.3 | ...55,168,243-244 
  coordinates.helper.ts                |   94.54 |       65 |     100 |   94.33 | 23,75,83          
  coordinates.validator.ts             |    97.4 |       95 |     100 |   96.72 | 25,43             
 src/api/v2/projects/devices           |     100 |      100 |     100 |     100 |                   
  project.devices.controller.ts        |     100 |      100 |     100 |     100 |                   
  project.devices.delegation.ts        |     100 |      100 |     100 |     100 |                   
  project.devices.validator.ts         |     100 |      100 |     100 |     100 |                   
 src/api/v2/projects/devices/handlers  |     100 |    92.85 |     100 |     100 |                   
  project.devices.v1.handler.ts        |     100 |    92.85 |     100 |     100 | 33                
 src/api/v2/projects/disciplines       |   92.85 |       75 |     100 |   91.66 |                   
  disciplines.controller.ts            |   92.85 |       75 |     100 |   91.66 | 18,34             
 src/api/v2/projects/elements          |   93.83 |    81.73 |   95.65 |    93.4 |                   
  element-helpers.ts                   |      50 |        0 |       0 |      50 | 15                
  elements.activities.controller.ts    |   95.31 |    78.37 |     100 |   94.82 | 23,41-42          
  elements.activities.validator.ts     |     100 |      100 |     100 |     100 |                   
  elements.status.controller.ts        |   90.69 |    80.76 |     100 |   89.74 | 82-89,130-136     
  elements.status.validator.ts         |   96.66 |    88.88 |     100 |   97.91 | 48                
 src/api/v2/projects/folders           |   91.66 |    82.81 |      96 |   91.01 |                   
  folders.controller.ts                |    89.4 |    70.27 |   95.23 |   88.88 | ...85-189,225,231 
  folders.validator.ts                 |     100 |      100 |     100 |     100 |                   
 src/api/v2/projects/images            |   75.28 |       50 |     100 |   75.28 |                   
  image.uploader.ts                    |   75.28 |       50 |     100 |   75.28 | ...91-208,227-276 
 ...api/v2/projects/images/360captures |   94.03 |    83.63 |     100 |    94.4 |                   
  360captures.controller.ts            |   95.74 |    72.72 |     100 |   95.18 | 78,91,112-113     
  360captures.validator.ts             |   91.22 |    86.36 |     100 |   92.85 | 45-48             
 src/api/v2/projects/images/photos     |   83.69 |    71.42 |      88 |      83 |                   
  photos.controller.ts                 |   88.07 |       75 |      90 |   86.95 | 87,125,137-152    
  photos.validator.ts                  |   77.33 |    70.83 |      80 |   77.04 | ...59,62,71,90-95 
 src/api/v2/projects/issues            |   72.07 |    49.42 |    67.5 |   70.94 |                   
  issue.comments.controller.ts         |     100 |      100 |     100 |     100 |                   
  issue.comments.validator.ts          |   88.46 |       75 |     100 |     100 | 17-28             
  issue.notification.service.ts        |      25 |        0 |       0 |      25 | 25-49,61-78       
  issues.controller.ts                 |   69.48 |    29.41 |    61.9 |   68.38 | ...30-238,243-249 
  issues.validator.ts                  |   78.18 |    67.85 |   72.72 |   77.38 | ...01,156-169,182 
 src/api/v2/projects/issues/categories |   97.72 |       92 |     100 |   97.36 |                   
  issues.categories.controller.ts      |     100 |      100 |     100 |     100 |                   
  issues.categories.validator.ts       |   95.74 |     91.3 |     100 |   95.12 | 69,73             
 .../v2/projects/issues/fileReferences |   97.22 |    78.94 |     100 |   96.87 |                   
  issues.fileReferences.controller.ts  |   96.15 |    70.83 |     100 |   95.83 | 66,71             
  issues.fileReferences.validator.ts   |     100 |    92.85 |     100 |     100 | 11                
 src/api/v2/projects/issues/history    |   99.29 |    83.15 |     100 |   99.22 |                   
  issue.history.controller.ts          |   99.23 |    82.41 |     100 |   99.17 | 83                
  issue.history.validator.ts           |     100 |      100 |     100 |     100 |                   
 src/api/v2/projects/issues/models     |     100 |    83.33 |     100 |     100 |                   
  issues.models.controller.ts          |     100 |       50 |     100 |     100 | 15-34             
  issues.models.validator.ts           |     100 |    92.85 |     100 |     100 | 11                
 src/api/v2/projects/markers           |   81.73 |    84.44 |      80 |   83.87 |                   
  marker.validator.ts                  |   81.81 |    81.08 |   83.33 |   86.36 | 30-34,76-80       
  markers.controller.ts                |   81.63 |      100 |      75 |   81.63 | 63-65,76-83       
 src/api/v2/projects/models            |    94.4 |     92.5 |   94.73 |   93.67 |                   
  models.controller.ts                 |    89.1 |    83.33 |    87.5 |   88.37 | 33,91-99,140-141  
  models.validator.ts                  |   95.16 |    91.48 |     100 |   94.17 | 31-34,84-87       
  models.version.controller.ts         |     100 |      100 |     100 |     100 |                   
  request.validator.ts                 |     100 |      100 |     100 |     100 |                   
 src/api/v2/projects/projectfiles      |    86.2 |    84.61 |   57.14 |   86.53 |                   
  projectfiles.controller.ts           |    86.2 |    84.61 |   57.14 |   86.53 | 15-35             
 src/api/v2/projects/rooms             |   88.63 |       50 |   71.42 |   89.18 |                   
  rooms.controller.ts                  |     100 |      100 |     100 |     100 |                   
  rooms.validator.ts                   |   72.22 |       50 |   33.33 |   71.42 | 19-23,27          
 ...pi/v2/projects/rooms/capturepoints |   86.13 |    73.64 |     100 |   93.75 |                   
  rooms.capturepoints.controller.ts    |     100 |       50 |     100 |     100 | 61-62             
  rooms.capturepoints.validator.ts     |   80.55 |       75 |     100 |    90.9 | ...43,146,154,157 
 src/api/v2/projects/schedules         |   97.36 |    93.33 |     100 |   97.77 |                   
  schedules.controller.ts              |   96.92 |       75 |     100 |   96.22 | 32-33             
  schedules.validator.ts               |   97.95 |    97.29 |     100 |     100 | 32                
 src/api/v2/projects/systemTypes       |     100 |      100 |     100 |     100 |                   
  system.types.controller.ts           |     100 |      100 |     100 |     100 |                   
 src/api/v2/projects/systems           |     100 |      100 |     100 |     100 |                   
  systems.controller.ts                |     100 |      100 |     100 |     100 |                   
 src/api/v2/projects/userfiles         |   86.84 |    90.62 |      80 |   85.93 |                   
  userfiles.controller.ts              |   85.24 |    91.66 |      75 |    84.9 | 17,25-36          
  userfiles.validator.ts               |   93.33 |     87.5 |     100 |    90.9 | 12                
 src/api/v2/projects/videos            |   69.79 |    74.73 |    62.5 |   68.09 |                   
  videos.controller.ts                 |   67.64 |       80 |   57.89 |   66.94 | ...66-194,198-210 
  videos.validator.ts                  |      75 |    68.88 |      80 |   71.11 | 40-63,89,97       
 src/api/v2/tenants                    |   69.76 |       50 |      60 |   69.44 |                   
  tenant.controller.ts                 |   61.29 |        0 |      50 |   59.25 | 26-39             
  tenant.validator.ts                  |   91.66 |       75 |     100 |     100 | 13                
 src/clients                           |   50.13 |    45.35 |    37.5 |   49.65 |                   
  ai.service.client.ts                 |   68.05 |    44.23 |   58.33 |    67.6 | ...-63,76,133,150 
  authorised.iam.client.ts             |   11.34 |        0 |       0 |   10.41 | ...25-186,191-199 
  authorised.notification.client.ts    |   78.57 |       52 |      50 |   78.04 | 75-78,105-117     
  autodesk.client.ts                   |   10.61 |      100 |   10.52 |    9.82 | ...75,286-288,294 
  autodesk.profile.client.ts           |   63.15 |       75 |      50 |   61.11 | 14-25,39          
  billy.search.client.ts               |   55.55 |    66.66 |      50 |   52.94 | 20-42,55          
  clients.ts                           |      52 |    31.94 |   35.71 |   53.06 | ...25,39-48,59-89 
  iam.client.helper.ts                 |     100 |     90.9 |     100 |     100 | 28,70             
  iam.client.ts                        |   69.29 |    49.09 |   58.82 |   68.75 | ...16,282,288,293 
  mapbox.client.ts                     |     100 |    91.66 |     100 |     100 | 33,48-49          
  redis.client.ts                      |   33.33 |    22.44 |   31.25 |   34.54 | ...06-141,150-220 
  service.clients.ts                   |     100 |      100 |     100 |     100 |                   
 src/db                                |   28.07 |        0 |       0 |      26 |                   
  db.ts                                |   28.07 |        0 |       0 |      26 | ...,84-91,103-117 
 src/middleware                        |   44.53 |    28.88 |   46.15 |   43.31 |                   
  api-version.middleware.ts            |     100 |      100 |     100 |     100 |                   
  authorisation.ts                     |   56.03 |    34.28 |   47.61 |    54.9 | ...98,132-162,190 
  middleware.ts                        |   26.36 |    16.32 |   41.17 |   25.24 | ...58-175,180-187 
 src/models                            |     100 |      100 |     100 |     100 |                   
  egress.ts                            |     100 |      100 |     100 |     100 |                   
  ingress.ts                           |     100 |      100 |     100 |     100 |                   
 src/services                          |   37.86 |    27.84 |   28.23 |    37.6 |                   
  360capture.service.ts                |   60.46 |       45 |      50 |   59.52 | ...8,49-51,94-104 
  activities.categories.service.ts     |   17.92 |        0 |       0 |   18.26 | ...61-183,189-202 
  activities.service.ts                |   21.52 |    11.11 |   11.11 |   21.27 | ...11-154,175-302 
  ...pe.systemtype.mappings.service.ts |   92.85 |    73.68 |     100 |   92.68 | 44,52-53          
  asset.types.service.ts               |   29.03 |        0 |       0 |      30 | ...51,56-64,69-74 
  assets.service.ts                    |   52.08 |    29.54 |   57.14 |   52.08 | ...97-102,107-123 
  azure.blob.service.ts                |   18.79 |        0 |       0 |   18.01 | ...74-175,197-225 
  azure.table.service.ts               |   14.92 |        0 |       0 |   16.39 | ...67-106,110-143 
  batchfiles.service.ts                |    25.8 |        0 |       0 |    25.8 | ...71,76-82,86-87 
  category.types.service.ts            |   27.08 |        0 |       0 |   27.08 | ...2-70,75-79,105 
  cde.service.ts                       |   17.72 |        0 |       0 |   17.83 | ...29-239,243-361 
  cde.user.service.ts                  |   30.76 |        0 |       0 |   30.76 | 7-22              
  ...issioning.task.folders.service.ts |   26.31 |        0 |       0 |   26.31 | ...63,68-73,83-91 
  commissioning.workflows.service.ts   |   24.44 |        0 |       0 |   24.44 | ...57,62-73,78-88 
  coordinates.conflict.service.ts      |   16.25 |        0 |       0 |   16.25 | ...,84-94,100-179 
  coordinates.service.ts               |   15.38 |        0 |       0 |    15.5 | ...68-178,184-246 
  default.disciplines.service.ts       |   24.24 |        0 |       0 |      25 | ...36,41-47,52-57 
  devices.service.ts                   |   37.16 |    18.03 |      25 |   37.24 | ...38,243,250-279 
  disciplines.service.ts               |   31.57 |      100 |       0 |   33.33 | 9-24,28-38        
  fileReference.service.ts             |   42.85 |      100 |       0 |   42.85 | 5-12              
  folders.service.ts                   |   71.79 |       50 |   88.46 |   68.26 | ...03-218,236-240 
  issue.comments.service.ts            |   75.92 |     67.5 |     100 |   73.46 | 19-25,42-49       
  issue.history.service.ts             |   41.86 |       68 |   42.85 |   41.46 | ...82,101-107,158 
  issue.location.ts                    |   33.33 |        0 |       0 |   31.57 | 10-21,26-32       
  issue.severity.service.ts            |   38.46 |        0 |       0 |   38.46 | 9-26              
  issue.types.service.ts               |   27.58 |        0 |       0 |      24 | 8-19,24-47        
  issues.categories.service.ts         |   42.85 |        0 |       0 |      45 | 18-36,42          
  issues.fileReference.service.ts      |   42.85 |        0 |       0 |      45 | 12-28,34          
  issues.models.service.ts             |      50 |        0 |       0 |      50 | 11-19,25          
  issues.service.ts                    |   37.93 |    27.88 |   31.42 |   36.86 | ...55-393,461-494 
  markers.services.ts                  |   15.15 |        0 |       0 |   15.38 | ...5,71-82,88-105 
  model.elements.status.service.ts     |   14.28 |        0 |       0 |   14.49 | ...68-292,298-299 
  models.service.ts                    |   19.78 |     1.52 |      10 |      20 | ...80-265,271-382 
  models.version.service.ts            |   21.73 |        0 |       0 |   22.05 | ...38-149,154-163 
  package.predictions.service.ts       |    23.8 |        0 |       0 |    23.8 | 9-36              
  photos.service.ts                    |      50 |    42.85 |   22.22 |   49.12 | ...8,72-74,99-130 
  portfolio.service.ts                 |   70.05 |    49.25 |   91.66 |   72.92 | ...08-409,426-429 
  projectfiles.service.ts              |   88.88 |       90 |   85.71 |    89.7 | 57-64             
  projects.service.ts                  |      50 |    47.72 |   39.47 |   50.17 | ...42,945,948,951 
  rooms.capturepoints.service.ts       |   75.62 |    71.79 |   85.71 |   75.47 | ...88,299,303-308 
  rooms.service.ts                     |   20.68 |        0 |       0 |   20.68 | 9-22,28-49        
  schedules.service.ts                 |   47.05 |    26.43 |   46.66 |   44.61 | ...37,324-356,382 
  system.types.service.ts              |   23.91 |        0 |       0 |   23.91 | ...7,82-90,95-100 
  systems.service.ts                   |   29.03 |        0 |       0 |      30 | ...51,56-64,69-74 
  userfiles.service.ts                 |   19.23 |        0 |       0 |    19.8 | ...76-277,288-330 
  videos.service.ts                    |   44.82 |    18.75 |      25 |   43.85 | ...92-102,108-119 
 src/types                             |   90.65 |    92.85 |   75.47 |   90.65 |                   
  DbColumnsMappings.ts                 |     100 |      100 |     100 |     100 |                   
  categoryTypeHierarchyMapping.ts      |     100 |      100 |     100 |     100 |                   
  cde.types.ts                         |     100 |      100 |     100 |     100 |                   
  devices.types.ts                     |     100 |      100 |     100 |     100 |                   
  errortypes.ts                        |   78.94 |      100 |   53.84 |   78.94 | ...97,103,109,132 
  http.types.ts                        |     100 |      100 |     100 |     100 |                   
  iam.types.ts                         |     100 |      100 |     100 |     100 |                   
  logger.properties.ts                 |     100 |      100 |     100 |     100 |                   
  marker.types.ts                      |     100 |      100 |     100 |     100 |                   
  model.elements.ts                    |     100 |      100 |     100 |     100 |                   
  notification.types.ts                |   87.17 |    71.42 |   83.33 |   87.17 | 24-32             
  portfolio.types.ts                   |     100 |      100 |     100 |     100 |                   
  project.attachment.types.ts          |     100 |      100 |     100 |     100 |                   
 src/util                              |   83.61 |    72.18 |   81.37 |   83.43 |                   
  array.util.ts                        |     100 |      100 |     100 |     100 |                   
  azure.util.ts                        |   95.78 |       85 |      95 |   95.69 | 61,192-213        
  blob-download-url.cache.ts           |    94.2 |    96.36 |     100 |   94.11 | 107,154-156       
  business-region.ts                   |     100 |      100 |     100 |     100 |                   
  cde.token.util.ts                    |     100 |      100 |     100 |     100 |                   
  error.logger.util.ts                 |     100 |      100 |     100 |     100 |                   
  errorFormatter.ts                    |      96 |      100 |   85.71 |   95.23 | 50                
  fileDeletion.handler.ts              |   96.66 |    72.72 |     100 |   96.66 | 76                
  fileReference.deletion.util.ts       |   35.71 |        0 |       0 |   35.71 | 18-28             
  image.util.ts                        |   69.23 |    43.75 |     100 |   67.56 | ...35,42,58,76-81 
  logger.ts                            |     100 |    96.42 |     100 |     100 | 56                
  metrics.ts                           |   82.02 |    63.63 |   71.42 |   82.02 | ...79-283,316-320 
  pagination.util.ts                   |   88.88 |    91.66 |     100 |   85.71 | 14                
  query.util.ts                        |   26.19 |     2.56 |   42.85 |    22.5 | 7-19,30-37,44-66  
  store.ts                             |     100 |      100 |     100 |     100 |                   
  token.util.ts                        |   81.48 |    66.66 |   71.42 |   81.48 | 19,41-45          
  url.util.ts                          |     100 |      100 |     100 |     100 |                   
  username.ts                          |   83.33 |    77.77 |     100 |     100 | 8-11              
  utilities.ts                         |     100 |      100 |     100 |     100 |                   
---------------------------------------|---------|----------|---------|---------|-------------------

A Jira ticket is required per repo before PRs open. The branch will be <TICKET>-<title-slug> and commits <TICKET>: <description>.

Send back for changes. Tell the specialist exactly what to fix; it re-runs on the chosen repos and returns here.

Re-run which repos? (none = all)