First commit
Your registration commit: the .mailmap entry and the users/ YAML file that must land together before any solution.
Your first commit to this repository is deliberately not a solution to a challenge. It is a registration commit. The commit must contain two short files:
- Your entry in
.mailmap. Put the entry in alphabetical order. - A new file
users/<assigned-nickname>.yml. This file records the start of the Fluid Attacks Academy phase that you enter.
The two files must be in the same commit. Record only your current phase. You add a new period entry later, if you move to a different phase.
After the reviewer merges this commit, send your first solution in a separate merge request. Use the regular submission procedure.
Reason
The .mailmap entry gives you one authorship identity in the repository. All
your commits then resolve to the same talent, even when your name or your
email address changes.
The users/<assigned-nickname>.yml file gives you a phase timeline. The CI
uses these timestamps to compute Time-to-First-Solution and the other metrics
that start at a phase. Without the file, the CI anchors your solutions to the
moment of your first push. That moment is later than your true start, so the
metrics then show a cycle time that is too short.
The two files together keep the registration simple: one commit, one merge request, and no challenge content.
YAML format
users/<assigned-nickname>.yml is a file in the users/ folder at the root
of the repository. The filename is in kebab case. The Academy team gives you
the <assigned-nickname> alias, for example efficient-cottage or
bright-spark.
Record only the phase that you start with. Add a new period entry later, if you move to the next phase. Therefore the file is short, and it usually has one entry. The file becomes longer as you move through the phases.
This example shows a full-time talent who starts in onboarding:
user:
dedication: full-time
periods:
- type: onboarding
start: "2026-03-19T01:07:57Z"This example shows a part-time talent who starts in practice:
user:
dedication: part-time
periods:
- type: practice
start: "2026-05-10T08:00:00Z"Schema rules:
user.dedicationgives your weekly commitment. The accepted values arefull-time(42 h/week) andpart-time(21 h/week). The CI uses this value to compute the workload percentage on the Active Users dashboard. Terms is the source of these hours. The schema accepts a file with nodedication, and then it readsfull-time. Write the field anyway. Without it, the CI measures a part-time talent against 42 h/week.user.absencesis an optional list of justified absences. Each entry hastype,startandend. The two timestamps are in ISO 8601 format with a timezone. The accepted types arebereavement-leave,paid-leave,vacation,public-holiday,jury-duty,medical-leaveandpersonal-absence. The CI removes the weekdays of each absence from the denominator of the workload metric. The CI discounts the Colombian public holidays automatically, so do not list them here. The reviewer maintains this field, not the talent.user.periodsis a list, and the list must not be empty. Each entry hastypeandstart, and it accepts an optionalend.typeis one of the four current Academy phases:journey,quest,onboardingorpractice. Each phase is a correct first phase. A new employee usually starts inonboardingand then moves topractice. An employee who completed onboarding in a previous process starts directly inpractice. An external talent starts injourneyor inquest.startis an ISO 8601 timestamp with a timezone. The canonical form ends withZfor UTC. An explicit offset such as-05:00is also correct. You can give sub-second precision, and minute precision is sufficient when you do not know the exact time. The CI rejects a timestamp without a timezone, because such a timestamp causes timezone comparison errors.endcloses the phase. It is an ISO 8601 timestamp with a timezone, and it must be later than thestartof the same entry. A phase with noendstays open. Thestartof the next phase closes it, and the last phase with noendis your current phase. The Academy team maintains this field, not the talent, so your registration commit gives onlytypeandstart.- The periods must be in chronological order. Each
startmust be equal to the previousstartor later than it. - The file must contain the
userkey and nothing else. The CI rejects any other key at the top of the file.
Git and mailmap
Before your first commit, configure git with your name and your email. Use
the corporate email account of your GitLab account.
Getting started gives the rule of the account.
This is an example:
git config --global user.name "John Doe"
git config --global user.email "[email protected]"Then add the same credentials to the .mailmap file in the root folder of the repository. Keep the file in alphabetical order.
John Doe <[email protected]> GitlabUsername <[email protected]>Then run the test nix run .#lint-git-mailmap.
Local builds tells you how to run the local
checks.
Commit message
The first commit is not a chall\sol commit. It uses the common product, the
chore type and the conf scope. This combination is for registration commits
that apply to the full repository and not to one product.
common\chore(conf): #0 first commit
- register <assigned-nickname>Replace <assigned-nickname> with the alias that the Academy team gives you.
This alias is also the filename of your users/<assigned-nickname>.yml file.
CI checks
lint-git-mailmapverifies that your.mailmapentry is in alphabetical order and has the correct format.test-users-yamlverifies yourusers/<assigned-nickname>.ymlfile against the Pydantic schema. It checks the phase types, the timestamps and the chronological order.
If one of these jobs fails, correct the file, amend the commit and push again.
Review
When a talent is not yet in .mailmap, the reviewer verifies the first merge
request:
- The merge request contains the
.mailmapentry and theusers/<assigned-nickname>.ymlfile, and no other file. - The merge request contains no solution. Solutions go in a separate merge request, after the reviewer merges this one.
- The filename matches the assigned nickname of the talent.
- The phase types and the start timestamps are reasonable for the phase that the talent announced.