<?xml version="1.0"?>
<puzzles xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.0pdd.com/puzzles.xsd" date="2026-09-05T10:52:20+00:00" version="BUILD">
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eoc/issues/434" closed="2025-11-30T11:27:01+00:00">434</issue>
    <ticket>368</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>368-0468e9f4</id>
    <lines>37-38</lines>
    <body>Wrap logs in 'elapsed' It is necessary to use 'elapsed' in all logging cases that require output of elapsed time</body>
    <file>src/commands/java/compile.js</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2024-12-16T17:09:43Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eoc/issues/435" closed="2025-11-30T03:04:29+00:00">435</issue>
    <ticket>368</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>368-518cf6cc</id>
    <lines>39-40</lines>
    <body>Decide if the `elapsed` utility function is in the right place, consider relocating it and its test file if needed</body>
    <file>src/elapsed.js</file>
    <author>@yegor256</author>
    <email>yegor256@gmail.com</email>
    <time>2024-12-16T17:09:43Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eoc/issues/960" closed="2026-06-23T09:14:35+00:00">960</issue>
    <ticket>939</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>939-530b7798</id>
    <lines>9-17</lines>
    <body>Investigate whether `grunt-mocha-test` needs the Windows-shell fix that previously lived in `patches/grunt-mocha-cli+7.0.0.patch`. If it does, add a new patch under `patches/` targeting `grunt-mocha-test`, re-introduce the `patch-package` invocation here (guarded by the presence of `node_modules/grunt-mocha-test` for dev-vs-prod), and verify on Windows CI. If it does not, delete this script together with the `postinstall` entry in `package.json` and drop the `patch-package` devDependency.</body>
    <file>scripts/postinstall.js</file>
    <author>@rultor</author>
    <email>gpg@rultor.com</email>
    <time>2026-05-28T18:51:56Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eoc/issues/1071" closed="2026-07-24T05:21:40+00:00">1071</issue>
    <ticket>1065</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1065-f9257add</id>
    <lines>429-439</lines>
    <body>Add a test that exercises this catch block through a real async command action, not just through commander's own InvalidArgumentError handling (the --language=Eiffel case never reaches this catch, since commander intercepts it before the action runs). Every action that awaits a command properly (parse, assemble, transpile, etc.) needs java/mvn/phino to actually fail, and the one action that fails without those (generate_comments) does not await its own call, so its rejection never reaches here either, that is a separate bug worth its own ticket. Fixing that bug first (making the action await/return the call) would also give this catch block a lightweight, dependency-free test case.</body>
    <file>src/eoc.js</file>
    <author>@insomnia</author>
    <email>europeDreadlyDevil@gmail.com</email>
    <time>2026-07-21T17:56:38Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/objectionary/eoc/issues/1072" closed="2026-07-24T05:22:17+00:00">1072</issue>
    <ticket>1065</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1065-e9c76f78</id>
    <lines>498-507</lines>
    <body>Remove the duplicated "unknown platform" validation. This check is now unreachable from the CLI, since canonicalLanguage() already rejects an invalid --language value before it ever reaches select(). It is kept only as a defensive fallback for any future direct caller of select()/coms()/pipe() that bypasses the --language option. Once it is confirmed no such caller exists (or after adding one that needs it), either delete this duplicated check or extract a single shared validator that both canonicalLanguage() and select() call, so the "unknown platform" message and behavior can never drift apart.</body>
    <file>src/eoc.js</file>
    <author>@insomnia</author>
    <email>europeDreadlyDevil@gmail.com</email>
    <time>2026-07-21T17:56:38Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/objectionary/eoc/issues/1215">1215</issue>
    <ticket>500</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>500-d4dc48ed</id>
    <lines>28-35</lines>
    <body>Load the whole tree of objects at startup. Right now the only object this server can reach is the root, and it reaches it lazily through {@link Phi}. A package object learns that a child exists only when that child is taken by name, so listing everything under the root is impossible until every object is loaded into memory once, at startup, the way the session in this issue shows with its "Loaded 56 objects" line. Load them here and keep them, so that the verbs below walk a tree that is already there.</body>
    <file>inspect/src/main/java/org/eolang/eoc/Inspect.java</file>
    <author>@morphqdd</author>
    <email>europeDreadlyDevil@gmail.com</email>
    <time>2026-08-31T15:06:44Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/objectionary/eoc/issues/1216">1216</issue>
    <ticket>500</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>500-d43fec43</id>
    <lines>65-70</lines>
    <body>Answer the verbs that only read the tree. The session in this issue moves around before it changes anything: ls prints the attributes of the object we are at, go (or .foo) steps into one of them, and .. steps back out. All three need the server to remember where the session currently is, so add that position here first and let these three verbs move it.</body>
    <file>inspect/src/main/java/org/eolang/eoc/Inspect.java</file>
    <author>@morphqdd</author>
    <email>europeDreadlyDevil@gmail.com</email>
    <time>2026-08-31T15:06:44Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/objectionary/eoc/issues/1217">1217</issue>
    <ticket>500</ticket>
    <estimate>90</estimate>
    <role>DEV</role>
    <id>500-1bc58c94</id>
    <lines>71-76</lines>
    <body>Answer the verbs that change the current object. Here add (or +foo) puts a new void attribute on the object we are at, rm (or -foo) takes one away, form attaches an empty formation, put attaches data to the delta asset, and to attaches an object named elsewhere. All five write into the object, which is what the base class of objectionary/eo#6273 is meant to allow.</body>
    <file>inspect/src/main/java/org/eolang/eoc/Inspect.java</file>
    <author>@morphqdd</author>
    <email>europeDreadlyDevil@gmail.com</email>
    <time>2026-08-31T15:06:44Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/objectionary/eoc/issues/1218">1218</issue>
    <ticket>500</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>500-8ff2e6e2</id>
    <lines>77-82</lines>
    <body>Answer the verbs that copy and dispatch. Here cp makes a copy of the object we are at and attaches it under a name the caller chooses, and dd dispatches one attribute and attaches the result the same way. Both need somewhere to keep those names, since a name like the one in the session is invented by the user and belongs to no object of the program.</body>
    <file>inspect/src/main/java/org/eolang/eoc/Inspect.java</file>
    <author>@morphqdd</author>
    <email>europeDreadlyDevil@gmail.com</email>
    <time>2026-08-31T15:06:44Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/objectionary/eoc/issues/1219">1219</issue>
    <ticket>500</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>500-e7b9af4c</id>
    <lines>83-88</lines>
    <body>Answer the dataize verb. Here dataize (or run) dataizes the object the session is at and answers with its bytes, which the JavaScript side prints the way the session in the issue shows. A program that fails to dataize is the reason this tool exists, so answer with the failure instead of letting the server die on it.</body>
    <file>inspect/src/main/java/org/eolang/eoc/Inspect.java</file>
    <author>@morphqdd</author>
    <email>europeDreadlyDevil@gmail.com</email>
    <time>2026-08-31T15:06:44Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/objectionary/eoc/issues/1220">1220</issue>
    <ticket>500</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>500-3dbc9ac9</id>
    <lines>60-66</lines>
    <body>Turn this single question into an interactive session. The issue asks for a prompt that stays open, reads a verb from the terminal, sends it to the server and prints the answer, until the user leaves. Right now we ask one question and shut the server down. Add the loop, and keep the printing here, since the server is the only one that knows the objects and this side is the only one that knows the terminal.</body>
    <file>src/commands/java/inspect.js</file>
    <author>morphqdd</author>
    <email>europeDreadlyDevil@gmail.com</email>
    <time>2026-08-31T15:06:44Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/objectionary/eoc/issues/1221">1221</issue>
    <ticket>500</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>500-0f2b7f36</id>
    <lines>67-72</lines>
    <body>Do not leave the JVM behind when this process dies. The server is killed in the "finally" below, which covers a failure of our own code, but not a user pressing Ctrl-C and not a crash of the Node process itself. In both cases the JVM keeps the port open and the next run of the command fails to bind it. Kill the child on the signals too, and report a port that is already taken by naming it.</body>
    <file>src/commands/java/inspect.js</file>
    <author>morphqdd</author>
    <email>europeDreadlyDevil@gmail.com</email>
    <time>2026-08-31T15:06:44Z</time>
    <children/>
  </puzzle>
</puzzles>
