yegor256 / cactoos

Object-Oriented Java primitives, as an alternative to Google Guava and Apache Commons
https://www.cactoos.org
MIT License
737 stars 164 forks source link

CheckedScalar.java:42-48: Create CheckedBiFunc,... #799

Closed 0pdd closed 6 years ago

0pdd commented 6 years ago

The puzzle 736-a59d45fd from #736 has to be resolved:

https://github.com/yegor256/cactoos/blob/287c998b54c8712082a9747a65d32dd1eb3182b6/src/main/java/org/cactoos/scalar/CheckedScalar.java#L42-L48

The puzzle was created by Roman Proshin on 30-Apr-18.

Estimate: 30 minutes,

If you have any technical questions, don't ask me, submit new tickets instead. The task will be "done" when the problem is fixed and the text of the puzzle is removed from the source code. Here is more about PDD and about me.

0crat commented 6 years ago

@llorllale/z please, pay attention to this issue

0crat commented 6 years ago

@0pdd/z this project will fix the problem faster if you donate a few dollars to it; just click here and pay via Stripe, it's very fast, convenient and appreciated; thanks a lot!

0crat commented 6 years ago

Job #799 is now in scope, role is DEV

0crat commented 6 years ago

The job #799 assigned to @vatavuk/z, here is why; the budget is 30 minutes, see §4; please, read §8 and §9; if the task is not clear, read this and this

Vatavuk commented 6 years ago

@0crat wait for puzzle to be removed

0crat commented 6 years ago

@0crat wait for puzzle to be removed (here)

@Vatavuk The impediment for #799 was registered successfully by @vatavuk/z

0pdd commented 6 years ago

The puzzle 736-a59d45fd has disappeared from the source code, that's why I closed this issue.

0crat commented 6 years ago

@elenavolokhova/z please review this job completed by @vatavuk/z, as in §30; the job will be fully closed and all payments will be made when the quality review is completed

0crat commented 6 years ago

The job #799 is now out of scope

elenavolokhova commented 6 years ago

@0crat quality good

0crat commented 6 years ago

@0crat quality good (here)

@elenavolokhova There is an unrecoverable failure on my side. Please, submit it here:

PID: 4@8e1fc06d-5a42-48df-abcc-d91068234970, thread: AsyncFlush-1
com.zerocracy.farm.reactive.StkGroovy[125] java.lang.IllegalStateException: java.lang.reflect.InvocationTargetException in com/zerocracy/stk/pm/qa/complete_qa_review.groovy
sun.reflect.NativeMethodAccessorImpl[-2] java.lang.reflect.InvocationTargetException: null
com.jcabi.xml.DomParser[112] java.lang.IllegalArgumentException: Invalid XML: "<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
  <head>
    <meta charset="utf-8"/>
    <meta name="description" content="Policy of Zerocrat, a project manager
that never sleeps, owned and maintained by Zerocracy.
"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    <link rel="shortcut icon" href="//www.0crat.com/png/logo.png"/>
    <link rel="stylesheet" href="//www.0crat.com/css/main.css"/>
    <script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
    <title>Policy</title>
    <style>
      a:target {
        font-size: 1.6em;
        font-weight: bold;
      }
    </style>
  </head>
  <body>
    <section>
      <a href="https://github.com/zerocracy.github.io/issues"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_green_007200.png" alt="Fork me on GitHub"></a>
<header>
  <nav>
    <ul>
      <li>
        <a href="/">
          <img src="//www.0crat.com/svg/logo.svg" class="logo" alt="Zerocracy logo"/>
        </a>
      </li>
    </ul>
  </nav>
  <nav>
    <ul>
      <li>
        <a href="https://www.0crat.com/">Zerocrat</a>
      </li>
      <li>
        <a href="https://www.0crat.com/board">Board</a>
      </li>
      <li>
        <a href="https://www.0crat.com/team">Team</a>
      </li>
    </ul>
  </nav>
</header>
<article class="narrow">
  <h1>
    <span>Policy</span>
  </h1>
  <div><p>The Policy explains basic work principles of
<a href="https://www.0crat.com">0crat</a> (“Zerocrat”):
a project management AI bot developed
and hosted by <a href="http://www.zerocracy.com">Zerocracy</a>.</p>

<p>If you want to change something in the Policy or simply
suggest an improvement, please submit a ticket
<a href="https://github.com/zerocracy/zerocracy.github.io/issues">here</a>.
If you want to discuss the Policy or your troubles with the bot,
please join this <a href="https://t.me/joinchat/CLxAaQ0xp-g_3WWI3MBr2g">Telegram chat</a>.</p>

<p>Read this first: <a href="/toc.html">What Is Zerocracy?</a></p>

<h2 id="developer-dev">Developer (<a id="DEV">DEV</a>)</h2>

<p>You can talk to Zerocrat in:</p>

<ul>
  <li>Slack: <a href="https://www.0crat.com/add_to_slack">start</a> a private conversation with <code class="highlighter-rouge">@0crat</code></li>
  <li>Telegram: <a href="https://telegram.me/zerocrat_bot">start</a> a chat with <a href="https://telegram.me/zerocrat_bot"><code class="highlighter-rouge">@zerocrat_bot</code></a></li>
  <li>GitHub: prepend your message in any ticket with <a href="https://github.com/0crat"><code class="highlighter-rouge">@0crat</code></a></li>
</ul>

<p><a id="1" href="#1">§1</a>
“Invite.”
To start working with us you have to be invited by someone we already know,
whose <a href="#18">reputation</a> is over <del>+1024</del> <span id="1.min-rep" style="color:red">+256</span>.
Ask that person to say <code class="highlighter-rouge">invite</code> with your GitHub login to Zerocrat.
The person will be your “mentor” and will be responsible for helping you
out in the system. A mentor may have up to <del>16</del> <span id="1.max-students" style="color:red">24</span> students
and pays <span id="1.price">128</span> <a href="#18">points</a> for each new invitation.
Fill out <a href="https://www.0crat.com/join">this form</a> (you can do it every <span id="1.lag">16</span> days)
if you don’t know anyone yet
or seek help in <a href="https://t.me/joinchat/CLxAaQ0xp-g_3WWI3MBr2g">our Telegram group</a>.
Once you are invited, your name and your performance metrics will be visible
in the <a href="https://www.0crat.com/team">Team page</a>.</p>

<p><a id="2" href="#2">§2</a>
“Apply.”
To join a project you have to find it on the <a href="https://www.0crat.com/board">Board</a>
and send <code class="highlighter-rouge">apply</code> request to Zerocrat. The architect of the project will
either invite you or ignore your request. You can apply multiple times,
even to the project you already are a member of, for example, to request
a raise of your <a href="#13">project rate</a>.</p>

<p><a id="33" href="#33">§33</a>
“Sandbox.”
You can <a href="#2">apply</a> to a project only if your <a href="#18">reputation</a> is over
<del>+256</del> <span id="33.min-live" style="color:red">+128</span>.
If it is lower, you can only apply to <a href="https://www.0crat.com/board">sandbox</a> projects
and your highest allowed rate is <span id="33.max-sandbox-rate">$16</span>.
You can’t apply to a sandbox project if your reputation is over <span id="33.max-sandbox-rep">+1024</span>.
You will be automatically removed from a sandbox project once your reputation is over <span id="33.sandbox-rep-threshold">+1024</span>.
You will automatically get <code class="highlighter-rouge">REV</code> role in a sandbox project when your reputation is over <span id="33.rev-rep">+256</span>
and you will lose it if the reputation drops below <span id="33.rev-min-rep">+128</span>.</p>

<p><a id="3" href="#3">§3</a>
“Election.”
Zerocrat may assign a job to you according to its own election rules, if you have <code class="highlighter-rouge">DEV</code> role
and are not on <a href="#38">vacation</a>.
You will be notified in job’s ticket. The rules include, in order of importance:</p>

<ul>
  <li>The highest <a href="#18">reputation</a> wins;</li>
  <li>No jobs will be assigned if <a href="#18">reputation</a> is below <span id="3.low-threshold">-128</span>;</li>
  <li>Lowest <a href="#16">project rate</a> wins;</li>
  <li>Shortest average <a href="#26">job completion time</a> wins;</li>
  <li>The emptiest agenda wins;</li>
  <li>The maximum allowed size of agenda depends on your <a href="#18">reputation</a>:
    <ul>
      <li><span id="3.jobs-1">3</span> jobs if less than <span id="3.rep-1">+512</span> points,</li>
      <li><span id="3.jobs-2">8</span> if less than <span id="3.rep-2">+2048</span>,</li>
      <li><span id="3.jobs-3">16</span> if less than <span id="3.rep-3">+4096</span>,</li>
      <li><span id="3.jobs-4">24</span> otherwise;</li>
    </ul>
  </li>
  <li>The size of agenda doesn’t matter if the job is a code review;</li>
  <li>The absolute maximum of jobs you may have in your agenda is <span id="3.absolute-max">32</span>;</li>
  <li>If your <a href="#46">debt</a> is over <span id="3.max-debt">$128</span> you won’t get any new jobs.</li>
</ul>

<p><a id="4" href="#4">§4</a>
“Fixed Budget.”
Each job has a fixed budget in minutes,
which will be multiplied by your hourly rate and paid to you when the job is completed.
The actual amount of time you spend on the job doesn’t affect the amount of money you receive.
You will also get as many positive <a href="#18">points</a> as many minutes you are paid for.</p>

<p><a id="18" href="#18">§18</a>
“Points of Reputation.”
You may earn positive and negative points for doing good and bad things in
the projects. They do not affect your cash income, but do affect the impression Zerocrat
has about you—the more points you have the more disciplined developer you are.
Zerocrat takes into account only the points you earned over the last <span id="18.days">90</span> days.</p>

<p><a id="5" href="#5">§5</a>
“Boost Factor.”
A job may receive a boost factor, which will increase or decrease its budget.
Default boost factor is <code class="highlighter-rouge">2x</code>, which means 30 minutes.
Default boost factor for a code review is <code class="highlighter-rouge">1x</code>.
In exceptional situations, you should ask project architect to boost your job.</p>

<p><a id="6" href="#6">§6</a>
“Refusal.”
You may refuse to complete any job by saying <code class="highlighter-rouge">refuse</code> or <code class="highlighter-rouge">resign</code>.
You will get a penalty of <span id="6.penalty">15</span> <a href="#18">points</a> for that.</p>

<p><a id="7" href="#7">§7</a>
“Definition of Done.”
A job is completed when its ticket is <a href="http://www.yegor256.com/2014/04/15/definition-of-done.html">closed</a>.
Until then only one person is responsible for it: the performer.
It doesn’t matter why the job is not finished, who its success depends on, where is the problem.
The 0/100 rule is simple: it’s either done or not.</p>

<p><a id="8" href="#8">§8</a>
“Ten Days.”
If you don’t complete a job in <span id="8.days">10</span> days Zerocrat <em>may</em> take it away from you.
You will get no money and a penalty as big as the the <a href="#4">budget</a> of the job, if this happens.</p>

<p><a id="29" href="#29">§29</a>
“Pay per Bug.”
Each time you report a new <a href="http://www.yegor256.com/2018/02/06/where-to-find-more-bugs.html">bug</a>
that becomes a job, you earn <span id="29.price">+15</span> minutes.
The ARC makes a subjective non-disputable decision whether a reported bug deserves to be a job or not.</p>

<p><a id="9" href="#9">§9</a>
“Impediments.”
You may declare impediments for a job by saying <code class="highlighter-rouge">wait</code> to Zerocrat.
Until the job has impediments <a href="#8">Ten Days rule</a>
is not applicable to it.</p>

<p><a id="36" href="#36">§36</a>
“Speed Bonus.”
Zerocracy measures the time interval between the moment
a job is assigned to you and the moment it goes out of scope.
If this interval is shorter than <span id="36.hours">48</span> hours,
you get extra <span id="36.bonus">+5</span> minutes.</p>

<p><a id="16" href="#16">§16</a>
“Rate.”
To make money in any project you must define your hourly rate.
To do that just say <code class="highlighter-rouge">rate</code> to Zerocrat. This rate is for marketing purpose
only, since each project will <a href="#13">set</a> their own rates for you.
Your rate can only be between <span id="16.min">$16</span> and <span id="16.max">$256</span>.
You can use USD, EUR, GBP, or JPY (format like <code class="highlighter-rouge">17EUR</code> or <code class="highlighter-rouge">25.50GBP</code>), but all payments will be made in USD
(converted by <a href="https://apilayer.net">apilayer</a>).</p>

<p><a id="20" href="#20">§20</a>
“Wallet.”
We can send you money either via
<a href="https://www.paypal.com">PayPal</a>,
<a href="https://bitcoin.org/en/">Bitcoin</a>,
<a href="https://www.bitcoincash.org/">Bitcoin Cash</a>,
<a href="https://www.ethereum.org/">Etherium</a>,
or
<a href="https://litecoin.org/">Litecoin</a>.
To tell us how exactly you want to receive them just say <code class="highlighter-rouge">wallet</code> to Zerocrat.</p>

<p><a id="46" href="#46">§46</a>
“Debt.”
When Zerocrat fails to pay, for any reason, the payment amount will be added to our “debt” to you.
We attempt to pay the debt once a day, if it’s larger than <span id="46.threshold">$64</span>
or older than <span id="46.days">32</span> days.
Possible reasons of not paying immedidately include, but not limited to:</p>

<ul>
  <li>Network connection with the payment gateway is broken;</li>
  <li>Temprorary issues with our accounts in PayPal, Coinbase, etc.;</li>
  <li>The amount is smaller than <span id="46.min">$24</span> (to avoid big commissions);</li>
  <li>We are broke (just kidding).</li>
</ul>

<p><a id="32" href="#32">§32</a>
“Job Status.”
You can always check the status of any job, just say <code class="highlighter-rouge">status</code> to Zerocrat in the job ticket.</p>

<p><a id="48" href="#48">§48</a>
“Only points.”
If you are not a member of a project, you can only earn <a href="#18">points</a> there, not cash.</p>

<p><a id="43" href="#43">§43</a>
“Graduation.”
When your <a href="#8">reputation</a> reaches <span id="43.threshold">+2048</span>,
Zerocrat will automaticatly set himself as your mentor.</p>

<p><a id="44" href="#44">§44</a>
“Expel.”
When your <a href="#8">reputation</a> drops lower than <span id="44.threshold">-256</span>,
Zerocrat will automaticatly disconnect you from your mentor,
clean out your reputation and you will have to <a href="#1">start over</a>.</p>

<p><a id="45" href="#45">§45</a>
“Tuition fee.”
While you have a <a href="#1">mentor</a> (and it’s <a href="#43">not Zerocrat</a>),
he/she gets <span id="45.share">8</span> cents of every dollar you make.</p>

<p><a id="47" href="#47">§47</a>
“Breakup.”
You can always terminate your relationship with a student, just say <code class="highlighter-rouge">breakup</code> to Zerocrat.
You will get a penalty of <span id="47.penalty">256</span> for this.</p>

<p><a id="40" href="#40">§40</a>
“Reply to RFP.”
If your <a href="#18">reputation</a> is over <del>+512</del> <span id="40.min" style="color:red">+128</span>,
you will see new <a href="https://www.0crat.com/rfps">requests for proposal</a>.
You can “pay” <del>256</del> <span id="40.price" style="color:red">64</span>
points for an email address of any RFP, contact them directly,
and bring them to Zerocrat; to do that just say <code class="highlighter-rouge">rfp</code> to Zerocrat.
Remember, you are <a href="http://datum.zerocracy.com/pages/terms.html#non-solicitation">not allowed</a>
to work with them without Zerocrat.</p>

<p><a id="38" href="#38">§38</a>
“Vacation.”
You can always “go on vacation” if you want Zerocrat to temporarily stop
assigning you new jobs; just say <code class="highlighter-rouge">vacation</code>.</p>

<p><a id="52" href="#52">§52</a>
“Auto-Vacation.”
If you receive <span id="52.awards">8</span> or more negative awards in the past <span id="52.days">16</span> days and
no positive ones, your vacation status will automatically be set to <code class="highlighter-rouge">on</code>, which means you will not receive new tasks.
You have to manually turn off vacation status to receive new tasks. Note that you can turn vacation off any time, but
the auto-vacation mechanism will be re-evaluated if you receive another negative award.</p>

<p><a id="35" href="#35">§35</a>
“Quit.”
You can always quit a project, just say <code class="highlighter-rouge">quit</code> to Zerocrat.
You will still have to finish the jobs assigned to you in the project.</p>

<p><a id="39" href="#39">§39</a>
“GitHub name change.”
If you <a href="https://help.github.com/articles/changing-your-github-username/">change</a>
your GitHub name, your Zerocrat account will be lost.
You will have to create a new one from scratch.
<a href="https://github.com/zerocracy/datum/issues/274">Why?</a></p>

<h2 id="code-reviewer-rev">Code Reviewer (<a id="REV">REV</a>)</h2>

<p><a id="27" href="#27">§27</a>
“Code Reviews.”
You will be asked to review pull requests if you have <code class="highlighter-rouge">REV</code> role assigned.
Be as critical as you can, as <a href="http://www.yegor256.com/2015/02/09/serious-code-reviewer.html">this article</a> explains.
Either you accept or reject the changes, inform the architect, right in the ticket—the
architect will either merge the pull request or close it.
In either case, you will be paid <span id="27.price">+15</span> minutes.</p>

<h2 id="product-owner-po">Product Owner (<a id="PO">PO</a>)</h2>

<p><a id="41" href="#41">§41</a>
“Submit RFP.”
The best way to recruit Zerocrat and develop your project with us is to
find and hire an architect—one of our <a href="https://www.0crat.com/team">best developers</a>.
You have to fill out <a href="https://www.0crat.com/rfp">the form</a>,
pay non-refundable <del>$64</del> <span id="41.price" style="color:red">$16</span>,
and wait until one of them <a href="#40">replies</a>.
The RFP will expire and automatically disappear in <span id="41.days">32</span> days.
You can submit a new RFP only when the first one expires or is purchased.</p>

<p><a id="11" href="#11">§11</a>
“Add to Slack.”
To start working with us, you have to <a href="https://www.0crat.com/add_to_slack">invite</a>
Zerocrat to your Slack.</p>

<p><a id="17" href="#17">§17</a>
“Connect GitHub.”
To connect your GitHub repository to the project you should
1) add a new Webhook: <code class="highlighter-rouge">http://www.rehttp.net/p/https://www.0crat.com/ghook</code>
(with “send me everything” option),
and
2) link the project in Slack: <code class="highlighter-rouge">links add github yegor256/cactoos</code>, where
instead of <code class="highlighter-rouge">yegor256/cactoos</code> you should put the coordinates of your GitHub repository.</p>

<p><a id="21" href="#21">§21</a>
“Project funds.”
You can add funds to the project by VISA or MasterCard via <a href="https://www.stripe.com">Stripe</a>
at the project web page. Fund will be used to pay programmers for job
completion and to pay Zerocracy management <a href="#23">fee</a>.
We will automatically recharge your card when the project runs out of funds.
To disable recharing use <a href="#24">pause/activate</a> option.</p>

<p><a id="22" href="#22">§22</a>
“Refunds.”
All unused funds will be returned to you immediately per your request by
<a href="mailto:refund@zerocracy.com">email</a>.
Refunds will be mailed back to you as a cheque of a US bank.</p>

<p><a id="23" href="#23">§23</a>
“Management fee.”
Zerocracy charges a fixed management fee of <span id="23.fee">$4</span> per each successfully
completed job. If your project is not <a href="#17">linked</a> to any private GitHub repositories
this fee is waived. If the fee is waived the ledger of the project will
be publicly visible online.</p>

<p><a id="24" href="#24">§24</a>
“Pause/Activate.”
To put Zerocrat on hold and make a project completely inactive, say <code class="highlighter-rouge">pause</code>.
To return the project back to life say <code class="highlighter-rouge">pause off</code>.
This will disable <a href="#22">recharging</a>.</p>

<p><a id="25" href="#25">§25</a>
“Destroy.”
To completely delete all project files from our servers and terminate the
project say <code class="highlighter-rouge">destroy</code> and then <a href="https://get.slack.help/hc/en-us/articles/201898668-Remove-someone-from-a-channel">kick off</a>
<code class="highlighter-rouge">@0crat</code> from Slack channel. There is no way back. We highly recommend to use
<a href="#24">pause/activate option</a>.</p>

<p><a id="26" href="#26">§26</a>
“Publish.”
To attract programmers to your project, you can publish it on the
<a href="https://www.0crat.com/board">Board</a>; just say <code class="highlighter-rouge">publish on</code> to Zerocrat in order to do it.
Your <a href="#18">reputation</a> has to be over <span id="26.min-rep">+1024</span> and
you will be charged <span id="26.price">32</span> <a href="#17">points</a> for this.
When your project is published, its statistical information will be visible in the Web.
You can unpublish it anytime, just say <code class="highlighter-rouge">publish off</code>.</p>

<p><a id="37" href="#37">§37</a>
“Micro-Vesting.”
On top of <a href="#13">cash</a> you can give <a href="http://www.yegor256.com/2018/02/13/micro-vesting.html">equity</a> to project contributors.
Just add the vesting rate to the <code class="highlighter-rouge">assign</code> <a href="#13">command</a>, for example:
<code class="highlighter-rouge">assign DEV yegor256 $16 $40</code>, where <code class="highlighter-rouge">$16</code> is the rate paid in cash and
<code class="highlighter-rouge">$24</code> to be paid in equity after each job <a href="#7">completion</a>.</p>

<p><a id="50" href="#50">§50</a>
“Contribution.”
Anyone can make a non-refundable one-time
<a href="http://www.yegor256.com/2018/04/03/donations-via-zerocracy.html">contribution</a>
to your project, if you give them
the URL <code class="highlighter-rouge">https://www.0crat.com/contrib/PID</code> where <code class="highlighter-rouge">PID</code> is your project ID.
Your project has to be <a href="#26">published</a> and <a href="#23">fee-free</a>.</p>

<h2 id="architect-arc">Architect (<a id="ARC">ARC</a>)</h2>

<p><a id="12" href="#12">§12</a>
“Bootstrap.”
To let Zerocrat manage your project you have to create a new Slack
channel and add <code class="highlighter-rouge">@0crat</code> to it.
Then, you should say <code class="highlighter-rouge">bootstrap</code> to Zerocrat.
You need to have at least <span id="12.min">+1024</span> reputation points to be able to do that.
You will be charged <span id="12.price">256</span>
<a href="#18">points</a> for each project you bootstrap.</p>

<p><a id="13" href="#13">§13</a>
“Assign/Resign Role.”
Everybody who will be managed by Zerocrat must have roles in the project.
To assign a role you say <code class="highlighter-rouge">assign</code>. To remove a role you say <code class="highlighter-rouge">resign</code>.
By default, all new people you assign are supposed to work for free. If you
want to pay them for the jobs they complete, add hourly rate to the <code class="highlighter-rouge">assign</code>
command, for example: <code class="highlighter-rouge">assign DEV yegor256 $50</code>. To change the hourly
rate of a person just assign the same role with a different rate, or <code class="highlighter-rouge">0</code>
in order to make them work for free;
this will not affect the <a href="#4">budgets</a> of already assigned tasks.</p>

<p><a id="34" href="#34">§34</a>
“Mandatory Roles.”
A project must always have one PO and one ARC.
A project may not have more than two ARCs or more than two POs.
ARC and REV roles can’t be assigned to the same person.
QA role can’t overlap with REV, DEV or ARC.</p>

<p><a id="14" href="#14">§14</a>
“Scope In/Out.”
You should add jobs to the scope, by saying <code class="highlighter-rouge">in</code> to Zerocrat (or assigning the ticket to him).
You can remove a job from the scope by saying <code class="highlighter-rouge">out</code>.</p>

<p><a id="53" href="#53">§53</a>
“Auto-In.”
Zerocrat automatically adds pull requests to scope, unless
they are too small and don’t deserve it. The decision is made by Zerocrat automatically.</p>

<p><a id="15" href="#15">§15</a>
“Boosting.”
You can increase a budget of the job by setting its boost factor.
Just say <code class="highlighter-rouge">boost 2x</code> (or <code class="highlighter-rouge">3x</code>, <code class="highlighter-rouge">5x</code>, etc.) to Zerocrat.
This operation is against our principles of <a href="http://www.yegor256.com/2018/01/09/micro-budgeting.html">micro-budgeting</a>,
that’s why you get a penalty of <span id="15.penalty">10</span> <a href="#18">points</a>
every time you do this.</p>

<p><a id="19" href="#19">§19</a>
“Assign Job.”
You can manually assign any job to a user, just say <code class="highlighter-rouge">assign @yegor256</code>
(where instead of <code class="highlighter-rouge">@yegor256</code> you put the GitHub login of the user) or
assign the ticket to that user in your ticket tracking system.
This operation is against our principles of automated task management,
that’s why you will get <span id="19.penalty">5</span> <a href="#18">points</a> every time you do this.
If you assign a job to its reporter/creator, you will get an additional penalty of
<span id="19.self-penalty">15</span> <a href="#18">points</a>.</p>

<p><a id="28" href="#28">§28</a>
“Architect Review Bonus.”
You will earn <span id="28.price">+10</span> minutes for each pull request successfully merged.
Only <a href="#53">in-scope</a> pull requests will be paid.
It is recommended to use <a href="http://www.rultor.com">Rultor</a> or a similar
solution, which will allow only the architect to merge.</p>

<p><a id="49" href="#49">§49</a>
“Extra.”
You can pay extra cash to any user by saying <code class="highlighter-rouge">pay</code> to Zerocrat.
You will get a penalty of <span id="49.penalty">60</span> points for this.
The maximum you can pay in one go is <span id="49.max">120</span> minutes.</p>

<p><a id="51" href="#51">§51</a>
“Hiring.”
If your <a href="#18">reputation</a> is over <span id="51.min">+1024</span>
you can invite programmers to your project by announcing a job
(you can find a link at your project dashboard).
Each announcement will cost you
<span id="51.price">128</span> reputation <a href="#18">points</a>.</p>

<h2 id="quality-assurance-qa">Quality Assurance (<a id="QA">QA</a>)</h2>

<p><a id="30" href="#30">§30</a>
“Quality Review.”
If you have <code class="highlighter-rouge">QA</code> role in the project, you will be asked to review jobs after their completion.
You have to review the job for its quality and report to Zerocrat: <code class="highlighter-rouge">quality good</code>
(or <code class="highlighter-rouge">bad</code>, or <code class="highlighter-rouge">acceptable</code>).
You will be paid <span id="30.price">+8</span> minutes for the review, no matter what is your verdict.</p>

<p><a id="42" href="#42">§42</a>
“QA Rules.”
The quality of a job is “good” if all of the following requirements are met:</p>

<ul>
  <li>The formatting of a job description, as well as all messages inside it,
follows <a href="https://help.github.com/articles/github-flavored-markdown/">Github Markdown</a> style;</li>
  <li>Messages in a job
<a href="http://www.yegor256.com/2014/11/24/principles-of-bug-tracking.html#4-avoid-noiseaddress-your-comments">always</a>
start with a name of a user they are addressed to;</li>
  <li>The job is closed only when the reported problem is solved,
<a href="http://www.yegor256.com/2015/02/12/top-down-design.html">see</a>;</li>
  <li>Some of ticket messages must mention all pull requests where the problem was actually fixed;</li>
  <li>Problem reporter and problem solver are two different persons;
<a href="http://www.yegor256.com/2014/11/24/principles-of-bug-tracking.html#1.-keep-it-one-on-one">see</a>;</li>
  <li>Ticket title and description clearly state what is broken and what kind of fix is expected,
<a href="http://www.yegor256.com/2014/11/24/principles-of-bug-tracking.html#5.-report-when-it-is-broken">see</a>;</li>
  <li>The ticket describes one specific problem and provides a single solution;</li>
  <li>Pull request title explains the problem it is fixing;</li>
  <li>Pull request description explains the solution proposed and
contains a link to the original ticket it is related to (<a href="https://github.com/zerocracy/datum/issues/296">discuss</a>);</li>
  <li>The code reviewer found at least three problems in the code (<a href="https://github.com/zerocracy/datum/issues/294">discuss</a>);</li>
  <li>Comments were mostly about design problems, not cosmetic issues;</li>
  <li>All problems found by the code reviewer were <em>addressed</em> by the pull request author, which
means that they were either fixed as the reviewer wanted or the reviewer was
convinced that they should not be fixed;</li>
  <li>All impediments registered in the ticket have explanations of the
reasons and links to related tickets, if necessary (<a href="https://github.com/zerocracy/datum/issues/300">discuss</a>);</li>
  <li>All commit messages have links to issues (<a href="https://github.com/zerocracy/datum/issues/295">discuss</a>).</li>
</ul>

<p>When you find any rules violation, ask job performer to confirm that
your complains are understood and he/she will try to avoid those mistakes
in the future. Until you get a confirmation,
<a href="https://github.com/zerocracy/datum/issues/301">don’t give</a> any quality mark;
don’t wait for more than five days though.</p>

<p>The quality of a job is “bad” if any of the following happens
(these violations we can’t forgive):</p>

<ul>
  <li>The code reviewer didn’t find any issues in the source code
changes of a pull request and just accepted it;</li>
  <li>The job is closed without a solution provided.</li>
</ul>

<p><a id="31" href="#31">§31</a>
“QA Bonus.”
Job performer will get an extra <span id="31.bonus">+5</span> minutes if QA reports <code class="highlighter-rouge">good</code> quality.
If the quality is <code class="highlighter-rouge">bad</code>, there will be no payment to the job performer at all.</p>

</div>
</article>
<footer>
  <nav>
    <ul>
      <li>
        <a href="https://github.com/zerocracy/">GitHub</a>
      </li>
      <li>
        <a href="https://t.me/joinchat/CLxAaQ0xp-g_3WWI3MBr2g">Telegram</a>
      </li>
      <li>
        <a href="https://twitter.com/0crat">Twitter</a>
      </li>
      <li>
        <a href="https://www.facebook.com/zerocracy/">Facebook</a>
      </li>
      <li>
        <a href="https://www.youtube.com/channel/UCxZAzmY_OPw40I1-YStWqhw">YouTube</a>
      </li>
    </ul>
  </nav>
  <nav>
    <ul>
      <li>
        <a href="/policy.html">Policy</a>
      </li>
      <li>
        <a href="/terms.html">Terms</a>
      </li>
    </ul>
  </nav>
</footer>

    </section>
    <script>
      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
      })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
      ga('create', 'UA-1963507-48', 'auto');
      ga('send', 'pageview');
    </script>
  </body>
</html>
"
com.sun.org.apache.xerces.internal.parsers.DOMParser[257] org.xml.sax.SAXParseException: The element type "img" must be terminated by the matching end-tag "</img>".

1.0-SNAPSHOT: CID: 1341557885, Type: 'Complete QA review', Author: elenavolokhova

elenavolokhova commented 6 years ago

@0crat quality good

0crat commented 6 years ago

@0crat quality good (here)

@elenavolokhova Thanks, but quality review is not required in this job

elenavolokhova commented 6 years ago

@0crat status

0crat commented 6 years ago

@0crat status (here)

@elenavolokhova This is what I know about this job, as in §32: