<?xml version="1.0"?>
<puzzles xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.0pdd.com/puzzles.xsd" date="2026-04-13T06:56:12+00:00" version="BUILD">
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/622" closed="2022-05-25T09:49:58+00:00">622</issue>
    <ticket>414</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>414-78631059</id>
    <lines>46-50</lines>
    <body>Fix bug EO app calling a varargs func. We reproduced by a Java and EO tests, the bug with exception `You can't overwrite X` when EO app try to call a function that uses varargs as parameter. Now, we must fix it and enable test below and eo test {@code [] &gt; calls-varargs-func} located in `runtime-tests.eo`.</body>
    <file>eo-runtime/src/test/java/EOorg/EOeolang/EODataizeAppCallsVarargsFuncTest.java</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2022-05-09T08:29:34Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/623" closed="2022-05-25T09:34:20+00:00">623</issue>
    <ticket>414</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>414-aa62591c</id>
    <lines>82-85</lines>
    <body>Fix bug execute an EO program calling a varargs func. We reproduced by a test bug during execution with exception `You can't overwrite X` when EO app try to call a function that uses varargs as parameter. Now, we must fix it and disable the test (test below).</body>
    <file>eo-runtime/src/test/java/org/eolang/DataizedTest.java</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2022-05-09T08:29:34Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/624" closed="2022-08-11T08:49:12+00:00">624</issue>
    <ticket>561</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>561-386b5824</id>
    <lines>41-45</lines>
    <body>Add a parameter to bypass/overwrite cache for combination of Local and Caching and Remote. It was suggested by @yegor256 to rely on -U parameter of Maven (https://github.com/objectionary/eo/issues/561#issuecomment-1007128430). If it is possible to access it from the plugin.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/PullMojo.java</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2022-05-09T08:29:34Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/625" closed="2022-07-31T05:21:09+00:00">625</issue>
    <ticket>490</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>490-82991e51</id>
    <lines>59-62</lines>
    <body>Resolve abbreviated hash to a proper hash. In order to avoid collisions resolve hash (or branch) to a complete sha-256 hash of the commit. Use only sha-256 hashes as a caching criteria.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/OyRemote.java</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2022-05-09T08:29:34Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/640" closed="2022-07-31T05:21:12+00:00">640</issue>
    <ticket>636</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>636-57a3ebdc</id>
    <lines>80-85</lines>
    <body>Here, the "property" attribute of the @Parameter annotation is not set. If we set it, in order to enable configuration through command line arguments, the default value won't be set. I don't know how to fix this. Let's investigate what is the right way according to Maven traditions. If we fix this, let's also fix "excludeSources" here and "include/excludeBinaries" in PlaceMojo.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/RegisterMojo.java</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2022-05-16T23:56:16Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/752" closed="2022-06-20T08:46:30+00:00">752</issue>
    <ticket>755</ticket>
    <estimate>15</estimate>
    <role>DEV</role>
    <id>755-95cd94b4</id>
    <lines>299-302</lines>
    <body>We need to remove the anything matcher. We can do it only after fixing the eo-hamcrest library when new EO version will be released.</body>
    <file>eo-runtime/src/test/eo/org/eolang/runtime-tests.eo</file>
    <author>graur</author>
    <email>ancongr@yandex.ru</email>
    <time>2022-06-17T11:17:43Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue>unknown</issue>
    <ticket>684</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>684-1cc2eb42</id>
    <lines>29-32</lines>
    <body>We need to add ram.ram-slice.slice object here. This object would return ram-slice object and get two parameters: position and size, same as in ram.slice object. And will allow us to make a chain of slice objects.</body>
    <file>eo-runtime/src/main/eo/org/eolang/ram.eo</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2022-07-31T05:20:55Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1043" closed="2022-08-16T07:13:28+00:00">1043</issue>
    <ticket>632</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>632-18c86a21</id>
    <lines>34-37</lines>
    <body>Implement shift &amp; left methods. New implementation should not truncate length of the original massive. After that, update this PDD to make changes to a corresponding EObytes classes.</body>
    <file>eo-runtime/src/main/java/org/eolang/BytesOf.java</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2022-08-15T20:12:49Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1046" closed="2022-09-03T03:47:25+00:00">1046</issue>
    <ticket>632</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>632-74990ab1</id>
    <lines>34-37</lines>
    <body>Current shift implementation does not preserve sing. Add sign-preserving shift if needed. After that, update this PDD to make changes to corresponding EObytes classes.</body>
    <file>eo-runtime/src/main/java/org/eolang/BytesOf.java</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2022-08-16T07:07:01Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/1142" closed="2022-09-07T04:57:40+00:00">1142</issue>
        <ticket>1046</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>1046-b55b5a37</id>
        <lines>34-37</lines>
        <body>Use this class for operations on byte-arrays inside eo-runtime, in classes such as EObytes*, Param, etc. Avoid using byte[] directly in all of them.</body>
        <file>eo-runtime/src/main/java/org/eolang/BytesOf.java</file>
        <author>@rultor</author>
        <email>me@rultor.com</email>
        <time>2022-09-03T03:43:18Z</time>
        <children>
          <puzzle alive="false">
            <issue href="https://github.com/objectionary/eo/issues/1183" closed="2023-01-18T10:33:10+00:00">1183</issue>
            <ticket>1142</ticket>
            <estimate>30</estimate>
            <role>DEV</role>
            <id>1142-64c12a8f</id>
            <lines>31-35</lines>
            <body>Long now can only be represented as an array of 8 bytes. This impelementation therefore is broken. Reimplement .as-hash and turn back on tests in bytes-test.eo &amp; string-tests.eo</body>
            <file>eo-runtime/src/main/eo/org/eolang/bytes.eo</file>
            <author>rultor</author>
            <email>me@rultor.com</email>
            <time>2022-09-07T04:52:54Z</time>
            <children/>
          </puzzle>
          <puzzle alive="false">
            <issue href="https://github.com/objectionary/eo/issues/1184" closed="2022-09-08T05:38:50+00:00">1184</issue>
            <ticket>1142</ticket>
            <estimate>30</estimate>
            <role>DEV</role>
            <id>1142-c462e1ca</id>
            <lines>43-46</lines>
            <body>This object can be reimplemented in EO with help of bytes.left (and vice versa). Remove either this class or EObytes$EOleft and add a new object to bytes.eo.</body>
            <file>eo-runtime/src/main/java/EOorg/EOeolang/EObytes$EOright.java</file>
            <author>rultor</author>
            <email>me@rultor.com</email>
            <time>2022-09-07T04:52:54Z</time>
            <children>
              <puzzle alive="false">
                <issue href="https://github.com/objectionary/eo/issues/1207" closed="2022-09-18T06:41:07+00:00">1207</issue>
                <ticket>1184</ticket>
                <estimate>30</estimate>
                <role>DEV</role>
                <id>1184-826d9a05</id>
                <lines>46-49</lines>
                <body>This object is almost identical to EOand &amp; EOxor. Extract method for converting Phy[] to Bytes[] to Param. And replace duplicated part this call to this method.</body>
                <file>eo-runtime/src/main/java/EOorg/EOeolang/EObytes$EOor.java</file>
                <author>@rultor</author>
                <email>me@rultor.com</email>
                <time>2022-09-11T07:20:54Z</time>
                <children/>
              </puzzle>
            </children>
          </puzzle>
          <puzzle alive="false">
            <issue href="https://github.com/objectionary/eo/issues/1185" closed="2022-09-11T07:25:14+00:00">1185</issue>
            <ticket>1142</ticket>
            <estimate>30</estimate>
            <role>DEV</role>
            <id>1142-e53246c0</id>
            <lines>34-37</lines>
            <body>Bytes should be easily convertible to Phi. Add Bytes.ToPhi, and replace all encounters of Data.ToPhi(Bytes) with that. Avoid using byte[] directly.</body>
            <file>eo-runtime/src/main/java/org/eolang/BytesOf.java</file>
            <author>rultor</author>
            <email>me@rultor.com</email>
            <time>2022-09-07T04:52:54Z</time>
            <children/>
          </puzzle>
        </children>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1076" closed="2022-09-05T09:44:55+00:00">1076</issue>
    <ticket>1049</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1049-0e7c200c</id>
    <lines>93-96</lines>
    <body>Current implementation supports only character formatting. It means that byte array become an first bytes character string. We need to support another flags, like %a, %o, %s, etc.</body>
    <file>eo-runtime/src/main/java/EOorg/EOeolang/EOtxt/EOsprintf.java</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2022-08-22T15:10:45Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1084" closed="2022-08-26T07:51:17+00:00">1084</issue>
    <ticket>348</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>348-ddaf0eaa</id>
    <lines>97-99</lines>
    <body>This test is broken on Windows. Probably default charset is not UTF-8. Fix the build and enable this test back.</body>
    <file>eo-runtime/src/test/eo/org/eolang/string-tests.eo</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2022-08-24T09:20:49Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1085" closed="2023-03-05T05:22:22+00:00">1085</issue>
    <ticket>348</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>348-e3a36069</id>
    <lines>48-51</lines>
    <body>Make changes to store INT as bytes. After that update this todo. When all data types are stored as bytes, remove data attribute from XML and XSLT templates.</body>
    <file>eo-parser/src/main/java/org/eolang/parser/XeListener.java</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2022-08-24T09:20:49Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/1099" closed="2022-08-27T04:21:14+00:00">1099</issue>
        <ticket>1085</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>1085-cfcc3336</id>
        <lines>30-32</lines>
        <body>Add conversion from 'bytes' representation back to 'int', 'string' &amp; the rest of types. Then proceed to with the parent todo.</body>
        <file>eo-parser/src/main/resources/org/eolang/parser/xmir-to-eo.xsl</file>
        <author>@rultor</author>
        <email>me@rultor.com</email>
        <time>2022-08-26T08:12:28Z</time>
        <children>
          <puzzle alive="false">
            <issue href="https://github.com/objectionary/eo/issues/1103" closed="2022-12-28T14:15:26+00:00">1103</issue>
            <ticket>1099</ticket>
            <estimate>30</estimate>
            <role>DEV</role>
            <id>1099-4eccfaec</id>
            <lines>30-33</lines>
            <body>Current bytes to string conversion supports only ASCII characters &amp; text blocks. Make it possible to handle any unicode character and double-quoted strings.</body>
            <file>eo-parser/src/main/resources/org/eolang/parser/xmir-to-eo.xsl</file>
            <author>@rultor</author>
            <email>me@rultor.com</email>
            <time>2022-08-27T04:17:08Z</time>
            <children/>
          </puzzle>
          <puzzle alive="false">
            <issue href="https://github.com/objectionary/eo/issues/1104" closed="2022-08-29T07:53:40+00:00">1104</issue>
            <ticket>1099</ticket>
            <estimate>30</estimate>
            <role>DEV</role>
            <id>1099-7e313f8a</id>
            <lines>34-36</lines>
            <body>Add conversion from 'bytes' representation back to 'int', 'double' &amp; the rest of types. Then proceed to with the parent todo.</body>
            <file>eo-parser/src/main/resources/org/eolang/parser/xmir-to-eo.xsl</file>
            <author>@rultor</author>
            <email>me@rultor.com</email>
            <time>2022-08-27T04:17:08Z</time>
            <children>
              <puzzle alive="false">
                <issue href="https://github.com/objectionary/eo/issues/1110" closed="2022-08-30T03:54:43+00:00">1110</issue>
                <ticket>1104</ticket>
                <estimate>30</estimate>
                <role>DEV</role>
                <id>1104-7e313f8a</id>
                <lines>34-36</lines>
                <body>Add conversion from 'bytes' representation back to 'int', 'double' &amp; the rest of types. Then proceed to with the parent todo.</body>
                <file>eo-parser/src/main/resources/org/eolang/parser/xmir-to-eo.xsl</file>
                <author>@rultor</author>
                <email>me@rultor.com</email>
                <time>2022-08-29T07:49:31Z</time>
                <children>
                  <puzzle alive="false">
                    <issue href="https://github.com/objectionary/eo/issues/1114" closed="2022-12-28T14:15:31+00:00">1114</issue>
                    <ticket>1110</ticket>
                    <estimate>30</estimate>
                    <role>DEV</role>
                    <id>1110-7e313f8a</id>
                    <lines>34-36</lines>
                    <body>Add conversion from 'bytes' representation back to 'int', 'double' &amp; the rest of types. Then proceed to with the parent todo.</body>
                    <file>eo-parser/src/main/resources/org/eolang/parser/xmir-to-eo.xsl</file>
                    <author>@andreoss</author>
                    <email>andreoss@sdf.org</email>
                    <time>2022-08-29T20:44:00Z</time>
                    <children/>
                  </puzzle>
                  <puzzle alive="false">
                    <issue href="https://github.com/objectionary/eo/issues/1115" closed="2023-03-05T05:23:44+00:00">1115</issue>
                    <ticket>1110</ticket>
                    <estimate>30</estimate>
                    <role>DEV</role>
                    <id>1110-82c0e078</id>
                    <lines>37-41</lines>
                    <body>Add XST transformation to convert "$bytes.as-$type" to "$type". I.e "01-.as-bool" becomes "TRUE". Remove analogous conversions from this stylesheet, and only generate "$bytes.as-$type" in order to covert byte-array value back to literal.</body>
                    <file>eo-parser/src/main/resources/org/eolang/parser/xmir-to-eo.xsl</file>
                    <author>@andreoss</author>
                    <email>andreoss@sdf.org</email>
                    <time>2022-08-29T20:44:00Z</time>
                    <children>
                      <puzzle alive="false">
                        <issue href="https://github.com/objectionary/eo/issues/1144" closed="2025-02-11T14:40:40+00:00">1144</issue>
                        <ticket>1115</ticket>
                        <estimate>30</estimate>
                        <role>DEV</role>
                        <id>1115-1b7e31b1</id>
                        <lines>26-30</lines>
                        <body>Add conversions for other types ( int, float, bytes, etc.) and values here. When all simple cases are covered, add support for recursive reduction. Such as 01-.as-bool.as-bytes.as-bool.</body>
                        <file>eo-parser/src/main/resources/org/eolang/parser/optimize/constant-folding.xsl</file>
                        <author>@rultor</author>
                        <email>me@rultor.com</email>
                        <time>2022-09-03T04:14:57Z</time>
                        <children/>
                      </puzzle>
                    </children>
                  </puzzle>
                  <puzzle alive="false">
                    <issue href="https://github.com/objectionary/eo/issues/1116" closed="2022-08-31T06:30:51+00:00">1116</issue>
                    <ticket>1110</ticket>
                    <estimate>30</estimate>
                    <role>DEV</role>
                    <id>1110-e2869e1b</id>
                    <lines>26-29</lines>
                    <body>Implement eo:bytes-to-int which will convert byte array (i.e. hexadecimal numeric value) to an integer. Change idiomatic.eo to test for various values.</body>
                    <file>eo-parser/src/main/resources/org/eolang/parser/_funcs.xsl</file>
                    <author>@andreoss</author>
                    <email>andreoss@sdf.org</email>
                    <time>2022-08-29T20:44:00Z</time>
                    <children/>
                  </puzzle>
                </children>
              </puzzle>
              <puzzle alive="false">
                <issue href="https://github.com/objectionary/eo/issues/1111" closed="2022-09-14T07:16:43+00:00">1111</issue>
                <ticket>1104</ticket>
                <estimate>30</estimate>
                <role>DEV</role>
                <id>1104-f29eb2d4</id>
                <lines>26-29</lines>
                <body>This code tests for both org.eolang.TYPE and TYPE. This is unnecessary. Investigate why add-default-package.xsl is not always called from eo-maven-plugin and use only qualified object names.</body>
                <file>eo-maven-plugin/src/main/resources/org/eolang/maven/pre/data.xsl</file>
                <author>@rultor</author>
                <email>me@rultor.com</email>
                <time>2022-08-29T07:49:31Z</time>
                <children/>
              </puzzle>
            </children>
          </puzzle>
        </children>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1086" closed="2022-08-26T08:08:36+00:00">1086</issue>
    <ticket>348</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>348-be1aef9e</id>
    <lines>52-57</lines>
    <body>Avoid using Java types in XSLT processing. data.xslt and to-java.xslt use java-type attribute. This attribute is redundant and can be replaced by type inference. This change will ease the task off removing data attribute above.</body>
    <file>eo-parser/src/main/java/org/eolang/parser/XeListener.java</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2022-08-24T09:20:49Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1087" closed="2023-02-20T13:44:49+00:00">1087</issue>
    <ticket>1060</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1060-a52cb0e4</id>
    <lines>29-32</lines>
    <body>The method .empty is not nessesary. Make the create of array possible just by using the object name, i.e `array &gt; a` and remove this method.</body>
    <file>eo-runtime/src/main/eo/org/eolang/array.eo</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2022-08-24T09:38:43Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1088" closed="2022-08-26T07:59:59+00:00">1088</issue>
    <ticket>1060</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1060-769da541</id>
    <lines>36-39</lines>
    <body>Avoid duplication with a better condition check inside to-java.xslt. Array can be constructed as raw data, and also by .with method.</body>
    <file>eo-parser/src/main/resources/org/eolang/parser/_datas.xsl</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2022-08-24T09:38:43Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1109" closed="2023-11-30T14:57:44+00:00">1109</issue>
    <ticket>1107</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1107-eeae8c2b</id>
    <lines>69-71</lines>
    <body>Method `jdkExecutable` is duplicated in eo-runtime. Find a way to make it reusable (i.e making it part of VerboseProcess) and remove it from MainTest.</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/SnippetTest.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2022-08-29T07:41:23Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1145" closed="2022-09-05T06:27:31+00:00">1145</issue>
    <ticket>415</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>415-3d65bb62</id>
    <lines>40-44</lines>
    <body>Test case synthetic-attributes.yaml is disable. Continue to work on that issue, until the test passes. A possible solution is to introduce aliases for objects which are produced by expressions in parenthesis.</body>
    <file>eo-parser/src/test/java/org/eolang/parser/PacksTest.java</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2022-09-03T05:24:57Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/1167" closed="2023-05-26T10:24:33+00:00">1167</issue>
        <ticket>1145</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>1145-0cc8cffc</id>
        <lines>28-34</lines>
        <body>This stylesheet just removes alias attribute. A proper processing would be 1) move object one level above 2) add a synthetic name to its attributes 3) put the alias in place of actual object. Continue to work on that issue, until synthetic-attributes.yaml passes.</body>
        <file>eo-parser/src/main/resources/org/eolang/parser/synthetic-references.xsl</file>
        <author>@rultor</author>
        <email>me@rultor.com</email>
        <time>2022-09-05T06:23:20Z</time>
        <children>
          <puzzle alive="false">
            <issue href="https://github.com/objectionary/eo/issues/2093" closed="2023-05-31T11:09:14+00:00">2093</issue>
            <ticket>1167</ticket>
            <estimate>90</estimate>
            <role>DEV</role>
            <id>1167-ba59e666</id>
            <lines>28-39</lines>
            <body>synthetic-attributes. Add more tests with methods. The current number of tests is not enough to implement synthetic-references.xsl transformation. We also have to add tests that checks XMIR with "methods". Something like "((foo 1).with 2).with 3" Then we have to continue to work on that issue, until the next tests pass: synthetic-attributes.yaml synthetic-attributes-double-scope.yaml synthetic-attributes-many-arguments.yaml synthetic-attributes-nested.yaml synthetic-attributes-without-scope.yaml</body>
            <file>eo-parser/src/main/resources/org/eolang/parser/synthetic-references.xsl</file>
            <author>@volodya-lombrozo</author>
            <email>volodya.lombrozo@gmail.com</email>
            <time>2023-05-25T15:07:22Z</time>
            <children>
              <puzzle alive="false">
                <issue href="https://github.com/objectionary/eo/issues/2110" closed="2023-06-02T12:58:13+00:00">2110</issue>
                <ticket>2093</ticket>
                <estimate>90</estimate>
                <role>DEV</role>
                <id>2093-7fa3cba5</id>
                <lines>28-38</lines>
                <body>synthetic-attributes. Solution for synthetic-references.xsl. Implement the proper solution for synthetic-references.xsl. Currently we have enough tests that cover all important cases of that feature: synthetic-attributes.yaml synthetic-attributes-double-scope.yaml synthetic-attributes-many-arguments.yaml synthetic-attributes-nested.yaml synthetic-attributes-without-scope.yaml synthetic-attributes-with-doubled-methods.yaml synthetic-attributes-with-nested-methods.yaml</body>
                <file>eo-parser/src/main/resources/org/eolang/parser/synthetic-references.xsl</file>
                <author>@volodya-lombrozo</author>
                <email>volodya.lombrozo@gmail.com</email>
                <time>2023-05-31T08:37:56Z</time>
                <children>
                  <puzzle alive="false">
                    <issue href="https://github.com/objectionary/eo/issues/2119" closed="2023-07-14T07:37:50+00:00">2119</issue>
                    <ticket>2110</ticket>
                    <estimate>90</estimate>
                    <role>DEV</role>
                    <id>2110-77613955</id>
                    <lines>28-35</lines>
                    <body>Rename synthetic-attributes to synthetic-scopes. We call all attributes in the transformation as "aliases". (you can read more about the original issue and why it is named so right &lt;a href="https://github.com/objectionary/eo/issues/415"&gt;here&lt;/a&gt;.) which is quite confusing and conflicts with the concept of aliases as foreign references. We should rename the transformation to "scopes" or "synthetic-scopes" and rename the "aliases" attributes in that stylesheet accordingly.</body>
                    <file>eo-parser/src/main/resources/org/eolang/parser/synthetic-references.xsl</file>
                    <author>@rultor</author>
                    <email>me@rultor.com</email>
                    <time>2023-06-02T12:46:24Z</time>
                    <children/>
                  </puzzle>
                  <puzzle alive="false">
                    <issue href="https://github.com/objectionary/eo/issues/2120" closed="2023-07-06T15:54:12+00:00">2120</issue>
                    <ticket>2110</ticket>
                    <estimate>90</estimate>
                    <role>DEV</role>
                    <id>2110-fbf50ece</id>
                    <lines>57-66</lines>
                    <body>Enable synthetic-references.xsl transformation. Currently, synthetic-references.xsl transformation is disabled because it breaks the integration tests in eo-maven-plugin. The problem is that the transformation breaks add-refs.xsl transformation and to-java.xsl transformation. The reason is that synthetic-references.xsl transformation adds new objects without @line and @pos attributes which are required by add-refs.xsl and to-java.xsl transformations. When the problem is fixed, we should enable synthetic-references.xsl transformation by adding it to the SHEETS array between remove-aliases.xsl and add-default-package.xsl transformations.</body>
                    <file>eo-parser/src/main/java/org/eolang/parser/ParsingTrain.java</file>
                    <author>@rultor</author>
                    <email>me@rultor.com</email>
                    <time>2023-06-02T12:46:24Z</time>
                    <children>
                      <puzzle alive="false">
                        <issue href="https://github.com/objectionary/eo/issues/2216" closed="2023-08-21T11:42:51+00:00">2216</issue>
                        <ticket>2120</ticket>
                        <estimate>30</estimate>
                        <role>DEV</role>
                        <id>2120-ea7680fa</id>
                        <lines>455-462</lines>
                        <body>Enable the 'correctly-handles-same-name-attrs' test. The correctly-handles-same-name-attrs test is disabled because it fails with StackOverflowError. We have to understand why it happens and fix it. The first problem is that the error message is not very informative. The second problem is that the test is too complex and it is hard to understand which 'build' object we are using in which case. So, I believe we have to create several small tests that will explain the behaviour better.</body>
                        <file>eo-runtime/src/test/eo/org/eolang/runtime-tests.eo</file>
                        <author>@rultor</author>
                        <email>me@rultor.com</email>
                        <time>2023-07-06T15:44:49Z</time>
                        <children/>
                      </puzzle>
                      <puzzle alive="false">
                        <issue href="https://github.com/objectionary/eo/issues/2217" closed="2023-07-12T09:26:55+00:00">2217</issue>
                        <ticket>2120</ticket>
                        <estimate>90</estimate>
                        <role>DEV</role>
                        <id>2120-3c755ab4</id>
                        <lines>41-44</lines>
                        <body>Use FakeMaven in AssembleMojoTest. It's better to refactor of the tests inside {@link AssembleMojoTest}. Refactoring will simplify the existing code and reduce the total lines number. When the refactoring is done, remove this puzzle.</body>
                        <file>eo-maven-plugin/src/test/java/org/eolang/maven/AssembleMojoTest.java</file>
                        <author>rultor</author>
                        <email>me@rultor.com</email>
                        <time>2023-07-06T15:44:49Z</time>
                        <children/>
                      </puzzle>
                    </children>
                  </puzzle>
                  <puzzle alive="false">
                    <issue href="https://github.com/objectionary/eo/issues/2122" closed="2023-06-05T09:17:13+00:00">2122</issue>
                    <ticket>2110</ticket>
                    <estimate>90</estimate>
                    <role>DEV</role>
                    <id>2110-1a17f9f1</id>
                    <lines>48-53</lines>
                    <body>Missing @line attribute after synthetic-attributes.xsl. We have to fix the problem with missing @line attribute after synthetic-attributes.xsl transformation. The problem is that synthetic-attributes.xsl transformation doesn't copy @line attribute from the original object. When we fix the problem, we have to enable the following test.</body>
                    <file>eo-parser/src/test/resources/org/eolang/parser/packs/synthetic-attributes-with-add-refs.yaml</file>
                    <author>@volodya-lombrozo</author>
                    <email>volodya.lombrozo@gmail.com</email>
                    <time>2023-06-02T13:12:14Z</time>
                    <children>
                      <puzzle alive="false">
                        <issue href="https://github.com/objectionary/eo/issues/2126" closed="2023-07-04T11:45:30+00:00">2126</issue>
                        <ticket>2122</ticket>
                        <estimate>90</estimate>
                        <role>DEV</role>
                        <id>2122-be58f02c</id>
                        <lines>56-62</lines>
                        <body>Found more than one target of object at the line. The test below throws exception during the execution of the entire pipeline. The problem is in the synthetic-references.xsl transformation. The transformation adds new objects to the program, probably with incorrect line and pos attributes. Processing terminated by xsl:message at line 358 in to-java.xsl When we fix the problem, we have to enable the following test.</body>
                        <file>eo-maven-plugin/src/test/resources/org/eolang/maven/packs/pre/synthetic-attributes-with-to-java.yaml</file>
                        <author>rultor</author>
                        <email>me@rultor.com</email>
                        <time>2023-06-05T09:05:35Z</time>
                        <children>
                          <puzzle alive="false">
                            <issue href="https://github.com/objectionary/eo/issues/2175" closed="2023-06-28T08:37:56+00:00">2175</issue>
                            <ticket>2126</ticket>
                            <estimate>90</estimate>
                            <role>DEV</role>
                            <id>2126-624e8604</id>
                            <lines>34-39</lines>
                            <body>Fix problem with redundant objects. Enabling synthetic-attributes-with-to-java.yaml test case still fails. The possible reason is the wrong behaviour of abstracts-float-up.xsl or remove-levels.xsl transformations. As you can see from the comment above - we have strange argument @ that passes into main$t1$first and main$t1$second objects which is considered wrong and can cause some problems.</body>
                            <file>eo-parser/src/test/resources/org/eolang/parser/packs/optimize/redundant-levels-with-siblings.yaml</file>
                            <author>rultor</author>
                            <email>me@rultor.com</email>
                            <time>2023-06-21T12:13:03Z</time>
                            <children/>
                          </puzzle>
                          <puzzle alive="false">
                            <issue href="https://github.com/objectionary/eo/issues/2190" closed="2023-07-04T09:06:28+00:00">2190</issue>
                            <ticket>2126</ticket>
                            <estimate>90</estimate>
                            <role>DEV</role>
                            <id>2126-5ddde11a</id>
                            <lines>56-58</lines>
                            <body>Found more than one target of object at the line. Processing terminated by xsl:message at line 358 in to-java.xsl When we fix the problem, we have to enable the following test.</body>
                            <file>eo-maven-plugin/src/test/resources/org/eolang/maven/packs/pre/converts-to-java-with-arrays-and-scopes.yaml</file>
                            <author>rultor</author>
                            <email>me@rultor.com</email>
                            <time>2023-06-29T09:30:29Z</time>
                            <children/>
                          </puzzle>
                        </children>
                      </puzzle>
                    </children>
                  </puzzle>
                </children>
              </puzzle>
            </children>
          </puzzle>
        </children>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1150" closed="2022-09-10T11:57:06+00:00">1150</issue>
    <ticket>1146</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1146-f869e4b8</id>
    <lines>189-192</lines>
    <body>At the moment we don't support pattern matching, but double-star means "everything". Let's implement proper matching, where "org.eolang.int" would be matched by "org.*.int" and by "org.**". The same is true about gmiExclude, let's fix it too.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/GmiMojo.java</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2022-09-03T19:01:37Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1222" closed="2023-03-17T13:40:11+00:00">1222</issue>
    <ticket>1062</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1062-6d8a2439</id>
    <lines>80-83</lines>
    <body>The mojo doesn't update program version if it exists. This causes versions like `*.*.*` and `0.0.0` are not updated and remain in foreign catalog. This needs to be updated: version must be overridden to correct value.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/MarkMojo.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2022-09-15T09:29:38Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1246" closed="2022-10-20T09:36:35+00:00">1246</issue>
    <ticket>1105</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1105-4c34ccb4</id>
    <lines>44-46</lines>
    <body>create load function (it has to be able read by path) It should be able to load data from file We also need to add new unit test</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/Home.java</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2022-09-20T08:46:52Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1247" closed="2022-09-23T08:17:18+00:00">1247</issue>
    <ticket>1105</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1105-a0243dc5</id>
    <lines>65-67</lines>
    <body>we need to modify function. It has to change path by replacing bad characters (not utf-8) or maybe we can invent any other solution</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/Home.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2022-09-20T08:46:52Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/1261" closed="2022-09-30T11:41:30+00:00">1261</issue>
        <ticket>1247</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>1247-d57a5fca</id>
        <lines>195-197</lines>
        <body>we need to modify function. It has to change path by replacing bad characters (not utf-8). We need to choose what symbols we want to replace.</body>
        <file>eo-maven-plugin/src/main/java/org/eolang/maven/Home.java</file>
        <author>Stepa Strunkov</author>
        <email>stepa.strunkov@gmail.com</email>
        <time>2022-09-22T21:14:03Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1248" closed="2022-09-30T11:51:25+00:00">1248</issue>
    <ticket>1105</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1105-2b0b7358</id>
    <lines>155-156</lines>
    <body>We should remove this function and get rid of using it because it is not really better than simple save</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/Home.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2022-09-20T08:46:52Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/1292" closed="2022-10-15T14:45:23+00:00">1292</issue>
        <ticket>1248</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>1248-52399106</id>
        <lines>48-51</lines>
        <body>we need to implement StLambdaQuiet in yegor256/xsline. It will be similar to StLambda but it will also catch checked exceptions. Then we should change code below</body>
        <file>eo-maven-plugin/src/main/java/org/eolang/maven/SpyTrain.java</file>
        <author>rultor</author>
        <email>me@rultor.com</email>
        <time>2022-09-30T11:45:13Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1326" closed="2023-04-28T14:54:23+00:00">1326</issue>
    <ticket>1161</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1161-bdee702e</id>
    <lines>29-33</lines>
    <body>Complete implementation of this object in Java. This object should load and execute *.so file. Only one function is stored in *.so file. The signature will be always the same.</body>
    <file>eo-runtime/src/main/eo/org/eolang/rust.eo</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2022-10-09T13:22:19Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/2031" closed="2023-06-02T00:14:26+00:00">2031</issue>
        <ticket>1326</ticket>
        <estimate>90</estimate>
        <role>DEV</role>
        <id>1326-14112dc1</id>
        <lines>44-46</lines>
        <body>Name functions according to insert's attributes. Now they are named by location. It is better to call it using hash of code and parameters.</body>
        <file>eo-runtime/src/main/java/EOorg/EOeolang/EOrust.java</file>
        <author>@rultor</author>
        <email>me@rultor.com</email>
        <time>2023-04-28T14:46:01Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/2032" closed="2023-07-03T12:16:16+00:00">2032</issue>
        <ticket>1326</ticket>
        <estimate>90</estimate>
        <role>DEV</role>
        <id>1326-cda54a01</id>
        <lines>47-49</lines>
        <body>Generate this file at compile phase instead of keep it here. It allows to call any rust insert depending on its attributes.</body>
        <file>eo-runtime/src/main/java/EOorg/EOeolang/EOrust.java</file>
        <author>@rultor</author>
        <email>me@rultor.com</email>
        <time>2023-04-28T14:46:01Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/2033" closed="2025-09-21T14:40:28+00:00">2033</issue>
        <ticket>1326</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>1326-493bed2e</id>
        <lines>1-3</lines>
        <body>Enable only necessary tests. Several checks are not available for the project. For example a lot of package name contains capital letter and such names are conventional.</body>
        <file>.codacy.yml</file>
        <author>@rultor</author>
        <email>me@rultor.com</email>
        <time>2023-04-28T14:46:01Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1327" closed="2023-03-03T12:02:53+00:00">1327</issue>
    <ticket>1161</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1161-b24e6bf3</id>
    <lines>39-42</lines>
    <body>Extract Rust code &amp; parameters from org.eolang.rust objects here. Call rustc with provided dependencies and put binary *.so files to target directory.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/BinarizeMojo.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2022-10-09T13:22:19Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/1864" closed="2023-03-06T11:08:24+00:00">1864</issue>
        <ticket>1327</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>1327-3956ac93</id>
        <lines>40-43</lines>
        <body>Now the implementation is unsuitable for solving real problems. It is necessary to pull out the rust code. This can be done in much the same way as TranspileMojo. Rust code should then be compiled into a shared library.</body>
        <file>eo-maven-plugin/src/main/java/org/eolang/maven/BinarizeMojo.java</file>
        <author>rultor</author>
        <email>me@rultor.com</email>
        <time>2023-03-03T11:54:45Z</time>
        <children>
          <puzzle alive="false">
            <issue href="https://github.com/objectionary/eo/issues/1876" closed="2023-03-14T12:13:16+00:00">1876</issue>
            <ticket>1864</ticket>
            <estimate>90</estimate>
            <role>DEV</role>
            <id>1864-a812299e</id>
            <lines>56-59</lines>
            <body>Implement add_rust.xsl Now the implementation is unsuitable for solving real problems because just adds a rust section to all xmirs. It is necessary to pull out the rust code and put it to rust section.</body>
            <file>eo-maven-plugin/src/main/java/org/eolang/maven/BinarizeMojo.java</file>
            <author>rultor</author>
            <email>me@rultor.com</email>
            <time>2023-03-06T11:00:10Z</time>
            <children>
              <puzzle alive="false">
                <issue href="https://github.com/objectionary/eo/issues/1900" closed="2023-03-19T00:32:10+00:00">1900</issue>
                <ticket>1876</ticket>
                <estimate>90</estimate>
                <role>DEV</role>
                <id>1876-2fce61ab</id>
                <lines>58-61</lines>
                <body>Expand add-rust.xsl. Now it creates a section 'program/rusts' with nodes 'rust' with attribute 'code'. It is also necessary to add dependencies to every 'rust'</body>
                <file>eo-maven-plugin/src/main/java/org/eolang/maven/BinarizeMojo.java</file>
                <author>rultor</author>
                <email>me@rultor.com</email>
                <time>2023-03-14T11:45:56Z</time>
                <children/>
              </puzzle>
              <puzzle alive="false">
                <issue href="https://github.com/objectionary/eo/issues/1901" closed="2023-03-22T13:04:19+00:00">1901</issue>
                <ticket>1876</ticket>
                <estimate>90</estimate>
                <role>DEV</role>
                <id>1876-908986ec</id>
                <lines>68-71</lines>
                <body>EO to rust Naming convention. Come up with such a method of converting "loc" into a name into the legal name of the "rust" function to eliminate the possibility of a collision.</body>
                <file>eo-maven-plugin/src/main/java/org/eolang/maven/BinarizeMojo.java</file>
                <author>rultor</author>
                <email>me@rultor.com</email>
                <time>2023-03-14T11:45:56Z</time>
                <children/>
              </puzzle>
            </children>
          </puzzle>
          <puzzle alive="false">
            <issue href="https://github.com/objectionary/eo/issues/1877" closed="2023-03-31T16:01:00+00:00">1877</issue>
            <ticket>1864</ticket>
            <estimate>90</estimate>
            <role>DEV</role>
            <id>1864-29f06796</id>
            <lines>61-64</lines>
            <body>Extract rust code from rust section BinarizeMojo firstly put the code into rust section in xmir. Then it must be compiled to shared library. It can be implemented via cargo.</body>
            <file>eo-maven-plugin/src/main/java/org/eolang/maven/BinarizeMojo.java</file>
            <author>rultor</author>
            <email>me@rultor.com</email>
            <time>2023-03-06T11:00:10Z</time>
            <children>
              <puzzle alive="false">
                <issue href="https://github.com/objectionary/eo/issues/1964" closed="2023-04-06T09:39:44+00:00">1964</issue>
                <ticket>1877</ticket>
                <estimate>90</estimate>
                <role>DEV</role>
                <id>1877-727c7903</id>
                <lines>38-40</lines>
                <body>Transform source rust file by changing name of function in it to jni standard. It also necessary to add required headers and imports related to jni.</body>
                <file>eo-maven-plugin/src/main/java/org/eolang/maven/rust_project/Project.java</file>
                <author>rultor</author>
                <email>me@rultor.com</email>
                <time>2023-03-31T15:54:27Z</time>
                <children/>
              </puzzle>
              <puzzle alive="false">
                <issue href="https://github.com/objectionary/eo/issues/1965" closed="2023-04-10T07:32:57+00:00">1965</issue>
                <ticket>1877</ticket>
                <estimate>90</estimate>
                <role>DEV</role>
                <id>1877-47bf6944</id>
                <lines>41-43</lines>
                <body>Build the rust project via 'cargo build' command. Thins command must be called from right directory. Think of correct compilation errors handling.</body>
                <file>eo-maven-plugin/src/main/java/org/eolang/maven/rust_project/Project.java</file>
                <author>rultor</author>
                <email>me@rultor.com</email>
                <time>2023-03-31T15:54:27Z</time>
                <children/>
              </puzzle>
            </children>
          </puzzle>
        </children>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1337" closed="2022-12-12T12:38:51+00:00">1337</issue>
    <ticket>1230</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1230-0c34d341</id>
    <lines>31-34</lines>
    <body>Replace this custom {@link SynchronizedTojo} with implementation from Tojo framework once completed in &lt;a href="https://github.com/yegor256/tojos/issues/16"&gt;#16&lt;/a&gt;. This class should be removed and all usages updated accordingly.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/SynchronizedTojo.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2022-10-14T17:21:05Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1338" closed="2022-12-26T09:52:45+00:00">1338</issue>
    <ticket>1230</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1230-026e5a63</id>
    <lines>56-57</lines>
    <body>Make number of threads used in thread executor within {@link #exec()} method configurable via mojo parameter `threads`. Default value should be 4.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/ParseMojo.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2022-10-14T17:21:05Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1347" closed="2022-12-09T10:00:12+00:00">1347</issue>
    <ticket>1336</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1336-2df2eba5</id>
    <lines>60-61</lines>
    <body>Make a number of threads in `exec()` method configurable via mojo parameter `threads`. Default value should be set to 4.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/OptimizeMojo.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2022-10-19T12:20:58Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1348" closed="2022-12-13T06:31:39+00:00">1348</issue>
    <ticket>1336</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1336-46427220</id>
    <lines>86-89</lines>
    <body>Replace creation of new `Train` instances for each parsing task to a single `Train&amp;gtShift&amp;lt TRAIN`, once `TrClasspath` is thread-safe (solved by &lt;a href="https://github.com/jcabi/jcabi-xml/issues/185"/&gt;).</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/OptimizeMojo.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2022-10-19T12:20:58Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1370" closed="2023-03-30T13:44:29+00:00">1370</issue>
    <ticket>1299</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>1299-22a667db</id>
    <lines>30-33</lines>
    <body>Implement test that will check output of stdout. That should proove that there is no double printage, when methods lt., gt., lte., gte. are called.</body>
    <file>eo-runtime/src/test/eo/org/eolang/seq-tests.eo</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2022-10-26T15:30:05Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1374" closed="2022-11-09T13:03:05+00:00">1374</issue>
    <ticket>1174</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>1174-05a7b1c3</id>
    <lines>30-32</lines>
    <body>It's much better to move CommitHash class and all his implementations (including all connected classes) to a separate package. The example of the package name: `org.eolang.maven.hash`</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/CommitHash.java</file>
    <author>volodya-lombrozo</author>
    <email>volodya.lombrozo@yandex.ru</email>
    <time>2022-10-28T07:32:30Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1376" closed="2023-03-20T07:49:18+00:00">1376</issue>
    <ticket>1352</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1352-39528ceb</id>
    <lines>47-48</lines>
    <body>Prohibit absolute paths in methods `save`, `load`, `exists`. Throw an exception in case absolut path is given for these methods.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/Home.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2022-10-31T08:07:54Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1377" closed="2022-11-03T12:32:09+00:00">1377</issue>
    <ticket>1352</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1352-7c5eb2d2</id>
    <lines>161-166</lines>
    <body>Make `rel` method strictly relative to base. In most cases `rel` is used with empty `Home()` and given absolute path which is not part of it. So it just returns absolute path. Throw an exception in case give path is not sub-path of a base. Along with that revise all usages of this method and replace applicable with just `Path.relativize` or plain local vars.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/Home.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2022-10-31T08:07:54Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1378" closed="2022-11-09T12:27:20+00:00">1378</issue>
    <ticket>1352</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1352-5ea27325</id>
    <lines>208-210</lines>
    <body>Move utility `clean` method out of `Home` class. Create maybe separate class for this. Consider removing this method at all as it seems does nothing useful. Update all usages of this method.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/Home.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2022-10-31T08:07:54Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1381" closed="2022-11-07T08:01:31+00:00">1381</issue>
    <ticket>1174</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>1174-f084259e</id>
    <lines>59-61</lines>
    <body>The wrong naming. It isn't a `hash` - it's a `tag`. We have to rename that property. Also it's important to check if we don't break something by such a renaming.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/PullMojo.java</file>
    <author>volodya-lombrozo</author>
    <email>volodya.lombrozo@yandex.ru</email>
    <time>2022-10-31T10:45:30Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1382" closed="2022-11-02T16:06:13+00:00">1382</issue>
    <ticket>1174</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>1174-32383060</id>
    <lines>101-103</lines>
    <body>The code duplication with ChText. It's better to reuse the logic of parsing text source from ChText class. Maybe we can implement caching mechanism in a way to avoid using map directly.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/ChRemote.java</file>
    <author>volodya-lombrozo</author>
    <email>volodya.lombrozo@yandex.ru</email>
    <time>2022-10-31T10:45:30Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/1397" closed="2022-11-07T08:01:34+00:00">1397</issue>
        <ticket>1382</ticket>
        <estimate>90</estimate>
        <role>DEV</role>
        <id>1382-5825e083</id>
        <lines>37-40</lines>
        <body>We definitely have to split {@link org.eolang.maven.ChRemote} class to a two different classes: ChRemote and ChCached - in that case we will able to remove static methods and reuse ChCached somewhere else (not only in ChRemote). After implementation of ChCached - it's important remove CACHE from ChRemote.</body>
        <file>eo-maven-plugin/src/main/java/org/eolang/maven/ChRemote.java</file>
        <author>rultor</author>
        <email>me@rultor.com</email>
        <time>2022-11-02T15:59:37Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1385" closed="2022-12-09T08:40:58+00:00">1385</issue>
    <ticket>1361</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>1361-d1d958c1</id>
    <lines>39-40</lines>
    <body>The class without tests. We definitely have to write some tests in order to make the class possible for future refactoring and easy maintainance.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/DcsNoOneHasTransitive.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2022-11-01T10:58:36Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1386" closed="2022-11-08T11:39:09+00:00">1386</issue>
    <ticket>1361</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>1361-2e51fcf2</id>
    <lines>34-38</lines>
    <body>Hardcoded version of EoRuntimeDependency. See the EoRuntimeDependency constructor for more info. It's much better to determine the version of the runtime library dynamically. For example, we can fetch the latest version by http or from config files.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/DcsWithRuntime.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2022-11-01T10:58:36Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1387" closed="2022-11-01T15:15:22+00:00">1387</issue>
    <ticket>1174</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>1174-ff288657</id>
    <lines>34-38</lines>
    <body>Add implementation for {@link org.eolang.maven.ChPattern} class. Now it has dummy behaviour. When {@link org.eolang.maven.ChPattern} will be finished we can remove '@Disabled' annotation from the next tests: - org.eolang.maven.PullMojoTest#pullsUsingOfflineHash(Path) - org.eolang.maven.ChPatternTest#returnsCorrectHashByPattern(String, String, String)</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/ChPattern.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2022-11-01T12:03:09Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1395" closed="2023-01-13T09:03:24+00:00">1395</issue>
    <ticket>1323</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1323-f376339c</id>
    <lines>43-47</lines>
    <body>Create `ProbeMojo` and include it into assemble cycle. It has to be included between discover and pull steps. New mojo needs to go through all `probe` metas in XMIRs, try to locate the objects pointed by `probe` in Objectionary and if found register them in `foreign.csv`.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/AssembleMojo.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2022-11-02T14:53:13Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/1677" closed="2023-01-17T12:18:11+00:00">1677</issue>
        <ticket>1395</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>1395-4efb8b76</id>
        <lines>180-182</lines>
        <body>Rewrite lines 185-200 as fully `cactoos` style to make to code more convenient. So there is will no "imperative" `forEach()` in line 194.</body>
        <file>eo-maven-plugin/src/main/java/org/eolang/maven/ProbeMojo.java</file>
        <author>Yegor Bugayenko</author>
        <email>yegor256@gmail.com</email>
        <time>2023-01-13T08:49:41Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/1678" closed="2023-01-17T12:18:16+00:00">1678</issue>
        <ticket>1395</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>1395-62820c0c</id>
        <lines>222-223</lines>
        <body>Need to add the logic of "hasReservedChars" method to add-probes.xsl". After that, the method in this class need to be removed.</body>
        <file>eo-maven-plugin/src/main/java/org/eolang/maven/ProbeMojo.java</file>
        <author>Yegor Bugayenko</author>
        <email>yegor256@gmail.com</email>
        <time>2023-01-13T08:49:41Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/1679" closed="2023-01-16T09:25:20+00:00">1679</issue>
        <ticket>1395</ticket>
        <estimate>40</estimate>
        <role>DEV</role>
        <id>1395-b6efb036</id>
        <lines>50-53</lines>
        <body>Rewrite this class via using a new method for testing Mojos with using `FakeMaven` class. At the moment, this class has a lot of "noise"-code. So, by using `FakeMaven` it will be more clear.</body>
        <file>eo-maven-plugin/src/test/java/org/eolang/maven/ProbeMojoTest.java</file>
        <author>Yegor Bugayenko</author>
        <email>yegor256@gmail.com</email>
        <time>2023-01-13T08:49:41Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/1700" closed="2023-01-18T11:33:36+00:00">1700</issue>
        <ticket>1395</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>1395-c0569c3e</id>
        <lines>230-231</lines>
        <body>Need to add the logic of "missesReservedChars" method to add-probes.xsl". After that, the method in this class need to be removed.</body>
        <file>eo-maven-plugin/src/main/java/org/eolang/maven/ProbeMojo.java</file>
        <author>rultor</author>
        <email>me@rultor.com</email>
        <time>2023-01-17T12:08:02Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1412" closed="2022-11-07T09:37:35+00:00">1412</issue>
    <ticket>1174</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>1174-40589514</id>
    <lines>58-61</lines>
    <body>The wrong naming. It isn't a `hash` - it's a `tag`. We have to rename that property. Also it's important to check if we don't break something by such a renaming. @since 0.21.0</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/PullMojo.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2022-11-07T07:54:42Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1431" closed="2022-11-11T09:30:06+00:00">1431</issue>
    <ticket>1223</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>1223-c08eee6b</id>
    <lines>140-143</lines>
    <body>Implement caching for optimization step. After implementation don't forget to remove '@Disabled' annotation from the next tests: - 'getsAlreadyOptimizedResultsFromCache' - 'savesOptimizedResultsToCache'</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/OptimizeMojoTest.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2022-11-09T12:31:01Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/1442" closed="2022-11-15T08:27:00+00:00">1442</issue>
        <ticket>1431</ticket>
        <estimate>90</estimate>
        <role>DEV</role>
        <id>1431-4de3d363</id>
        <lines>40-43</lines>
        <body>Unit test are required. We have to test different cases like: - if XML file is already in cache - if XML file is absent - if some {@link java.io.IOException} happens</body>
        <file>eo-maven-plugin/src/main/java/org/eolang/maven/optimization/OptCached.java</file>
        <author>rultor</author>
        <email>me@rultor.com</email>
        <time>2022-11-11T09:10:50Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/1443" closed="2022-11-16T06:20:43+00:00">1443</issue>
        <ticket>1431</ticket>
        <estimate>90</estimate>
        <role>DEV</role>
        <id>1431-d4218ffb</id>
        <lines>278-280</lines>
        <body>move that method implementation to a separate class under {@link org.eolang.maven.optimization} package. Probably, after implementation we will able to remove {@link org.eolang.maven.optimization.OptLambda}.</body>
        <file>eo-maven-plugin/src/main/java/org/eolang/maven/OptimizeMojo.java</file>
        <author>rultor</author>
        <email>me@rultor.com</email>
        <time>2022-11-11T09:10:50Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1471" closed="2023-03-02T12:20:15+00:00">1471</issue>
    <ticket>1319</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1319-d1162eae</id>
    <lines>125-126</lines>
    <body>If all .class files for a dependency are removed then unplaced attribute should be set to `true` for a dependency jar entry as well.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/UnplaceMojo.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2022-11-18T10:19:22Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1475" closed="2023-02-15T10:07:47+00:00">1475</issue>
    <ticket>1024</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1024-be5231a9</id>
    <lines>43-45</lines>
    <body>Need to figure out, which errors need to be "critical", same as "duplicate-names" error. After that move them to "critical-errors" directory.</body>
    <file>eo-parser/src/main/java/org/eolang/parser/ParsingTrain.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2022-11-19T04:26:03Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1479" closed="2022-11-24T17:44:18+00:00">1479</issue>
    <ticket>1417</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>1417-1e98004e</id>
    <lines>38-39</lines>
    <body>Make `FakeMaven.exec()` return a `HashMap` with all files created in the directory and their relative names. Then, we can assert on this hash map.</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/FakeMaven.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2022-11-22T11:39:52Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/1488" closed="2022-11-26T12:12:41+00:00">1488</issue>
        <ticket>1479</ticket>
        <estimate>90</estimate>
        <role>DEV</role>
        <id>1479-9e6d5e00</id>
        <lines>90-92</lines>
        <body>The method withDefaults() has to be called right in the exec() method. We should set default properties only if they aren't set using `with()` method. Also it's important to remove withDefaults() method from tests.</body>
        <file>eo-maven-plugin/src/test/java/org/eolang/maven/FakeMaven.java</file>
        <author>rultor</author>
        <email>me@rultor.com</email>
        <time>2022-11-24T17:24:54Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/1489" closed="2022-11-25T12:45:52+00:00">1489</issue>
        <ticket>1479</ticket>
        <estimate>90</estimate>
        <role>DEV</role>
        <id>1479-03b130b4</id>
        <lines>117-119</lines>
        <body>The method withEoForeign() has to be deleted. We can move the logic of creation eo-foreign.* file into exec() function directly. Also it's important to remove the method from tests.</body>
        <file>eo-maven-plugin/src/test/java/org/eolang/maven/FakeMaven.java</file>
        <author>rultor</author>
        <email>me@rultor.com</email>
        <time>2022-11-24T17:24:54Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1490" closed="2023-02-15T10:07:51+00:00">1490</issue>
    <ticket>485</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>485-f1fd9ef1</id>
    <lines>85-90</lines>
    <body>The {@link org.eolang.parser.Syntax} by default just write warning to the log about redundant parentheses because some objects from objectioanry already contain redundancy parentheses in their source code that causes exceptions during parsing if {@link org.eolang.parser.Syntax#redundancy} is true. By that reason it's important to fix all redundancy parentheses in the objectionary. Then we will be able to remove 'redundancy' flag and check all eo programs for redundant parentheses by default.</body>
    <file>eo-parser/src/main/java/org/eolang/parser/Syntax.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2022-11-25T08:13:04Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1505" closed="2023-04-17T11:15:35+00:00">1505</issue>
    <ticket>1502</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1502-8fdd46e0</id>
    <lines>302-304</lines>
    <body>For some reason this test doesn't work any more, after I changed the algorithm inside WHILE atom. Can't figure out why it doesn't work, let's find out and enable this test back again.</body>
    <file>eo-runtime/src/test/eo/org/eolang/runtime-tests.eo</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2022-11-29T09:45:43Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1514" closed="2025-02-21T17:25:09+00:00">1514</issue>
    <ticket>1494</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1494-e338b825</id>
    <lines>155-158</lines>
    <body>We have some doubts about using Logger.warn in initField method. Since it's important to notice the developer during of using the plugin that the property can't be set to the Mojo, we can't just remove Logger.warn. On the other hand, we will see warnings all the time during unit testing, which can be an insignificant problem.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/Moja.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2022-12-01T16:49:01Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1582" closed="2022-12-19T11:30:59+00:00">1582</issue>
    <ticket>1575</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1575-0b49c4eb</id>
    <lines>164-164</lines>
    <body>Set 'verify' phase for the 'project-validate'. Replace the phase with 'verify' when #1576 will finished. This action will make the integration test work. --&gt;</body>
    <file>eo-runtime/pom.xml</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2022-12-19T10:23:42Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1587" closed="2023-03-30T03:22:28+00:00">1587</issue>
    <ticket>1584</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>1584-082116ed</id>
    <lines>116-116</lines>
    <body>Set failOnWarning to 'true'. It's not a good idea to allow deploy artifacts with warnings. It's only temporary solution. --&gt;</body>
    <file>eo-runtime/pom.xml</file>
    <author>@volodya-lombrozo</author>
    <email>volodya.lombrozo@yandex.ru</email>
    <time>2022-12-19T14:56:19Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1598" closed="2023-01-12T12:33:04+00:00">1598</issue>
    <ticket>1595</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1595-30597d8f</id>
    <lines>165-168</lines>
    <body>Make method 'deps' testable. For now it's not possible to test 'ignoreTransitive=false' branch because it's hard to mock all required fields. Maybe we should provide a chance to mock all dependencies related to maven or even extract new classes.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/ResolveMojo.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2022-12-21T08:56:08Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1607" closed="2022-12-26T09:21:02+00:00">1607</issue>
    <ticket>1574</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1574-650f37ca</id>
    <lines>46-49</lines>
    <body>MonoTojo is not thread safe. It's not possible to use it in parallel. It should be fixed. When &lt;a href="https://github.com/yegor256/tojos/issues/50"&gt; the issue&lt;/a&gt; will be fixed, remove the @Disabled annotation from the test below.</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/CatalogsConcurrencyTest.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2022-12-23T08:37:22Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1616" closed="2024-03-18T13:35:43+00:00">1616</issue>
    <ticket>1614</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1614-0453e668</id>
    <lines>35-36</lines>
    <body>This class don't have enough tests. We need to add more, at least for the next methods: toString(), &#x3C6;Term(), copy(), put().</body>
    <file>eo-runtime/src/main/java/org/eolang/AtConst.java</file>
    <author>@volodya-lombrozo</author>
    <email>volodya.lombrozo@gmail.com</email>
    <time>2022-12-26T07:13:11Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1617" closed="2023-01-10T14:55:03+00:00">1617</issue>
    <ticket>1614</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1614-2eb2b1c3</id>
    <lines>32-33</lines>
    <body>This class don't have enough tests. We need to add more, at least for the next methods: toString(), &#x3C6;Term(), copy(), put(), get().</body>
    <file>eo-runtime/src/main/java/org/eolang/AtLogged.java</file>
    <author>@volodya-lombrozo</author>
    <email>volodya.lombrozo@gmail.com</email>
    <time>2022-12-26T07:13:11Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/1664" closed="2023-01-15T11:49:49+00:00">1664</issue>
        <ticket>1617</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>1617-eb1a6d1b</id>
        <lines>34-35</lines>
        <body>Use logger instead of System.out.println. It's much better to use standard logger in that class. Examples of using logger are inside {@link PhDefault} or {@link Dataized}.</body>
        <file>eo-runtime/src/main/java/org/eolang/AtLogged.java</file>
        <author>@rultor</author>
        <email>me@rultor.com</email>
        <time>2023-01-10T14:47:20Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1618" closed="2022-12-30T13:40:46+00:00">1618</issue>
    <ticket>1614</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1614-fb4fb25c</id>
    <lines>31-32</lines>
    <body>This class don't have enough tests. We need to add more, at least for the next methods: toString(), &#x3C6;Term(), copy(), put(), get(), label().</body>
    <file>eo-runtime/src/main/java/org/eolang/AtLocated.java</file>
    <author>@volodya-lombrozo</author>
    <email>volodya.lombrozo@gmail.com</email>
    <time>2022-12-26T07:13:11Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1619" closed="2022-12-28T14:48:04+00:00">1619</issue>
    <ticket>1614</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1614-917953e4</id>
    <lines>34-35</lines>
    <body>This class don't have enough tests. We need to add more, at least for the next methods: equals(), toString(), &#x3C6;Term(), copy(), attr(), locator().</body>
    <file>eo-runtime/src/main/java/org/eolang/PhLogged.java</file>
    <author>@volodya-lombrozo</author>
    <email>volodya.lombrozo@gmail.com</email>
    <time>2022-12-26T07:13:11Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1622" closed="2022-12-28T14:26:17+00:00">1622</issue>
    <ticket>1567</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1567-f68ff78b</id>
    <lines>41-44</lines>
    <body>In method `contains()` we catch an `IOException` for flow control. Now, if the exception occurred, this method returns `false`. Need to allow it to not use this approach, since control-flow via Exceptions is prohibited.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/objectionary/OyRemote.java</file>
    <author>MikhailLipanin</author>
    <email>mikhail.lipanin@gmail.com</email>
    <time>2022-12-26T10:24:52Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1623" closed="2022-12-28T14:48:07+00:00">1623</issue>
    <ticket>1567</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1567-4fb86abf</id>
    <lines>40-43</lines>
    <body>The "putsObjectToLocalCache" is very complicated, since it checks a lot of things like methods "get" and "contains" in Objectionary, work of "OyFallback", and behaviour of "OyCaching". Need to split this test into several tests to check every part separately.</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/objectionary/OyFallbackTest.java</file>
    <author>MikhailLipanin</author>
    <email>mikhail.lipanin@gmail.com</email>
    <time>2022-12-26T10:24:52Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1644" closed="2023-03-30T03:33:26+00:00">1644</issue>
    <ticket>1569</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1569-254a5fb6</id>
    <lines>33-37</lines>
    <body>Now, this class is a configurable. This is not a good practice. More technically, encapsulated properties must not be used to change the behavior of an object. Need to use composable decorators to make this class not configurable.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/hash/ChResolve.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2022-12-30T13:55:12Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1645" closed="2023-03-07T11:04:43+00:00">1645</issue>
    <ticket>1569</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1569-cc8ee668</id>
    <lines>38-40</lines>
    <body>Need to rename this class to a more correct one. The correct one name will consist of prefix "Ch" and a noun or adjective.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/hash/ChResolve.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2022-12-30T13:55:12Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1673" closed="2023-03-30T03:11:22+00:00">1673</issue>
    <ticket>1589</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1589-9aa5ee72</id>
    <lines>37-38</lines>
    <body>Add fine grained tests for DcsEachWithoutTransitive. It's important to add new unit tests for different cases including dome garbage inputs.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/DcsEachWithoutTransitive.java</file>
    <author>volodya-lombrozo</author>
    <email>volodya.lombrozo@gmail.com</email>
    <time>2023-01-12T12:04:27Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1800" closed="2023-02-16T11:07:33+00:00">1800</issue>
    <ticket>1253</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1253-c101194f</id>
    <lines>28-30</lines>
    <body>Allow division by float zero in EOfloat$EOdiv for being able to make float.nan, float.positive-infinity and float.negative-infinity decorated 0.0.div 0.0, 1.0.div 0.0 and -1.0.div 0.0 accordingly</body>
    <file>eo-runtime/src/main/eo/org/eolang/nan.eo</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2023-02-15T09:56:52Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1801" closed="2023-02-16T11:07:39+00:00">1801</issue>
    <ticket>1253</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1253-cf6eb09a</id>
    <lines>32-35</lines>
    <body>Add extra conditions in Data.ToPhi.toPhi() method for checking if given object is Double.NaN, Double.POSITIVE_INFINITY or Double.NEGATIVE_INFINITY and convert them to Phi objects (EOfloat$EOnan, EOfloat$EOpositive_infinity and EOfloat$EOnegative-infinity)</body>
    <file>eo-runtime/src/main/eo/org/eolang/nan.eo</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2023-02-15T09:56:52Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1802" closed="2023-02-16T11:07:45+00:00">1802</issue>
    <ticket>1253</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1253-b8f83769</id>
    <lines>37-39</lines>
    <body>After allowing division by zero float in EOfloat$EOdiv make float.nan, float.positive-infinity and float.negative-infinity decorated 0.0.div 0.0, 1.0.div 0.0 and -1.0.div 0.0 accordingly</body>
    <file>eo-runtime/src/main/eo/org/eolang/nan.eo</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2023-02-15T09:56:52Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1803" closed="2023-02-16T11:07:51+00:00">1803</issue>
    <ticket>1791</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1791-3261ce98</id>
    <lines>41-45</lines>
    <body>Remove unwanted objects from nan, +inf and -inf. Since these are object are float numbers but special - they should not have extra and unwanted objects that usual float does not have like: neq, signum, as-int. as-bytes also can be removed because it can be got from the result of @ object</body>
    <file>eo-runtime/src/main/eo/org/eolang/nan.eo</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2023-02-15T09:56:52Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1804" closed="2023-06-05T08:33:36+00:00">1804</issue>
    <ticket>1723</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>1723-32fae630</id>
    <lines>91-95</lines>
    <body>Enable runsAllSpinners test. This test disabled because it requires foreign eo objects from the internet. We need to find a way to mock them or to put into eo-runtime.jar. You can read more about the problem &lt;a href="https://github.com/objectionary/eo/issues/1724"&gt;here&lt;/a&gt;. Also it's important to remove bytes-as-array.eo and list.eo from the test resources.</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/SnippetTest.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-02-15T09:56:52Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/2125" closed="2023-06-06T00:18:03+00:00">2125</issue>
        <ticket>1804</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>1804-0c2079fd</id>
        <lines>293-296</lines>
        <body>Introduce OyFilesystem instead of using OyFake. The code below can be moved into separate class with the possible name OyFilesystem. This class will upload eo sources from filesystem. By that change we will simplify the SnippetTest itself and will be able to use OyFilesystem in some other cases.</body>
        <file>eo-maven-plugin/src/test/java/org/eolang/maven/SnippetTest.java</file>
        <author>rultor</author>
        <email>me@rultor.com</email>
        <time>2023-06-05T08:22:03Z</time>
        <children>
          <puzzle alive="false">
            <issue href="https://github.com/objectionary/eo/issues/2128" closed="2023-06-06T14:15:28+00:00">2128</issue>
            <ticket>2125</ticket>
            <estimate>30</estimate>
            <role>DEV</role>
            <id>2125-11b289da</id>
            <lines>42-44</lines>
            <body>Add unit tests for OyFilesystemSources. The tests should check that OyFilesystem can get an object from the filesystem and that it can check if an object exists in the filesystem.</body>
            <file>eo-maven-plugin/src/main/java/org/eolang/maven/objectionary/OyFilesystem.java</file>
            <author>volodya-lombrozo</author>
            <email>volodya.lombrozo@gmail.com</email>
            <time>2023-06-05T12:58:00Z</time>
            <children/>
          </puzzle>
        </children>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1806" closed="2023-02-20T20:28:28+00:00">1806</issue>
    <ticket>1799</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1799-32659a06</id>
    <lines>29-31</lines>
    <body>Make "+inf" and "-inf" looked like float. Refactor objects plus, minus, times, div in +inf and -inf so they are able to process multiple arguments</body>
    <file>eo-runtime/src/main/eo/org/eolang/positive-infinity.eo</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2023-02-16T10:59:43Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/1824" closed="2023-03-03T14:49:49+00:00">1824</issue>
        <ticket>1806</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>1806-8a1e1fbc</id>
        <lines>62-64</lines>
        <body>Make positive-infinity.times and negative-infinity.times worked with multiple arguments without using objects from eo-collections. See positive-infinity.plus and negative-infinity.plus as an example</body>
        <file>eo-runtime/src/main/eo/org/eolang/positive-infinity.eo</file>
        <author>@rultor</author>
        <email>me@rultor.com</email>
        <time>2023-02-20T20:21:47Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/1825" closed="2023-03-03T14:49:53+00:00">1825</issue>
        <ticket>1806</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>1806-be69b5fb</id>
        <lines>126-128</lines>
        <body>Make positive-infinity.minus and negative-infinity.minus worked with multiple arguments without using objects from eo-collections. See positive-infinity.plus and negative-infinity.plus as an example</body>
        <file>eo-runtime/src/main/eo/org/eolang/positive-infinity.eo</file>
        <author>@rultor</author>
        <email>me@rultor.com</email>
        <time>2023-02-20T20:21:47Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/1826" closed="2023-04-22T09:58:32+00:00">1826</issue>
        <ticket>1806</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>1806-865a59ed</id>
        <lines>133-135</lines>
        <body>Make positive-infinity.div and negative-infinity.div worked with multiple arguments without using objects from eo-collections. See positive-infinity.plus and negative-infinity.plus as an example</body>
        <file>eo-runtime/src/main/eo/org/eolang/positive-infinity.eo</file>
        <author>@rultor</author>
        <email>me@rultor.com</email>
        <time>2023-02-20T20:21:47Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1809" closed="2023-02-20T07:32:48+00:00">1809</issue>
    <ticket>1542</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>1542-94d035b1</id>
    <lines>57-60</lines>
    <body>Add xsl transformation that checks the presence of +version meta. The version meta have to be correct. It can be divided by 2 xsl checks.</body>
    <file>eo-parser/src/main/java/org/eolang/parser/ParsingTrain.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-02-16T22:32:50Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1818" closed="2023-02-23T09:00:43+00:00">1818</issue>
    <ticket>1812</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1812-9ede52a3</id>
    <lines>44-46</lines>
    <body>Remake "switch" without using "QQ.collections.list". eo-runtime must be independent of other packages so need to implement switch using recursion not "QQ.collectioins.list". See "float.minus" as an example</body>
    <file>eo-runtime/src/main/eo/org/eolang/switch.eo</file>
    <author>@maxonfjvipon</author>
    <email>mtrunnikov@gmail.com</email>
    <time>2023-02-20T09:22:48Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1820" closed="2023-04-19T11:41:49+00:00">1820</issue>
    <ticket>1060</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1060-a940be9c</id>
    <lines>29-32</lines>
    <body>The method .empty is not nessesary. Make the create of tuple possible just by using the object name, i.e `tuple &gt; a` and remove this method.</body>
    <file>eo-runtime/src/main/eo/org/eolang/tuple.eo</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2023-02-20T13:38:10Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1821" closed="2023-03-01T09:48:39+00:00">1821</issue>
    <ticket>1790</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1790-b6768978</id>
    <lines>236-236</lines>
    <body>After the new version of the eo-runtime library, which includes 'tuple' classes, is deployed to Maven Central, we should remove the plugin from the pom.xml file. However, a better solution would be to move all integration tests from the eo-maven-plugin to the eo-parent project since these tests depend on eo-parser, eo-maven-plugin, and eo-runtime collectively. --&gt;</body>
    <file>eo-maven-plugin/pom.xml</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-02-20T13:38:10Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1849" closed="2023-04-04T23:51:41+00:00">1849</issue>
    <ticket>1842</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>1842-6aa1ed78</id>
    <lines>30-33</lines>
    <body>We can add method 'outputDirectory()' in order to replace hardcoded static variables like ParseMojo.DIR, ResolveMojo.DIR, OptimizeMojo.DIR, CopyMojo.DIR, TranspileMojo.DIR, etc. The CompilationStep interface could also define other common behaviors shared among different Mojos.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/CompilationStep.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-02-27T00:37:35Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1857" closed="2023-03-07T14:13:39+00:00">1857</issue>
    <ticket>1226</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1226-84e22b8e</id>
    <lines>160-162</lines>
    <body>new FtCached(hash, cache, origin) should be replaced with a new constructor that uses the current eo-maven-plugin version - new FtCached(CacheVersion, cache, origin). This will allow us to invalidate the cache when the plugin version changes.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/ParseMojo.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-02-28T11:58:28Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1904" closed="2023-03-29T14:48:45+00:00">1904</issue>
    <ticket>1320</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1320-7d394273</id>
    <lines>158-160</lines>
    <body>Refactor PlaceMojo#place method in order to reduce complexity. When the method will be refactored we have to remove all warning suppressing from checkstyle and PMD.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/PlaceMojo.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-03-15T14:00:35Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1928" closed="2023-06-23T08:40:22+00:00">1928</issue>
    <ticket>1894</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1894-1f27a75b</id>
    <lines>252-255</lines>
    <body>Replace PlaceMojo#placedCache crutch with an appropriate solution from Tojos library. The original problem is that Tojos has not so optimal reading mechanism and it's not efficient to read row by row from tojos. You can check the progress &lt;a href="https://github.com/yegor256/tojos/issues/60"&gt;here&lt;/a&gt;.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/PlaceMojo.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-03-20T08:44:43Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1934" closed="2023-04-05T00:02:38+00:00">1934</issue>
    <ticket>1907</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1907-be29faa8</id>
    <lines>48-52</lines>
    <body>Enable HomeTest.throwsExceptionOnAbsolute(). The test fails on Windows with no error thrown. It means that this test didn't throw IllegalArgumentException when we are trying to check existence of file in temporary directory. Possible reason is Home.onlyRelative() method.</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/util/HomeTest.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-03-22T14:10:50Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1953" closed="2023-08-09T07:43:14+00:00">1953</issue>
    <ticket>1299</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>1299-fdd4d593</id>
    <lines>30-33</lines>
    <body>Implement test that will check output of stdout. That should proven that there is no double printage, when methods lt., gt., lte., gte. are called.</body>
    <file>eo-runtime/src/test/eo/org/eolang/seq-tests.eo</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2023-03-30T13:37:46Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1959" closed="2023-09-18T13:30:06+00:00">1959</issue>
    <ticket>1897</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1897-b918ace1</id>
    <lines>105-113</lines>
    <body>Refactor regexp in `RedundantParenthesis`. The Java regex engine uses recursive method calls to implement backtracking. Therefore when a repetition inside a regular expression contains multiple paths (i.e. the body of the repetition contains an alternation (|), an optional element or another repetition), trying to match the regular expression can cause a stack overflow on large inputs. This does not happen when using a possessive quantifier (such as *+ instead of *) or when using a character class inside a repetition (e.g. [ab]* instead of (a|b)*). Refactor this repetition that can lead to a stack overflow for large inputs. (line 113)</body>
    <file>eo-parser/src/main/java/org/eolang/parser/RedundantParentheses.java</file>
    <author>Max Petrov</author>
    <email>40247101+mximp@users.noreply.github.com</email>
    <time>2023-03-31T13:42:35Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1960" closed="2023-04-05T09:04:52+00:00">1960</issue>
    <ticket>1897</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1897-ad91fbed</id>
    <lines>85-89</lines>
    <body>Close `Stream` object in `FtDefault`. Connections, streams, files, and other classes that implement the Closeable interface or its super-interface, AutoCloseable, needs to be closed after use. Use try-with-resources or close this "Stream" in a "finally" clause.. (line 90)</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/footprint/FtDefault.java</file>
    <author>Max Petrov</author>
    <email>40247101+mximp@users.noreply.github.com</email>
    <time>2023-03-31T13:42:35Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1961" closed="2025-03-13T10:26:04+00:00">1961</issue>
    <ticket>1897</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1897-5e29a33b</id>
    <lines>195-197</lines>
    <body>Close `JsonReader` object in `DcsJson`. SonarCloud mandates readers to be closed. Use try-with-resources or close this "JsonReader" in a "finally" clause. (line 203)</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/dependencies/DcsDepgraph.java</file>
    <author>Max Petrov</author>
    <email>40247101+mximp@users.noreply.github.com</email>
    <time>2023-03-31T13:42:35Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1962" closed="2023-04-03T15:12:37+00:00">1962</issue>
    <ticket>1897</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1897-ea29af16</id>
    <lines>120-124</lines>
    <body>Close `Stream` object in `Walk`. Connections, streams, files, and other classes that implement the Closeable interface or its super-interface, AutoCloseable, needs to be closed after use. Use try-with-resources or close this "Stream" in a "finally" clause.. (line 131)</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/util/Walk.java</file>
    <author>Max Petrov</author>
    <email>40247101+mximp@users.noreply.github.com</email>
    <time>2023-03-31T13:42:35Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1986" closed="2023-04-14T02:34:26+00:00">1986</issue>
    <ticket>1829</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1829-71075212</id>
    <lines>48-50</lines>
    <body>BinarizeMojoTest.binarizesWithoutErrors() fails sometimes. Apparently, the test was merged without appropriate checks verification. The test should be fixed and then enabled.</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/BinarizeMojoTest.java</file>
    <author>volodya-lombrozo</author>
    <email>volodya.lombrozo@gmail.com</email>
    <time>2023-04-11T09:17:47Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1989" closed="2023-04-25T09:14:14+00:00">1989</issue>
    <ticket>1969</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>1969-7863a9b5</id>
    <lines>45-47</lines>
    <body>Remove all ATTR_* constants from AssembleMojo class. We have to replace all hardcoded ATTR_* attributes with corresponding methods from ForeignTojos and ForeignTojo classes. It will increase maintainability of the code.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/AssembleMojo.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-04-13T10:10:31Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/2018" closed="2023-05-03T05:37:47+00:00">2018</issue>
        <ticket>1989</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>1989-9b8b16d2</id>
        <lines>53-56</lines>
        <body>Enable BinarizeMojoTest.binarizesWithoutErrors() test. The test is disabled because it fails on systems that don't hava install rust. We have to invent a way to check installed rust on the system before running that test. The logic is similar to {@link org.eolang.maven.OnlineCondition}.</body>
        <file>eo-maven-plugin/src/test/java/org/eolang/maven/BinarizeMojoTest.java</file>
        <author>rultor</author>
        <email>me@rultor.com</email>
        <time>2023-04-21T08:48:49Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/1990" closed="2023-05-02T13:57:33+00:00">1990</issue>
    <ticket>1969</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1969-544e0a6b</id>
    <lines>149-151</lines>
    <body>Add more meaningful name for the xmir2 attribute. I believe that instead of xmir2 we have to invent something more meaningful and change all related methods and parameters that use xmir2 abbreviation.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/tojos/ForeignTojos.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-04-13T10:10:31Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2014" closed="2023-05-24T09:49:19+00:00">2014</issue>
    <ticket>1996</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1996-4a25c7ad</id>
    <lines>107-107</lines>
    <body>Enable parallel run of all tests in eo-runtime. For now we are experience some problems when concurrent mode is enabled. We have to investigate the problem and make all tests in eo-runtime run in parallel.--&gt;</body>
    <file>eo-runtime/pom.xml</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2023-04-20T14:29:13Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2015" closed="2023-05-11T21:31:31+00:00">2015</issue>
    <ticket>1996</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1996-dfdf2dcc</id>
    <lines>43-48</lines>
    <body>Make LogFormatTest run tests in parallel. Currently all tests in this class are executed in the same thread. This is done by the annotation @Execution(ExecutionMode.SAME_THREAD) on the class. This is a temporary solution because the class has some concurrency problems. We need to make the tests in this class run in parallel and then remove the annotation. Also we have to remove @Disabled from the test method</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/LogFormatTest.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-04-20T14:29:13Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2016" closed="2023-05-03T16:43:31+00:00">2016</issue>
    <ticket>1996</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1996-4117854c</id>
    <lines>49-53</lines>
    <body>Make PlaceMojoTest run tests in parallel. Currently all tests in this class are executed in the same thread. This is done by the annotation @Execution(ExecutionMode.SAME_THREAD) on the class. This is a temporary solution because the class has some concurrency problems. We need to make the tests in this class run in parallel and then remove the annotation.</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/PlaceMojoTest.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-04-20T14:29:13Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2017" closed="2023-05-10T20:25:58+00:00">2017</issue>
    <ticket>1996</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1996-cf9e8e91</id>
    <lines>39-43</lines>
    <body>Make BinarizeMojoTest run tests in parallel. Currently all tests in this class are executed in the same thread. This is done by the annotation @Execution(ExecutionMode.SAME_THREAD) on the class. This is a temporary solution because the class has some concurrency problems. We need to make the tests in this class run in parallel and then remove the annotation.</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/BinarizeMojoTest.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-04-20T14:29:13Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2044" closed="2023-08-30T12:54:45+00:00">2044</issue>
    <ticket>1205</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>1205-36a795cd</id>
    <lines>38-46</lines>
    <body>cti: Use normal string literals instead of hex literals. Currently we add errors for cti with hex representation of the error message which looks ugly. We should use normal string literals instead, but for now it seems impossible since during parsing we already have hex representation of the error message in cti. By that reason, the 'fails-since-deprecated' test passes successfully, but it should fail since it uses cti with "error" level. See cti-adds-error.yaml, cti-adds-warning.yaml pack tests and cti-adds-errors.xsl transformation for more details.</body>
    <file>eo-runtime/src/test/eo/org/eolang/cti-test.eo</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2023-05-04T14:08:24Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2057" closed="2023-06-09T03:00:27+00:00">2057</issue>
    <ticket>2046</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2046-deb7b8e4</id>
    <lines>239-243</lines>
    <body>Enable removing transpiled files. We ignored that method by using .filter(tojo -&gt; false) statement, because it created some problems like the next one: &lt;a href="https://github.com/objectionary/eo/issues/2046"&gt;#2046&lt;/a&gt; We have to decide if we need to remove transpiled files or not.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/TranspileMojo.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-05-10T20:30:51Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2066" closed="2025-09-21T14:33:57+00:00">2066</issue>
    <ticket>1206</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1206-1613cc9f</id>
    <lines>40-44</lines>
    <body>Create a summary file "target/eo/universe.tex". According to the &lt;a href="https://github.com/objectionary/eo/issues/1206"&gt;issue&lt;/a&gt; we need to generate summary in universe.tex file, which will include all generated objects. And this file should be a standalone compilable document.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/LatexMojo.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-05-12T11:59:43Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2067" closed="2023-05-25T09:11:36+00:00">2067</issue>
    <ticket>1206</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1206-e1d7d262</id>
    <lines>45-48</lines>
    <body>Generate a standalone compilable document from each of the file in "latex" directory. All of this files are already ".tex" files. But they are contain only the EO code without LaTex structure.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/LatexMojo.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-05-12T11:59:43Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/2089" closed="2025-02-11T19:50:52+00:00">2089</issue>
        <ticket>2067</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>2067-cbe8080e</id>
        <lines>35-37</lines>
        <body>We need to refactor LatexTemplate class. And to remove redundant parts in the code, like DOM variables and license header. E.g.: "&amp;lt;listing&amp;gt;# The MIT License (MIT)...&amp;lt;/listing&amp;gt;".</body>
        <file>eo-maven-plugin/src/main/java/org/eolang/maven/latex/LatexTemplate.java</file>
        <author>@rultor</author>
        <email>me@rultor.com</email>
        <time>2023-05-25T08:59:58Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2080" closed="2023-05-23T03:46:12+00:00">2080</issue>
    <ticket>2072</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>2072-740fdee7</id>
    <lines>40-47</lines>
    <body>Fix the bug with class intersection in the 'classes' and 'test-classes' folders. Both folders should contain different unique classes. In other words, we should avoid duplicating class compilation for tests. The problem with duplicated sources in tests was fixed: &lt;a href="https://github.com/objectionary/eo/pull/2076"&gt;here&lt;a/&gt; But we still have problems with duplicated classes downloaded from dependencies. Apparently, we might check ResolveMojo to find the problem cause. Once the bug is fixed, uncomment the following statement.</body>
    <file>eo-maven-plugin/src/it/duplicate_classes/verify.groovy</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-05-22T02:27:05Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2094" closed="2024-01-10T04:51:57+00:00">2094</issue>
    <ticket>2085</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>2085-f2fb287e</id>
    <lines>21-27</lines>
    <body>Add GitHub action step to create an issue. It would be convenient to add github action step that will create an issue in case of any of the tests is failed. We can do it through &lt;a href="https://github.com/JasonEtco/create-an-issue"&gt;create-an-issue&lt;/a&gt; action. Also, you can read about that problem in that discussion: &lt;a href="https://github.com/orgs/community/discussions/25111"&gt; Create an issue case the workflow fails&lt;/a&gt;</body>
    <file>.github/workflows/daily.yml</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2023-05-26T11:28:27Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2096" closed="2023-08-14T14:10:14+00:00">2096</issue>
    <ticket>1890</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1890-dcbd8a31</id>
    <lines>26-30</lines>
    <body>Change the behaviour of conversions for names with underscore. Currently, the conversion is done by replacing underscore with doubled underscore. We need to find more elegant solution. For example, we can use camel case for names with underscore. For example, we can convert `foo_bar` to `fooBar`. Or something else.</body>
    <file>eo-maven-plugin/src/main/resources/org/eolang/maven/pre/to-java.xsl</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-05-26T13:57:56Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2101" closed="2023-05-30T07:39:27+00:00">2101</issue>
    <ticket>2099</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2099-8fd7aa33</id>
    <lines>51-58</lines>
    <body>The test here is disabled, because it doesn't work together with LogFormatTest, for some pretty weird reason. We need to investigate why and fix it. The test itself is correct. Moreover, it doesn't need the SAME_THREAD annotation, because StdIo and WritesStdIo already provide thread safety, according to their documentation. However, removing this annotation from this test and LogFormatTest leads to an error even if just one of them is executed. This is also weird and needs investigation.</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/SafeMojoTest.java</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2023-05-28T07:58:22Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2141" closed="2023-06-19T14:57:39+00:00">2141</issue>
    <ticket>2131</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>2131-141dc860</id>
    <lines>36-40</lines>
    <body>Remove redundant objects and levels. It's better to remove redundant objects from the result code snippet. They create some problems in the future transformations. When the transformation is fixed we can enable the test. The test should convert the code from the snippet to the next:</body>
    <file>eo-parser/src/test/resources/org/eolang/parser/packs/optimize/redundant-levels.yaml</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2023-06-09T02:32:51Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2142" closed="2024-04-03T12:55:33+00:00">2142</issue>
    <ticket>793</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>793-8a8388e4</id>
    <lines>437-445</lines>
    <body>To enable next 4 as-bytes tests. All of the next 4 tests checks as-string, as-float, as-int and as-bool for transparency. All of these tests must be transparent and not create new object. For now it they are not and these tests are disabled. Looks like we need to store bytes in some place(like string pool in Java) and every time before creating a new object check if it already exists in the pool. If it does, return it from the pool, otherwise create a new one and put it into the pool. This way we will have only one instance of bytes for each value.</body>
    <file>eo-runtime/src/test/eo/org/eolang/bytes-tests.eo</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2023-06-09T03:08:57Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2146" closed="2023-06-19T15:22:44+00:00">2146</issue>
    <ticket>2144</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2144-9604f975</id>
    <lines>280-284</lines>
    <body>Enable RuleAllTestsHaveProductionClass rule. It is disabled in the whole eo-runtime module because it requires lots of fixes simultaneously. We have to enable that rule and apply all required changes in order to make all jtcop checks to pass.</body>
    <file>eo-runtime/pom.xml</file>
    <author>@volodya-lombrozo</author>
    <email>volodya.lombrozo@gmail.com</email>
    <time>2023-06-11T09:12:10Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/2171" closed="2023-07-21T13:01:42+00:00">2171</issue>
        <ticket>2146</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>2146-8bcd793d</id>
        <lines>43-47</lines>
        <body>Remove RuleAllTestsHaveProductionClass suppressing. This rule was suppressed because the test class is generated and jtcop can't find it in the classpath. So, when that feature will be implemented in the jtcop, we have to remove all the similar suppression's from that test package. jtcop issue: https://github.com/volodya-lombrozo/jtcop/issues/178</body>
        <file>eo-runtime/src/test/java/EOorg/EOeolang/EOboolEOnotTest.java</file>
        <author>@rultor</author>
        <email>me@rultor.com</email>
        <time>2023-06-19T15:11:00Z</time>
        <children>
          <puzzle alive="false">
            <issue href="https://github.com/objectionary/eo/issues/2297" closed="2024-04-23T02:57:57+00:00">2297</issue>
            <ticket>2171</ticket>
            <estimate>30</estimate>
            <role>DEV</role>
            <id>2171-74d15acf</id>
            <lines>348-352</lines>
            <body>Enable RuleAssertionMessage. This rule is disabled because lots of tests in the project are written without assertion messages. We have to add all messages for all assertions and then enable that rule and remove that puzzle.</body>
            <file>pom.xml</file>
            <author>rultor</author>
            <email>me@rultor.com</email>
            <time>2023-07-21T12:52:09Z</time>
            <children>
              <puzzle alive="false">
                <issue href="https://github.com/objectionary/eo/issues/3130" closed="2024-12-17T13:19:03+00:00">3130</issue>
                <ticket>2297</ticket>
                <estimate>60</estimate>
                <role>DEV</role>
                <id>2297-97b6e95d</id>
                <lines>54-57</lines>
                <body>Replace all appearances of {@link BinarizeParseTest#TO_ADD_MESSAGE} field in eo-maven-plugin with meaningful assert messages. Don't forget to remove {@link BinarizeParseTest#TO_ADD_MESSAGE} field and remove public modifier from this class if no longer need.</body>
                <file>eo-maven-plugin/src/test/java/org/eolang/maven/BinarizeParseTest.java</file>
                <author>rultor</author>
                <email>me@rultor.com</email>
                <time>2024-04-23T02:41:49Z</time>
                <children/>
              </puzzle>
              <puzzle alive="false">
                <issue href="https://github.com/objectionary/eo/issues/3131" closed="2025-07-22T07:12:34+00:00">3131</issue>
                <ticket>2297</ticket>
                <estimate>60</estimate>
                <role>DEV</role>
                <id>2297-059cad72</id>
                <lines>42-45</lines>
                <body>Replace all appearances of {@link EoIndentLexerTest#TO_ADD_MESSAGE} field in eo-parser with meaningful assert messages. Don't forget to remove {@link EoIndentLexerTest#TO_ADD_MESSAGE} field and remove public modifier from this class if no longer need.</body>
                <file>eo-parser/src/test/java/org/eolang/parser/EoIndentLexerTest.java</file>
                <author>rultor</author>
                <email>me@rultor.com</email>
                <time>2024-04-23T02:41:49Z</time>
                <children/>
              </puzzle>
              <puzzle alive="false">
                <issue href="https://github.com/objectionary/eo/issues/3132" closed="2025-06-05T11:28:13+00:00">3132</issue>
                <ticket>2297</ticket>
                <estimate>60</estimate>
                <role>DEV</role>
                <id>2297-a38e7947</id>
                <lines>42-45</lines>
                <body>Replace all appearances of {@link AtCompositeTest#TO_ADD_MESSAGE} field in eo-runtime with meaningful assert messages. Don't forget to remove {@link AtCompositeTest#TO_ADD_MESSAGE} field and remove public modifier from this class if no longer need.</body>
                <file>eo-runtime/src/test/java/org/eolang/AtCompositeTest.java</file>
                <author>rultor</author>
                <email>me@rultor.com</email>
                <time>2024-04-23T02:41:49Z</time>
                <children/>
              </puzzle>
              <puzzle alive="false">
                <issue href="https://github.com/objectionary/eo/issues/3689" closed="2025-02-24T14:00:07+00:00">3689</issue>
                <ticket>2297</ticket>
                <estimate>60</estimate>
                <role>DEV</role>
                <id>2297-a2270b48</id>
                <lines>54-57</lines>
                <body>Replace all appearances of {@link CatalogsTest#TO_ADD_MESSAGE} field in eo-maven-plugin with meaningful assert messages. Don't forget to remove {@link CatalogsTest#TO_ADD_MESSAGE} field and remove public modifier from this class if no longer need.</body>
                <file>eo-maven-plugin/src/test/java/org/eolang/maven/CatalogsTest.java</file>
                <author>Yegor Bugayenko</author>
                <email>yegor256@gmail.com</email>
                <time>2024-12-17T13:18:54Z</time>
                <children/>
              </puzzle>
              <puzzle alive="false">
                <issue href="https://github.com/objectionary/eo/issues/4240" closed="2025-07-22T07:11:45+00:00">4240</issue>
                <ticket>2297</ticket>
                <estimate>60</estimate>
                <role>DEV</role>
                <id>2297-88eecc2f</id>
                <lines>24-27</lines>
                <body>Replace all appearances of {@link PhCompositeTest#TO_ADD_MESSAGE} field in eo-runtime with meaningful assert messages. Don't forget to remove {@link PhCompositeTest#TO_ADD_MESSAGE} field and remove public modifier from this class if no longer need.</body>
                <file>eo-runtime/src/test/java/org/eolang/PhCompositeTest.java</file>
                <author>Yegor Bugayenko</author>
                <email>yegor256@gmail.com</email>
                <time>2025-06-05T11:27:47Z</time>
                <children/>
              </puzzle>
            </children>
          </puzzle>
        </children>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2147" closed="2023-06-15T13:37:23+00:00">2147</issue>
    <ticket>2144</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2144-fc5d910c</id>
    <lines>250-254</lines>
    <body>Enable RuleAllTestsHaveProductionClass rule. It is disabled in the whole eo-parser module because it requires lots of fixes simultaneously. We have to enable that rule and apply all required changes in order to make all jtcop checks to pass.</body>
    <file>eo-parser/pom.xml</file>
    <author>@volodya-lombrozo</author>
    <email>volodya.lombrozo@gmail.com</email>
    <time>2023-06-11T09:12:10Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2148" closed="2023-06-27T15:33:29+00:00">2148</issue>
    <ticket>2144</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2144-030a3222</id>
    <lines>451-455</lines>
    <body>Enable RuleAllTestsHaveProductionClass rule. It is disabled in the whole eo-maven-plugin module because it requires lots of fixes simultaneously. We have to enable that rule and apply all required changes in order to make all jtcop checks to pass.</body>
    <file>eo-maven-plugin/pom.xml</file>
    <author>volodya-lombrozo</author>
    <email>volodya.lombrozo@gmail.com</email>
    <time>2023-06-11T09:12:10Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2161" closed="2023-06-28T11:20:44+00:00">2161</issue>
    <ticket>2109</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2109-949bde31</id>
    <lines>68-72</lines>
    <body>Enable sparse-decoration.xsl transformation. Currently sparse-decoration.xsl transformations is disabled because it breaks some integration tests for unknown reason. Need to put the transformation right before warnings/unsorted-metas.xsl transformation and make sure build works.</body>
    <file>eo-parser/src/main/java/org/eolang/parser/ParsingTrain.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-06-16T15:44:23Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2206" closed="2023-07-27T07:21:20+00:00">2206</issue>
    <ticket>2169</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2169-f011871d</id>
    <lines>255-259</lines>
    <body>Find the original cause of the problem with access denied. The problem is that sometimes we can't remove the file due to access denied. We need to find the original cause of the problem and fix it. Then, just remove AccessDeniedException from the catch block. For now, we just ignore the problem and log the warning.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/TranspileMojo.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-07-04T07:53:55Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2208" closed="2023-07-10T16:32:40+00:00">2208</issue>
    <ticket>2195</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>2195-24c0d5f1</id>
    <lines>49-51</lines>
    <body>Make cargo compilation in parallel. Now cargo projects are being built consistently which is too long. It is much better to build them in parallel to reduce time.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/BinarizeMojo.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-07-04T18:16:44Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2211" closed="2024-03-27T16:11:25+00:00">2211</issue>
    <ticket>761</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>761-525f7f4a</id>
    <lines>32-38</lines>
    <body>Let's make sure memory can only accept one "type" of data primitives. If we try to write a float into a memory that was initialized with an int, we should get an error. The same goes for strings and booleans. We should also make sure that we can't write a string that is longer than the memory size. We should also make sure that we can't write a number that is bigger than the memory size. And etc. We can also implement memory in EO instead of Java and let it use ram object. Let's not forget to update the "Origins of Objects" paper.</body>
    <file>eo-runtime/src/test/eo/org/eolang/memory-tests.eo</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2023-07-05T07:38:06Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/2434" closed="2024-03-27T16:11:27+00:00">2434</issue>
        <ticket>2211</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>2211-1a3ef3cb</id>
        <lines>30-31</lines>
        <body>We can implement memory in EO instead of Java and let it use ram object. Let's not forget to update the "Origins of Objects" paper.</body>
        <file>eo-runtime/src/main/eo/org/eolang/memory.eo</file>
        <author>@rultor</author>
        <email>me@rultor.com</email>
        <time>2023-08-24T09:39:40Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/2435" closed="2023-08-29T16:10:35+00:00">2435</issue>
        <ticket>2211</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>2211-c8def9e6</id>
        <lines>44-51</lines>
        <body>Enable tests that uses memory object. After memory started behave like bytes some tests had been stopped worked. Need to refactor and enable disabled tests that uses memory object: malloc-return-error, complex-bool-expression-in-while, EOboolEOwhileTest.dataizesComplexBooleanToggle, EOboolEOwhileTest.loopsOverAbstractObjects, malloc-returns-different-pointers, mallocs-do-not-overlap, tuple-as-a-bound-attribute-size-2, iterates-over-simple-counter</body>
        <file>eo-runtime/src/test/java/EOorg/EOeolang/EOmemoryTest.java</file>
        <author>rultor</author>
        <email>me@rultor.com</email>
        <time>2023-08-24T09:39:40Z</time>
        <children>
          <puzzle alive="false">
            <issue href="https://github.com/objectionary/eo/issues/2452" closed="2023-10-01T19:38:16+00:00">2452</issue>
            <ticket>2435</ticket>
            <estimate>30</estimate>
            <role>DEV</role>
            <id>2435-00e0d128</id>
            <lines>68-70</lines>
            <body>Enable test with array-each. assert-that.array-each object uses memory. So after changing memory behaviour array-each started to work incorrectly. Need to fix the object and then enable the test</body>
            <file>eo-runtime/src/test/eo/org/eolang/tuple-tests.eo</file>
            <author>@maxonfjvipon</author>
            <email>mtrunnikov@gmail.com</email>
            <time>2023-08-29T14:11:54Z</time>
            <children/>
          </puzzle>
        </children>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2220" closed="2023-07-13T20:34:21+00:00">2220</issue>
    <ticket>2213</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>2213-8bc58d1c</id>
    <lines>53-55</lines>
    <body>Create an instance of ForeignTojos in memory. It would be better to be able to create an instance of ForeignTojos in memory for test purposes.</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/tojos/ForeignTojosTest.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-07-07T07:41:06Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2223" closed="2023-09-08T04:23:06+00:00">2223</issue>
    <ticket>2197</ticket>
    <estimate>45</estimate>
    <role>DEV</role>
    <id>2197-52b4993f</id>
    <lines>44-47</lines>
    <body>Update cached rust insert if it was changed. Now it copies cargo project to cache directory in the end of every compilation. It is better to copy the project only if it was changed with the last compilation.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/BinarizeMojo.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-07-10T09:08:37Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2226" closed="2023-09-08T15:36:47+00:00">2226</issue>
    <ticket>1602</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1602-b2f8e2db</id>
    <lines>211-215</lines>
    <body>Use external tojos to implement object versioning. Implementation of object versioning will bring a lot significant changes. That's why it's better to use independent separated tojos for that purpose. At the end when object versioning works - just replace them and remove unnecessary one.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/SafeMojo.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-07-10T15:05:19Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2227" closed="2023-07-12T08:41:27+00:00">2227</issue>
    <ticket>1602</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1602-f0cf7615</id>
    <lines>473-478</lines>
    <body>Move the method to ForeignTojos if possible. Let's treat ForeignTojos as an object (not as a collection of data) and give it a chance to fulfill itself. It knows better how to do so. ForeignTojo in current implementation does not have method set() so we either need to implement it or just stay with the method here in FakeMaven class.</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/FakeMaven.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-07-10T15:05:19Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2231" closed="2023-07-26T03:55:40+00:00">2231</issue>
    <ticket>2230</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2230-f92ad967</id>
    <lines>1-4</lines>
    <body>The test is skipped because it doesn't work. The syntax below is not supported, but it passes the test and no typos are detected. We should fix it. Most probably EOL-s are not detected at the end of objects correctly.</body>
    <file>eo-parser/src/test/resources/org/eolang/parser/typos/broken-head.yaml</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2023-07-11T06:20:42Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2243" closed="2023-07-12T17:55:31+00:00">2243</issue>
    <ticket>2240</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2240-ef806d51</id>
    <lines>78-81</lines>
    <body>Test fails on github actions CI. On ubuntu 22.04 JARs of covert tool are downloaded from &lt;a href="http://public.yegor256.com/convert.zip"/&gt;. Test seems to work locally but it fails on github actions.</body>
    <file>eo-parser/src/test/java/org/eolang/parser/XMIRTest.java</file>
    <author>maxonfjvipon</author>
    <email>mtrunnikov@gmail.com</email>
    <time>2023-07-12T10:33:18Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2257" closed="2023-11-16T20:57:24+00:00">2257</issue>
    <ticket>2238</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2238-ba23d431</id>
    <lines>61-63</lines>
    <body>Specify directory for names via pom.xml.Now names map is serialized in targetDir.toPath().getParent() which is a bad decision since it must be created just as target/names.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/BinarizeParseMojo.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-07-14T07:15:34Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2258" closed="2023-09-08T15:36:52+00:00">2258</issue>
    <ticket>1602</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1602-46b0e5d9</id>
    <lines>204-208</lines>
    <body>Remove the flag when objection versioned is implemented. The variable is used for implementation of object versioning. It allows to use external tojos instead of foreign in Mojos. for the test purposes. When object versioning is implemented there will be no need for that variable</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/SafeMojo.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-07-14T12:57:42Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2259" closed="2023-07-21T14:41:56+00:00">2259</issue>
    <ticket>1602</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1602-59e4ff34</id>
    <lines>128-134</lines>
    <body>Simplify xpath. Current implementation for building xpath with and without versions is quite ugly. For some reason if we try to take `/concat(@base,'|',@ver)` and there are object without attribute `ver` - xpath returns nothing. So we need to take `/@base` from objects where attribute `ver` is not present in both cases and then if flag `withVersions` is `true` - take `concat(@base,'|',@ver)` from objects attribute `ver` is present.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/DiscoverMojo.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-07-14T12:57:42Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/2266" closed="2023-07-19T20:03:34+00:00">2266</issue>
        <ticket>2259</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>2259-d6c8796f</id>
        <lines>49-54</lines>
        <body>Enable discoversWithSeveralObjectsWithDifferentVersions test. The discoversWithSeveralObjectsWithDifferentVersions test is disabled because we have found a bug in jcabi-xml library. You can read more about the bug &lt;a href="https://github.com/jcabi/jcabi-xml/issues/211"&gt;here&lt;/a&gt; When the bug will be fixed, we have to enable discoversWithSeveralObjectsWithDifferentVersions test.</body>
        <file>eo-maven-plugin/src/test/java/org/eolang/maven/DiscoverMojoTest.java</file>
        <author>rultor</author>
        <email>me@rultor.com</email>
        <time>2023-07-18T11:19:24Z</time>
        <children>
          <puzzle alive="false">
            <issue href="https://github.com/objectionary/eo/issues/2278" closed="2023-07-21T12:34:37+00:00">2278</issue>
            <ticket>2266</ticket>
            <estimate>30</estimate>
            <role>DEV</role>
            <id>2266-814f3bb5</id>
            <lines>99-104</lines>
            <body>Use more convenient constructor for SaxonDocument. The current constructor for SaxonDocument is not convenient and requires a lot of code. It would be better to create SaxonDocument right from the file. When the related issue will be implemented in jcabi-xml (you can check the progress &lt;a href="https://github.com/jcabi/jcabi-xml/issues/215"&gt;here&lt;/a&gt;) We have to change the constructor for SaxonDocument in this class and remove that puzzle.</body>
            <file>eo-maven-plugin/src/main/java/org/eolang/maven/DiscoverMojo.java</file>
            <author>rultor</author>
            <email>me@rultor.com</email>
            <time>2023-07-19T19:54:19Z</time>
            <children/>
          </puzzle>
        </children>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2269" closed="2023-07-20T09:04:44+00:00">2269</issue>
    <ticket>1602</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1602-a75def4c</id>
    <lines>62-68</lines>
    <body>Handle tags that are not in available versions list. VersionsMojo goes right after OptimizeMojo and replaces all tags with comparable hashes. EO code may contains tags that are not in available versions list (see: &lt;a href="https://home.objectionary.com/tags.txt"/&gt;). We need to catch somehow such versions and throw an exception. Or we can place the VersionsMojo right after ParseMojo and create new xsl which is used on optimization step and caches such invalid tags.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/VersionsMojo.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-07-19T10:04:58Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2270" closed="2023-07-28T11:57:03+00:00">2270</issue>
    <ticket>1602</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1602-d66ec8b5</id>
    <lines>38-42</lines>
    <body>Come up with a good name for the class. There are many things we want to say with the name of the class: 1) it's commit hashes 2) it's a text 3) it's loaded from the objectionary. The result name will be ObjectionaryCommitHashesText and it may look a bit verbose. Maybe it really does not but we should decide anyway.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/hash/CommitHashesText.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-07-19T10:04:58Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2271" closed="2023-07-28T11:57:06+00:00">2271</issue>
    <ticket>1602</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1602-ebb101bb</id>
    <lines>63-65</lines>
    <body>What is the reason for this exception swallowing and returning an empty string? Why can't we just escalate/rethrow it? Now it looks pretty weird/wrong.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/hash/CommitHashesText.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-07-19T10:04:58Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2272" closed="2023-08-16T23:25:03+00:00">2272</issue>
    <ticket>1602</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1602-b90ceb45</id>
    <lines>60-66</lines>
    <body>min Move the code to prestructor. Some developers think that we should keep our constructors as small as possible and move complex logic (like in this constructor) to special static method which is called "prestructor". (See &lt;a href="https://github.com/objectionary/eo/issues/1729"&gt;here&lt;/a&gt;) We should make a decision what logic we should always move to the prestructor and should we at all?</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/hash/CommitHashesMap.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-07-19T10:04:58Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2280" closed="2023-08-16T23:53:58+00:00">2280</issue>
    <ticket>2237</ticket>
    <estimate>45</estimate>
    <role>DEV</role>
    <id>2237-666058eb</id>
    <lines>144-147</lines>
    <body>Implement finding by location. Name argument is something like "^.^.some-obj". This string must be splitted by '.' and then for every part it is necessary to call this.attr().get()</body>
    <file>eo-runtime/src/main/java/EOorg/EOeolang/EOrust.java</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2023-07-20T08:55:17Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2281" closed="2023-08-10T14:39:33+00:00">2281</issue>
    <ticket>1602</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1602-cc321ad5</id>
    <lines>61-67</lines>
    <body>Don't rewrite parsed xmir. VersionsMojo is executed right after ParseMojo and rewrites {@code .xmir} files in "1-parse" directory. Maybe this is not quite right, because files after parsing should be untouched. We either should 1) create a new folder where files after executing VersionsMojo are stored 2) or find another way to catch wrong versions without touching files in "1-parse" directory 3) or just accept rewriting files in "1-parse" and don't do anything if is not really critical</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/VersionsMojo.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-07-20T08:55:17Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/2375" closed="2023-08-14T14:40:02+00:00">2375</issue>
        <ticket>2281</ticket>
        <estimate>90</estimate>
        <role>DEV</role>
        <id>2281-bc29f0be</id>
        <lines>255-259</lines>
        <body>Remove AccessDeniedException catch block from cleanUpClasses method. This catch block was added to prevent the build from failing when the file can't be deleted due to access denied. This is a temporary solution and should be removed when the root cause of the problem is found. See &lt;a href="https://github.com/objectionary/eo/issues/2370"&gt;issue.&lt;/a&gt;</body>
        <file>eo-maven-plugin/src/main/java/org/eolang/maven/TranspileMojo.java</file>
        <author>volodya-lombrozo</author>
        <email>volodya.lombrozo@gmail.com</email>
        <time>2023-08-10T13:34:22Z</time>
        <children>
          <puzzle alive="false">
            <issue href="https://github.com/objectionary/eo/issues/2390" closed="2024-10-29T05:51:51+00:00">2390</issue>
            <ticket>2375</ticket>
            <estimate>90</estimate>
            <role>DEV</role>
            <id>2375-409ab48f</id>
            <lines>262-267</lines>
            <body>Add concurrency tests for the TranspileMojo.cleanUpClasses method. We should be sure that the method works correctly in a concurrent environment. In order to do so we should add a test that will run the cleanUpClasses method in multiple threads and check that the method works correctly without exceptions. We can apply the same approach as mentioned in that post: &lt;a href="https://www.yegor256.com/2018/03/27/how-to-test-thread-safety.html"&gt;Post&lt;/a&gt;</body>
            <file>eo-maven-plugin/src/main/java/org/eolang/maven/TranspileMojo.java</file>
            <author>rultor</author>
            <email>me@rultor.com</email>
            <time>2023-08-14T14:29:04Z</time>
            <children/>
          </puzzle>
        </children>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/2376" closed="2023-08-11T09:03:27+00:00">2376</issue>
        <ticket>2281</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>2281-493fd13a</id>
        <lines>39-44</lines>
        <body>Implement OnVersioned class. This class should parse raw string into object name and hash from object name with semver version. In other words this class should replace the behavior of {@link org.eolang.maven.VersionsMojo} class. When this class is implemented, remove the {@link org.eolang.maven.VersionsMojo class}. Don't forget to add tests for this class.</body>
        <file>eo-maven-plugin/src/main/java/org/eolang/maven/name/OnVersioned.java</file>
        <author>volodya-lombrozo</author>
        <email>volodya.lombrozo@gmail.com</email>
        <time>2023-08-10T13:34:22Z</time>
        <children>
          <puzzle alive="false">
            <issue href="https://github.com/objectionary/eo/issues/2381" closed="2023-08-14T14:10:17+00:00">2381</issue>
            <ticket>2376</ticket>
            <estimate>90</estimate>
            <role>DEV</role>
            <id>2376-3d36c5d7</id>
            <lines>41-50</lines>
            <body>Remove VersionsMojo. It is not used anymore. Remove it and all its dependencies from all the places. We need to apply {@link OnVersioned} in {@link org.eolang.maven.DiscoverMojo} and replace all the tests from VersionsMojoTest to DiscoverMojoTest. Also we need to enable the next tests: - {@link org.eolang.maven.ProbeMojoTest#findsProbesWithVersionsInDifferentObjectionaries()} - {@link org.eolang.maven.PullMojoTest#pullsProbedVersionedObjectsFromDifferentObjectionaries()} - {@link org.eolang.maven.DiscoverMojoTest#discoversWithSeveralObjectsWithDifferentVersions()} - {@link org.eolang.maven.DiscoverMojoTest#discoversWithVersions()} Don't forget to remove that puzzle after all.</body>
            <file>eo-maven-plugin/src/main/java/org/eolang/maven/name/OnVersioned.java</file>
            <author>rultor</author>
            <email>me@rultor.com</email>
            <time>2023-08-11T08:52:48Z</time>
            <children>
              <puzzle alive="false">
                <issue href="https://github.com/objectionary/eo/issues/2389" closed="2023-08-15T12:03:11+00:00">2389</issue>
                <ticket>2381</ticket>
                <estimate>30</estimate>
                <role>DEV</role>
                <id>2381-b6d409bc</id>
                <lines>33-38</lines>
                <body>Rename OnDefault and OnVersioned objects. Both seems misleading: OnVersioned replaces tag in given object with hash, OnDefault checks if given object contains version and if not - put the default one. It seems the names of the objects don't match with their behaviour. Suggestion: OnVersioned -&gt; OnReplaced, OnDefault -&gt; OnVersioned</body>
                <file>eo-maven-plugin/src/main/java/org/eolang/maven/name/OnDefault.java</file>
                <author>maxonfjvipon</author>
                <email>mtrunnikov@gmail.com</email>
                <time>2023-08-14T12:06:26Z</time>
                <children/>
              </puzzle>
            </children>
          </puzzle>
          <puzzle alive="false">
            <issue href="https://github.com/objectionary/eo/issues/2382" closed="2023-08-15T12:03:16+00:00">2382</issue>
            <ticket>2376</ticket>
            <estimate>90</estimate>
            <role>DEV</role>
            <id>2376-007b3f61</id>
            <lines>51-59</lines>
            <body>Frontend and backend delimiters differ. I was confused with the delimiter '#' that we use in {@link OnVersioned} and delimiter which we use in the frontend. For example: - "org.eolang.text|0.1.0" - frontend - "org.eolang.text#0.1.0" - backend The problem here is that we use the '|' delimiter on the frontend and '#' in the backend, but both of them mean the same thing - object name + version. I believe that we need to use the same symbol in both places, because it will be easier to understand the code. So, my suggestion to use '|' in both places.</body>
            <file>eo-maven-plugin/src/main/java/org/eolang/maven/name/OnVersioned.java</file>
            <author>rultor</author>
            <email>me@rultor.com</email>
            <time>2023-08-11T08:52:48Z</time>
            <children/>
          </puzzle>
          <puzzle alive="false">
            <issue href="https://github.com/objectionary/eo/issues/2394" closed="2023-10-17T09:14:14+00:00">2394</issue>
            <ticket>2376</ticket>
            <estimate>90</estimate>
            <role>DEV</role>
            <id>2376-11b46788</id>
            <lines>41-49</lines>
            <body>Frontend and backend delimiters differ. I was confused with the delimiter '#' that we use in {@link OnReplaced} and delimiter which we use in the frontend. For example: - "org.eolang.text|0.1.0" - frontend - "org.eolang.text#0.1.0" - backend The problem here is that we use the '|' delimiter on the frontend and '#' in the backend, but both of them mean the same thing - object name + version. I believe that we need to use the same symbol in both places, because it will be easier to understand the code. So, my suggestion to use '|' in both places.</body>
            <file>eo-maven-plugin/src/main/java/org/eolang/maven/name/OnReplaced.java</file>
            <author>rultor</author>
            <email>me@rultor.com</email>
            <time>2023-08-15T11:52:35Z</time>
            <children>
              <puzzle alive="false">
                <issue href="https://github.com/objectionary/eo/issues/2420" closed="2023-09-01T12:25:51+00:00">2420</issue>
                <ticket>2394</ticket>
                <estimate>30</estimate>
                <role>DEV</role>
                <id>2394-7c1cfda2</id>
                <lines>58-65</lines>
                <body>Hide static constant DELIMITER. We should hide static constant DELIMITER because it creates code duplication in many places. For example in {@link OnReplaced#split()} and {@link OnVersioned#split()} and {@link org.eolang.maven.Place#make(java.nio.file.Path, String)}. Apparently we have to create a class which will parse raw string into two parts value and optional version. Maybe this new class won't implement ObjectName interface. Why static fields are bad you can read here: - https://www.yegor256.com/2015/07/06/public-static-literals.html</body>
                <file>eo-maven-plugin/src/main/java/org/eolang/maven/name/OnReplaced.java</file>
                <author>rultor</author>
                <email>me@rultor.com</email>
                <time>2023-08-18T16:04:20Z</time>
                <children/>
              </puzzle>
              <puzzle alive="false">
                <issue href="https://github.com/objectionary/eo/issues/2463" closed="2023-10-17T09:14:20+00:00">2463</issue>
                <ticket>2394</ticket>
                <estimate>30</estimate>
                <role>DEV</role>
                <id>2394-92a7c10b</id>
                <lines>58-66</lines>
                <body>Hide static constant DELIMITER. We should hide static constant DELIMITER because it creates code duplication in many places. For example in {@link OnReplaced#split()}, {@link OnVersioned#split()}, {@link OnDefault#split()} and {@link org.eolang.maven.Place#make(java.nio.file.Path, String)}. Apparently we have to create a class which will parse raw string into two parts value and optional version. Maybe this new class won't implement ObjectName interface. Why static fields are bad you can read here: - https://www.yegor256.com/2015/07/06/public-static-literals.html</body>
                <file>eo-maven-plugin/src/main/java/org/eolang/maven/name/OnReplaced.java</file>
                <author>rultor</author>
                <email>me@rultor.com</email>
                <time>2023-09-01T12:14:03Z</time>
                <children>
                  <puzzle alive="false">
                    <issue href="https://github.com/objectionary/eo/issues/2544" closed="2023-11-20T09:13:27+00:00">2544</issue>
                    <ticket>2463</ticket>
                    <estimate>30</estimate>
                    <role>DEV</role>
                    <id>2463-ace772d1</id>
                    <lines>49-54</lines>
                    <body>Remove static constant DELIMITER. The static constant DELIMITER was hidden in the {@link DelimitedName} class and {@link OnReplaced} was switched to the new delimiting approach. Switch from DELIMITER to {@link DelimitedName} all the other classes, such as {@link OnVersioned}, {@link OnDefault} and {@link org.eolang.maven.Place#make(java.nio.file.Path, String)}.</body>
                    <file>eo-maven-plugin/src/main/java/org/eolang/maven/name/OnReplaced.java</file>
                    <author>rultor</author>
                    <email>me@rultor.com</email>
                    <time>2023-10-17T08:57:22Z</time>
                    <children/>
                  </puzzle>
                </children>
              </puzzle>
            </children>
          </puzzle>
        </children>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2282" closed="2023-09-20T13:07:53+00:00">2282</issue>
    <ticket>1602</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1602-f8cc6ecc</id>
    <lines>67-71</lines>
    <body>Map with full hashes. Having done map with narrow hashes we got the situation where we can't get full hashes back in a simple way. We will actually need full hashes in ProbeMojo and PullMojo. So in order to avoid problems it would be better not to cut hashes here but when necessary.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/hash/CommitHashesMap.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-07-20T08:55:17Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2292" closed="2023-08-18T16:00:12+00:00">2292</issue>
    <ticket>2237</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>2237-4d097292</id>
    <lines>78-80</lines>
    <body>Implement "dataize" method. It must call java dataizing method and get byte array from it. Then it have to return byte array as a result of dataization.</body>
    <file>eo-runtime/src/main/rust/eo_env/src/eo_env.rs</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2023-07-21T12:38:14Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2293" closed="2023-08-23T10:08:15+00:00">2293</issue>
    <ticket>2237</ticket>
    <estimate>45</estimate>
    <role>DEV</role>
    <id>2237-e2051aed</id>
    <lines>158-160</lines>
    <body>Implement the "put" method. Now it does nothing and created to check rust2java interaction. This method relates to building a new eo object in rust insert.</body>
    <file>eo-runtime/src/main/java/EOorg/EOeolang/EOrust.java</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2023-07-21T12:38:14Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2294" closed="2023-09-20T16:13:56+00:00">2294</issue>
    <ticket>2237</ticket>
    <estimate>45</estimate>
    <role>DEV</role>
    <id>2237-37351366</id>
    <lines>171-173</lines>
    <body>Implement the "bind" method. It has tp put data to eo object by vertex. It does nothing now but it is called from rust via jni call_method function.</body>
    <file>eo-runtime/src/main/java/EOorg/EOeolang/EOrust.java</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2023-07-21T12:38:14Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2295" closed="2023-09-04T20:58:01+00:00">2295</issue>
    <ticket>2237</ticket>
    <estimate>45</estimate>
    <role>DEV</role>
    <id>2237-a32cd01f</id>
    <lines>183-185</lines>
    <body>Implement the "copy" method. Now it does nothing and created to check rust2java interaction. This method relates to building a new eo object in rust insert.</body>
    <file>eo-runtime/src/main/java/EOorg/EOeolang/EOrust.java</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2023-07-21T12:38:14Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2299" closed="2023-07-31T05:16:34+00:00">2299</issue>
    <ticket>1602</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1602-d9e86093</id>
    <lines>100-105</lines>
    <body>Use objectionaries to pull objects with different versions. Objects with different versions are stored in different storages (objectionaries). Every objectionary has its own hash. To pull versioned object from objectionary firstly we need to get right objectionary by object's version and then get object from that objectionary by name.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/PullMojo.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-07-22T05:39:11Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/2352" closed="2023-08-14T14:25:15+00:00">2352</issue>
        <ticket>2299</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>2299-f07057b7</id>
        <lines>33-35</lines>
        <body>Do we really need the class? It seems it's used only for the test purposes but with last updates it is no longer of value. Also it assumes that any of its arguments may be null which is a doubtful design</body>
        <file>eo-maven-plugin/src/main/java/org/eolang/maven/hash/ChCompound.java</file>
        <author>rultor</author>
        <email>me@rultor.com</email>
        <time>2023-08-04T09:36:10Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2300" closed="2024-12-19T11:10:02+00:00">2300</issue>
    <ticket>1602</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1602-da3646cb</id>
    <lines>61-64</lines>
    <body>Resolve code duplication. Probe and Pull mojos have several identical fields, methods and lines of code. Need to resolve this code duplication. One more abstract class is not an option. We can either join them into one mojo, or composite them inside other mojo.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/ProbeMojo.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-07-22T05:39:11Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2301" closed="2023-07-24T12:06:53+00:00">2301</issue>
    <ticket>1602</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1602-046e3035</id>
    <lines>65-69</lines>
    <body>Add version to "probe" meta in xmir. To probe objects {@link ProbeMojo} gets object names from "probe" meta in xmir. Objects appear there after "add-probes.xsl" transformation. So to probe objects with versions in {@link ProbeMojo} we need to add information about these versions in xmir before the mojo.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/ProbeMojo.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-07-22T05:39:11Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2302" closed="2023-07-28T11:38:04+00:00">2302</issue>
    <ticket>1602</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1602-73bdd8c0</id>
    <lines>113-118</lines>
    <body>Use objectionaries to probe objects with different versions. Objects with different versions are stored in different storages (objectionaries). Every objectionary has its own hash. To get versioned object from objectionary firstly we need to get right objectionary by object's version and then get object from that objectionary by name.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/ProbeMojo.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-07-22T05:39:11Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/2327" closed="2023-08-29T09:06:20+00:00">2327</issue>
        <ticket>2302</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>2302-7adb5af1</id>
        <lines>92-96</lines>
        <body>Rename the parameter "hash". This parameter is actually a tag, not a hash. By this tag application actually finds hash and then uses it. So need to rename this parameter to "tag" and rename it in all places where it's used. Also it would be better to use name "hash" for parameter "hsh" in {@link ProbeMojo} and {@link PullMojo}</body>
        <file>eo-maven-plugin/src/main/java/org/eolang/maven/AssembleMojo.java</file>
        <author>rultor</author>
        <email>me@rultor.com</email>
        <time>2023-07-28T11:27:48Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/2328" closed="2023-08-02T10:15:27+00:00">2328</issue>
        <ticket>2302</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>2302-25a30f7e</id>
        <lines>55-61</lines>
        <body>Implement probing objects with versions and enable tests. ProbeMojo uses {@link Objectionaries} but it does not search for objects in different objectionaries. Need to implement searching objects in different objectionaries and enable disabled tests below: findsProbesWithVersionsInOneObjectionary, findsProbesWithVersionsInDifferentObjectionaries, findsProbesWithDefaultHash. Don't forget to remove this puzzle after that.</body>
        <file>eo-maven-plugin/src/test/java/org/eolang/maven/ProbeMojoTest.java</file>
        <author>rultor</author>
        <email>me@rultor.com</email>
        <time>2023-07-28T11:27:48Z</time>
        <children>
          <puzzle alive="false">
            <issue href="https://github.com/objectionary/eo/issues/2339" closed="2023-08-16T23:39:35+00:00">2339</issue>
            <ticket>2328</ticket>
            <estimate>30</estimate>
            <role>DEV</role>
            <id>2328-10f2c04d</id>
            <lines>36-41</lines>
            <body>Inline code in {@code toString()} method. For some reason Codacy static analyzer fails on {@code toString()} method and says that "it's unnecessary to call toString() on String object". It does not understand that {@code this.swapped.value()} is not a String for some reason. Codacy checks only new added files, so need to inline that code when this file is already in the codebase.</body>
            <file>eo-maven-plugin/src/main/java/org/eolang/maven/name/OnSwap.java</file>
            <author>rultor</author>
            <email>me@rultor.com</email>
            <time>2023-08-02T10:05:00Z</time>
            <children/>
          </puzzle>
        </children>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/2329" closed="2023-08-03T10:41:37+00:00">2329</issue>
        <ticket>2302</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>2302-40705385</id>
        <lines>62-67</lines>
        <body>Add special method to {@link FakeMaven} for versioned program. On many compilation steps we test programs with versions and such programs looks similar or identical. We can create a separate method for it. Something like withVersionedProgram() See tests in {@link OptimizeMojoTest}, {@link VersionsMojoTest}, {@link DiscoverMojoTest}, {@link ProbeMojoTest}.</body>
        <file>eo-maven-plugin/src/test/java/org/eolang/maven/ProbeMojoTest.java</file>
        <author>rultor</author>
        <email>me@rultor.com</email>
        <time>2023-07-28T11:27:48Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/2330" closed="2023-08-16T22:56:47+00:00">2330</issue>
        <ticket>2302</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>2302-8638ac29</id>
        <lines>68-69</lines>
        <body>Refactor tests in the class. Looks like there is a lot of code duplication among all tests in the class. Need to reduce it somehow.</body>
        <file>eo-maven-plugin/src/test/java/org/eolang/maven/ProbeMojoTest.java</file>
        <author>rultor</author>
        <email>me@rultor.com</email>
        <time>2023-07-28T11:27:48Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/2331" closed="2023-08-15T11:47:58+00:00">2331</issue>
        <ticket>2302</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>2302-4b0bd16e</id>
        <lines>70-74</lines>
        <body>Refactor firstEntity method. The "first entity of the foreign tojos" looks strange. It looks like we are tying to scan an intermediate state which we are trying to read in the middle of the process. It lead to a fragile implementation. Could we check the result somehow else? Or to skip that check at all?</body>
        <file>eo-maven-plugin/src/test/java/org/eolang/maven/ProbeMojoTest.java</file>
        <author>rultor</author>
        <email>me@rultor.com</email>
        <time>2023-07-28T11:27:48Z</time>
        <children>
          <puzzle alive="false">
            <issue href="https://github.com/objectionary/eo/issues/2392" closed="2023-08-16T23:11:02+00:00">2392</issue>
            <ticket>2331</ticket>
            <estimate>90</estimate>
            <role>DEV</role>
            <id>2331-2e1725a8</id>
            <lines>131-133</lines>
            <body>Add unit test for ForeignTojos.find method. The test should check that the method returns the tojo with the specified id. When the test is ready, remove that puzzle.</body>
            <file>eo-maven-plugin/src/main/java/org/eolang/maven/tojos/ForeignTojos.java</file>
            <author>rultor</author>
            <email>me@rultor.com</email>
            <time>2023-08-15T11:36:45Z</time>
            <children/>
          </puzzle>
        </children>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2313" closed="2023-09-12T15:05:56+00:00">2313</issue>
    <ticket>2283</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>2283-0094b893</id>
    <lines>61-64</lines>
    <body>Create Universe class. Now its functionality is assigned to "EORust", which is why it is overcomplicated. "Universe" should perform a model of interaction with "eo" objects through methods "find", "put", "copy", "dataize" and "bind".</body>
    <file>eo-runtime/src/main/java/EOorg/EOeolang/EOrust.java</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2023-07-25T13:22:00Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/2384" closed="2023-08-16T23:54:01+00:00">2384</issue>
        <ticket>2313</ticket>
        <estimate>60</estimate>
        <role>DEV</role>
        <id>2313-a42edfae</id>
        <lines>110-113</lines>
        <body>Implement the "dataize" method. It should dataize eo object by its vertex. This method is going to be called from rust insert and should not be static.</body>
        <file>eo-runtime/src/main/java/org/eolang/Universe.java</file>
        <author>levBagryansky</author>
        <email>28lev11@gmail.com</email>
        <time>2023-08-13T11:20:25Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2314" closed="2023-08-23T10:08:21+00:00">2314</issue>
    <ticket>2283</ticket>
    <estimate>45</estimate>
    <role>DEV</role>
    <id>2283-27003227</id>
    <lines>250-252</lines>
    <body>Implement handling of vertex returning. It must convert message array from 1 to last byte to the int and return eo object with corresponding vertex then.</body>
    <file>eo-runtime/src/main/java/EOorg/EOeolang/EOrust.java</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2023-07-25T13:22:00Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2315" closed="2023-09-12T15:06:00+00:00">2315</issue>
    <ticket>2283</ticket>
    <estimate>45</estimate>
    <role>DEV</role>
    <id>2283-ddadafec</id>
    <lines>253-255</lines>
    <body>Implement handling of String returning. It must convert message array from 1 to last byte to the String and return eo object with converted String Data.</body>
    <file>eo-runtime/src/main/java/EOorg/EOeolang/EOrust.java</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2023-07-25T13:22:00Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2322" closed="2023-12-26T13:16:51+00:00">2322</issue>
    <ticket>2239</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>2239-2a4796f2</id>
    <lines>39-41</lines>
    <body>min. Make this class extending Savable class. This class have save method and needs to have explanatory comment too via Commented class.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/rust/Cargo.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-07-27T09:54:42Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2335" closed="2023-08-10T15:45:37+00:00">2335</issue>
    <ticket>1307</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1307-4a15f9bc</id>
    <lines>48-58</lines>
    <body>Refactor and enable cage tests. Since object {@link EOcage} prohibit writing objects of different types to itself (for more information see &lt;a href="https://github.com/objectionary/eo/issues/1307"&gt;the ticket&lt;/a&gt;) some of its tests were disabled because they fail. Need to resolve them and enable. List of disabled tests: EOcageTest.overwritesCagedObject, EOcageTest.writesItselfToItself, avoid-infinite-loop, cage-nested-objects, avoid-infinite-loop-second-case, dataizes-encaged-object-lazily-first, calling-caged-function, dataizes-encaged-object-lazily-second, dataizes-encaged-object-lazily-third. infinite-loop-checkt, overwrites-caged-object-with-integer, rho-of-add-should-not-change, stores-abstract-object-into-cage, writes-into-cage.</body>
    <file>eo-runtime/src/test/java/EOorg/EOeolang/EOcageTest.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-07-31T15:35:29Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2336" closed="2023-08-10T12:35:41+00:00">2336</issue>
    <ticket>1307</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1307-e36f75dd</id>
    <lines>44-50</lines>
    <body>Resolve flaky tests: 1) {@code savesToCache} on windows CI, see an example &lt;a href="https://github.com/objectionary/eo/actions/runs/5713175702/job/ 15478085290?pr=2332"&gt;here&lt;/a&gt; 2) {@code binarizesWithoutErrors}, see an example &lt;a href="https://github.com/objectionary/eo/actions/runs/5713661855/job/ 15479445307?pr=2332"&gt;here&lt;/a&gt;</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/BinarizeMojoTest.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-07-31T15:35:29Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/2373" closed="2023-08-11T13:04:05+00:00">2373</issue>
        <ticket>2336</ticket>
        <estimate>90</estimate>
        <role>DEV</role>
        <id>2336-caedc478</id>
        <lines>50-55</lines>
        <body>Enable all the tests in EOstdoutTest. The tests are disabled because they are flaky. The original issue is here: - https://github.com/objectionary/eo/issues/2371 When the issue is fixed, enable the tests and remove the @Disabled annotation. Don't forget to remove the puzzle itself.</body>
        <file>eo-runtime/src/test/java/EOorg/EOeolang/EOio/EOstdoutTest.java</file>
        <author>rultor</author>
        <email>me@rultor.com</email>
        <time>2023-08-10T12:25:05Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2409" closed="2024-02-01T03:19:39+00:00">2409</issue>
    <ticket>1698</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>1698-d7ce48df</id>
    <lines>62-66</lines>
    <body>Make up with an idea how to prevent StackOverflow exception or warn a user if he writes cage into the same cage. Options: 1) xsl file that somehow checks if cage is about to write to the same cage 2) catch StackOverflow exception at the top level and say to the user that maybe he writes cage to the same cage</body>
    <file>eo-runtime/src/main/eo/org/eolang/cage.eo</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2023-08-17T14:47:55Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2421" closed="2023-10-11T08:32:43+00:00">2421</issue>
    <ticket>1602</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1602-5a035406</id>
    <lines>35-40</lines>
    <body>After introducing this class we are able to use it instead of {@link ContainsFile} because we can pass varargs into constructor. So, the next step will be exactly that - we will just remove ContainsFile class (inline it into ContainsFiles) because we can do it, since we don't use ContainsFile anymore and the code will become smaller and simpler without redundant class.</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/ContainsFiles.java</file>
    <author>maxonfjvipon</author>
    <email>mtrunnikov@gmail.com</email>
    <time>2023-08-18T17:17:05Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2422" closed="2023-12-27T15:20:04+00:00">2422</issue>
    <ticket>1602</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1602-4a7b3be6</id>
    <lines>45-51</lines>
    <body>Create new object that will join two strings with "_". {@link Place} object makes a path for versioned objects using "_" as delimiter between name and hash. Here to test stored files after {@link AssembleMojo} execution "joinedWithUnderscore" function was introduced. So there's a code duplication and an ugly design. Need to create a new object that will join two strings with underscore and use it here and in {@link Place}.</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/AssembleMojoTest.java</file>
    <author>maxonfjvipon</author>
    <email>mtrunnikov@gmail.com</email>
    <time>2023-08-18T17:17:05Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/2743" closed="2024-01-27T08:17:22+00:00">2743</issue>
        <ticket>2422</ticket>
        <estimate>60</estimate>
        <role>DEV</role>
        <id>2422-9365455c</id>
        <lines>116-119</lines>
        <body>This test is unstable for now. We should resolve issues with unstable failures and only then enable the test. Also, see this &lt;a href="https://github.com/objectionary/eo/issues/2727"&gt;issue&lt;/a&gt;.</body>
        <file>eo-maven-plugin/src/test/java/org/eolang/maven/OptimizeMojoTest.java</file>
        <author>rultor</author>
        <email>me@rultor.com</email>
        <time>2023-12-27T14:29:54Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/2744" closed="2024-01-27T08:17:25+00:00">2744</issue>
        <ticket>2422</ticket>
        <estimate>60</estimate>
        <role>DEV</role>
        <id>2422-ec85e516</id>
        <lines>55-58</lines>
        <body>returnsFromCacheIfXmlAlreadyInCache: this test is unstable. We should resolve issues with unstable failures and only then enable the test. Also, see this &lt;a href="https://github.com/objectionary/eo/issues/2727"&gt;issue&lt;/a&gt;.</body>
        <file>eo-maven-plugin/src/test/java/org/eolang/maven/optimization/OptCachedTest.java</file>
        <author>rultor</author>
        <email>me@rultor.com</email>
        <time>2023-12-27T14:29:54Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2423" closed="2025-02-20T16:39:11+00:00">2423</issue>
    <ticket>1602</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1602-c4c0a1a1</id>
    <lines>52-54</lines>
    <body>Make up how to get rid of excessive usage of {@code ParseMojo.DIR}, {@code ResolveMojo.DIR} and so on. It would be nice to replace them with corresponding classes, or something similar</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/AssembleMojoTest.java</file>
    <author>maxonfjvipon</author>
    <email>mtrunnikov@gmail.com</email>
    <time>2023-08-18T17:17:05Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2424" closed="2025-02-20T16:39:12+00:00">2424</issue>
    <ticket>1602</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1602-0c5eb13b</id>
    <lines>55-59</lines>
    <body>Refactor tests. Logic of AssembleMojo is to run several phases one-by-one in a loop. Nothing more. Everything else you are trying to check here is related to particular mojos (and we should check their behaviour in appropriate tests). In other words there are integration tests here. And, probably, it is not the best place for them.</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/AssembleMojoTest.java</file>
    <author>maxonfjvipon</author>
    <email>mtrunnikov@gmail.com</email>
    <time>2023-08-18T17:17:05Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2443" closed="2023-12-06T12:44:51+00:00">2443</issue>
    <ticket>1708</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1708-536ee550</id>
    <lines>35-40</lines>
    <body>Implement VerifyMojo. VerifyMojo should check all errors and critical errors in xmir after {@link AssembleMojo} is finished. Also if {@code failOnWarning} flag is set to true - mojo should check warnings. When mojo is implemented - need to remove "failOnError" flag from {@link OptimizeMojo} and put "verify" step right after "assemble" in all pom.xml files</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/VerifyMojo.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-08-25T09:58:35Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/2678" closed="2023-12-13T17:44:52+00:00">2678</issue>
        <ticket>2443</ticket>
        <estimate>90</estimate>
        <role>DEV</role>
        <id>2443-427f9946</id>
        <lines>112-114</lines>
        <body>Remove the following failOnError flag. Now we have already got rid from it in {@link OptimizeMojo} and {@link VerifyMojo}. We need to make failOnError the behaviour default.</body>
        <file>eo-maven-plugin/src/main/java/org/eolang/maven/AssembleMojo.java</file>
        <author>@rultor</author>
        <email>me@rultor.com</email>
        <time>2023-12-06T12:26:23Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2471" closed="2023-10-11T04:48:09+00:00">2471</issue>
    <ticket>2442</ticket>
    <estimate>45</estimate>
    <role>DEV</role>
    <id>2442-a6fae757</id>
    <lines>36-38</lines>
    <body>Add correct processing of the return value of functions. call_method returns Result&lt;JValueOwned&lt;'local&gt;&gt; which we should not just unwrap. We need to check it instead and return None if exception in java side happened.</body>
    <file>eo-runtime/src/main/rust/eo_env/src/eo_env.rs</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2023-09-04T15:38:32Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2472" closed="2023-09-12T15:06:03+00:00">2472</issue>
    <ticket>2442</ticket>
    <estimate>45</estimate>
    <role>DEV</role>
    <id>2442-87b4ce00</id>
    <lines>234-236</lines>
    <body>Improve handling EOError returning. It should also send a String message describing error on the native side and handle it correctly on the java side.</body>
    <file>eo-runtime/src/main/java/EOorg/EOeolang/EOrust.java</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2023-09-04T15:38:32Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2481" closed="2024-12-19T11:10:05+00:00">2481</issue>
    <ticket>1602</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1602-e06a1aef</id>
    <lines>195-198</lines>
    <body>Remove the flag when objection versioned is implemented. The variable is used for implementation of object versioning. When object versioning is implemented there will be no need for that variable</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/SafeMojo.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-09-08T15:23:45Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2482" closed="2023-09-11T05:05:36+00:00">2482</issue>
    <ticket>2399</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2399-7063962a</id>
    <lines>79-86</lines>
    <body>The test fails on GitHub Actions CI. Need to figure out what's the problem Stack trace: java.lang.IllegalArgumentException: Non-zero exit code 1: This is pdfTeX, Version 3.141592653-2.6-1.40.25 (T..4496..duced!Transcript written on article.log. at com.jcabi.log.VerboseProcess.stdout(VerboseProcess.java:298) at com.jcabi.log.VerboseProcess.stdout(VerboseProcess.java:185) at com.yegor256.Jaxec.execUnsafe(Jaxec.java:289) at com.yegor256.Jaxec.exec(Jaxec.java:258) at org.eolang.parser.XMIRTest.convertsAntlrToEbnf(XMIRTest.java:148)</body>
    <file>eo-parser/src/test/java/org/eolang/parser/XMIRTest.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-09-08T15:40:19Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2483" closed="2023-12-28T13:15:00+00:00">2483</issue>
    <ticket>2399</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2399-9c819bd6</id>
    <lines>165-169</lines>
    <body>"idiomatic.eo" is not converted successfully. After introducing new grammar ({@see Program.g4}) example with name "idiomatic.eo" is not converted successfully in the test, so it was moved from {@see org.eolang.parser.xmir-samples} to {@see org.eolang.parser.xmir-samples-wrong}. Need to figure what's the problem and move it back to the origin folder.</body>
    <file>eo-parser/src/test/java/org/eolang/parser/XMIRTest.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-09-08T15:40:19Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2484" closed="2023-09-18T13:30:09+00:00">2484</issue>
    <ticket>2399</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2399-a6eaec39</id>
    <lines>43-49</lines>
    <body>Do we need {@link RedundantParentheses} class? After refactoring grammar ({@see Program.g4}) parentheses are controlled at the level of grammar and can't be used in the many ways it was allowed to use them before. This is the reason the test is disabled. Need to check whether we really need the class with new grammar or not. If yes - return {@link RedundantParentheses} back to {@link XeListener} and refactor the test. If no - move the test cases below to {@link org.eolang.parser.typos} folder and remove {@link RedundantParentheses} class from the source code.</body>
    <file>eo-parser/src/test/java/org/eolang/parser/RedundantParenthesesTest.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-09-08T15:40:19Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2515" closed="2024-03-18T13:35:45+00:00">2515</issue>
    <ticket>2497</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2497-58e65091</id>
    <lines>173-175</lines>
    <body>Uncomment infinites tests. For some reason times, plus, minus and div object of positive-infinity and negative-infinity causes flaky tests that mostly fail on CI/CD pipeline. Need to find a reason, fix it and uncomment all tests here and in positive-infinity-tests.eo file</body>
    <file>eo-runtime/src/test/eo/org/eolang/negative-infinity-tests.eo</file>
    <author>Max Trunnikov</author>
    <email>mtrunnikov@gmail.com</email>
    <time>2023-10-01T07:21:56Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2516" closed="2023-10-06T06:06:24+00:00">2516</issue>
    <ticket>2498</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2498-1c661137</id>
    <lines>199-201</lines>
    <body>Enable the tests. After removing assert-that from eo-runtime $.string-starts-with it not allowed anymore. Need to refactor the next tests and enable them: - rust-bind-not-fails, - rust-error</body>
    <file>eo-runtime/src/test/eo/org/eolang/rust-tests.eo</file>
    <author>Max Trunnikov</author>
    <email>mtrunnikov@gmail.com</email>
    <time>2023-10-01T07:21:56Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2539" closed="2024-12-19T11:10:07+00:00">2539</issue>
    <ticket>2506</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2506-45cecde8</id>
    <lines>74-78</lines>
    <body>Replace hash with tag or remove it at all. This mojo should be executed on "deploy" phase and copy sources with dynamic hash. The hash should be taken from tag that is provided with command `mvn versions:set "-DnewVersion=${tag}"` which is executed before actual `mvn deploy`. Now for the test purposes we can specify deployHash from pom.xml but it should be remade or removed in the future.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/CopySourcesMojo.java</file>
    <author>@maxonfjvipon</author>
    <email>mtrunnikov@gmail.com</email>
    <time>2023-10-16T14:29:07Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2541" closed="2023-10-17T17:50:37+00:00">2541</issue>
    <ticket>2528</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2528-154f4f46</id>
    <lines>102-105</lines>
    <body>Remove "master" pair from the table. Hash of "master" tag is not static and is being updated dynamically. That's why we should not use it in fake CommitHashesMap with {@link org.eolang.maven.objectionary.OyRemote}. That's why it would be better to remove it from the table and assure that all tests are green. Don't forget to remove the puzzle.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/hash/CommitHashesMap.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-10-17T05:50:48Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2543" closed="2023-12-19T15:22:03+00:00">2543</issue>
    <ticket>2528</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2528-03b641f4</id>
    <lines>38-39</lines>
    <body>Add tests for {@link HmOptional}. It would be nice to test the functionality of the {@link HmOptional} class. Don't forget to remove the puzzle after introducing the tests.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/util/HmOptional.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-10-17T05:50:48Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2561" closed="2023-12-22T11:16:54+00:00">2561</issue>
    <ticket>2555</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2555-d7532c61</id>
    <lines>264-267</lines>
    <body>Enable integration tests. Integration tests were disabled because of new recursive implementation of tuple. Need to upload new version of eo-runtime to Objectionary and enable integration tests by just removing "maven-invoker-plugin" from this pom.xml. Don't forget to remove the puzzle.</body>
    <file>eo-maven-plugin/pom.xml</file>
    <author>@maxonfjvipon</author>
    <email>mtrunnikov@gmail.com</email>
    <time>2023-10-29T19:43:15Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2562" closed="2023-11-23T07:47:55+00:00">2562</issue>
    <ticket>2555</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2555-1f303a38</id>
    <lines>59-61</lines>
    <body>Enable the test. The test {@link SodgMojoTest#generatesSodgForPacks(String)} was disabled because it does not pass after changing tuple implementation. Need to refactor it and enable. Don't forget to remove the puzzle.</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/SodgMojoTest.java</file>
    <author>maxonfjvipon</author>
    <email>mtrunnikov@gmail.com</email>
    <time>2023-10-29T19:43:15Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2563" closed="2023-11-29T15:31:39+00:00">2563</issue>
    <ticket>2555</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2555-9082f549</id>
    <lines>1-3</lines>
    <body>Enable the test. The test was disabled because it does not pass after changing tuple implementation. Need to refactor it and enable. Maybe it would be good to add several "stars-to-tuples.xsl" transformations to "xsls" section. Don't forget to remove the puzzle.</body>
    <file>eo-maven-plugin/src/test/resources/org/eolang/maven/packs/pre/tuple-to-java.yaml</file>
    <author>maxonfjvipon</author>
    <email>mtrunnikov@gmail.com</email>
    <time>2023-10-29T19:43:15Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2564" closed="2023-11-20T11:48:40+00:00">2564</issue>
    <ticket>2555</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2555-4368c3d1</id>
    <lines>465-468</lines>
    <body>Enable the test when it's possible normalize object before application. Now this test does not work because we (arr.at 0).@ "returns" "if" from tuple.at which is wrong. Possibly we would need to extend EO syntax and phi calculus in order to be able to support such behavior.</body>
    <file>eo-runtime/src/test/eo/org/eolang/runtime-tests.eo</file>
    <author>maxonfjvipon</author>
    <email>mtrunnikov@gmail.com</email>
    <time>2023-10-29T19:43:15Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2565" closed="2023-11-11T04:44:42+00:00">2565</issue>
    <ticket>2555</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2555-576d5948</id>
    <lines>121-125</lines>
    <body>Enable rust tests when it's possible to get an abstract object from tuple. Many rust tests were disabled because "portal" inside EOrust stopped working because of new implementation of "tuple". Now it's not possible to put an abstract object into tuple and take it back. Need to enable the next tests when it's possible: rust-find-returns-int, rust-returns-vertex, rust-copy-not-fails, rust-dataize-not-fails, rust-plus, rust-bind-to-copy</body>
    <file>eo-runtime/src/test/eo/org/eolang/rust-tests.eo</file>
    <author>maxonfjvipon</author>
    <email>mtrunnikov@gmail.com</email>
    <time>2023-10-29T19:43:15Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2568" closed="2024-02-03T14:08:41+00:00">2568</issue>
    <ticket>2566</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>2566-db3f6d6c</id>
    <lines>32-36</lines>
    <body>Remove AtComposite class. AtComposite duplicates the functionality of {@link AtLambda} and it's used only because the style of generated (from EO) java is imperative. We need to make transpilation declarative (for example new PhLocated(new PhWith(new PhMethod(...), ...), ...)) so we would not need AtComposite anymore. Don't forget to remove the puzzle.</body>
    <file>eo-runtime/src/main/java/org/eolang/AtComposite.java</file>
    <author>maxonfjvipon</author>
    <email>mtrunnikov@gmail.com</email>
    <time>2023-10-30T18:58:18Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2572" closed="2023-11-22T15:11:42+00:00">2572</issue>
    <ticket>2536</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2536-4ef72508</id>
    <lines>33-36</lines>
    <body>We need to implement exec() method. The main idea is to read program written in EO and translate it to Phi-calculus. To store this result we suggest to create a new folder: xmir-to-phi. Let's store it to this folder one file by one.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/TranslateToPhiMojo.java</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2023-11-01T12:51:39Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2573" closed="2023-11-22T15:11:49+00:00">2573</issue>
    <ticket>2535</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2535-77ae0c2e</id>
    <lines>37-41</lines>
    <body>Enable tests: {@link TranslateToPhiMojoTest#checksExistence(java.nio.file.Path)} and {@link TranslateToPhiMojoTest#checksPhiCalculusExpression(java.nio.file.Path)}. Also it's better to add more test cases in different EO programs with corresponding Phi-calculus expressions.</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/TranslateToPhiMojoTest.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-11-01T12:51:39Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2579" closed="2023-11-28T12:54:56+00:00">2579</issue>
    <ticket>2577</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2577-b57ee58e</id>
    <lines>52-55</lines>
    <body>Resolve code duplication between {@link OptimizeMojo} and {@link ShakeMojo}. ShakeMojo was created in order to split two optimization stages: optimizations themselves and preparations for translation to java. Now these two mojo look almost the same and there's a lot of code duplication. So it's needed to resolve that. Don't forget to remove the puzzle</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/ShakeMojo.java</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2023-11-10T11:55:49Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2580" closed="2023-11-28T12:55:01+00:00">2580</issue>
    <ticket>2577</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2577-d3715d46</id>
    <lines>56-58</lines>
    <body>Add tests for ShakeMojo. ShakeMojo was created in order to split two optimization stages: optimizations themselves and preparations for translation to java Need to create tests for {@link ShakeMojo} in order to be sure that it does only it's job.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/ShakeMojo.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-11-10T11:55:49Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2584" closed="2024-02-13T10:04:03+00:00">2584</issue>
    <ticket>2437</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2437-5c9f75e2</id>
    <lines>411-415</lines>
    <body>Return previous values of the limits. Limits were changed after changing "explicit-data.xsl" and disabling some tests. Need to return limits back after tests are enabled. Previous values: INSTRUCTION.COVEREDRATIO - 0.70, LINE.COVEREDRATIO - 0.73, CLASS.MISSEDCOUNT - 6</body>
    <file>eo-maven-plugin/pom.xml</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2023-11-14T11:49:10Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2585" closed="2023-11-20T12:15:02+00:00">2585</issue>
    <ticket>2437</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2437-ce309234</id>
    <lines>45-47</lines>
    <body>Enable the tests: Some tests in the class were disabled after changing "explicit-data.xsl". Need to fix them and enable. Don't forget to remove the puzzle. Disabled tests: {@link BinarizeParseMojoTest#createsDependenciesSection(String)}.</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/BinarizeParseMojoTest.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-11-14T11:49:10Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2586" closed="2023-11-23T07:47:58+00:00">2586</issue>
    <ticket>2437</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2437-4800d650</id>
    <lines>62-64</lines>
    <body>Enable the tests: Some tests in the class were disabled after changing "explicit-data.xsl". Need to fix them and enable. Don't forget to remove the puzzle. Disabled tests: {@link SodgMojoTest#generatesSodgForPacks(String)}.</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/SodgMojoTest.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-11-14T11:49:10Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2587" closed="2023-11-16T21:22:48+00:00">2587</issue>
    <ticket>2437</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>2437-10dd7966</id>
    <lines>137-145</lines>
    <body>Fix EOrust. After getting rid of delta attribute in data primitives EOrust stopped working. Reason - it can't find proper locator of "code" attribute because it's lost when it's wrapped with {@link org.eolang.PhCopy}. Need to figure out how to fix it and enable all disabled rust tests: rust-returns-negative-int, rust-returns-vertex, rust-invalid-put, rust-error, rust-returns-positive-int, rust-find-returns-int, rust-plus, rust-bind-not-fails, rust-is-string, rust-copy-not-fails, rust-is-byte-array, rust-bind-to-copy, rust-put-to-copy, rust-returns-positive-double, rust-returns-negative-double, rust-dataize-not-fails, UniverseDefaultTest#bindsCopyToAbstract, UniverseDefaultTest#putsToCopy,</body>
    <file>eo-runtime/src/main/java/EOorg/EOeolang/EOrust.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-11-14T11:49:10Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2588" closed="2023-11-22T08:04:43+00:00">2588</issue>
    <ticket>2437</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2437-58bda12f</id>
    <lines>92-95</lines>
    <body>Change signature of the method. The method returns what's inside the delta attribute of the object. We got rid of delta attributes in data primitives so there's can be only bytes inside delta attribute. That's why this method will always actually return byte[]. Need to make a refactoring and make sure everything works fine.</body>
    <file>eo-runtime/src/main/java/org/eolang/Dataized.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-11-14T11:49:10Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2589" closed="2024-02-01T03:19:44+00:00">2589</issue>
    <ticket>2437</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2437-bddec9af</id>
    <lines>77-80</lines>
    <body>Enable the test. After getting rid of delta attributes in data primitives this test started to execute infinitely long while other tests with "bool.while" are executed without any troubles. Need to find what's the problem and make the test enable again. Don't forget to remove the puzzle</body>
    <file>eo-runtime/src/test/eo/org/eolang/bool-tests.eo</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-11-14T11:49:10Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2590" closed="2023-11-23T10:24:44+00:00">2590</issue>
    <ticket>2437</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2437-f38310c3</id>
    <lines>37-41</lines>
    <body>Enable the test {@link DataTest#printsString()}. The test was disabled because data primitives don't contain delta attribute anymore. So "toString" method would not return expected string. So there's a place where we need to decide either we don't expect such behaviour from data objects and then we can just remove the test; or we should change behaviour of "toString" method. Don't forget to remove the puzzle.</body>
    <file>eo-runtime/src/test/java/org/eolang/DataTest.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-11-14T11:49:10Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2591" closed="2023-11-29T08:19:17+00:00">2591</issue>
    <ticket>2437</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2437-d698a6db</id>
    <lines>41-44</lines>
    <body>Enable the tests: {@link MainTest#deliversCleanOutput()} and {@link MainTest#executesJvmFullRun()}. These tests were disabled because we got rid of delta attribute in data primitives so code in the tests became invalid. Need to fix it and enable the tests. Don't forget to remove the puzzle.</body>
    <file>eo-runtime/src/test/java/org/eolang/MainTest.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-11-14T11:49:10Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/2645" closed="2024-01-19T04:31:51+00:00">2645</issue>
        <ticket>2591</ticket>
        <estimate>60</estimate>
        <role>DEV</role>
        <id>2591-eade6066</id>
        <lines>174-176</lines>
        <body>Make type casting when logging an app dataization result. The cast is necessary in this expression {@code new Dataized(app).take()} in order to correctly convert it to a string. This conversion it necessary for proper logging.</body>
        <file>eo-runtime/src/main/java/org/eolang/Main.java</file>
        <author>rultor</author>
        <email>me@rultor.com</email>
        <time>2023-11-29T07:56:20Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2622" closed="2024-12-19T11:10:09+00:00">2622</issue>
    <ticket>2612</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2612-0579c749</id>
    <lines>65-69</lines>
    <body>Enable the test {@link AssembleMojoTest#assemblesTogetherWithVersions(Path)}. The test was disabled because varargs were removed in EO 0.34.0. So objects that are downloaded from older repositories are not parsed successfully because of the presence of varargs there. So we need to make 2-3 releases and then refactor the test with more fresh versions. Don't forget to remove the puzzle.</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/AssembleMojoTest.java</file>
    <author>maxonfjvipon</author>
    <email>mtrunnikov@gmail.com</email>
    <time>2023-11-22T19:40:25Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2638" closed="2023-12-21T08:34:24+00:00">2638</issue>
    <ticket>2577</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2577-73df16a8</id>
    <lines>45-48</lines>
    <body>Add tests for ShakeMojo. ShakeMojo was created in order to split two optimization stages: optimizations themselves and preparations for translation to java Need to create tests for {@link ShakeMojo} in order to be sure that it does only it's job. @since 0.33.0</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/ShakeMojo.java</file>
    <author>Alekseeva Yana</author>
    <email>neutronstar1996@gmail.com</email>
    <time>2023-11-28T10:21:54Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2648" closed="2024-01-11T13:48:06+00:00">2648</issue>
    <ticket>2118</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>2118-1bbacef7</id>
    <lines>52-54</lines>
    <body>Make it more generic. Perhaps by compilation of RustNode instead of going and building throw directories. Maybe it is better to get from BinarizeParseMojo.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/BinarizeMojo.java</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2023-11-29T09:31:36Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2649" closed="2023-12-07T07:27:57+00:00">2649</issue>
    <ticket>2609</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>2609-cb1cc596</id>
    <lines>145-148</lines>
    <body>We can make the current class more generic by transferring this.addRust(input) snippet to corresponding FFINode- {@link RustNode}. We wanna make the class independent of ffi-insert as a result.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/BinarizeParseMojo.java</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2023-11-29T09:31:36Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/2683" closed="2023-12-11T15:33:30+00:00">2683</issue>
        <ticket>2649</ticket>
        <estimate>90</estimate>
        <role>DEV</role>
        <id>2649-2559f1c7</id>
        <lines>148-154</lines>
        <body>This method may be more general. We need to get rid from rust dependencies in this method, because when adding another type of inserts it will be just copy-paste here. First of all, the for-loop must create all kinds of FFI nodes, not only {@link RustNode}. I think we can implement it, using something like {@code FFINodeFactory}, that will return appropriate FFI node for every XML node from {@code nodes}. Also it will be great to move paths to XML FFI insert nodes (such as {@code "/program/rusts/rust"}) from this method to a static class field.</body>
        <file>eo-maven-plugin/src/main/java/org/eolang/maven/BinarizeParseMojo.java</file>
        <author>@rultor</author>
        <email>me@rultor.com</email>
        <time>2023-12-07T07:09:44Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2668" closed="2023-12-06T13:23:09+00:00">2668</issue>
    <ticket>2406</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2406-a4a297dd</id>
    <lines>73-79</lines>
    <body>Fix {@link FakeMaven#allowedParams(Class)} This function configures parameters of executed Mojo in {@link FakeMaven#execute(Class)} and parameters those Mojos which are inside this executed Mojo. If executed Mojo doesn't have parameters that are inside other Mojos, other Mojos parameters will not be configured. We need to make sure that custom parameters can be configured too. We need to enable the test {@link AssembleMojoTest#configuresChildParameters(Path)}.</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/FakeMaven.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-12-04T11:27:59Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2670" closed="2023-12-06T12:22:44+00:00">2670</issue>
    <ticket>2665</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2665-24cd76fe</id>
    <lines>46-48</lines>
    <body>Check negative int bindings via xsl. It's possible now to make application with integer bindings like {@code x a:0 b:1}. Need to add xsl transformation that would check if such binding is negative and would add an error to "errors" section.</body>
    <file>eo-parser/src/main/java/org/eolang/parser/ParsingTrain.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-12-04T12:54:17Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2674" closed="2023-12-28T07:54:07+00:00">2674</issue>
    <ticket>2546</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>2546-12d07944</id>
    <lines>36-39</lines>
    <body>Add test that checks the message of exception in case of warning, error and critical in xmir. According to eo-parser/src/main/resources/org/eolang/parser/fail-on-critical.xsl it includes filename and line inside.</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/VerifyMojoTest.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-12-05T13:51:50Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/2746" closed="2024-01-09T09:39:25+00:00">2746</issue>
        <ticket>2674</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>2674-ddaefd43</id>
        <lines>44-46</lines>
        <body>The function {@code OptCached.contains(final XML xml)} isn't work properly. This function compares caching and compilation times, which may lead to erroneous results. We need to fix this.</body>
        <file>eo-maven-plugin/src/main/java/org/eolang/maven/optimization/OptCached.java</file>
        <author>rultor</author>
        <email>me@rultor.com</email>
        <time>2023-12-28T07:33:36Z</time>
        <children>
          <puzzle alive="false">
            <issue href="https://github.com/objectionary/eo/issues/2764" closed="2024-01-17T09:57:42+00:00">2764</issue>
            <ticket>2746</ticket>
            <estimate>30</estimate>
            <role>DEV</role>
            <id>2746-c8b58fdb</id>
            <lines>44-49</lines>
            <body>Use checksum, not time. The following tests show that fetching from the cache doesn't work correctly: - {@link OptCachedTest#returnsFromCacheCorrectProgram(Path path)}, - {@link OptCachedTest#returnsFromCacheButTimesSaveAndExecuteDifferent(Path path)}. Need to fix the file validation from cache: using checksum, but not time. Don't forget to enable the tests.</body>
            <file>eo-maven-plugin/src/main/java/org/eolang/maven/optimization/OptCached.java</file>
            <author>rultor</author>
            <email>me@rultor.com</email>
            <time>2024-01-09T09:18:16Z</time>
            <children/>
          </puzzle>
          <puzzle alive="false">
            <issue href="https://github.com/objectionary/eo/issues/2790" closed="2024-01-26T10:16:18+00:00">2790</issue>
            <ticket>2746</ticket>
            <estimate>30</estimate>
            <role>DEV</role>
            <id>2746-9394bf60</id>
            <lines>44-51</lines>
            <body>Fix caching mechanism in {@link OptCached}. Current The last modified time of the files between stages may be different, so it is not correct to do an equality comparison ({@code .equals(...)}). The last modification time of the file at the current stage must be less than or equal to the last modification time of file in cache at the next stage. The following tests show that fetching from the cache doesn't work correctly: - {@link OptCachedTest#returnsFromCacheCorrectProgram(Path path)}, - {@link OptCachedTest#returnsFromCacheButTimesSaveAndExecuteDifferent(Path path)}.</body>
            <file>eo-maven-plugin/src/main/java/org/eolang/maven/optimization/OptCached.java</file>
            <author>rultor</author>
            <email>me@rultor.com</email>
            <time>2024-01-17T09:36:18Z</time>
            <children>
              <puzzle alive="false">
                <issue href="https://github.com/objectionary/eo/issues/2820" closed="2024-10-23T12:18:52+00:00">2820</issue>
                <ticket>2790</ticket>
                <estimate>30</estimate>
                <role>DEV</role>
                <id>2790-ef16f785</id>
                <lines>45-55</lines>
                <body>Refactor OptCache Class Currently, we have some concerns about the implementation of OptCache. It appears that the code is a bit too complicated. The OptCache class takes XMIR as an argument in OptCache#apply and the path to the same XMIR in the constructor, which seems odd. We need to consider how to refactor this class. Furthermore, the current implementation of OptCache and OptimizationTask has a similar logic of returning either from the cache or applying a default optimization. For more information, please refer to this discussion: &lt;a href=&#x201C;https://github.com/objectionary/eo/pull/2808#discussion_r1464941944&#x201D;&gt;issue&lt;/a&gt;.</body>
                <file>eo-maven-plugin/src/main/java/org/eolang/maven/optimization/OptCached.java</file>
                <author>rultor</author>
                <email>me@rultor.com</email>
                <time>2024-01-26T09:55:34Z</time>
                <children/>
              </puzzle>
              <puzzle alive="false">
                <issue href="https://github.com/objectionary/eo/issues/2821" closed="2024-10-23T12:18:54+00:00">2821</issue>
                <ticket>2790</ticket>
                <estimate>30</estimate>
                <role>DEV</role>
                <id>2790-b1dbe786</id>
                <lines>59-69</lines>
                <body>There is repeating logic in tests. Code logic repeats in {@link OptCacedTest}, {@link OptimizeMojoTest.getAlreadyOptimizedResultsFromCache} and {@link ShakeMojoTest.getAlreadyShakenResultsFromCache}. To check whether a program is loaded from the cache, different tests use the same code { @code Files.setLastModifiedTime( res, FileTime.fromMillis(System.currentTimeMillis() + time) ); }. We need to think about how to remove this duplication.</body>
                <file>eo-maven-plugin/src/test/java/org/eolang/maven/optimization/OptCachedTest.java</file>
                <author>rultor</author>
                <email>me@rultor.com</email>
                <time>2024-01-26T09:55:34Z</time>
                <children/>
              </puzzle>
            </children>
          </puzzle>
          <puzzle alive="false">
            <issue href="https://github.com/objectionary/eo/issues/2791" closed="2024-01-26T10:16:23+00:00">2791</issue>
            <ticket>2746</ticket>
            <estimate>30</estimate>
            <role>DEV</role>
            <id>2746-ac77dd68</id>
            <lines>52-56</lines>
            <body>Unify caching mechanism on stages: parse, optimize, pull and so on. Current implementations of caching on parsing stage and optimize stages work differently. In ParseMojo we have condition {@code if (tojo.hasHash()) }, in OptimizeMojo or ShakeMojo we compare creation time of files. Don't forget to enable the tests.</body>
            <file>eo-maven-plugin/src/main/java/org/eolang/maven/optimization/OptCached.java</file>
            <author>rultor</author>
            <email>me@rultor.com</email>
            <time>2024-01-17T09:36:18Z</time>
            <children/>
          </puzzle>
          <puzzle alive="false">
            <issue href="https://github.com/objectionary/eo/issues/2822" closed="2024-10-23T12:18:56+00:00">2822</issue>
            <ticket>2746</ticket>
            <estimate>30</estimate>
            <role>DEV</role>
            <id>2746-0e77f2c4</id>
            <lines>40-44</lines>
            <body>Unify caching mechanism on stages: parse, optimize, pull and so on. Current implementations of caching on parsing stage and optimize stages work differently. In ParseMojo we have condition {@code if (tojo.hasHash())}, in OptimizeMojo or ShakeMojo we compare creation time of files. Don't forget to enable the tests.</body>
            <file>eo-maven-plugin/src/main/java/org/eolang/maven/optimization/OptCached.java</file>
            <author>rultor</author>
            <email>me@rultor.com</email>
            <time>2024-01-26T09:55:34Z</time>
            <children/>
          </puzzle>
        </children>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/2747" closed="2024-12-03T08:46:18+00:00">2747</issue>
        <ticket>2674</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>2674-94c2148b</id>
        <lines>46-51</lines>
        <body>The messages "Warnings identified" from /org/eolang/parser/fail-on-warnings.xsl can have nullable line number. Need fix it, that it works as in /org/eolang/parser/warnings/mandatory-version-meta.xsl and /org/eolang/parser/warnings/mandatory-home-meta.xsl. After you need fix {@code createRegEx()}.</body>
        <file>eo-maven-plugin/src/test/java/org/eolang/maven/VerifyMojoTest.java</file>
        <author>rultor</author>
        <email>me@rultor.com</email>
        <time>2023-12-28T07:33:36Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2679" closed="2024-12-30T05:15:18+00:00">2679</issue>
    <ticket>2406</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>2406-424948df</id>
    <lines>45-55</lines>
    <body>Make up with idea how to get rid of duplicate parameters between mojos. There's a situation where AssembleMojo owns, creates and executes other mojos, like {@link ParseMojo} or {@link OptimizeMojo}. When we configure our compiler via pom.xml maven tries to set parameters directly to the calling mojo. That's why we must to have all parameters from child mojos in AssembleMojo or {@link SafeMojo} (in order they won't be skipped and lost). That causes duplication of parameters between "parent" mojo and "child" mojos. Also it obliges the developer to remember that if he adds new parameter to some child mojo, this parameter must be present in parent mojo as well. We didn't find a way how we can resolve such duplication at the moment. So we need to either accept this as impossible to solve or resolve somehow. Anyway don't forget to remove the puzzle when the decision about the puzzle is made.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/AssembleMojo.java</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2023-12-06T13:06:24Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2682" closed="2023-12-07T15:58:26+00:00">2682</issue>
    <ticket>2642</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2642-02dbe2cd</id>
    <lines>48-50</lines>
    <body>Create test packs for {@link UnphiMojo}. UnphiMojo seems to work correctly. We need to create yaml packs and enable {@link UnphiMojoTest#checksUnphiPacks(String, Path)} and make sure all of them are passed. Don't forget to remove the puzzle.</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/UnphiMojoTest.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-12-07T06:48:44Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2700" closed="2023-12-22T11:17:00+00:00">2700</issue>
    <ticket>2660</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2660-bfc86d4d</id>
    <lines>59-62</lines>
    <body>Most of the snippets are disabled now, in the "src/test/resources/snippets/*.yaml" because they don't work. Hopefully, they will work once a new eo-runtime.jar is released. Just wait until it's released and try to enable the tests.</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/it/SnippetTestCase.java</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2023-12-14T09:19:40Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2702" closed="2023-12-15T12:49:25+00:00">2702</issue>
    <ticket>2684</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2684-ebc6ed94</id>
    <lines>31-34</lines>
    <body>Remove dependencies from eo-runtime. eo-runtime must stay clear out of any dependencies except those that are used in tests. It's needed to remove all such dependencies and include 'check-runtime-deps.groovy' test (which is failing for now) into 'tests' list. We also need to add "test" scope for all dependencies in pom.xml.</body>
    <file>eo-runtime/src/test/groovy/verify.groovy</file>
    <author>maxonfjvipon</author>
    <email>mtrunnikov@gmail.com</email>
    <time>2023-12-14T14:16:31Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2717" closed="2024-01-22T08:52:14+00:00">2717</issue>
    <ticket>2660</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2660-a4091a35</id>
    <lines>279-282</lines>
    <body>Enable the following integration tests when it's possible. Now they don't work because many .eo files are absent in the objectionary/home repository. Once they are released, the tests should work as is, without any modifications.</body>
    <file>eo-maven-plugin/pom.xml</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2023-12-22T09:46:31Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2718" closed="2024-02-04T04:05:40+00:00">2718</issue>
    <ticket>2660</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2660-9f480ea0</id>
    <lines>58-62</lines>
    <body>One snippet is disabled now, in the "src/test/resources/snippets/*.yaml" because it doesn't work. I don't understand what's wrong with it (parenting.yaml). Let's try to find out and enable it (by removing the "skip" attribute from the YAML file).</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/it/SnippetTestCase.java</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2023-12-22T09:46:31Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/2723" closed="2024-01-17T15:25:12+00:00">2723</issue>
        <ticket>2718</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>2718-833aa636</id>
        <lines>43-48</lines>
        <body>Enable the tests. Tests {@link MainTest#deliversCleanOutput()} and {@link MainTest#executesJvmFullRun()} were disabled because they execute "org.eolang.io.stdout" object that accepts "string". But arguments after "org.eolang.io.stdout" are stored into "tuple" and are being passed as "tuple" object. And here we get the situation where "stdout" accepts "tuple" and fails. We need to enable the test by finding object that accepts "tuple" as the first argument, or make a custom one.</body>
        <file>eo-runtime/src/test/java/org/eolang/MainTest.java</file>
        <author>rultor</author>
        <email>me@rultor.com</email>
        <time>2023-12-22T13:58:45Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/2849" closed="2024-03-18T13:35:47+00:00">2849</issue>
        <ticket>2718</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>2718-585b9a29</id>
        <lines>60-64</lines>
        <body>One snippet is disabled now, in the "src/test/resources/snippets/*.yaml" because there's no "sprintf" object in objectionary (fibo.yaml). When "sprintf" is in objectionary again - we need to enable it (by removing the "skip" attribute from the YAML file).</body>
        <file>eo-runtime/src/test/java/org/eolang/SnippetTestCase.java</file>
        <author>rultor</author>
        <email>me@rultor.com</email>
        <time>2024-02-04T03:39:33Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/2964" closed="2024-03-20T14:13:46+00:00">2964</issue>
        <ticket>2718</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>2718-9c8d7994</id>
        <lines>61-67</lines>
        <body>Two snippets are disabled now, in the "src/test/resources/snippets/*.yaml". The first needs "sprintf" object in objectionary (fibo.yaml). When "sprintf" is in objectionary again - we need to enable it (by removing the "skip" attribute from the YAML file). The second fails with "stackOverflow" exception. Maybe we just need to increase stack size in snippet tests.</body>
        <file>eo-runtime/src/test/java/org/eolang/SnippetTestCase.java</file>
        <author>rultor</author>
        <email>me@rultor.com</email>
        <time>2024-03-18T13:16:48Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/2985" closed="2024-07-17T16:38:36+00:00">2985</issue>
        <ticket>2718</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>2718-91412c50</id>
        <lines>61-65</lines>
        <body>One snippets is disabled now, in the "src/test/resources/snippets/*.yaml". It needs "sprintf" object in objectionary (fibo.yaml). When "sprintf" is in objectionary again - we need to enable it (by removing the "skip" attribute from the YAML file).</body>
        <file>eo-runtime/src/test/java/org/eolang/SnippetTestCase.java</file>
        <author>maxonfjvipon</author>
        <email>mtrunnikov@gmail.com</email>
        <time>2024-03-20T10:26:04Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2736" closed="2024-01-22T08:52:18+00:00">2736</issue>
    <ticket>2526</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2526-e161ffc7</id>
    <lines>1-5</lines>
    <body>Enable the test when it's possible. Such syntax is invalid - scope braces should not be placed on different lines. It happens because of the next sequence of rules: scopeExtended -&gt; happlicationExtended -&gt; happlicationHeadExtended -&gt; vmethod. The sequence allows using of vertical method in the head of scoped horizontal application. It should not be legal. Don't forget to remove the puzzle.</body>
    <file>eo-parser/src/test/resources/org/eolang/parser/typos/vertical-method-in-scope.yaml</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-12-27T04:25:42Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/2806" closed="2024-03-04T14:58:26+00:00">2806</issue>
        <ticket>2736</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>2736-68649196</id>
        <lines>1-4</lines>
        <body>Enable the test when it's possible. Such syntax is invalid - we can't use horizontal method after vertical method. If we decide that we allow such syntax we should add "vmethod" to "hmethodHeadExtended" rule and resolve left recursion violation. Don't forget to remove the puzzle</body>
        <file>eo-parser/src/test/resources/org/eolang/parser/packs/syntax/hmethod-after-vmethod.yaml</file>
        <author>rultor</author>
        <email>me@rultor.com</email>
        <time>2024-01-22T08:29:04Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2737" closed="2023-12-28T04:53:03+00:00">2737</issue>
    <ticket>2729</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>2729-a3e8db24</id>
    <lines>1-6</lines>
    <body>Enable the test when it's possible. Current syntax is not supported now. In our EBNF such is understood as vertical application with 3 arguments. But all arguments in application must be either all bound or not. But it should not be like that with reversed application. Need to extend the grammar and make sure the test works. Test UnphiMojoTest#convertsValidXmirAndParsableEO also does not work because of this. Don't forget to remove the puzzle.</body>
    <file>eo-parser/src/test/resources/org/eolang/parser/packs/syntax/binded-reversed-application.yaml</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2023-12-27T07:21:25Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2750" closed="2024-01-15T10:21:09+00:00">2750</issue>
    <ticket>2729</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2729-2c784c24</id>
    <lines>49-54</lines>
    <body>Xmir samples are not converted successfully. Since we have data only in bytes and after changing 'xmir-to-eo.xsl' many test are not passed anymore. The reason is next: if we have an integer in EO, it's converted to bytes in xmir, then it's converted to bytes in EO. Here we loose information about an integer while program still works the same. Need to either resolve such loosing or just rewrite the test. Previous samples were moved from "org/eolang/parser/xmir-samples" directory to "org/eolang/parser/xmir-samples-wrong"</body>
    <file>eo-parser/src/test/java/org/eolang/parser/XMIRTest.java</file>
    <author>maxonfjvipon</author>
    <email>mtrunnikov@gmail.com</email>
    <time>2023-12-28T12:28:33Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/2779" closed="2024-01-17T14:30:56+00:00">2779</issue>
        <ticket>2750</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>2750-1a6a1697</id>
        <lines>80-82</lines>
        <body>After removing conversion from bytes to value from 'xmir-to-eo.xsl' this test fails. All logic related to bytes conversion was moved to {@link StUnhex} class. Need to fix or remove this test.</body>
        <file>eo-parser/src/test/java/org/eolang/parser/StEoLoggedTest.java</file>
        <author>rultor</author>
        <email>me@rultor.com</email>
        <time>2024-01-15T09:42:58Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/2780" closed="2024-01-16T15:56:31+00:00">2780</issue>
        <ticket>2750</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>2750-54cc3dad</id>
        <lines>51-55</lines>
        <body>Empty bytes in EO ("--") are not converted successfully. The test `org/eolang/parser/xmir-samples-wrong/empty-bytes.eo` fails. Transformation `xmir-to-eo.xsl` need to be fixed. Don't forget to move `empty-bytes.eo` test from `org/eolang/parser/xmir-samples-wrong` to `org/eolang/parser/xmir-samples` after fixing `xmir-to-eo.xsl`.</body>
        <file>eo-parser/src/test/java/org/eolang/parser/XMIRTest.java</file>
        <author>rultor</author>
        <email>me@rultor.com</email>
        <time>2024-01-15T09:42:58Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2786" closed="2024-01-30T03:58:29+00:00">2786</issue>
    <ticket>2758</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2758-5cd83ce5</id>
    <lines>43-47</lines>
    <body>To test that PrintMojo prints EO in different notations depends on given flag. When {@link org.eolang.parser.xmir.XmirReversed} and {@link org.eolang.parser.xmir.Xmir.Default} work correctly and prints xmirs in corresponding notations we need to check that PrintMojo uses them correctly depends on given flag {@link PrintMojo#printReversed}.</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/PrintMojoTest.java</file>
    <author>@maxonfjvipon</author>
    <email>mtrunnikov@gmail.com</email>
    <time>2024-01-16T14:03:44Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2787" closed="2024-01-17T14:04:10+00:00">2787</issue>
    <ticket>2758</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2758-623c133e</id>
    <lines>52-56</lines>
    <body>Implement printing from XMIR to EO in strait notation (where method starts on the next line). It should be done via XSL which should be used in {@link Xmir.Default} object. The next disabled test shows that such implementation does not work now: {@link XmirTest#printsStrait(String)}</body>
    <file>eo-parser/src/test/java/org/eolang/parser/xmir/XmirTest.java</file>
    <author>maxonfjvipon</author>
    <email>mtrunnikov@gmail.com</email>
    <time>2024-01-16T14:03:44Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2807" closed="2024-12-19T11:10:11+00:00">2807</issue>
    <ticket>2660</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2660-113567e5</id>
    <lines>271-275</lines>
    <body>Enable the following integration tests when it's possible. Now they don't work because many .eo files are absent in the objectionary/home repository or can't be successfully parsed because of the syntax changes. Once they are released, the tests should work as is, without any modifications.</body>
    <file>eo-maven-plugin/pom.xml</file>
    <author>@rultor</author>
    <email>me@rultor.com</email>
    <time>2024-01-22T08:29:04Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2818" closed="2024-03-18T13:35:49+00:00">2818</issue>
    <ticket>2785</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>2785-8797cda9</id>
    <lines>164-166</lines>
    <body>Enable this test. For some reason this test fails. The only difference between this test and `iterating-tuple-with-while-using-internal-iterator` is that this test uses external iterator inside instead of standard `i` from `while` body.</body>
    <file>eo-runtime/src/test/eo/org/eolang/bool-tests.eo</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2024-01-26T09:29:23Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2819" closed="2024-03-18T13:35:51+00:00">2819</issue>
    <ticket>2437</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>2437-a4438d7a</id>
    <lines>221-223</lines>
    <body>Enable the test. For some reason this test fails. The only difference between this test and `iterating-tuple-with-while-without-body-multiple` is that in this test tuple consists of only one element.</body>
    <file>eo-runtime/src/test/eo/org/eolang/bool-tests.eo</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2024-01-26T09:29:23Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2825" closed="2024-01-26T16:27:32+00:00">2825</issue>
    <ticket>2610</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2610-95859687</id>
    <lines>1-3</lines>
    <body>Enable the test when PhiMojo supports "copy" syntax. The test is disabled because PhiMojo does not support converting "copy" EO syntax to phi. Need to extend "xmir-to-phi.xsl" and enable the test. Don't forget to remove the puzzle</body>
    <file>eo-maven-plugin/src/test/resources/org/eolang/maven/phi/copy.yaml</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2024-01-26T13:30:38Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2835" closed="2024-02-02T13:28:14+00:00">2835</issue>
    <ticket>921</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>921-d2d334ec</id>
    <lines>51-59</lines>
    <body>Add comment validation. We need to make sure that mandatory comment before abstract object is: starts with a capital letter, ends with a dot, includes only ASCII printable characters (0x20-0x7f), is at least 64 characters long, is in Markdown. It can be done either in {@link XeEoListener#enterCommentMandatory(EoParser.CommentMandatoryContext)} method or {@link XeEoListener#exitCommentMandatory(EoParser.CommentMandatoryContext)} method. I would recommend not to throw an exception but to create a new warning in XMIR if comment is invalid. Pay attention that whole eo-runtime may not built successfully because there are so much code where we must have valid comments (at least 64 symbols length).</body>
    <file>eo-parser/src/main/java/org/eolang/parser/XeEoListener.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2024-02-01T02:57:48Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/2841" closed="2024-02-05T15:51:06+00:00">2841</issue>
        <ticket>2835</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>2835-fdd45ac6</id>
        <lines>52-58</lines>
        <body>Change severity on comments validation. Current severity on comments validation is "warning". We need to change it to "error" to prevent users from ignoring this type of error. But there's a pitfall - there are so many little toy abstract objects in EO tests which we don't really want to document. That's why we should not validate comments if there's "+junit" meta in program. Also "eo-runtime" does not fail on warning now because it's not well documented. After eo-runtime is documented well - we need to turn on "failOnWarning" trigger in pom.xml inside "eo-runtime.</body>
        <file>eo-parser/src/main/java/org/eolang/parser/XeEoListener.java</file>
        <author>maxonfjvipon</author>
        <email>mtrunnikov@gmail.com</email>
        <time>2024-02-01T12:21:59Z</time>
        <children>
          <puzzle alive="false">
            <issue href="https://github.com/objectionary/eo/issues/2860" closed="2024-12-04T05:57:15+00:00">2860</issue>
            <ticket>2841</ticket>
            <estimate>30</estimate>
            <role>DEV</role>
            <id>2841-24b89c01</id>
            <lines>52-55</lines>
            <body>Change severity on comments validation. Current severity on comments validation is "warning". We need to change it to "error" to prevent users from ignoring this type of error. But firstly we have to make "eo-runtime" documented well. After it's done - we need to turn on "failOnWarning" trigger in pom.xml inside "eo-runtime.</body>
            <file>eo-parser/src/main/java/org/eolang/parser/XeEoListener.java</file>
            <author>rultor</author>
            <email>me@rultor.com</email>
            <time>2024-02-05T15:29:16Z</time>
            <children/>
          </puzzle>
        </children>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2836" closed="2024-03-21T17:45:48+00:00">2836</issue>
    <ticket>1698</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>1698-c7207422</id>
    <lines>62-66</lines>
    <body>Make up with an idea how to prevent StackOverflow exception or warn a user if he writes cage into the same cage. Options: 1) xsl file that somehow checks if cage is about to write to the same cage 2) catch StackOverflow exception at the top level and say to the user that maybe he writes cage to the same cage.</body>
    <file>eo-runtime/src/main/eo/org/eolang/cage.eo</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2024-02-01T02:57:48Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/2890" closed="2024-02-27T08:50:03+00:00">2890</issue>
        <ticket>2836</ticket>
        <estimate>60</estimate>
        <role>DEV</role>
        <id>2836-3ac29bfb</id>
        <lines>33-35</lines>
        <body>Add a new parameter of recursion depth. This parameter should be set by user via pom.xml. We can make DATAIZING_CAGES a Map and count how many times the cage was met.</body>
        <file>eo-runtime/src/main/java/org/eolang/PhTracedEnclosure.java</file>
        <author>Yegor Bugayenko</author>
        <email>yegor256@gmail.com</email>
        <time>2024-02-22T08:14:31Z</time>
        <children>
          <puzzle alive="false">
            <issue href="https://github.com/objectionary/eo/issues/2896" closed="2024-05-09T20:23:59+00:00">2896</issue>
            <ticket>2890</ticket>
            <estimate>30</estimate>
            <role>DEV</role>
            <id>2890-c492b9ca</id>
            <lines>53-57</lines>
            <body>Fix this {@link VerifyMojoTest#detectsErrorsSuccessfully} flaky test and enable it. It failed in ci &lt;a href="https://github.com/objectionary/eo/actions/runs/8041230784/job/21960239171?pr=2892"&gt;here&lt;/a&gt; without providing the regex and message. Also may be it would be cleaner to fix error Assertion since now it is hard to get why it failed.</body>
            <file>eo-maven-plugin/src/test/java/org/eolang/maven/VerifyMojoTest.java</file>
            <author>Yegor Bugayenko</author>
            <email>yegor256@gmail.com</email>
            <time>2024-02-27T08:49:50Z</time>
            <children>
              <puzzle alive="false">
                <issue href="https://github.com/objectionary/eo/issues/3181" closed="2025-02-06T12:38:28+00:00">3181</issue>
                <ticket>2896</ticket>
                <estimate>90</estimate>
                <role>DEV</role>
                <id>2896-621330ec</id>
                <lines>45-50</lines>
                <body>Make '@CaptureLogs' thread-safe. 'Logs' should contain only messages related to the test. Currently, '@CaptureLogs' appends all messages that were logged via 'Logger' to 'Logs', so messages from other tests (run in parallel) are also included, which causes problems when tests are run in parallel.</body>
                <file>eo-maven-plugin/src/test/java/org/eolang/maven/log/CaptureLogs.java</file>
                <author>rultor</author>
                <email>me@rultor.com</email>
                <time>2024-05-09T20:02:28Z</time>
                <children/>
              </puzzle>
            </children>
          </puzzle>
        </children>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/2891" closed="2024-04-06T10:05:40+00:00">2891</issue>
        <ticket>2836</ticket>
        <estimate>60</estimate>
        <role>DEV</role>
        <id>2836-88180ad7</id>
        <lines>36-38</lines>
        <body>Make the class thread safe. It has private static field which can be accessed from differ thread and is not thread safe. Needs to synchronize this field.</body>
        <file>eo-runtime/src/main/java/org/eolang/PhTracedEnclosure.java</file>
        <author>Yegor Bugayenko</author>
        <email>yegor256@gmail.com</email>
        <time>2024-02-22T08:14:31Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2837" closed="2024-03-18T13:35:53+00:00">2837</issue>
    <ticket>2437</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2437-9d2cb92f</id>
    <lines>84-87</lines>
    <body>Enable the test. After getting rid of delta attributes in data primitives this test started to execute infinitely long while other tests with "bool.while" are executed without any troubles. Need to find what's the problem and make the test enable again. Don't forget to remove the puzzle.</body>
    <file>eo-runtime/src/test/eo/org/eolang/bool-tests.eo</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2024-02-01T02:57:48Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2844" closed="2024-03-18T13:35:55+00:00">2844</issue>
    <ticket>2566</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>2566-ecbb098f</id>
    <lines>32-35</lines>
    <body>Remove AtComposite class. AtComposite is used only because the style of generated (from EO) java is imperative. We need to make transpilation declarative (for example new PhLocated(new PhWith(new PhMethod(...), ...), ...)) so we would not need AtComposite anymore. Don't forget to remove the puzzle.</body>
    <file>eo-runtime/src/main/java/org/eolang/AtComposite.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2024-02-03T13:45:49Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2866" closed="2024-02-13T10:03:33+00:00">2866</issue>
    <ticket>2864</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2864-e9789074</id>
    <lines>1-3</lines>
    <body>Enable phi test pack. Current test pack is disabled because it fails on UnphiMojoTest#convertsToXmirAndBack because our Phi grammar (Phi.g4) does not support XI without dispatch (see line 77). We need to resolve it and enable test pack.</body>
    <file>eo-maven-plugin/src/test/resources/org/eolang/maven/phi/as-phi.yaml</file>
    <author>maxonfjvipon</author>
    <email>mtrunnikov@gmail.com</email>
    <time>2024-02-06T08:30:11Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2948" closed="2024-03-20T17:17:26+00:00">2948</issue>
    <ticket>2921</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2921-5e2fe8e5</id>
    <lines>26-27</lines>
    <body>Add check if there are atoms, but no +rt meta. It should be illegal. Don't forget to remove the puzzle.</body>
    <file>eo-parser/src/main/resources/org/eolang/parser/errors/rt-without-atom.xsl</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2024-03-15T01:44:30Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2965" closed="2024-03-31T13:23:37+00:00">2965</issue>
    <ticket>2931</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2931-5be4756d</id>
    <lines>48-52</lines>
    <body>Return previous optimizations for the object. The optimization was removed because it does not work with new rho logic. Please check previous version of the object and try to implement it again. Also we need to enable the tuple tests: at-without-checks-with-first-element, at-without-checks-with-last-element</body>
    <file>eo-runtime/src/main/eo/org/eolang/tuple.eo</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2024-03-18T13:16:48Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2966" closed="2024-03-20T16:51:57+00:00">2966</issue>
    <ticket>2931</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2931-d3bfc986</id>
    <lines>35-37</lines>
    <body>Class does not work properly. Also the does not have enough tests. We need to add more, at least for the next methods: toString(), &#x3C6;Term(), copy(), put() and make sure that caching works properly.</body>
    <file>eo-runtime/src/main/java/org/eolang/AtConst.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2024-03-18T13:16:48Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2967" closed="2024-03-20T16:51:59+00:00">2967</issue>
    <ticket>2931</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2931-115b513a</id>
    <lines>31-40</lines>
    <body>Decide if we need this class. Looks like this class is redundant. I believe it was introduced in the days when the {@link Phi} object has method "move" which changes \rho attribute. Now rho attribute is immutable and can't be "moved". So we have to to decide if we need this class anymore. The method {@link PhImmovable#attr(String)} looked like: Attr val = this.origin.attr(attr); if ("&#x3C1;".equals(attr)) { val = new AtFixed(val); return val; Now this code is not compilable, so it was changed.</body>
    <file>eo-runtime/src/main/java/org/eolang/PhImmovable.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2024-03-18T13:16:48Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2968" closed="2024-03-27T16:11:29+00:00">2968</issue>
    <ticket>2931</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2931-88ed55f1</id>
    <lines>30-37</lines>
    <body>Enable or remove bool tests. Object bool.while stopped working properly when \rho attribute became immutable. Need to either remove the tests or refactor and enable them. Tests: iterates-over-simple-counter, complex-bool-expression-in-while, last-while-dataization-object, while-without-last-dataization, last-while-dataization-object-with-false-condition, iterating-tuple-with-while-using-internal-iterator, iterating-tuple-with-while-using-external-iterator, iterating-tuple-with-while-without-body-multiple, iterating-tuple-with-while-without-body-single</body>
    <file>eo-runtime/src/test/eo/org/eolang/bool-tests.eo</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2024-03-18T13:16:48Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2969" closed="2024-03-21T13:47:43+00:00">2969</issue>
    <ticket>2931</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2931-033a49dd</id>
    <lines>30-33</lines>
    <body>Enable cage tests. The tests were disabled because they stopped working when \rho attribute became immutable. Need to find out what's going on and enable them. Tests: infinite-loop-check, dataizes-encaged-object-lazily-third, dataizes-encaged-object-lazily-first</body>
    <file>eo-runtime/src/test/eo/org/eolang/cage-tests.eo</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2024-03-18T13:16:48Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2970" closed="2024-04-01T20:30:10+00:00">2970</issue>
    <ticket>2931</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>2931-6d2befff</id>
    <lines>31-33</lines>
    <body>Enable goto tests. They were fully disabled because they don't work for some reason when \rho attribute became immutable. Need to find out what's wrong and enable all the tests.</body>
    <file>eo-runtime/src/test/eo/org/eolang/goto-tests.eo</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2024-03-18T13:16:48Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2971" closed="2024-03-27T16:11:31+00:00">2971</issue>
    <ticket>2931</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2931-3ba5c573</id>
    <lines>30-33</lines>
    <body>Enable heap tests. The tests were disabled because they stopped working when \rho attribute became immutable. Need to find out what's going on and enable them. Tests: malloc-returns-different-pointers, malloc-return-error, increments-pointer, mallocs-do-not-overlap</body>
    <file>eo-runtime/src/test/eo/org/eolang/heap-tests.eo</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2024-03-18T13:16:48Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2972" closed="2024-03-27T16:11:33+00:00">2972</issue>
    <ticket>2931</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2931-52c9f170</id>
    <lines>31-34</lines>
    <body>Enable runtime tests. The tests were disabled because they stopped working when \rho attribute became immutable. Need to find out what's going on and enable them. Tests: parent-in-vertical-notation, parent-in-horizontal-notation, iterates-over-sigma, refers-to-inner-vars-correctly, recursion-without-arguments, right-way-to-use-hierarchy,</body>
    <file>eo-runtime/src/test/eo/org/eolang/runtime-tests.eo</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2024-03-18T13:16:48Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2973" closed="2024-03-21T18:25:49+00:00">2973</issue>
    <ticket>2931</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>2931-ad3f15a5</id>
    <lines>29-31</lines>
    <body>Enable rust tests. They were fully disabled because they don't work for some reason when \rho attribute became immutable. Need to find out what's wrong and enable all the tests.</body>
    <file>eo-runtime/src/test/eo/org/eolang/rust-tests.eo</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2024-03-18T13:16:48Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2974" closed="2024-03-21T14:13:07+00:00">2974</issue>
    <ticket>2931</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2931-a76712ab</id>
    <lines>30-32</lines>
    <body>Enable try tests. The tests were disabled because they stopped working when \rho attribute became immutable. Need to find out what's going on and enable them. Tests: try-memory-update</body>
    <file>eo-runtime/src/test/eo/org/eolang/try-tests.eo</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2024-03-18T13:16:48Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2975" closed="2024-03-21T13:47:45+00:00">2975</issue>
    <ticket>2931</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2931-aaaff93e</id>
    <lines>56-58</lines>
    <body>Resolve test {@link EOcageTest#evaluatesLazily}. This test stopped working after introducing new rho logic. Need to decide either we can remove the test or we can resolve it somehow.</body>
    <file>eo-runtime/src/test/java/EOorg/EOeolang/EOcageTest.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2024-03-18T13:16:48Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2976" closed="2024-03-25T14:31:11+00:00">2976</issue>
    <ticket>2931</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2931-acb35140</id>
    <lines>53-55</lines>
    <body>Enable the test {@link EOstdoutTest#doesNotPrintTwiceOnFloatComparisonMethods}. The test was disabled after new rho logic was introduced and {@link org.eolang.PhConst} stopped working properly. Need to enable the test when it's possible.</body>
    <file>eo-runtime/src/test/java/EOorg/EOeolang/EOio/EOstdoutTest.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2024-03-18T13:16:48Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2977" closed="2024-03-29T17:14:57+00:00">2977</issue>
    <ticket>2931</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2931-945d1fe5</id>
    <lines>46-48</lines>
    <body>Decide what to do with test {@link EOmemoryTest#comparesOnFly}. The test was disabled because it does not pass after new rho logic was introduced. We need either to delete the test, or resolve it somehow</body>
    <file>eo-runtime/src/test/java/EOorg/EOeolang/EOmemoryTest.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2024-03-18T13:16:48Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2978" closed="2024-05-08T10:04:56+00:00">2978</issue>
    <ticket>2931</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2931-0831d4d9</id>
    <lines>43-44</lines>
    <body>Enable the disabled tests. The tests were disabled after \rho attribute became immutable. Need to find out what's going on and resolve the tests.</body>
    <file>eo-runtime/src/test/java/org/eolang/DataizedTest.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2024-03-18T13:16:48Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2979" closed="2024-05-08T10:29:51+00:00">2979</issue>
    <ticket>2931</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2931-021739d9</id>
    <lines>43-45</lines>
    <body>Enable all disabled test in the class. The tests were disabled because object tupled-stdout.eo was removed from eo-runtime tests because it wasn't working in CI. Need to refactor them and enable</body>
    <file>eo-runtime/src/test/java/org/eolang/MainTest.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2024-03-18T13:16:48Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2980" closed="2024-03-20T16:52:01+00:00">2980</issue>
    <ticket>2931</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>2931-fce5e0d6</id>
    <lines>37-39</lines>
    <body>Enable disabled tests. The tests were disabled because they don't work properly when \rho became immutable. When {@link PhConst} and {@link AtConst} are fixed we need to refactor and enable the disabled tests in the test class.</body>
    <file>eo-runtime/src/test/java/org/eolang/PhConstTest.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2024-03-18T13:16:48Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2981" closed="2024-03-27T16:11:35+00:00">2981</issue>
    <ticket>2931</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2931-daec7a22</id>
    <lines>35-37</lines>
    <body>Enable the test {@link PhMethodTest#calculatesPhiManyTimes}. The test was disabled after \rho attribute became immutable and something changed with attributes caching. Need to either remove the test or refactor and enable it.</body>
    <file>eo-runtime/src/test/java/org/eolang/PhMethodTest.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2024-03-18T13:16:48Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2989" closed="2024-03-27T16:11:37+00:00">2989</issue>
    <ticket>2845</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2845-bf760c3e</id>
    <lines>36-41</lines>
    <body>Use this class to fake \rho attribute when {@link Attr#DELTA} is not an attribute but asset. To remove {@link Attr#DELTA} from attribute, we will need to introduce some {@link Phi} decorator, that would encapsulate origin phi ({@link EOorg.EOeolang.EObytes}) and data (sequence of bytes). But in such case attributes of {@link EOorg.EOeolang.EObytes} should know that their \rho should refer to this decorator, but not instance of {@link EOorg.EOeolang.EObytes}. Here we can use this {@link PhFakeRho}.</body>
    <file>eo-runtime/src/main/java/org/eolang/PhFakeRho.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2024-03-20T16:31:50Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/2999" closed="2024-03-28T08:48:23+00:00">2999</issue>
    <ticket>2931</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2931-aac31418</id>
    <lines>56-58</lines>
    <body>Enable the test {@link OptimizeMojoTest#checksPacks(String)}. The test was disabled because java generation (to-java.xsl) was changed. Need to change .yaml packs and enable the test.</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/OptimizeMojoTest.java</file>
    <author>maxonfjvipon</author>
    <email>mtrunnikov@gmail.com</email>
    <time>2024-03-27T15:24:09Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3000" closed="2024-03-28T15:17:28+00:00">3000</issue>
    <ticket>2931</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2931-910575b0</id>
    <lines>30-32</lines>
    <body>Current implementation of memory is wrong because it stores its data in its attribute. The right implementation would store the data in some global storage with access by some id. Need to implement it and enable all tests that use memory.</body>
    <file>eo-runtime/src/main/eo/org/eolang/memory.eo</file>
    <author>maxonfjvipon</author>
    <email>mtrunnikov@gmail.com</email>
    <time>2024-03-27T15:24:09Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3001" closed="2024-04-03T09:57:38+00:00">3001</issue>
    <ticket>2931</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2931-0ee2db02</id>
    <lines>30-32</lines>
    <body>Enable cage tests. The test were disabled because 1) most probably "EOseq" dataizes its lambda many times in PhDefault.attr method. 2) current implementation of cage is wrong. Need to enable the tests when it's possible.</body>
    <file>eo-runtime/src/test/eo/org/eolang/cage-tests.eo</file>
    <author>maxonfjvipon</author>
    <email>mtrunnikov@gmail.com</email>
    <time>2024-03-27T15:24:09Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3002" closed="2024-04-05T17:31:54+00:00">3002</issue>
    <ticket>2931</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2931-7e7e24f4</id>
    <lines>30-33</lines>
    <body>Enable heap tests. The tests were disabled because they stopped working when \rho attribute became immutable. Need to find out what's going on and enable them. Tests: malloc-returns-different-pointers, malloc-return-error, increments-pointer, mallocs-do-not-overlap, write-and-read-without-error</body>
    <file>eo-runtime/src/test/eo/org/eolang/heap-tests.eo</file>
    <author>maxonfjvipon</author>
    <email>mtrunnikov@gmail.com</email>
    <time>2024-03-27T15:24:09Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/3055" closed="2024-04-06T10:05:40+00:00">3055</issue>
        <ticket>3002</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>3002-687bf80a</id>
        <lines>31-33</lines>
        <body>Enable the test "nested-goto". The test is disabled because top level object (like int, float, goto; which &amp; is package eolang) are not copied when taken. When it's fixed, id inside "go" object should generate new number every time. And "nested-goto" should work.</body>
        <file>eo-runtime/src/test/eo/org/eolang/goto-tests.eo</file>
        <author>rultor</author>
        <email>me@rultor.com</email>
        <time>2024-04-05T17:12:36Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3004" closed="2024-04-01T08:57:22+00:00">3004</issue>
    <ticket>2931</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2931-73a24c24</id>
    <lines>30-32</lines>
    <body>Enable the test calculates-fibonacci-number-with-recursion. The test was disabled because for some reason it executes endlessly. Need to find what's wrong and enable the test.</body>
    <file>eo-runtime/src/test/eo/org/eolang/int-tests.eo</file>
    <author>maxonfjvipon</author>
    <email>mtrunnikov@gmail.com</email>
    <time>2024-03-27T15:24:09Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3005" closed="2024-03-28T15:17:30+00:00">3005</issue>
    <ticket>2931</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2931-9689d2b1</id>
    <lines>30-31</lines>
    <body>Enable memory tests. The tests were disabled because current implementation of memory is wrong. Need to enable the tests when it's fixed.</body>
    <file>eo-runtime/src/test/eo/org/eolang/memory-tests.eo</file>
    <author>maxonfjvipon</author>
    <email>mtrunnikov@gmail.com</email>
    <time>2024-03-27T15:24:09Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3006" closed="2024-04-05T17:31:56+00:00">3006</issue>
    <ticket>2931</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2931-f14b83fe</id>
    <lines>30-32</lines>
    <body>Enable ram tests. The tests were disabled because they stopped work after changing dispatch mechanism. Need to find what's going on and enable the tests: several-slices-ram, writes-integer-to-ram, intersection-writes-in-ram</body>
    <file>eo-runtime/src/test/eo/org/eolang/ram-tests.eo</file>
    <author>maxonfjvipon</author>
    <email>mtrunnikov@gmail.com</email>
    <time>2024-03-27T15:24:09Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3007" closed="2024-03-29T17:14:58+00:00">3007</issue>
    <ticket>2931</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2931-21b6bf5f</id>
    <lines>31-37</lines>
    <body>Enable runtime tests. The tests were disabled because they stopped working when \rho attribute became immutable. Need to find out what's going on and enable them. Tests: parent-in-vertical-notation, parent-in-horizontal-notation, iterates-over-sigma, refers-to-inner-vars-correctly, recursion-without-arguments, right-way-to-use-hierarchy, calculates-only-once-BROKEN, directly-accesses-objects-from-standard-root, directly-accesses-objects-from-root, constant-defends-against-side-effects, makes-shallow-copy, calling-caged-function, standard-root-and-root, rho-of-add-should-not-change</body>
    <file>eo-runtime/src/test/eo/org/eolang/runtime-tests.eo</file>
    <author>maxonfjvipon</author>
    <email>mtrunnikov@gmail.com</email>
    <time>2024-03-27T15:24:09Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3008" closed="2024-04-08T13:36:00+00:00">3008</issue>
    <ticket>2931</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2931-547e6f93</id>
    <lines>29-31</lines>
    <body>Enable rust tests. The tests were disabled because they stopped work after changing attributes dispatch logic. Now every time we "take" attribute - it's copied. So rust is not working because of it anymore. Need to find out what's going on and enable the tests.</body>
    <file>eo-runtime/src/test/eo/org/eolang/rust-tests.eo</file>
    <author>maxonfjvipon</author>
    <email>mtrunnikov@gmail.com</email>
    <time>2024-03-27T15:24:09Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3009" closed="2024-04-01T08:32:57+00:00">3009</issue>
    <ticket>2931</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2931-23de7471</id>
    <lines>30-33</lines>
    <body>Enable the tests. The tests are disabled because 1) most probably "EOseq" dataizes its "body" many times while executing "lambda()" function in PhDefault.java, 2) implementation of "memory" is wrong at the moment. Need to find out what's going on and enable the tests.</body>
    <file>eo-runtime/src/test/eo/org/eolang/seq-tests.eo</file>
    <author>maxonfjvipon</author>
    <email>mtrunnikov@gmail.com</email>
    <time>2024-03-27T15:24:09Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3010" closed="2024-03-30T12:40:15+00:00">3010</issue>
    <ticket>2931</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2931-b54627eb</id>
    <lines>30-32</lines>
    <body>Enable the test switch-with-all-false-cases. For some reason it fails with "Given index is out of tuple bounds". It seems comparison inside "switch" does not work properly Need to find out what's going on and enable the test.</body>
    <file>eo-runtime/src/test/eo/org/eolang/switch-tests.eo</file>
    <author>maxonfjvipon</author>
    <email>mtrunnikov@gmail.com</email>
    <time>2024-03-27T15:24:09Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3011" closed="2024-03-31T16:44:06+00:00">3011</issue>
    <ticket>2931</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2931-5e65ee7f</id>
    <lines>30-32</lines>
    <body>Enable the tests try-memory-update, try-memory-update-catch. The test were disabled because 1) "try" object dataizes body twice 2) implementation of "memory" is wrong. Need to fix it and enable the test.</body>
    <file>eo-runtime/src/test/eo/org/eolang/try-tests.eo</file>
    <author>maxonfjvipon</author>
    <email>mtrunnikov@gmail.com</email>
    <time>2024-03-27T15:24:09Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3012" closed="2024-03-29T17:14:59+00:00">3012</issue>
    <ticket>2931</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2931-4190276f</id>
    <lines>30-31</lines>
    <body>Enable while tests. The tests were disabled because they all use "memory" object that has wrong implementation at the moment. Need to enable the tests when "memory" is ready.</body>
    <file>eo-runtime/src/test/eo/org/eolang/while-tests.eo</file>
    <author>maxonfjvipon</author>
    <email>mtrunnikov@gmail.com</email>
    <time>2024-03-27T15:24:09Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3013" closed="2024-03-30T12:16:55+00:00">3013</issue>
    <ticket>2931</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2931-606d29f8</id>
    <lines>54-57</lines>
    <body>Enable the tests {@link EOstdoutTest#doesNotPrintTwiceOnIntComparisonMethods} and {@link EOstdoutTest#doesNotPrintTwiceOnFloatComparisonMethods}. The tests were disabled after new rho logic was introduced working properly. Need to enable the tests when it's possible.</body>
    <file>eo-runtime/src/test/java/EOorg/EOeolang/EOio/EOstdoutTest.java</file>
    <author>maxonfjvipon</author>
    <email>mtrunnikov@gmail.com</email>
    <time>2024-03-27T15:24:09Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3015" closed="2024-04-09T14:56:48+00:00">3015</issue>
    <ticket>2931</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2931-86a23c6e</id>
    <lines>39-41</lines>
    <body>Enable the tests. The tests were disabled because Universe can't find object. Most probably it's because {@link PhDefault#take(String, Phi)} method makes copy of object before returning. Need to find out what's going on and enable the tests</body>
    <file>eo-runtime/src/test/java/org/eolang/UniverseDefaultTest.java</file>
    <author>maxonfjvipon</author>
    <email>mtrunnikov@gmail.com</email>
    <time>2024-03-27T15:24:09Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3021" closed="2024-04-03T09:57:40+00:00">3021</issue>
    <ticket>2931</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2931-0ed69df1</id>
    <lines>31-34</lines>
    <body>Enable runtime tests. The tests were disabled because they stopped working when \rho attribute became immutable. Need to find out what's going on and enable them. Tests: refers-to-inner-vars-correctly, makes-shallow-copy, calling-caged-function, rho-of-add-should-not-change</body>
    <file>eo-runtime/src/test/eo/org/eolang/runtime-tests.eo</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2024-03-29T16:55:40Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3067" closed="2024-11-10T12:47:50+00:00">3067</issue>
    <ticket>2931</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>2931-58eca492</id>
    <lines>41-47</lines>
    <body>Change the data storage architecture. Current implementation allows the presence of two methods for data manipulations: {@link Data#attach(byte[])} to set data and {@link Data#delta()} to get data; which does not seem to be object oriented. It also requires every object to have reserved place for possible injected data. In our case, every {@link PhDefault} has {@link PhDefault#data} variable. It would be much better to have this data only inside some decorator. The main difficulty here is - child attributes of decorated object should know that their \rho is decorated and contains data.</body>
    <file>eo-runtime/src/main/java/org/eolang/Data.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2024-04-09T15:01:36Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3068" closed="2024-04-10T14:06:50+00:00">3068</issue>
    <ticket>2931</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>2931-cf3a8437</id>
    <lines>30-33</lines>
    <body>Enable the tests: dataizes-encaged-object-lazily-third and dataizes-encaged-object-not-lazily-first. The tests were disabled because current cage implementation is wrong (see: https://github.com/objectionary/eo/issues/3057). We need to enable them when cage is great again.</body>
    <file>eo-runtime/src/test/eo/org/eolang/cage-tests.eo</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2024-04-09T15:01:36Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3120" closed="2024-12-30T05:15:20+00:00">3120</issue>
    <ticket>3115</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>3115-d79bda11</id>
    <lines>38-40</lines>
    <body>Return constant-folding.xsl when it's ready. This optimization was removed from the train because it's not really ready and works only with `bool` object which was removed. We need to make this optimization great again and add to the train.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/optimization/OptTrain.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2024-04-19T14:55:31Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3158" closed="2025-01-29T18:52:17+00:00">3158</issue>
    <ticket>3122</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>3122-0fa0248c</id>
    <lines>40-43</lines>
    <body>Add "Reload" to the test CommitHashesTextTest#isThreadSafe when issue about "Reload" annotation will be solved. We need to reinitialize some static fields of the class before the test will be executed.</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/hash/CommitHashesTextTest.java</file>
    <author>rultor</author>
    <email>me@rultor.com</email>
    <time>2024-05-02T08:42:29Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3162" closed="2024-05-13T15:07:43+00:00">3162</issue>
    <ticket>3092</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>3092-ad9ee9a7</id>
    <lines>261-265</lines>
    <body>Remove filter with "rust-tests.eo". BinarizeMojo does not add rust dependencies to rust-tests after phi-&gt;unphi (see: &lt;a href="https://github.com/objectionary/eo/issues/3145"&gt;this&lt;/a&gt; for details). When it's resolved we need to remove the filter and make sure the snippet test {@link SnippetTestCase#runsTestsAfterPhiAndUnphi(Path)} still works.</body>
    <file>eo-runtime/src/test/java/org/eolang/SnippetTestCase.java</file>
    <author>Max Trunnikov</author>
    <email>mtrunnikov@gmail.com</email>
    <time>2024-05-02T19:04:49Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3176" closed="2024-11-19T15:15:50+00:00">3176</issue>
    <ticket>3147</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>3147-66cbc2c7</id>
    <lines>23-27</lines>
    <body>Make duplicate names catcher more powerful. This test pack is disabled now because names duplication is not caught here. It happens because of "duplicate-names.xsl" thinks that abstract objects in the tests are on the different levels. Syntactically they are, but semantically they're not. So we need to make this duplicate catcher more powerful, enable the test by removing "skip: true" line and make sure it works.</body>
    <file>eo-parser/src/test/resources/org/eolang/parser/packs/catches/catches-conflict-with-auto-name.yaml</file>
    <author>maxonfjvipon</author>
    <email>mtrunnikov@gmail.com</email>
    <time>2024-05-08T08:17:46Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3238" closed="2024-08-07T10:53:26+00:00">3238</issue>
    <ticket>3160</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>3160-4ce0c9ff</id>
    <lines>340-343</lines>
    <body>Enable PMD check for eo-runtime/src/main/java/EOorg package, excluding only those rules that cannot be resolved (PMD.PackageCase, PMD.AvoidDollarSigns). All the others PMD violations should be resolved.</body>
    <file>eo-runtime/pom.xml</file>
    <author>Roman Korostinskiy</author>
    <email>70313618+c71n93@users.noreply.github.com</email>
    <time>2024-06-24T09:00:22Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3239" closed="2024-07-12T11:33:44+00:00">3239</issue>
    <ticket>3160</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>3160-01d3ed77</id>
    <lines>34-38</lines>
    <body>This class requires refactoring. As a result of refactoring you should remove {@code @SuppressWarnings("PMD.GodClass")} from this class and {@code @SuppressWarnings("PMD.CognitiveComplexity")} from {@link BytesOf#shift} method. You can check description of this rules here &lt;a href="https://pmd.github.io/pmd/pmd_rules_java_design"&gt;pmd.github.io&lt;/a&gt;</body>
    <file>eo-runtime/src/main/java/org/eolang/BytesOf.java</file>
    <author>Roman Korostinskiy</author>
    <email>70313618+c71n93@users.noreply.github.com</email>
    <time>2024-06-24T09:00:22Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/3265" closed="2025-02-12T06:07:22+00:00">3265</issue>
        <ticket>3239</ticket>
        <estimate>90</estimate>
        <role>DEV</role>
        <id>3239-50a22f3c</id>
        <lines>33-36</lines>
        <body>Method {@link BytesOf#shift} should be refactored to get rid of {@code @SuppressWarnings("PMD.CognitiveComplexity")} warning. You can check description of this rules here &lt;a href="https://pmd.github.io/pmd/pmd_rules_java_design"&gt;pmd.github.io&lt;/a&gt;</body>
        <file>eo-runtime/src/main/java/org/eolang/BytesRaw.java</file>
        <author>Yegor Bugayenko</author>
        <email>yegor256@gmail.com</email>
        <time>2024-07-12T11:33:36Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3240" closed="2024-08-02T12:36:19+00:00">3240</issue>
    <ticket>3160</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>3160-edcd4ffd</id>
    <lines>196-199</lines>
    <body>This method should be refactored because it has high cognitive complexity and other problems. All {@code @checkstyle} warnings suppression and {@code SuppressWarnings("PMD.WarningName")} annotations for this method should be removed as a result of refactoring.</body>
    <file>eo-runtime/src/main/java/org/eolang/Data.java</file>
    <author>Roman Korostinskiy</author>
    <email>70313618+c71n93@users.noreply.github.com</email>
    <time>2024-06-24T09:00:22Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/objectionary/eo/issues/3262">3262</issue>
    <ticket>3251</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>3251-7a787eb5</id>
    <lines>208-211</lines>
    <body>The object does not work. After moving `list` object to eo-runtime this is the only method which does not work because it's quite hard to implement properly, especially after big changes in EO semantic. We need to get it done and write some tests for it.</body>
    <file>eo-runtime/src/main/eo/org/eolang/structs/list.eo</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2024-07-11T07:32:47Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3266" closed="2025-01-14T18:19:19+00:00">3266</issue>
    <ticket>1249</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>1249-130f8649</id>
    <lines>27-28</lines>
    <body>Add link to corresponding xmir2xmir test here as documentation when such tests arrive. Such tests would describe xsl sense via example of input/output. --&gt;</body>
    <file>eo-maven-plugin/src/main/resources/org/eolang/maven/pre/align-test-classes.xsl</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2024-07-15T10:54:34Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3267" closed="2025-01-14T18:19:20+00:00">3267</issue>
    <ticket>1249</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>1249-cbc24ee5</id>
    <lines>27-28</lines>
    <body>Create xmir2xmir tests. This tests should be represented in yaml file and contain xsls, input(xmir) and output(xmir) sections. Add link to corresponding xmir2xmir test here as documentation --&gt;</body>
    <file>eo-maven-plugin/src/main/resources/org/eolang/maven/pre/remove-high-level-inner-classes.xsl</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2024-07-15T10:54:34Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/objectionary/eo/issues/3269">3269</issue>
    <ticket>3251</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>3251-6874868e</id>
    <lines>105-112</lines>
    <body>Find a way to link hash code and index of key. Right now map is implemented as `tuple` of objects where every element is composition of three entities: hash, key and value. When we try to find an element in hash map by key (K1) we're calculating hash of K1 (H1) and trying to find the entity where `entity.hash` (H2) is equal to H1. This search is implemented by simple reducing initial hash map `tuple` and obviously slow - O(n). We need to find a way to get a right index of entity in hash map</body>
    <file>eo-runtime/src/main/eo/org/eolang/structs/map.eo</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2024-07-15T12:39:54Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3277" closed="2024-08-06T11:09:57+00:00">3277</issue>
    <ticket>3251</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>3251-af1f04ef</id>
    <lines>313-315</lines>
    <body>Implement text.replaced object. This object was an atom in eo-strings. Maybe there's a way to implement it in pure EO. Don't remember to write some tests when object is implemented.</body>
    <file>eo-runtime/src/main/eo/org/eolang/txt/text.eo</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2024-07-17T16:38:26Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3298" closed="2024-12-20T14:14:24+00:00">3298</issue>
    <ticket>2251</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>2251-77d37465</id>
    <lines>54-57</lines>
    <body>It is necessary to call {@link ThreadLocal#remove()} on {@link Dataized#LEVEL} variables to prevent memory leaks. We should either find a place where this variable can be removed, or, if this is not possible (see https://github.com/objectionary/eo/pull/1930), come up with another solution.</body>
    <file>eo-runtime/src/main/java/org/eolang/Dataized.java</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2024-07-29T11:50:26Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3299" closed="2024-12-20T14:14:27+00:00">3299</issue>
    <ticket>2251</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>2251-f49f0da1</id>
    <lines>64-67</lines>
    <body>It is necessary to call {@link ThreadLocal#remove()} on {@link Dataized#MAX_LEVEL} variables to prevent memory leaks. We should either find a place where this variable can be removed, or, if this is not possible (see https://github.com/objectionary/eo/pull/1930), come up with another solution.</body>
    <file>eo-runtime/src/main/java/org/eolang/Dataized.java</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2024-07-29T11:50:26Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3300" closed="2025-07-25T08:21:53+00:00">3300</issue>
    <ticket>2251</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>2251-4b006ee2</id>
    <lines>65-68</lines>
    <body>It is necessary to call {@link ThreadLocal#remove()} on {@link PhDefault#NESTING} to prevent memory leaks. We should either find a place where this variable can be removed, or, if this is not possible (see https://github.com/objectionary/eo/pull/1930), come up with another solution.</body>
    <file>eo-runtime/src/main/java/org/eolang/PhDefault.java</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2024-07-29T11:50:26Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3301" closed="2024-11-28T11:23:32+00:00">3301</issue>
    <ticket>2251</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>2251-bb889cd1</id>
    <lines>50-53</lines>
    <body>It is necessary to call {@link ThreadLocal#remove()} on {@link PhTraced#DATAIZING_CAGES} to prevent memory leaks. We should either find a place where this variable can be removed, or, if this is not possible (see https://github.com/objectionary/eo/pull/1930), come up with another solution.</body>
    <file>eo-runtime/src/main/java/org/eolang/PhTraced.java</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2024-07-29T11:50:26Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3405" closed="2024-10-02T21:41:31+00:00">3405</issue>
    <ticket>3251</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>3251-9f4c4d84</id>
    <lines>67-68</lines>
    <body>Enable the tests for windows. For some reason socket tests for windows are flaky. We need to deal with them somehow and enable.</body>
    <file>eo-runtime/src/test/java/EOorg/EOeolang/EOnet/EOsocketTest.java</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2024-10-01T14:13:40Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3483" closed="2024-11-20T12:21:43+00:00">3483</issue>
    <ticket>2931</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>2931-78329da5</id>
    <lines>40-46</lines>
    <body>Change the data storage architecture. Current implementation allows the presence of two methods for data manipulations: {@link Data#attach(byte[])} to set data and {@link Data#delta()} to get data; which does not seem to be object oriented. It also requires every object to have reserved place for possible injected data. In our case, every {@link PhDefault} has {@code PhDefault#data} variable. It would be much better to have this data only inside some decorator. The main difficulty here is - child attributes of decorated object should know that their \rho is decorated and contains data.</body>
    <file>eo-runtime/src/main/java/org/eolang/Data.java</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2024-11-10T12:47:41Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/3524" closed="2024-11-23T16:21:28+00:00">3524</issue>
        <ticket>3483</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>3483-eeb6b457</id>
        <lines>57-59</lines>
        <body>Enable the integration tests. {@link SnippetIT} and {@link PhiUnphiIT} were disabled because some break changes in eo-runtime were introduced. When new version of EO is released the tests must be enabled by removing {@code Assumptions.assumeTrue}.</body>
        <file>eo-runtime/src/test/java/integration/SnippetIT.java</file>
        <author>Yegor Bugayenko</author>
        <email>yegor256@gmail.com</email>
        <time>2024-11-20T12:21:34Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3600" closed="2025-04-18T13:46:55+00:00">3600</issue>
    <ticket>3529</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>3529-9b0a7ab0</id>
    <lines>64-66</lines>
    <body>Enable the Sodg packs. The next Sodg packs were disabled when we got rid of "abstract" attribute in XMIR: copy-of-abstract, copy-of-argument, dot-on-ref, nested-anonymous, rho, vars. We need to enable them and make sure they pass.</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/SodgMojoTest.java</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2024-12-04T05:57:05Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3601" closed="2025-03-28T06:21:57+00:00">3601</issue>
    <ticket>3529</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>3529-702b7a20</id>
    <lines>67-69</lines>
    <body>Enable the test {@link SodgMojoTest#transformsThroughSheets}. The test was disabled when we got rid of "abstract" attribute in XMIR. We need to enable the test and make sure it works correctly.</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/SodgMojoTest.java</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2024-12-04T05:57:05Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3706" closed="2024-12-23T16:59:17+00:00">3706</issue>
    <ticket>3332</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>3332-e91c74c1</id>
    <lines>87-90</lines>
    <body>Add more specific error messages. Currently we write just "error: no viable alternative at input" for all errors. It's better to use 'Recognizer&lt;?, ?&gt; recognizer' parameter of the current method to retrieve more specific error messages.</body>
    <file>eo-parser/src/main/java/org/eolang/parser/ParsingErrors.java</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2024-12-19T10:16:28Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/3714" closed="2024-12-20T13:46:04+00:00">3714</issue>
        <ticket>3706</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>3706-fc151a0d</id>
        <lines>53-57</lines>
        <body>Fix the the name of the TAB token. Currently {@link EoIndentLexer} emits TAB token with the name 'ZERO' instead of 'TAB'. Fix the lexer to emit TAB token with the correct name. This problem affects lexer error messages. When this issue is fixed, remove the @Disabled annotation from the test.</body>
        <file>eo-parser/src/test/java/org/eolang/parser/EoIndentLexerTest.java</file>
        <author>Yegor Bugayenko</author>
        <email>yegor256@gmail.com</email>
        <time>2024-12-20T11:39:50Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/3715" closed="2024-12-20T13:46:05+00:00">3715</issue>
        <ticket>3706</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>3706-d005da96</id>
        <lines>72-76</lines>
        <body>Fix the the name of the UNTAB token. Currently {@link EoIndentLexer} emits UNTAB token with the name 'INT' instead of 'UNTAB'. Fix the lexer to emit UNTAB token with the correct name. This problem affects lexer error messages. When this issue is fixed, remove the @Disabled annotation from the test.</body>
        <file>eo-parser/src/test/java/org/eolang/parser/EoIndentLexerTest.java</file>
        <author>Yegor Bugayenko</author>
        <email>yegor256@gmail.com</email>
        <time>2024-12-20T11:39:50Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/3742" closed="2024-12-25T07:49:05+00:00">3742</issue>
        <ticket>3706</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>3706-8f2012b6</id>
        <lines>49-52</lines>
        <body>Split {@link ParsingErrors} into two classes. Currently we use the same {@link ParsingErrors} class to accumulate all the parsing errors despite their origin. This class should be split into two classes: one for parsing errors {@link ParserErrors} and another for lexer errors {@link LexerErrors}.</body>
        <file>eo-parser/src/main/java/org/eolang/parser/ParsingErrors.java</file>
        <author>Yegor Bugayenko</author>
        <email>yegor256@gmail.com</email>
        <time>2024-12-23T16:58:54Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/3743" closed="2024-12-26T15:04:37+00:00">3743</issue>
        <ticket>3706</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>3706-9d5eb2d7</id>
        <lines>24-26</lines>
        <body>Add exact location of the error in the message. This message is already quite clear, but it would be better if it included the exact location of the error.</body>
        <file>eo-parser/src/test/resources/org/eolang/parser/eo-typos/broken-binding.yaml</file>
        <author>Yegor Bugayenko</author>
        <email>yegor256@gmail.com</email>
        <time>2024-12-23T16:58:54Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/3744" closed="2025-01-17T08:26:06+00:00">3744</issue>
        <ticket>3706</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>3706-4f05a2bf</id>
        <lines>24-26</lines>
        <body>The error message doesn't highlight the exact position of the comment. The error message should be updated to point to the exact position of the comment.</body>
        <file>eo-parser/src/test/resources/org/eolang/parser/eo-typos/comment-in-method.yaml</file>
        <author>Yegor Bugayenko</author>
        <email>yegor256@gmail.com</email>
        <time>2024-12-23T16:58:54Z</time>
        <children>
          <puzzle alive="false">
            <issue href="https://github.com/objectionary/eo/issues/3828" closed="2025-03-20T07:46:19+00:00">3828</issue>
            <ticket>3744</ticket>
            <estimate>30</estimate>
            <role>DEV</role>
            <id>3744-d585f4a6</id>
            <lines>74-77</lines>
            <body>Simplify {@link EoParserErrors#syntaxError} method. The method is too complex and has a high cognitive complexity. We need to simplify it. Don't forget to remove the @checkstyle CyclomaticComplexityCheck annotation and the @SuppressWarnings("PMD.CognitiveComplexity") annotation.</body>
            <file>eo-parser/src/main/java/org/eolang/parser/EoParserErrors.java</file>
            <author>Yegor Bugayenko</author>
            <email>yegor256@gmail.com</email>
            <time>2025-01-17T08:25:58Z</time>
            <children/>
          </puzzle>
          <puzzle alive="true">
            <issue href="https://github.com/objectionary/eo/issues/3829">3829</issue>
            <ticket>3744</ticket>
            <estimate>60</estimate>
            <role>DEV</role>
            <id>3744-555f5b8f</id>
            <lines>24-26</lines>
            <body>Error Message Duplicates. As you can see, we have multiple error messages that are the same. We should remove duplicates and keep only meaningful error messages.</body>
            <file>eo-parser/src/test/resources/org/eolang/parser/eo-typos/two-spaces.yaml</file>
            <author>Yegor Bugayenko</author>
            <email>yegor256@gmail.com</email>
            <time>2025-01-17T08:25:58Z</time>
            <children/>
          </puzzle>
        </children>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/3745" closed="2025-03-20T13:52:13+00:00">3745</issue>
        <ticket>3706</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>3706-29423e3e</id>
        <lines>24-27</lines>
        <body>Cryptic error message is returned Cryptic error message is returned when there are two empty lines between metas. The error message should be more informative and should highlight the exact location of the error.</body>
        <file>eo-parser/src/test/resources/org/eolang/parser/eo-typos/double-empty-lines.yaml</file>
        <author>Yegor Bugayenko</author>
        <email>yegor256@gmail.com</email>
        <time>2024-12-23T16:58:54Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/3746" closed="2025-01-25T18:49:55+00:00">3746</issue>
        <ticket>3706</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>3706-fb7fb741</id>
        <lines>24-28</lines>
        <body>Unreadable error message if program declaration is invalid. Improve error message for the case when a program declaration is invalid. The error message should be more informative and should point to the exact place in the input where the error occurred. Moreover it should be clear what to do to fix the error. 'simple-application-named.yaml' has the same issue.</body>
        <file>eo-parser/src/test/resources/org/eolang/parser/eo-typos/redundant-parentheses/simple-application.yaml</file>
        <author>Yegor Bugayenko</author>
        <email>yegor256@gmail.com</email>
        <time>2024-12-23T16:58:54Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/3851" closed="2025-03-21T11:32:00+00:00">3851</issue>
        <ticket>3706</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>3706-5c197f92</id>
        <lines>24-28</lines>
        <body>Unreadable error message if program declaration is invalid. Improve error message for the case when a program declaration is invalid. The error message should be more informative and should point to the exact place in the input where the error occurred. Moreover xml should be clear what to do to fix the error. 'simple-application-named.yaml' has the same issue.</body>
        <file>eo-parser/src/test/resources/org/eolang/parser/eo-typos/redundant-parentheses/simple-application.yaml</file>
        <author>Yegor Bugayenko</author>
        <email>yegor256@gmail.com</email>
        <time>2025-01-25T18:49:31Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3707" closed="2024-12-25T07:49:06+00:00">3707</issue>
    <ticket>3332</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>3332-fa5220a9</id>
    <lines>43-45</lines>
    <body>Add more decorators for the error message. For example, {@link ParsingErrors} currently contains logic related to the message formatting. It's better to create a separate class for this purpose.</body>
    <file>eo-parser/src/main/java/org/eolang/parser/UnderlinedMessage.java</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2024-12-19T10:16:28Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3756" closed="2024-12-26T07:47:25+00:00">3756</issue>
    <ticket>3332</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>3332-6fa7c070</id>
    <lines>43-45</lines>
    <body>Add more decorators for the error message. For example, {@link GeneralErrors} currently contains logic related to the message formatting. It's better to create a separate class for this purpose.</body>
    <file>eo-parser/src/main/java/org/eolang/parser/UnderlinedMessage.java</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2024-12-25T07:48:41Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3782" closed="2025-02-05T21:01:40+00:00">3782</issue>
    <ticket>2406</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>2406-a7fa785a</id>
    <lines>42-52</lines>
    <body>Make up with idea how to get rid of duplicate parameters between mojos. There's a situation where AssembleMojo owns, creates and executes other mojos, like {@link ParseMojo} or {@link ShakeMojo}. When we configure our compiler via pom.xml maven tries to set parameters directly to the calling mojo. That's why we must to have all parameters from child mojos in AssembleMojo or {@link SafeMojo} (in order they won't be skipped and lost). That causes duplication of parameters between "parent" mojo and "child" mojos. Also it obliges the developer to remember that if he adds new parameter to some child mojo, this parameter must be present in parent mojo as well. We didn't find a way how we can resolve such duplication at the moment. So we need to either accept this as impossible to solve or resolve somehow. Anyway don't forget to remove the puzzle when the decision about the puzzle is made.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/AssembleMojo.java</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2024-12-30T05:14:53Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3804" closed="2025-07-26T04:31:45+00:00">3804</issue>
    <ticket>3708</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>3708-dc6420f7</id>
    <lines>54-56</lines>
    <body>Remove @Disabled annotation on {@code PhiMojoTest.usesCache()} and {@code PhiMojoTest.invalidatesCache()} when cache is implemented, check that tests is valid otherwise fix them.</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/PhiMojoTest.java</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2025-01-10T14:01:58Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3806" closed="2025-04-08T16:13:52+00:00">3806</issue>
    <ticket>3708</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>3708-52994f4a</id>
    <lines>69-71</lines>
    <body>Remove @Disabled annotation on {@code UnphiMojoTest.usesCache()} and {@code UnphiMojoTest.invalidatesCache()} when cache is implemented, check that tests is valid otherwise fix them if needed.</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/UnphiMojoTest.java</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2025-01-10T14:28:44Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3814" closed="2025-01-29T18:52:19+00:00">3814</issue>
    <ticket>3481</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>3481-02ddf8e7</id>
    <lines>35-38</lines>
    <body>Remove all +unlit broken-ref from EO source code. These suppressions were added in order to be compile EO when @ref attribute from XMIR is removed, by it's checked by LintMojo. We need to remove these suppressions when `lints` repository is fixed and new version is used in EO.</body>
    <file>eo-runtime/src/main/eo/org/eolang/txt/text.eo</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2025-01-14T18:18:53Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3815" closed="2025-02-09T17:21:30+00:00">3815</issue>
    <ticket>3481</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>3481-e9fa64ec</id>
    <lines>43-46</lines>
    <body>Enable the test. The test was disabled because it's became a bit irrelevant when we got rid of @ref attributes and "abstract-float-up.xsl" transformation. We got a much less amount of generated classes after translation to java. So we need to refactor the test and enable it.</body>
    <file>eo-runtime/src/test/java/org/eolang/XmirObjectTest.java</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2025-01-14T18:18:53Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3869" closed="2025-02-09T11:42:08+00:00">3869</issue>
    <ticket>3481</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>3481-afe7d026</id>
    <lines>39-42</lines>
    <body>Remove all +unlit metas from EO source code. These suppressions were added in order to be compile EO when @ref attribute from XMIR is removed, by it's checked by LintMojo. We need to remove these suppressions when `lints` repository is fixed and new version is used in EO.</body>
    <file>eo-runtime/src/main/eo/org/eolang/txt/text.eo</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2025-01-29T18:51:53Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3965" closed="2025-03-03T09:32:37+00:00">3965</issue>
    <ticket>3934</ticket>
    <estimate>35</estimate>
    <role>DEV</role>
    <id>3934-624dfb80</id>
    <lines>260-263</lines>
    <body>Remove .without() from Program to enable `unknown-metas` and `unsorted-metas` lints. Currently we disabled them since lints does not support `+spdx` meta yet. Once &lt;a href="https://github.com/objectionary/lints/issues/354"&gt;this&lt;/a&gt; issue will be resolved, we should enable all lints.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/LintMojo.java</file>
    <author>Max Trunnikov</author>
    <email>mtrunnikov@gmail.com</email>
    <time>2025-02-27T11:06:15Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3974" closed="2025-04-25T16:43:56+00:00">3974</issue>
    <ticket>3648</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>3648-8639da36</id>
    <lines>22-26</lines>
    <body>Remove all `+unlint rt-without-atoms`, `+unlint empty-object` and `+unlit decorated-formation` metas from `eo-runtime`. These metas were added after we removed `@atom` attribute from XMIR. Now atoms have empty object with greek lambda as `@name` attribute. When these changes are fixed in `lints` repository we should update its version and remove all the possible `+unlint` metas.</body>
    <file>eo-runtime/src/main/eo/org/eolang/try.eo</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2025-03-01T23:03:29Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3979" closed="2025-04-08T07:30:01+00:00">3979</issue>
    <ticket>3977</ticket>
    <estimate>25</estimate>
    <role>DEV</role>
    <id>3977-b0b77e29</id>
    <lines>262-265</lines>
    <body>Enable `unlint-non-existing-defect` lint. Currently its disabled because of &lt;a href="https://github.com/objectionary/lints/issues/385"&gt;this&lt;/a&gt; bug. Once issue will be resolved, we should enable this lint. Don't forget to enable this lint in WPA scope too.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/LintMojo.java</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2025-03-03T09:32:13Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/3999" closed="2025-03-14T12:04:24+00:00">3999</issue>
    <ticket>3199</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>3199-e3cbf625</id>
    <lines>27-32</lines>
    <body>Enable PhiUnphiIT. The test was disabled because tuples are converted to EO incorrectly after phi-unphi. The key problem is recursive representation of tuples via tuple.with method. It should be done via simple application of tuple like it was done before, but with calculated length. Check the disabled org/eolang/parser/eo-packs/print/tuples-of-tuples-to-stars.yaml pack in eo-parser module.</body>
    <file>eo-runtime/src/test/java/integration/PhiUnphiIT.java</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2025-03-13T10:25:37Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4032" closed="2025-03-24T14:46:18+00:00">4032</issue>
    <ticket>3807</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>3807-d42fd5a2</id>
    <lines>4-10</lines>
    <body>XMIR format for bytes with data should be fixed. Current representation of org.eolang.bytes with data in XMIR is wrong, we miss one anonymous abstract object. When we add the missing anonymous abstract object, we should remove the `skip` property from this test. The same should be done for the test `bytes-in-number-with-anonymous-object.yaml` and `bytes-in-string-with-anonymous-object.yaml`.</body>
    <file>eo-parser/src/test/resources/org/eolang/parser/eo-syntax/bytes-with-anonymous-object.yaml</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2025-03-22T06:05:26Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/4036" closed="2025-04-10T02:21:55+00:00">4036</issue>
        <ticket>4032</ticket>
        <estimate>90</estimate>
        <role>DEV</role>
        <id>4032-7915ceda</id>
        <lines>23-27</lines>
        <body>Remove the {@link StFlatBytes} usage from all the possible places. Currently we use this class to hide a problem with the XMIR of bytes. Some of the transformations were designed to work with the old XMIR format, where bytes were represented just as sequence of bytes within a 'Q.org.eolang.bytes' object. Now we have an abstract object that "wraps" the sequence of bytes.</body>
        <file>eo-parser/src/main/java/org/eolang/parser/StFlatBytes.java</file>
        <author>@yegor256</author>
        <email>yegor256@gmail.com</email>
        <time>2025-03-24T14:45:54Z</time>
        <children>
          <puzzle alive="false">
            <issue href="https://github.com/objectionary/eo/issues/4039" closed="2025-04-03T12:47:13+00:00">4039</issue>
            <ticket>4036</ticket>
            <estimate>30</estimate>
            <role>DEV</role>
            <id>4036-c4c6c9ca</id>
            <lines>268-272</lines>
            <body>Ebable `object-has-data` lint. This lint doesn't work properly with the current implementation of bytes representation. We need to fix this lint and enable it. Check the progress of the issue &lt;a href="https://github.com/objectionary/lints/issues/432"&gt;here&lt;/a&gt;</body>
            <file>eo-maven-plugin/src/main/java/org/eolang/maven/LintMojo.java</file>
            <author>@yegor256</author>
            <email>yegor256@gmail.com</email>
            <time>2025-03-26T01:55:34Z</time>
            <children>
              <puzzle alive="false">
                <issue href="https://github.com/objectionary/eo/issues/4065" closed="2025-04-25T16:43:58+00:00">4065</issue>
                <ticket>4039</ticket>
                <estimate>30</estimate>
                <role>DEV</role>
                <id>4039-0979b15e</id>
                <lines>276-280</lines>
                <body>Enable `inconsistent-args` lint. This lint generates many errors during the compilation of eo-runtime. We need to fix the errors in eo-runtime and enable this lint. Don't forget to enable this lint in {@link #lintAll(ConcurrentHashMap)} method as well.</body>
                <file>eo-maven-plugin/src/main/java/org/eolang/maven/MjLint.java</file>
                <author>@yegor256</author>
                <email>yegor256@gmail.com</email>
                <time>2025-04-03T12:46:50Z</time>
                <children/>
              </puzzle>
              <puzzle alive="false">
                <issue href="https://github.com/objectionary/eo/issues/4066" closed="2025-04-04T09:30:33+00:00">4066</issue>
                <ticket>4039</ticket>
                <estimate>30</estimate>
                <role>DEV</role>
                <id>4039-be680e00</id>
                <lines>313-318</lines>
                <body>Remove 'distinctByKey' method. We specifically added to the method to remove duplicates from the `defects` list generated by the {@link Program} class. There is the issue with duplicated error reports: https://github.com/objectionary/lints/issues/451 When this issue will be resolved, we should remove this method.</body>
                <file>eo-maven-plugin/src/main/java/org/eolang/maven/MjLint.java</file>
                <author>@yegor256</author>
                <email>yegor256@gmail.com</email>
                <time>2025-04-03T12:46:50Z</time>
                <children/>
              </puzzle>
            </children>
          </puzzle>
          <puzzle alive="false">
            <issue href="https://github.com/objectionary/eo/issues/4040" closed="2025-04-18T13:46:56+00:00">4040</issue>
            <ticket>4036</ticket>
            <estimate>90</estimate>
            <role>DEV</role>
            <id>4036-7af26ccb</id>
            <lines>4-7</lines>
            <body>Repair 'inclusions' test for Sodg. We disabled this test because it was failing due new bytes representation with one extra abstract object. We need to fix the transformation and re-enable this test.</body>
            <file>eo-maven-plugin/src/test/resources/org/eolang/maven/sodgs/inclusions.yaml</file>
            <author>@yegor256</author>
            <email>yegor256@gmail.com</email>
            <time>2025-03-26T01:55:34Z</time>
            <children/>
          </puzzle>
        </children>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/objectionary/eo/issues/4042">4042</issue>
    <ticket>3807</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>3807-14468705</id>
    <lines>80-85</lines>
    <body>Refactor EoSyntax transformations to make them less coupled. Currently most of these transformations are strongly coupled. For example, `stars-to-tuples`, `StHex` and `explicit-data` are dependent on each other. Moreover, the order of transformations matters. We need to refactor these transformations to make them more independent and order-agnostic if possible.</body>
    <file>eo-parser/src/main/java/org/eolang/parser/EoSyntax.java</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2025-03-27T05:37:35Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4043" closed="2025-04-08T15:28:43+00:00">4043</issue>
    <ticket>3807</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>3807-d56de9db</id>
    <lines>86-91</lines>
    <body>Remove `explicit-data` transformation. we can try to remove explicit-data.xsl because we can generate the proper structure with data (with inner 'o' element) everywhere right away, without relaying on future transformations. This issue comes from this comment: https://github.com/objectionary/eo/pull/4041/files#r2014131951</body>
    <file>eo-parser/src/main/java/org/eolang/parser/EoSyntax.java</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2025-03-27T05:37:35Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4046" closed="2025-04-18T13:46:58+00:00">4046</issue>
    <ticket>3529</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>3529-de0949ce</id>
    <lines>46-48</lines>
    <body>Enable the test {@link MjSodgTest#transformsThroughSheets}. The test was disabled when we got rid of "abstract" attribute in XMIR. We need to enable the test and make sure it works correctly.</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/MjSodgTest.java</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2025-03-28T06:21:32Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4052" closed="2025-05-27T07:50:31+00:00">4052</issue>
    <ticket>4049</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>4049-1efde77d</id>
    <lines>29-33</lines>
    <body>Replace all occurrences of new XMLDocument().nodes() with new Xnav().path(). Right now we don't use {@link XMLDocument#nodes(String)} and {@link XMLDocument#xpath(String)} in production code, we got rid of it and replaced with {@link Xnav#path(String)} and {@link Xnav#element(String)}. But we didn't do it in the tests. Let's do it, it should increase the performance of our tests and make our code more consistent.</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/MjLintTest.java</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2025-03-29T01:21:54Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/4213" closed="2025-07-01T14:52:57+00:00">4213</issue>
        <ticket>4052</ticket>
        <estimate>35</estimate>
        <role>DEV</role>
        <id>4052-dcd5b33c</id>
        <lines>45-49</lines>
        <body>Replace usage of XML.nodes() with Xnav.path(). For now, in {@link MjUnphiTest#checksUnphiPacks} we still use {@link XML#nodes(String)}, and cannot replace it with more faster alternative from Xnav, because of &lt;a href="https://github.com/volodya-lombrozo/xnav/issues/118"&gt;this&lt;/a&gt; issue. When it will be resolved, replace the usage to Xnav method.</body>
        <file>eo-maven-plugin/src/test/java/org/eolang/maven/MjUnphiTest.java</file>
        <author>Yegor Bugayenko</author>
        <email>yegor256@gmail.com</email>
        <time>2025-05-27T07:50:07Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/4214" closed="2025-08-28T11:57:54+00:00">4214</issue>
        <ticket>4052</ticket>
        <estimate>35</estimate>
        <role>DEV</role>
        <id>4052-bf7e56dd</id>
        <lines>41-44</lines>
        <body>Replace XML.xpath() with Xnav.path(). Currently, in {@link EoSyntaxTest#checksTypoPacks} its blocked by attribute parsing issue in Xnav. Please check &lt;a href="https://github.com/volodya-lombrozo/xnav/issues/119"&gt;this&lt;/a&gt; issue for more details. Once it will be resolved, we should proceed with the replacement.</body>
        <file>eo-parser/src/test/java/org/eolang/parser/EoSyntaxTest.java</file>
        <author>Yegor Bugayenko</author>
        <email>yegor256@gmail.com</email>
        <time>2025-05-27T07:50:07Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4079" closed="2025-04-10T02:23:07+00:00">4079</issue>
    <ticket>3731</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>3731-87a797b8</id>
    <lines>3-8</lines>
    <body>Implement decorating for methods. Right now +decorate meta works only with objects which @base contains FQN, like `Q.org.eolang.string`. We get such @base when we write just `string` in EO and `add-default-package.xsl` appends `Q.org.eolang.` prefix to the @base. When we write `Q.org.eolang.string` in EO, it will look like sequence of applications of methods in XSL: `.string (.eolang (.org Q))`. In such case `decorate.xsl` does not work but it must. Don't forget to enable this pack and make sure it works</body>
    <file>eo-parser/src/test/resources/org/eolang/parser/eo-packs/parse/decorate-fqn.yaml</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2025-04-08T15:28:19Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4094" closed="2025-04-25T16:44:00+00:00">4094</issue>
    <ticket>3919</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>3919-8ccccde3</id>
    <lines>35-39</lines>
    <body>Enable {@link MjLintTest} and {@link MjLintIT}. The tests were disabled because we've significantly changed the structure of XMIR. That's why all the lint cases in objectionary/lints don't catch defects properly anymore. We need to fix them first, then release a new version, then update it here, enable {@link MjLintTest} and set {@code skipLinting} flag in eo-runtime/pom.xml in qulice profile configuration to {@code false}.</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/MjLintTest.java</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2025-04-15T14:34:49Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4095" closed="2025-04-25T16:44:02+00:00">4095</issue>
    <ticket>3919</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>3919-523039ff</id>
    <lines>30-32</lines>
    <body>Enable the tests for {@link StrictXmir}. The tests were disabled because XMIR.xsd was significantly changed and new version is not uploaded. When the new release of EO is made and new XMIR.xsd is uploaded - the tests should pass.</body>
    <file>eo-parser/src/test/java/org/eolang/parser/StrictXmirTest.java</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2025-04-15T14:34:49Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4126" closed="2025-05-20T10:37:35+00:00">4126</issue>
    <ticket>4096</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>4096-400bf40b</id>
    <lines>29-31</lines>
    <body>Transpile object tree under test attribute into separate Java `*Test` class with the unit test to be run. Currently, we transpile all `o` into Java tests, while we should touch only newly introduced test attributes - (`o` with @name that starts with `+`).</body>
    <file>eo-parser/src/main/java/org/eolang/parser/XeEoListener.java</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2025-05-02T07:57:58Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4127" closed="2025-05-20T10:37:36+00:00">4127</issue>
    <ticket>4096</ticket>
    <estimate>35</estimate>
    <role>DEV</role>
    <id>4096-07e9b334</id>
    <lines>32-35</lines>
    <body>Handle name translation from test attribute starts with `+` to Java test method. Now, we receiving `invalid method declaration;` when compiling transpiled Java tests, so we need to adjust name translation. After this will be fixed, don't forget to move all EO tests from `eo-runtime` to new test syntax.</body>
    <file>eo-parser/src/main/java/org/eolang/parser/XeEoListener.java</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2025-05-02T07:57:58Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/4151" closed="2025-05-25T10:23:08+00:00">4151</issue>
        <ticket>4127</ticket>
        <estimate>45</estimate>
        <role>DEV</role>
        <id>4127-a516f4d4</id>
        <lines>27-30</lines>
        <body>Enable `runsAfterPhiAndUnphi` test after resolving `+` test syntax. For now, in EO test sources, when we use `+` syntax in test attributes, we getting `'no viable alternative at input 'org()&#x21A6;&#x27E6;eolang()&#x21A6;&#x27E6;foo()&#x21A6;&#x27E6;foo-tests()&#x21A6;&#x27E6;+''`. We should resolve it in PHI. Once it will be fixed, enable this test.</body>
        <file>eo-runtime/src/test/java/integration/PhiUnphiIT.java</file>
        <author>Yegor Bugayenko</author>
        <email>yegor256@gmail.com</email>
        <time>2025-05-08T08:28:53Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/objectionary/eo/issues/4155">4155</issue>
    <ticket>4148</ticket>
    <estimate>35</estimate>
    <role>DEV</role>
    <id>4148-73985a42</id>
    <lines>231-234</lines>
    <body>Enable `unused-void-attr` lint. We should enable this lint after the following issue with magic voids will be resolved: https://github.com/objectionary/lints/issues/574. Don't forget to enable `unused-void-attr` in the `test&#x2013;compile` execution as well.</body>
    <file>eo-runtime/pom.xml</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2025-05-12T05:54:35Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/objectionary/eo/issues/4156">4156</issue>
    <ticket>4148</ticket>
    <estimate>35</estimate>
    <role>DEV</role>
    <id>4148-01f6ad07</id>
    <lines>238-241</lines>
    <body>Enable `duplicate-names-in-diff-context` lint. For now its too pedantic. See this: https://github.com/objectionary/lints/issues/578. Also, we should fix the bug with false positives with lambda object names in the atoms, in order to enable this lint.</body>
    <file>eo-runtime/pom.xml</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2025-05-12T05:54:35Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4157" closed="2025-05-20T14:21:54+00:00">4157</issue>
    <ticket>4148</ticket>
    <estimate>35</estimate>
    <role>DEV</role>
    <id>4148-47fac486</id>
    <lines>278-280</lines>
    <body>Enable `anonymous-formation` lint after required fixes. We should enable `anonymous-formation` lint, right after these issues will resolved in linter: https://github.com/objectionary/lints/issues/561, https://github.com/objectionary/lints/issues/562.</body>
    <file>eo-runtime/pom.xml</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2025-05-12T05:54:35Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/4192" closed="2025-07-10T12:46:35+00:00">4192</issue>
        <ticket>4157</ticket>
        <estimate>60</estimate>
        <role>DEV</role>
        <id>4157-b24a0abe</id>
        <lines>245-249</lines>
        <body>Enable `redundant-object` lint after several fixes. Currently, it has multiple false-positives, that are reported here: https://github.com/objectionary/lints/issues/606, https://github.com/objectionary/lints/issues/607, and https://github.com/objectionary/lints/issues/609. After all of them will be fixed, we should enable lint. Don't forget to enable it in the `test-compile` execution too.</body>
        <file>eo-runtime/pom.xml</file>
        <author>@yegor256</author>
        <email>yegor256@gmail.com</email>
        <time>2025-05-20T14:21:31Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4158" closed="2025-06-04T16:07:25+00:00">4158</issue>
    <ticket>4148</ticket>
    <estimate>35</estimate>
    <role>DEV</role>
    <id>4148-c2bb5566</id>
    <lines>286-288</lines>
    <body>Enable `inconsistent-args` lint after its adjustment. We should enable this lint after the issue with self object names will be resolved: https://github.com/objectionary/lints/issues/576.</body>
    <file>eo-runtime/pom.xml</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2025-05-12T05:54:35Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4197" closed="2025-05-23T14:23:04+00:00">4197</issue>
    <ticket>4176</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>4176-93c7a126</id>
    <lines>24-28</lines>
    <body>Move EoMavenPlugin.java to eo-integration-tests Currently we have the duplicate between eo-runtime and eo-integration-tests modules. We should remove it by moving all the rest integration tests under eo-integration-tests module. Don't forget to remove "-exludes=**/EoMavenPlugin.java"</body>
    <file>.github/workflows/simian.yml</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2025-05-22T08:51:59Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/4205" closed="2025-06-02T07:47:27+00:00">4205</issue>
        <ticket>4197</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>4197-ca5aa33a</id>
        <lines>29-33</lines>
        <body>Enable JarIT test. The test is disabled because it requires EOorg.EOeolang.EOio Classes You can read about the issue &lt;a href="https://github.com/objectionary/eo/issues/4203"&gt; here &lt;/a&gt; When it is fixed, please enable the test.</body>
        <file>eo-integration-tests/src/test/java/integration/JarIT.java</file>
        <author>@yegor256</author>
        <email>yegor256@gmail.com</email>
        <time>2025-05-23T14:22:42Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4226" closed="2025-06-05T09:28:37+00:00">4226</issue>
    <ticket>4203</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>4203-eb15fbca</id>
    <lines>30-34</lines>
    <body>Make {@link MjProbeTest} To Check Probes Currently, this test case only checks the number of probes found but does not verify the actual content of the probes. It would be beneficial to enhance this test to check the actual probes found.</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/MjProbeTest.java</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2025-06-02T07:47:02Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/4238" closed="2025-06-06T14:31:52+00:00">4238</issue>
        <ticket>4226</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>4226-152da716</id>
        <lines>29-32</lines>
        <body>Move {@link MjProbeTest#checksProbePacks(String)} to eo-runtime. This test checks the functionality related to the `eo-runtime` module only. There is no need to keep it in the `eo-maven-plugin` module since it doesn't touch the eo-maven-plugin functionality.</body>
        <file>eo-maven-plugin/src/test/java/org/eolang/maven/MjProbeTest.java</file>
        <author>@yegor256</author>
        <email>yegor256@gmail.com</email>
        <time>2025-06-05T09:28:14Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4227" closed="2025-06-05T09:28:39+00:00">4227</issue>
    <ticket>4203</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>4203-8d91968a</id>
    <lines>35-39</lines>
    <body>Enable {@link MjProbeTest#findsProbesInSimpleProgram(Path)} Test. This test is currently disabled because it fails. We should investigate the cause of the failure and enable the test. Originally this issue affected the integration tests, &lt;a href="https://github.com/objectionary/eo/issues/4203"&gt;here&lt;/a&gt;</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/MjProbeTest.java</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2025-06-02T07:47:02Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4232" closed="2025-06-20T05:20:45+00:00">4232</issue>
    <ticket>4096</ticket>
    <estimate>45</estimate>
    <role>DEV</role>
    <id>4096-fbee93b8</id>
    <lines>14-17</lines>
    <body>Remove JUnit dependency from integration source run. Currently its needed because of `org.junit.jupiter.api.*"` imports, injected by the `to-java.xsl` during transpilation. Instead of hardcoding the JUnit import, we should place it only there, where we have test attributes.</body>
    <file>eo-integration-tests/src/test/java/integration/EoSourceRun.java</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2025-06-04T16:06:58Z</time>
    <children>
      <puzzle alive="true">
        <issue href="https://github.com/objectionary/eo/issues/4299">4299</issue>
        <ticket>4232</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>4232-4c7fc9d6</id>
        <lines>14-18</lines>
        <body>Conditionally add JUnit dependencies to integration tests. JUnit dependencies are needed for EO programs that contain test attributes (methods starting with '+'), but not for programs without tests. The XSL template now conditionally generates JUnit imports, but integration tests still need JUnit dependencies available when processing EO programs with tests.</body>
        <file>eo-integration-tests/src/test/java/integration/EoSourceRun.java</file>
        <author>@yegor256</author>
        <email>yegor256@gmail.com</email>
        <time>2025-06-20T05:20:37Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4233" closed="2025-06-13T11:33:24+00:00">4233</issue>
    <ticket>4096</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>4096-fbd7f6ae</id>
    <lines>193-196</lines>
    <body>Resolve code duplication for `tests` generation. Currently, we have a lot of code duplication in the templates that generate Java tests. They all are similar to the templates applied in the `java` element. Let's make them as generic as possible and reuse in both places.</body>
    <file>eo-maven-plugin/src/main/resources/org/eolang/maven/transpile/to-java.xsl</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2025-06-04T16:06:58Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/objectionary/eo/issues/4234" closed="2025-06-24T08:42:09+00:00">4234</issue>
    <ticket>4096</ticket>
    <estimate>35</estimate>
    <role>DEV</role>
    <id>4096-c6f5a4ac</id>
    <lines>255-258</lines>
    <body>Enable `sparse-decoration` lint. After we merged EO tests together with their source objects, and removed `+tests` meta, we have complains about sparse-decoration. Let's adjust and enable it.</body>
    <file>eo-runtime/pom.xml</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2025-06-04T16:06:58Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4235" closed="2025-06-08T18:14:18+00:00">4235</issue>
    <ticket>4096</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>4096-1fc1c1bc</id>
    <lines>9-13</lines>
    <body>Merge tests for EO atoms together with their sources. Currently, we cannot move atom tests to their sources, because parser will fail to recognize them. Once it will be possible to have tests with the EO atom in the single file, then we should move the tests in it. Don't forget to move `runtime-tests.eo`, `try-tests.eo`, `txt/sscanf-tests.eo`, `txt/sprintf-tests.eo` too.</body>
    <file>eo-runtime/src/main/eo/org/eolang/bool-tests.eo</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2025-06-04T16:06:58Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/4263" closed="2025-06-26T15:02:11+00:00">4263</issue>
        <ticket>4235</ticket>
        <estimate>35</estimate>
        <role>DEV</role>
        <id>4235-46fa6896</id>
        <lines>309-312</lines>
        <body>Refactor MjTranspile.apply(). Now, it accepts too many parameters, let's decompose it into more manageable objects, that can be tested. Thus, we not only improve the situation in this class, but also improve the testability of the MjTranspile.</body>
        <file>eo-maven-plugin/src/main/java/org/eolang/maven/MjTranspile.java</file>
        <author>@yegor256</author>
        <email>yegor256@gmail.com</email>
        <time>2025-06-08T18:14:10Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/4264" closed="2025-06-24T07:51:55+00:00">4264</issue>
        <ticket>4235</ticket>
        <estimate>60</estimate>
        <role>DEV</role>
        <id>4235-37ba6318</id>
        <lines>64-67</lines>
        <body>Allow atom to have only test attributes inside. Currently we allow to have just inners, while we should allow only test attributes inside the atom. For this, we need to intoduce new grammar rules. Don't forget to enable all the tests, related on not empty atoms.</body>
        <file>eo-parser/src/main/antlr4/org/eolang/parser/Eo.g4</file>
        <author>@yegor256</author>
        <email>yegor256@gmail.com</email>
        <time>2025-06-08T18:14:10Z</time>
        <children>
          <puzzle alive="true">
            <issue href="https://github.com/objectionary/eo/issues/4318">4318</issue>
            <ticket>4264</ticket>
            <estimate>45</estimate>
            <role>DEV</role>
            <id>4264-940f5454</id>
            <lines>6-10</lines>
            <body>Improve error message for atoms containing inners. For now we fail to report it properly. Current message contains: [5:-1] error: 'mismatched input 'UNTAB' expecting {'Q', 'QQ', '*', '$', '[', '(', '@', '^', '~', BYTES, STRING, INT, FLOAT, HEX, NAME, TEXT}'. We should improve, and verify it using `message` key in this YAML story. Also, check this issue: https://github.com/objectionary/eo/issues/4106.</body>
            <file>eo-parser/src/test/resources/org/eolang/parser/eo-typos/not-empty-atoms.yaml</file>
            <author>@yegor256</author>
            <email>yegor256@gmail.com</email>
            <time>2025-06-24T07:51:32Z</time>
            <children/>
          </puzzle>
        </children>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/4265" closed="2025-06-24T07:51:57+00:00">4265</issue>
        <ticket>4235</ticket>
        <estimate>45</estimate>
        <role>DEV</role>
        <id>4235-f1975aa9</id>
        <lines>5-7</lines>
        <body>Enable test case for not empty atoms. In order to make this test passing, we need to update our Eo.g4 grammar to allow atoms have only test attributes inside, but not objects.</body>
        <file>eo-parser/src/test/resources/org/eolang/parser/eo-typos/not-empty-atoms.yaml</file>
        <author>Yegor Bugayenko</author>
        <email>yegor256@gmail.com</email>
        <time>2025-06-08T18:14:10Z</time>
        <children/>
      </puzzle>
      <puzzle alive="true">
        <issue href="https://github.com/objectionary/eo/issues/4266">4266</issue>
        <ticket>4235</ticket>
        <estimate>35</estimate>
        <role>DEV</role>
        <id>4235-fabe62dd</id>
        <lines>13-15</lines>
        <body>Move all tests from `runtime.eo` to other objects. For now runtime is just a set of runtime tests. Instead of having this, let's move its tests to the other objects, which tests are most suitable for.</body>
        <file>eo-runtime/src/main/eo/org/eolang/runtime.eo</file>
        <author>Yegor Bugayenko</author>
        <email>yegor256@gmail.com</email>
        <time>2025-06-08T18:14:10Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/objectionary/eo/issues/4236">4236</issue>
    <ticket>4096</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>4096-477dc52a</id>
    <lines>298-300</lines>
    <body>Enable tests-resolves-and-touches unit test. Now its disabled because of: "Can't #take("path"), the attribute is absent among other test 34 attrs. After we fix it, we should enable the test.</body>
    <file>eo-runtime/src/main/eo/org/eolang/fs/file.eo</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2025-06-04T16:06:58Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4239" closed="2025-06-09T11:23:04+00:00">4239</issue>
    <ticket>4203</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>4203-3701a428</id>
    <lines>23-27</lines>
    <body>Enable {@link ProbesTest#findsProbesInSimpleProgram()} Test. This test is currently disabled because it fails. We should investigate the cause of the failure and enable the test. Originally this issue affected the integration tests, &lt;a href="https://github.com/objectionary/eo/issues/4203"&gt;here&lt;/a&gt;</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/ProbesTest.java</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2025-06-05T09:28:14Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4241" closed="2025-06-06T15:14:28+00:00">4241</issue>
    <ticket>3480</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>3480-8a06dda4</id>
    <lines>32-35</lines>
    <body>Enable integration tests after new release 0.56.3 to Maven. Currently, integration tests fail because we are pulling eo-maven-plugin:0.56.2, which has org.eolang.Attr, which is removed now. Don't forget to enable {@link ReadmeSnippetsIT} too.</body>
    <file>eo-integration-tests/src/test/java/integration/SnippetIT.java</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2025-06-05T11:27:47Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4242" closed="2026-01-19T11:47:45+00:00">4242</issue>
    <ticket>3480</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>3480-6f27e031</id>
    <lines>11-13</lines>
    <body>Move out `PhiWithRHo.origin()` method. Now we use it in {@link PhDefault#put(int, Phi)}. Let's move it to other class, in order to get rid of `TooManyMethods` PMD violation.</body>
    <file>eo-runtime/src/main/java/org/eolang/PhWithRho.java</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2025-06-05T11:27:47Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4243" closed="2026-01-11T16:58:21+00:00">4243</issue>
    <ticket>3480</ticket>
    <estimate>45</estimate>
    <role>DEV</role>
    <id>3480-c54bfd0f</id>
    <lines>103-106</lines>
    <body>Remove Phi.copy(Phi) method from the interface. Currently, we use this method in {@link PhDefault#copy()} in order to copy the attributes correctly. However, not all Phi implementations need this type of copying. It should be possible to remove this method, and use only {@link Phi#copy()}.</body>
    <file>eo-runtime/src/main/java/org/eolang/Phi.java</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2025-06-05T11:27:47Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4286" closed="2025-06-20T12:53:30+00:00">4286</issue>
    <ticket>4261</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>4261-e0ea2b84</id>
    <lines>31-34</lines>
    <body>Enable MjLint tests after lints will migrate to the ObjectName implementation. Now, `lints` uses `org.eolang.parser.ObjectName` as class. Now its an interface, and `lints` should use {@link OnDefault} instead. Don't forget to enable lints in the {@link MjTranspileTest}, {@link MjLintIT} and `pom.xml` of `eo-runtime` as well.</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/MjLintTest.java</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2025-06-14T04:01:57Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4313" closed="2026-03-25T16:04:51+00:00">4313</issue>
    <ticket>4148</ticket>
    <estimate>35</estimate>
    <role>DEV</role>
    <id>4148-d58c7884</id>
    <lines>231-233</lines>
    <body>Enable `lintAsPackage` below and fix all warnings that will be reported (there will be many of them), so that we can enable it in the `test-compile` execution as well:</body>
    <file>eo-runtime/pom.xml</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2025-06-22T16:02:28Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4381" closed="2025-08-04T09:20:35+00:00">4381</issue>
    <ticket>4360</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>4360-3c6890da</id>
    <lines>31-34</lines>
    <body>Enable `StrictXmir` tests after XMIR.xsd release. Now tests fail because the latest schema available &lt;a href="https://www.eolang.org/XMIR.xsd"&gt;here&lt;/a&gt; does not allow `@author` attribute in the `object` element. Let's enable the tests right after we release new version.</body>
    <file>eo-parser/src/test/java/org/eolang/parser/StrictXmirTest.java</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2025-07-16T12:13:59Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4428" closed="2026-03-25T16:04:54+00:00">4428</issue>
    <ticket>4394</ticket>
    <estimate>35</estimate>
    <role>DEV</role>
    <id>4394-5825bf63</id>
    <lines>226-234</lines>
    <body>Lints after fixing Phi dependent lints. For now, `unit-test-without-phi`, `redundant-object check` for `@` attribute in the tests, which represents Phi. However, we changed the notation in the XMIR, and now the same Phi represented as '&#x3C6;'. Don't forget to enable these lints, after new version of lints with the fix will be available. The lint `unlint-non-existing-defect` should be also enabled, but now disabled due to massive local unlints of `redundant-object` lint, which is currently disabled. We decided to skip linting entirely, not just skipping individual lints, because of this issue: https://github.com/objectionary/lints/issues/699.</body>
    <file>eo-runtime/pom.xml</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2025-08-07T20:05:03Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4442" closed="2025-08-12T17:17:33+00:00">4442</issue>
    <ticket>4426</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>4426-eb74c057</id>
    <lines>5-25</lines>
    <body>Enable `auto-phi` after nested object representation in auto phi will be fixed. Currently, this snippet fails, because we have duplication in the generated representation of auto Phi object: application assigned to '@' (`&#x3BE;.&#x3C1;.m.get.eq` in this example) contains itself in the first as attribute `&#x3B1;0`, together with nested attribute - reference to void attribute (`&#x3BE;.i`). We must fix this nesting, and enable the test. This XMIR is problematic: &lt;o line="10" name="a&#x1F335;108" pos="8"&gt; &lt;o base="&#x2205;" line="10" name="i" pos="24"/&gt; &lt;o base="&#x3BE;.&#x3C1;.m.get.eq" line="10" name="&#x3C6;" pos="8"&gt; &lt;o as="&#x3B1;0" base="&#x3BE;.&#x3C1;.m.get.eq" line="10" pos="13"&gt; &lt;o as="&#x3B1;0" base="&#x3BE;.i" line="10"/&gt; &lt;o as="&#x3B1;1" base="Q.org.eolang.number" line="10" pos="17".../&gt; &lt;/o&gt; &lt;/o&gt; &lt;/o&gt; The correct XMIR should be this: &lt;o line="10" name="a&#x1F335;108" pos="8"&gt; &lt;o base="&#x2205;" line="10" name="i" pos="24"/&gt; &lt;o base="&#x3BE;.&#x3C1;.m.get.eq" line="10" name="&#x3C6;" pos="8"&gt; &lt;o as="&#x3B1;1" base="Q.org.eolang.number" line="10" pos="17".../&gt; &lt;/o&gt; &lt;/o&gt;</body>
    <file>eo-integration-tests/src/test/resources/org/eolang/snippets/auto-phi.yaml</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2025-08-12T10:46:11Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4444" closed="2025-09-17T13:41:35+00:00">4444</issue>
    <ticket>4426</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>4426-0dc59b75</id>
    <lines>5-25</lines>
    <body>Enable `auto-phi` after nested object representation in auto phi will be fixed. Currently, this snippet fails, because we have duplication in the generated representation of auto Phi object: application assigned to '@' (`&#x3BE;.&#x3C1;.m.get.eq` in this example) contains itself in the first as attribute `&#x3B1;0`, together with nested attribute - reference to void attribute (`&#x3BE;.i`). We must fix this nesting, and enable the test. This XMIR is problematic: &lt;o line="10" name="a&#x1F335;108" pos="8"&gt; &lt;o base="&#x2205;" line="10" name="i" pos="24"/&gt; &lt;o base="&#x3BE;.&#x3C1;.m.get.eq" line="10" name="&#x3C6;" pos="8"&gt; &lt;o as="&#x3B1;0" base="&#x3BE;.&#x3C1;.m.get.eq" line="10" pos="13"&gt; &lt;o as="&#x3B1;0" base="&#x3BE;.i" line="10"/&gt; &lt;o as="&#x3B1;1" base="&#x3A6;.org.eolang.number" line="10" pos="17".../&gt; &lt;/o&gt; &lt;/o&gt; &lt;/o&gt; The correct XMIR should be this: &lt;o line="10" name="a&#x1F335;108" pos="8"&gt; &lt;o base="&#x2205;" line="10" name="i" pos="24"/&gt; &lt;o base="&#x3BE;.&#x3C1;.m.get.eq" line="10" name="&#x3C6;" pos="8"&gt; &lt;o as="&#x3B1;1" base="&#x3A6;.org.eolang.number" line="10" pos="17".../&gt; &lt;/o&gt; &lt;/o&gt;</body>
    <file>eo-integration-tests/src/test/resources/org/eolang/snippets/auto-phi.yaml</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2025-08-12T17:17:08Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/4557" closed="2025-11-14T14:46:54+00:00">4557</issue>
        <ticket>4444</ticket>
        <estimate>90</estimate>
        <role>DEV</role>
        <id>4444-58b56423</id>
        <lines>8-12</lines>
        <body>Replace `ap&#x1F335;` with `a&#x1F335;` for Auto Phi formation names in XMIR. Currently, we use it in order to locate objects with `ap&#x1F335;` attribute, here, in this stylesheet. We should replace name with classic auto name attribute: `a&#x1F335;`, and, rewrite logic from this stylesheet to Java (in XeEoListener.java). This will lead to simplification of auto-phi formation processing on the parser level.</body>
        <file>eo-parser/src/main/resources/org/eolang/parser/parse/auto-phi-formation-restruct.xsl</file>
        <author>@yegor256</author>
        <email>yegor256@gmail.com</email>
        <time>2025-09-17T13:41:26Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4445" closed="2026-03-25T16:04:56+00:00">4445</issue>
    <ticket>4394</ticket>
    <estimate>35</estimate>
    <role>DEV</role>
    <id>4394-a43fc136</id>
    <lines>25-35</lines>
    <body>Enable MjLints related tests after `lints` will be adjusted with `&#x3A6;` object. For now, lints checks for `Q` instead of `&#x3A6;`. After new version of lints released, we should enable these integration tests in MjLintIT, and others: {@link MjLintTest#doesNotFailWithNoErrorsAndWarnings}, {@link MjLintTest#doesNotDetectWarningWithoutCorrespondingFlag}, {@link MjLintTest#skipsAlreadyLinted}, {@link MjLintTest#savesVerifiedResultsToCache}, {@link MjTranspileTest#recompilesIfModified}, {@link MjTranspileTest#recompilesIfExpired}, {@link MjTranspileTest#doesNotRetranspileIfNotModified}, {@link MjTranspileTest#transpilesSimpleEoProgram}, {@link MjTranspileTest#transpilesSeveralEoProgramsInParallel}, {@link MjTranspileTest#transpilesSourcesForDifferentScopesWithoutIntersections}.</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/MjLintIT.java</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2025-08-12T17:17:08Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/objectionary/eo/issues/4458">4458</issue>
    <ticket>4411</ticket>
    <estimate>35</estimate>
    <role>DEV</role>
    <id>4411-1af760bf</id>
    <lines>88-92</lines>
    <body>Replace all left usages of `$ &gt; oname`. We should remove all the usages like `$ &gt; matched` from the syntax, and from the runtime objects. Currently, it is not possible because syntax sugar for object idempotency is not fully implemented, and we cannot remove some edge case usages, like here, in `matched`. Don't forget to remove this puzzle.</body>
    <file>eo-runtime/src/main/eo/org/eolang/txt/regex.eo</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2025-08-19T10:40:49Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4489" closed="2025-09-22T04:57:52+00:00">4489</issue>
    <ticket>4475</ticket>
    <estimate>35</estimate>
    <role>DEV</role>
    <id>4475-675c073e</id>
    <lines>71-73</lines>
    <body>Enable `writes-larger-data-than-provided-block` test after resizing will be implemented. If the provided memory block is not large enough for the data to write, a runtime error happens, however we can use `malloc.of.allocated.resized` to increase the size of the block.</body>
    <file>eo-runtime/src/main/eo/org/eolang/io/malloc-as-output.eo</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2025-08-29T02:29:57Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4576" closed="2025-09-25T04:24:16+00:00">4576</issue>
    <ticket>4475</ticket>
    <estimate>35</estimate>
    <role>DEV</role>
    <id>4475-be0d3e3d</id>
    <lines>71-73</lines>
    <body>Enable `writes-larger-data-than-provided-block` after resize will be implemented. If the provided memory block is not large enough for the data to write, a runtime error happens, however we can use `malloc.of.allocated.resized` to increase the size of the block.</body>
    <file>eo-runtime/src/main/eo/org/eolang/io/malloc-as-output.eo</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2025-09-22T04:57:43Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/objectionary/eo/issues/4584">4584</issue>
    <ticket>4475</ticket>
    <estimate>35</estimate>
    <role>DEV</role>
    <id>4475-c4f74bf0</id>
    <lines>71-73</lines>
    <body>Enable `writes-larger-data-than-provided-block` after resize will be implemented. If the provided memory block is not large enough for the data to write, a runtime error happens. However we can use `malloc.of.allocated.resized` to increase the size of the block.</body>
    <file>eo-runtime/src/main/eo/org/eolang/io/malloc-as-output.eo</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2025-09-25T04:24:07Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4630" closed="2025-10-17T09:42:10+00:00">4630</issue>
    <ticket>4530</ticket>
    <estimate>20</estimate>
    <role>DEV</role>
    <id>4530-b4741bf0</id>
    <lines>29-33</lines>
    <body>Enable JarIT#runsProgramFromJar after new EO package names will be released. Now, in test, we still trying to run it on previous package names: `sys`, `txt`, and so on, however, we refactored package names to be more compact: `sm`, `tt`, etc. Once it will be released, we must enable this test, it should pass. These tests should be enabled as well: `SnippetIT#runsAllSnippets`, `ReadmeSnippetsIT#validatesReadmeSnippets`.</body>
    <file>eo-integration-tests/src/test/java/integration/JarIT.java</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2025-10-16T16:27:25Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4672" closed="2025-11-28T11:14:09+00:00">4672</issue>
    <ticket>4595</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>4595-822bd2f9</id>
    <lines>30-32</lines>
    <body>Remove unnecessary methods and constructors related to dispatch by index from eo-runtime. In previous PR we removed supporting dispatch by index from eo-parser. Now we can safely remove all the unnecessary logic from eo-runtime.</body>
    <file>eo-runtime/src/main/java/org/eolang/PhMethod.java</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2025-11-17T18:17:49Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4679" closed="2025-11-26T10:20:35+00:00">4679</issue>
    <ticket>4673</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>4673-55e3cd91</id>
    <lines>17-22</lines>
    <body>Replace all PhVoid occurrences with AtVoid when all other Attr classes are returned to eo-runtime. This class does not do anything useful right now, it is not used anywhere. The class is added as part of the task where Attr and its classes are returned to eo-runtime. When all other classes are returned - this class must replace PhVoid everywhere.</body>
    <file>eo-runtime/src/main/java/org/eolang/AtVoid.java</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2025-11-20T14:24:42Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/4695" closed="2026-01-27T08:14:49+00:00">4695</issue>
        <ticket>4679</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>4679-dd4e56b2</id>
        <lines>33-36</lines>
        <body>Enable ReadmeSnippetsIT when it's possible. The test was disabled because because Attr interface was returned back and now these tests don't work anymore. These tests must be enabled when new EO release is made.</body>
        <file>eo-integration-tests/src/test/java/integration/ReadmeSnippetsIT.java</file>
        <author>@yegor256</author>
        <email>yegor256@gmail.com</email>
        <time>2025-11-26T10:20:26Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/4696" closed="2026-01-15T12:34:24+00:00">4696</issue>
        <ticket>4679</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>4679-021a53a7</id>
        <lines>32-35</lines>
        <body>Enable SnippetIT when it's possible. The test was disabled because because Attr interface was returned back and now these tests don't work anymore. These tests must be enabled when new EO release is made.</body>
        <file>eo-integration-tests/src/test/java/integration/SnippetIT.java</file>
        <author>@yegor256</author>
        <email>yegor256@gmail.com</email>
        <time>2025-11-26T10:20:26Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4683" closed="2025-11-26T10:20:36+00:00">4683</issue>
    <ticket>4673</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>4673-8b3144e8</id>
    <lines>16-21</lines>
    <body>Replace all PhComposite occurrences with AtComposite when all other Attr classes are returned to eo-runtime. This class does not do anything useful right now, it is not used anywhere. The class is added as part of the task where Attr and its classes are returned to eo-runtime. When all other classes are returned - this class must replace PhComposite everywhere.</body>
    <file>eo-runtime/src/main/java/org/eolang/AtComposite.java</file>
    <author>Rultor.com</author>
    <email>gpg@rultor.com</email>
    <time>2025-11-21T09:53:38Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4685" closed="2025-11-26T10:20:37+00:00">4685</issue>
    <ticket>4673</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>4673-eddbad55</id>
    <lines>15-20</lines>
    <body>Replace all PhCached occurrences with AtOnce when all other Attr classes are returned to eo-runtime. This class does not do anything useful right now, it is not used anywhere. The class is added as part of the task where Attr and its classes are returned to eo-runtime. When all other classes are returned - this class must replace PhCached everywhere.</body>
    <file>eo-runtime/src/main/java/org/eolang/AtOnce.java</file>
    <author>Eugene Sukharev</author>
    <email>r0bari@yandex.ru</email>
    <time>2025-11-21T21:26:15Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4687" closed="2025-11-26T10:20:38+00:00">4687</issue>
    <ticket>4673</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>4673-3980c275</id>
    <lines>16-21</lines>
    <body>Replace all PhRho occurrences with AtRho when all other Attr classes are returned to eo-runtime. This class does not do anything useful right now, it is not used anywhere. The class is added as part of the task where Attr and its classes are returned to eo-runtime. When all other classes are returned - this class must replace PhRho everywhere.</body>
    <file>eo-runtime/src/main/java/org/eolang/AtRho.java</file>
    <author>Eugene Sukharev</author>
    <email>r0bari@yandex.ru</email>
    <time>2025-11-23T13:09:47Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4691" closed="2025-11-26T10:20:39+00:00">4691</issue>
    <ticket>4673</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>4673-76790401</id>
    <lines>13-18</lines>
    <body>Replace all PhWithRho occurrences with AtWithRho when all other Attr classes are returned to eo-runtime. This class does not do anything useful right now, it is not used anywhere. The class is added as part of the task where Attr and its classes are returned to eo-runtime. When all other classes are returned - this class must replace PhWithRho everywhere.</body>
    <file>eo-runtime/src/main/java/org/eolang/AtWithRho.java</file>
    <author>Rultor.com</author>
    <email>gpg@rultor.com</email>
    <time>2025-11-25T12:11:44Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/objectionary/eo/issues/4692">4692</issue>
    <ticket>4673</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>4673-7841412b</id>
    <lines>19-25</lines>
    <body>The {@link AtWithRho#get()} is not thread safe. If multiple threads call get() concurrently when the underlying object lacks RHO, each thread will: 1. Pass the !ret.hasRho() check 2. Create its own copy via ret.copy() 3. Attempt to set RHO on its copy This results in different threads receiving different copies, violating the expectation that get() returns a consistent view of the attribute's value.</body>
    <file>eo-runtime/src/main/java/org/eolang/AtWithRho.java</file>
    <author>Rultor.com</author>
    <email>gpg@rultor.com</email>
    <time>2025-11-25T12:11:44Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4714" closed="2025-12-05T05:27:56+00:00">4714</issue>
    <ticket>4702</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>4702-36bb2100</id>
    <lines>19-22</lines>
    <body>Add tests for {@link OnDefault} class. For some reason this class is not covered by tests at all. We need to add unit tests that will cover all possible cases of object name resolution including cases with and without package meta.</body>
    <file>eo-parser/src/main/java/org/eolang/parser/OnDefault.java</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2025-12-03T17:24:30Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4717" closed="2025-12-09T02:26:14+00:00">4717</issue>
    <ticket>4702</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>4702-ca7a17ba</id>
    <lines>214-220</lines>
    <body>Enable the fibonacci integration test. Currently, the fibonacci integration test is disabled because it fails with the following error: Couldn't find object '&#x3A6;.org.eolang.examples' because there's no class or package 'EOorg.EOeolang.EOexamples'. That said, all the classes and packages are successfully generated by the eo-maven-plugin during the build process.</body>
    <file>eo-integration-tests/pom.xml</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2025-12-05T05:27:00Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/4729" closed="2026-01-13T14:29:00+00:00">4729</issue>
        <ticket>4717</ticket>
        <estimate>90</estimate>
        <role>DEV</role>
        <id>4717-9bfb9d8d</id>
        <lines>262-264</lines>
        <body>Move {@link #pinfos(Path)} method to a separate class. Currently, this method violates Single Responsibility Principle of MjTranspile class. After moving, make sure to cover it with unit tests.</body>
        <file>eo-maven-plugin/src/main/java/org/eolang/maven/MjTranspile.java</file>
        <author>@yegor256</author>
        <email>yegor256@gmail.com</email>
        <time>2025-12-09T02:26:06Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/4730" closed="2025-12-31T07:48:35+00:00">4730</issue>
        <ticket>4717</ticket>
        <estimate>90</estimate>
        <role>DEV</role>
        <id>4717-b9941d0d</id>
        <lines>125-134</lines>
        <body>Check 'package-info.class' existence before looking for an object. Recently, we got an error when 'maven-compiler-plugin' removed 'package-info.class' during compilation and we got quite confusing error message: ``` Couldn't find object '&#x3A6;.org.eolang.examples' because there's no class or package 'EOorg.EOeolang.EOexamples' EOorg.EOeolang.EOexamples ``` Having said that, the 'EOorg.EOeolang.EOexamples' package does exist. The error tells nothing about missing 'package-info.class'. We need to check for the existence of 'package-info.class' before trying to find an object.</body>
        <file>eo-runtime/src/main/java/org/eolang/PhPackage.java</file>
        <author>Yegor Bugayenko</author>
        <email>yegor256@gmail.com</email>
        <time>2025-12-09T02:26:06Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4718" closed="2025-12-26T07:26:09+00:00">4718</issue>
    <ticket>4702</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>4702-c15b070e</id>
    <lines>47-53</lines>
    <body>EO tests are distributed with the eo-runtime library. Currently, when we add 'eo-runtime' as a dependency, the surefire plugin tries to run its tests as well, which takes significant time. And it's rathter unexpected behavior when we just need to run an EO app. We should either don't include EO tests in the eo-runtime jar, or state it clearly in the documentation that when you add eo-runtime as a dependency, you also get its tests.</body>
    <file>eo-integration-tests/src/it/fibonacci/pom.xml</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2025-12-05T05:27:00Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/4777" closed="2025-12-26T14:23:11+00:00">4777</issue>
        <ticket>4718</ticket>
        <estimate>90</estimate>
        <role>DEV</role>
        <id>4718-a792fc10</id>
        <lines>24-29</lines>
        <body>Make {@linkg MjTranspileIT} independent on the previous eo-maven-plugin. The tests in {@link MjTranspileIT} depend on the eo-maven-plugin being installed on the local maven repository instead of using the current one. We should either move these tests to eo-integration-tests, or find a way to use the current eo-maven-plugin build for testing. Otherwise, these tests check the previous version of the plugin.</body>
        <file>eo-maven-plugin/src/test/java/org/eolang/maven/MjTranspileIT.java</file>
        <author>@yegor256</author>
        <email>yegor256@gmail.com</email>
        <time>2025-12-26T07:26:00Z</time>
        <children>
          <puzzle alive="false">
            <issue href="https://github.com/objectionary/eo/issues/4779" closed="2025-12-29T11:49:13+00:00">4779</issue>
            <ticket>4777</ticket>
            <estimate>90</estimate>
            <role>DEV</role>
            <id>4777-64b9730f</id>
            <lines>16-21</lines>
            <body>Continue moving integration tests from eo-maven-plugin to eo-integration-tests module. You can recognize these tests by the -IT suffix. They use Farea to run Maven builds with eo-maven-plugin. After moving all tests, remove the duplicated {@link AppendedPlugin} class from eo-maven-plugin module. Don't forget to remove exclusion from 'simian.yaml' as well.</body>
            <file>eo-integration-tests/src/test/java/org/eolang/maven/AppendedPlugin.java</file>
            <author>@yegor256</author>
            <email>yegor256@gmail.com</email>
            <time>2025-12-26T14:23:02Z</time>
            <children/>
          </puzzle>
          <puzzle alive="false">
            <issue href="https://github.com/objectionary/eo/issues/4780" closed="2025-12-30T12:15:06+00:00">4780</issue>
            <ticket>4777</ticket>
            <estimate>30</estimate>
            <role>DEV</role>
            <id>4777-b24e59b0</id>
            <lines>18-22</lines>
            <body>Remove {@link ContainsFiles} duplicate. We have exactly the same class in eo-maven-plugin module. We need to keep only one copy of this class and use it in both eo-maven-plugin and eo-integration-tests modules. Don't forget to remove exclusion from 'simian.yaml' as well.</body>
            <file>eo-integration-tests/src/test/java/org/eolang/maven/ContainsFiles.java</file>
            <author>@yegor256</author>
            <email>yegor256@gmail.com</email>
            <time>2025-12-26T14:23:02Z</time>
            <children/>
          </puzzle>
        </children>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4743" closed="2025-12-18T16:48:59+00:00">4743</issue>
    <ticket>4526</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>4526-efbfb7b4</id>
    <lines>25-32</lines>
    <body>Allow '0.0.0' and 'SNAPSHOT' versions to use cache in FpDefault. For now these versions are treated as non-cacheable, check {@link FpIfReleased}. This behavior causes issues as the following one: &lt;a href="https://github.com/objectionary/eo/issues/4526"&gt;Issue 4526&lt;/a&gt;. We need to allow these versions to use cache just like other versions. After fixing this, remove @Disabled annotation from {@link FpDefaultTest#usesCacheEvenItSnapshot} and {@link FpDefaultTest#cachesEvenItZeroVersion} tests.</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/FpDefaultTest.java</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2025-12-12T13:05:46Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/objectionary/eo/issues/4744">4744</issue>
    <ticket>4526</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>4526-2fba764e</id>
    <lines>56-61</lines>
    <body>Fix flaky {@link #findsProbesInOyRemote(Path)} test. The test sometimes fails with the following error: MjProbeTest.findsProbesInOyRemote:62 We should find 10 objects in git repository with tag '0.50.0', but 9 found. This might happen because the remote repository structure changes over time. We need to investigate this issue and fix the test to make it stable.</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/MjProbeTest.java</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2025-12-12T13:05:46Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4756" closed="2025-12-17T05:00:48+00:00">4756</issue>
    <ticket>4526</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>4526-0037957c</id>
    <lines>21-23</lines>
    <body>Add more tests for {@link ChSource} class. Currently, there is only one test that checks the hash computation for a file. We need to add more tests to cover edge cases.</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/ChSourceTest.java</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2025-12-16T06:48:18Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4817" closed="2026-01-28T13:12:24+00:00">4817</issue>
    <ticket>3235</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>3235-2b861aa3</id>
    <lines>36-41</lines>
    <body>Proxy usage in {@link #checksThatWeCanCompileTheProgramWithProxySet(Path)}. Currently, we just check that the build is successful without employing the proxy. We need to enhance this test to ensure that the build process actually goes through the proxy rather than accessing the internet directly. You ought to set up proxy settings using Maven settings.xml with a proxy configured: &lt;a href="https://maven.apache.org/guides/mini/guide-proxies.html"&gt;Maven Proxies&lt;/a&gt;.</body>
    <file>eo-integration-tests/src/test/java/org/eolang/maven/ProxyIT.java</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2026-01-22T18:02:59Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4846" closed="2026-02-11T10:44:42+00:00">4846</issue>
    <ticket>4840</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>4840-a0c46596</id>
    <lines>386-391</lines>
    <body>Implement proper cache validation mechanism. Currently, FpDefault relies on file timestamps to decide whether to use the cache or not. This approach is not reliable in many cases. For example, in the transpilation step, the source files are often modified right before transpilation, making the cache always older than the source files.</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/FpDefaultTest.java</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2026-02-02T12:50:16Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/4850" closed="2026-02-04T13:25:55+00:00">4850</issue>
        <ticket>4846</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>4846-67023e31</id>
        <lines>19-25</lines>
        <body>Make Cache thread-safe. The Cache class lacks thread-safety mechanisms. If multiple threads call the apply method concurrently with the same source file, there could be race conditions where both threads determine the cache is stale and attempt to write simultaneously, potentially leading to corrupted files or inconsistent state. Consider adding synchronization or using atomic file operations. See ChCachedTest.java:63-86 for an example of how concurrency is tested in similar caching classes in this codebase.</body>
        <file>eo-maven-plugin/src/main/java/org/eolang/maven/Cache.java</file>
        <author>@yegor256</author>
        <email>yegor256@gmail.com</email>
        <time>2026-02-03T11:53:29Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/4851" closed="2026-02-06T07:58:40+00:00">4851</issue>
        <ticket>4846</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>4846-24d35199</id>
        <lines>26-29</lines>
        <body>Replace {@link FpDefault} with {@link Cache}. The FpDefault class currently implements caching logic that is similar to the Cache class. Refactor the codebase to use Cache instead of FpDefault for caching functionality to improve code reuse and maintainability.</body>
        <file>eo-maven-plugin/src/main/java/org/eolang/maven/Cache.java</file>
        <author>@yegor256</author>
        <email>yegor256@gmail.com</email>
        <time>2026-02-03T11:53:29Z</time>
        <children>
          <puzzle alive="false">
            <issue href="https://github.com/objectionary/eo/issues/4862" closed="2026-02-11T10:44:43+00:00">4862</issue>
            <ticket>4851</ticket>
            <estimate>60</estimate>
            <role>DEV</role>
            <id>4851-2fc47960</id>
            <lines>29-31</lines>
            <body>Remove {@link FpDefault} from codebase. The {@link FpDefault} class is used only in tests. We should remove it and all tests that use it.</body>
            <file>eo-maven-plugin/src/main/java/org/eolang/maven/FpDefault.java</file>
            <author>@yegor256</author>
            <email>yegor256@gmail.com</email>
            <time>2026-02-06T07:58:27Z</time>
            <children/>
          </puzzle>
          <puzzle alive="false">
            <issue href="https://github.com/objectionary/eo/issues/4863" closed="2026-02-09T09:33:15+00:00">4863</issue>
            <ticket>4851</ticket>
            <estimate>30</estimate>
            <role>DEV</role>
            <id>4851-f3d235c3</id>
            <lines>30-36</lines>
            <body>Repair all the tests in {@link MjLintTest} related to caching. We disabled these tests because of the changes in caching logic, but they should be repaired and enabled again to make sure that caching works as expected. Tests to enable: - {@link MjLintTest#skipsAlreadyLinted} - {@link MjLintTest#savesVerifiedResultsToCache} - {@link MjLintTest#getsAlreadyVerifiedResultsFromCache}</body>
            <file>eo-maven-plugin/src/test/java/org/eolang/maven/MjLintTest.java</file>
            <author>@yegor256</author>
            <email>yegor256@gmail.com</email>
            <time>2026-02-06T07:58:27Z</time>
            <children/>
          </puzzle>
        </children>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/4852" closed="2026-02-10T07:45:18+00:00">4852</issue>
        <ticket>4846</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>4846-59b6e8f7</id>
        <lines>100-104</lines>
        <body>OutOfMemoryError for large files in cache. The sha method reads the entire file into memory using Files.readAllBytes(file) which could cause OutOfMemoryError for large files. Consider using a streaming approach with MessageDigest.update() in a loop to hash the file in chunks, similar to how it's typically done for large file hashing operations.</body>
        <file>eo-maven-plugin/src/main/java/org/eolang/maven/Cache.java</file>
        <author>@yegor256</author>
        <email>yegor256@gmail.com</email>
        <time>2026-02-03T11:53:29Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/objectionary/eo/issues/4853" closed="2026-02-04T12:38:02+00:00">4853</issue>
        <ticket>4846</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>4846-00eea778</id>
        <lines>20-23</lines>
        <body>Add more tests for Cache class. Currently only two basic tests are implemented. More tests should be added to cover edge cases and ensure robustness of the caching mechanism. For example, you can add a test to verify the behavior when the source file is modified.</body>
        <file>eo-maven-plugin/src/test/java/org/eolang/maven/CacheTest.java</file>
        <author>@yegor256</author>
        <email>yegor256@gmail.com</email>
        <time>2026-02-03T11:53:29Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4891" closed="2026-03-22T14:54:29+00:00">4891</issue>
    <ticket>4884</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>4884-4327f48e</id>
    <lines>47-52</lines>
    <body>Replace synchronized statements with ReentrantLock. We are getting the following complaint about {@ling StrictXmir}: StrictXmir.java[244-289]: Use ReentrantLock rather than synchronization (AvoidSynchronizedStatement). It's better to consider this replacement. Don't forget to remove PMD.AvoidSynchronizedStatement from the SuppressWarnings annotation of this class.</body>
    <file>eo-parser/src/main/java/org/eolang/parser/StrictXmir.java</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2026-02-19T09:39:19Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4899" closed="2026-04-01T08:47:45+00:00">4899</issue>
    <ticket>4884</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>4884-50c29985</id>
    <lines>27-29</lines>
    <body>Use ReentranLock instead of synchronized block in the code. It will be more efficient and will not cause deadlocks. Don't forget to remove the PMD suppression after that.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/Catalogs.java</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2026-02-25T17:38:57Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/objectionary/eo/issues/4900">4900</issue>
    <ticket>4884</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>4884-94301545</id>
    <lines>15-18</lines>
    <body>Use ReentrantLock instead of synchronized block. This is the suggestion from qulice. Dont' forget to remove the PMD suppression for AvoidSynchronizedStatement after that.</body>
    <file>eo-maven-plugin/src/main/java/org/eolang/maven/ConcurrentCache.java</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2026-02-25T17:38:57Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4904" closed="2026-03-29T05:15:43+00:00">4904</issue>
    <ticket>4884</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>4884-77c26b6c</id>
    <lines>26-29</lines>
    <body>Use ReentrantLock instead of 'synchronized' in Files. We should use ReentrantLock instead of 'synchronized' to avoid potential deadlocks when multiple AtOnce attributes are used together. Moreover, 'synchronized' keyword is forbidden by qulice.</body>
    <file>eo-runtime/src/main/java/EOorg/EOeolang/EOfs/Files.java</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2026-03-01T12:13:35Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4905" closed="2026-03-11T08:56:59+00:00">4905</issue>
    <ticket>4884</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>4884-45eb808e</id>
    <lines>21-24</lines>
    <body>Use ReentrantLock instead of 'synchronized' in Heaps. We should use ReentrantLock instead of 'synchronized' to avoid potential deadlocks when multiple AtOnce attributes are used together. Moreover, 'synchronized' keyword is forbidden by qulice.</body>
    <file>eo-runtime/src/main/java/EOorg/EOeolang/Heaps.java</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2026-03-01T12:13:35Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4906" closed="2026-03-22T14:53:59+00:00">4906</issue>
    <ticket>4884</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>4884-97fce65f</id>
    <lines>15-18</lines>
    <body>Use ReentrantLock instead of 'synchronized' in AtOnce. We should use ReentrantLock instead of 'synchronized' to avoid potential deadlocks when multiple AtOnce attributes are used together. Moreover, 'synchronized' keyword is forbidden by qulice.</body>
    <file>eo-runtime/src/main/java/org/eolang/AtOnce.java</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2026-03-01T12:13:35Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/objectionary/eo/issues/4907">4907</issue>
    <ticket>4884</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>4884-73fc2856</id>
    <lines>16-19</lines>
    <body>Replace 'synchronized' with ReentrantLock. We need to replace 'synchronized' with ReentrantLock to avoid potential deadlocks when multiple threads are trying to access the cache simultaneously. Moreover, 'synchronized' keyword is forbidden by qulice.</body>
    <file>eo-runtime/src/main/java/org/eolang/PhCached.java</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2026-03-01T12:13:35Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/objectionary/eo/issues/4909">4909</issue>
    <ticket>4884</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>4884-bded9a21</id>
    <lines>15-19</lines>
    <body>Use ReentrantLock instead of synchronized block in the constructor. This will allow to avoid blocking the whole object while fetching the wrapped one. Moreover, using 'syznchronized' is forbidden by qulice. Don't forget to remove the suppression of PMD.AvoidSynchronizedStatement in the constructor after that.</body>
    <file>eo-runtime/src/main/java/org/eolang/PhOnce.java</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2026-03-01T12:13:35Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/objectionary/eo/issues/4944">4944</issue>
    <ticket>4538</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>4538-5f90ad8a</id>
    <lines>239-242</lines>
    <body>Enable fibonacci integration test when new release of EO is made. The test was disabled because we've moved EO objects from default org.eolang package to root package. That's why many required objects can't be downloaded from objectionary. When fresh release is made, need to uncomment the lines below and enable the test.</body>
    <file>eo-integration-tests/pom.xml</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2026-03-25T16:04:39Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/objectionary/eo/issues/4945">4945</issue>
    <ticket>4538</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>4538-4f7f197a</id>
    <lines>33-36</lines>
    <body>Enable ReadmeSnippetsIT. The test was disabled because we've moved EO objects from default org.eolang package to root package and most of the objects can't be downloaded from objectionary anymore. When new release is made, we need to enable the test.</body>
    <file>eo-integration-tests/src/test/java/integration/ReadmeSnippetsIT.java</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2026-03-25T16:04:39Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/objectionary/eo/issues/4946">4946</issue>
    <ticket>4538</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>4538-66cff24a</id>
    <lines>27-39</lines>
    <body>Enable integration tests. These integration tests were disabled because we've moved EO objects from default `org.eolang` package to root package. These tests stopped working: - {@link MjAssembleIT#assemblesTogether(Path)} - {@link MjRegisterIT#removesOldForeignFile(Path)} - {@link MjRegisterIT#removesUnnecessaryPulledObjects(Path)} - {@link integration.JarIT#runsProgramFromJar(Path)} - {@link integration.JarIT#runsProgramWithPackageFromJar(Path)} - {@link integration.JarIT#runsProgramWithTwoObjects(Path)} - {@link integration.SnippetIT#runsAllSnippets(String, Path)} The most probable reason - most of the tests require downloading objects from objectionary, but since the objects were moved and not released when this todo is written, they are failed to be downloaded. When fresh release is done, need to enable the tests</body>
    <file>eo-integration-tests/src/test/java/org/eolang/maven/MjAssembleIT.java</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2026-03-25T16:04:39Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/objectionary/eo/issues/4947">4947</issue>
    <ticket>4394</ticket>
    <estimate>35</estimate>
    <role>DEV</role>
    <id>4394-5ca3fe7b</id>
    <lines>26-37</lines>
    <body>Enable MjLints related tests after `lints` will be adjusted with `&#x3A6;` object. For now, lints checks for `Q` instead of `&#x3A6;`. After new version of lints released, we should enable these integration tests in MjLintIT, and others: {@link MjLintTest#doesNotFailWithNoErrorsAndWarnings}, {@link MjLintTest#doesNotDetectWarningWithoutCorrespondingFlag}, {@link MjLintTest#skipsAlreadyLinted}, {@link MjLintTest#savesVerifiedResultsToCache}, {@link MjLintTest#getsAlreadyVerifiedResultsFromCache} {@link MjTranspileTest#recompilesIfModified}, {@link MjTranspileTest#recompilesIfExpired}, {@link MjTranspileTest#doesNotRetranspileIfNotModified}, {@link MjTranspileTest#transpilesSimpleEoProgram}, {@link MjTranspileTest#transpilesSeveralEoProgramsInParallel}, {@link MjTranspileTest#transpilesSourcesForDifferentScopesWithoutIntersections}.</body>
    <file>eo-integration-tests/src/test/java/org/eolang/maven/MjLintIT.java</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2026-03-25T16:04:39Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/objectionary/eo/issues/4948">4948</issue>
    <ticket>4935</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>4935-676a00f4</id>
    <lines>251-254</lines>
    <body>Enable `comment-not-capitalized` lint. The lint incorrectly flags comments starting with `@to-do` as not capitalized. We should enable it after the lints repo fixes the issue to ignore @to-do markers. See: https://github.com/objectionary/lints/issues/805</body>
    <file>eo-runtime/pom.xml</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2026-03-25T16:04:39Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/objectionary/eo/issues/4949">4949</issue>
    <ticket>4538</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>4538-cff5e82f</id>
    <lines>258-261</lines>
    <body>Enable `object-has-data` lint. The lint incorrectly flags all objects with bytes inside because they don't have @base='&#x3A6;.org.eolang.bytes'. It was changed in https://github.com/objectionary/eo/issues/4538. Right now we have just &#x3A6;.bytes</body>
    <file>eo-runtime/pom.xml</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2026-03-25T16:04:39Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4950" closed="2026-04-01T08:48:27+00:00">4950</issue>
    <ticket>4751</ticket>
    <estimate>15</estimate>
    <role>DEV</role>
    <id>4751-97eca983</id>
    <lines>19-22</lines>
    <body>Move `sqrt` to a separate object with it's tests. It's atom, don't forget change `EOreal$EOsqrt`. For more information check this ticket: https://github.com/objectionary/eo/issues/4751</body>
    <file>eo-runtime/src/main/eo/ms/real.eo</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2026-03-25T16:04:39Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4951" closed="2026-04-08T19:58:37+00:00">4951</issue>
    <ticket>4751</ticket>
    <estimate>15</estimate>
    <role>DEV</role>
    <id>4751-14ad8ad2</id>
    <lines>26-29</lines>
    <body>Move `ln` to a separate object with it's tests. It's atom, don't forget change `EOreal$EOln`. For more information check this ticket: https://github.com/objectionary/eo/issues/4751</body>
    <file>eo-runtime/src/main/eo/ms/real.eo</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2026-03-25T16:04:39Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4952" closed="2026-04-01T08:48:06+00:00">4952</issue>
    <ticket>4751</ticket>
    <estimate>15</estimate>
    <role>DEV</role>
    <id>4751-147134e6</id>
    <lines>33-36</lines>
    <body>Move `acos` to a separate object with it's tests. It's atom, don't forget change `EOreal$EOacos`. For more information check this ticket: https://github.com/objectionary/eo/issues/4751</body>
    <file>eo-runtime/src/main/eo/ms/real.eo</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2026-03-25T16:04:39Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eo/issues/4953" closed="2026-03-27T07:44:30+00:00">4953</issue>
    <ticket>4751</ticket>
    <estimate>15</estimate>
    <role>DEV</role>
    <id>4751-d70283d8</id>
    <lines>41-44</lines>
    <body>Move `asin` to a separate object with it's tests. It's atom, don't forget change `EOreal$EOasin`. For more information check this ticket: https://github.com/objectionary/eo/issues/4751</body>
    <file>eo-runtime/src/main/eo/ms/real.eo</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2026-03-25T16:04:39Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/objectionary/eo/issues/4954">4954</issue>
    <ticket>4538</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>4538-f7729326</id>
    <lines>25-30</lines>
    <body>Enable the test {@link DataizedTest#doesNotLogGoToTokenJump}. The test was disabled because we've moved EO objects from default package 'org.eolang' to Q, but java classes are placed in 'org.eolang' java package. That's why the method {@link PhDefault#forma()} and {@link PhSafe#forma()} started to work incorrectly and show 'org.eolang'. Need to fix these methods, make sure they work as expected and enable the test.</body>
    <file>eo-runtime/src/test/java/org/eolang/DataizedTest.java</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2026-03-25T16:04:39Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/objectionary/eo/issues/4955">4955</issue>
    <ticket>4538</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>4538-2dd5751c</id>
    <lines>31-34</lines>
    <body>Enable the test {@link DataizedTest#logsAllLocationsWithPhSafe()}. The test was disabled because we've moved EO objects from default package 'org.eolang' to Q. This somehow affected {@link PhSafe} and {@link PhDefault} classes. Need to fix it and enable the test</body>
    <file>eo-runtime/src/test/java/org/eolang/DataizedTest.java</file>
    <author>Yegor Bugayenko</author>
    <email>yegor256@gmail.com</email>
    <time>2026-03-25T16:04:39Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/objectionary/eo/issues/4983">4983</issue>
    <ticket>4940</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>4940-1e013c50</id>
    <lines>29-32</lines>
    <body>Enable MjLintTests when WPA cache is ready. We need to enable the following test when we implement WPA cache. {@link MjLintTest#savesForWholeProgramAnalysisResultsToCache} For now, WPA results are not saved to cache.</body>
    <file>eo-maven-plugin/src/test/java/org/eolang/maven/MjLintTest.java</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2026-04-10T09:15:25Z</time>
    <children/>
  </puzzle>
</puzzles>
