logo

Academy

DocumentationTemplates

YAML template: code and hack

The template of the metadata YAML file for a programming solution and for a ctf-hacking solution.

For a code challenge and for a hack challenge, the name of this file is {user-name}.yml. Remove all the comments from your file.

Fill the fields in angle brackets <>. The list below the box tells you what each field is.

type: <scope>
user-name: <user-name>
stage: <phase>
complexity: <complexity>
others:
  in: <M>
  out: <N>
  totals: <M+N>
score:
  initial: <X>
  final: <Y>
  progress: <Y-X>
global-rank:
  initial: <A>
  final: <B>
  progress: <A-B>
national-rank:
  initial: <A>
  final: <B>
  progress: <A-B>
effort: <H>
productivity: <P>
date: <commit-date>
path: <solution-path>
  • <scope> is code for a programming challenge, or hack for a ctf-hacking challenge.

  • <user-name> is your GitLab username. It must be the same as the first part of the name of your branch.

  • <phase> is the phase of the Academy that you are in. The key of this field in the YAML file is stage, and it is not the academy stage of Terms. Your team leader gives you the phase when you start. Select one of these four values, and use the same value in all your merge requests. Change it only when your team leader tells you to change it.

    • journey.
    • quest.
    • onboarding.
    • practice.

    How it works gives each phase.

  • <complexity> is the difficulty of the challenge, or its score, from the platform. The same value goes in the parentheses of your commit title.

    • CodeAbbey. The blessing of the problem, which is equal to score.progress.
    • SPOJ. The score of the problem, which SPOJ shows at the moment of the solution.

    Score and ranking tells you how to read this value.

  • <solution-path> is the name of your solution file. It must obey the naming conventions of the repository.

  • <commit-date> is the date of the commit. The command git log gives it to you. You must write the UTC date. If you are in Bogota, Colombia, add 5 hours. The format is Year-Month-Day Hours:Min:SecondsZ. An example is 2021-04-16 09:41:52Z.

  • M, N, A and B are integers. X, Y, H and P can have decimals. When a calculation gives a decimal, write 3 decimal places or less, and do not round the value. For example, write 15.075 and not 15.08. Write 15.07 as 15.07, and 15.0 as 15.0. All the formulas below obey this rule.

  • M is the quantity of internal solutions of other talents for the challenge that you solve. Fluid Attacks counts the .yml files of the challenge folder, and it does not count your own file.

  • N is the quantity of external solutions in the OTHERS.lst file for the challenge that you solve. Fluid Attacks counts the lines that are not empty.

    CAUTION: Read the challenge folder again before you push. Fluid Attacks computes M and N from the repository. A merge request that a reviewer merged after you made your branch changes M.

  • A and B are your position in a ranking, before and after the solution. They go in global-rank and in national-rank.

  • Effort is the quantity of hours that you used for this challenge, in decimal hours. The value must be a number over zero.

    Time Doctor gives no time for each challenge, because it runs against one task. You decide which part of a session is for this challenge, and you write that value. Terms gives the time-tracking rules.

    The value can be exact, or an honest estimate.

    Write the hours with 3 decimal places or less, and do not round the value. For example, 10 hours and 0 minutes is 10.0. A time of 0 hours and 24 minutes is 0.4, because 24 / 60 = 0.4. A time of 5 hours and 13 minutes is 5.216.

  • Productivity is the progress in points divided by the effort: P = (Y - X) / H. Write the exact result of this division with 3 decimal places or less, and do not round it. For example, score.progress is 6.03 and the effort is 0.4. Then 6.03 / 0.4 = 15.075, and your P value is 15.075.

    Use score.progress and not the complexity. The two values are equal on CodeAbbey, and they are different on SPOJ.

  • Rank progress is initial - final, for global-rank and for national-rank. A positive value shows that you moved up in the ranking. A negative value shows that your position became worse. The rankings of a platform such as CodeAbbey are dynamic, so this can occur. Other users send solutions while you work on your challenge. Always write the values that the platform shows.

You must fill all these values. Every field is applicable, because each challenge gives a score and gives ranks. Read Score.

Full example:

type: code
user-name: friendglak
stage: onboarding
complexity: 8.95
others:
  in: 4
  out: 14
  totals: 18
score:
  initial: 111.26
  final: 120.21
  progress: 8.95
global-rank:
  initial: 4285
  final: 3998
  progress: 287
national-rank:
  initial: 221
  final: 206
  progress: 15
effort: 11.0
productivity: 0.814
date: "2021-04-16 09:41:52Z"
path: friendglak.elv

These are user.yml files that are already in the repository: