Repository: objectionary/jeo-maven-plugin
Pull request #1086: fix(#1085): Fix typos and markdown lint errors in codebase
Author: login: volodya-lombrozo
Created: 2025-05-12T14:05:21Z | Merged: 2025-05-14T09:54:50Z

This PR fixes typos in documentation and code to resolve failing `markdown-lint` and `typos` pipelines, including corrections to method names and comments.

Closes #1085

Linked issue #1085: Fix failing `markdown-lint` and `typos` pipelines in `master` branch
Recent [direct pushes](https://github.com/objectionary/jeo-maven-plugin/commit/de26aed93d4e08583cf6dc87f9bbc507db5ca4f5) to `master` added failing pipelines `markdown-lint` and `typos`. These must be fixed to continue development.

Diff:
diff --git a/.markdownlint.yml b/.markdownlint.yml
new file mode 100644
index 000000000..a1bad430d
--- /dev/null
+++ b/.markdownlint.yml
@@ -0,0 +1,9 @@
+# SPDX-FileCopyrightText: Copyright (c) 2016-2025 Objectionary.com
+# SPDX-License-Identifier: MIT
+---
+# Default state for all rules
+default: true
+
+# Line length : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md013.md
+MD013:
+  line_length: 100
diff --git a/.typos.toml b/.typos.toml
new file mode 100644
index 000000000..e610d27c6
--- /dev/null
+++ b/.typos.toml
@@ -0,0 +1,6 @@
+# SPDX-FileCopyrightText: Copyright (c) 2016-2025 Objectionary.com
+# SPDX-License-Identifier: MIT
+[default]
+extend-ignore-identifiers-re = [
+    "IFLE", "interfce"
+]
\ No newline at end of file
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
index 6ed4f7a88..d99acdb4a 100644
--- a/CODE_OF_CONDUCT.md
+++ b/CODE_OF_CONDUCT.md
@@ -60,7 +60,7 @@ representative at an online or offline event.
 
 Instances of abusive, harassing, or otherwise unacceptable behavior may be
 reported to the community leaders responsible for enforcement at
-team@objectionary.com.
+[team@objectionary.com](team@objectionary.com).
 All complaints will be reviewed and investigated promptly and fairly.
 
 All community leaders are obligated to respect the privacy and security of the
@@ -115,8 +115,8 @@ the community.
 ## Attribution
 
 This Code of Conduct is adapted from the [Contributor Covenant][homepage],
-version 2.0, available at
-https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
+version 2.0, available
+at [code_of_conduct.html](https://www.contributor-covenant.org/version/2/0/code_of_conduct.html).
 
 Community Impact Guidelines were inspired by [Mozilla's code of conduct
 enforcement ladder](https://github.com/mozilla/diversity).
@@ -124,5 +124,6 @@ enforcement ladder](https://github.com/mozilla/diversity).
 [homepage]: https://www.contributor-covenant.org
 
 For answers to common questions about this code of conduct, see the FAQ at
-https://www.contributor-covenant.org/faq. Translations are available at
-https://www.contributor-covenant.org/translations.
+[https://www.contributor-covenant.org/faq](https://www.contributor-covenant.org/faq).
+Translations are available at
+[https://www.contributor-covenant.org/translations](https://www.contributor-covenant.org/translations).
diff --git a/README.md b/README.md
index 0a2d05cc9..08f206ff6 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,6 @@
-<img alt="logo" src="https://www.objectionary.com/cactus.svg" height="100px" />
+# jeo-maven-plugin
+
+[![logo](https://www.objectionary.com/cactus-100.svg)](https://www.objectionary.com)
 
 [![Maven Central](https://img.shields.io/maven-central/v/org.eolang/jeo-maven-plugin.svg)](https://maven-badges.herokuapp.com/maven-central/org.eolang/jeo-maven-plugin)
 [![Javadoc](https://www.javadoc.io/badge/org.eolang/jeo-maven-plugin.svg)](https://www.javadoc.io/doc/org.eolang/jeo-maven-plugin)
@@ -13,7 +15,7 @@ the [EO](https://github.com/objectionary/eo)
 programming language.
 The plugin also provides the ability to assemble EO back into Java bytecode.
 
-# How to use
+## How to use
 
 You need at least **Maven 3.1+** and **Java 11+** to run the plugin.
 (Actually, the plugin requires **Java 8+**, but since the main
@@ -290,74 +292,74 @@ Below is the full list of these objects, grouped by category:
 
 ### Bytecode Instructions
 
-- **`jeo.opcode.*`**
+* **`jeo.opcode.*`**
   Represents a single bytecode instruction like `aload_0`, `iconst_0`, etc.
 
 ### Classes, Methods, and Fields
 
-- **`jeo.class`**
+* **`jeo.class`**
   Represents a Java class.
-- **`jeo.method`**
+* **`jeo.method`**
   Represents a Java method.
-- **`jeo.field`**
+* **`jeo.field`**
   Represents a Java field.
-- **`jeo.params`**
+* **`jeo.params`**
   Represents method parameters.
-- **`jeo.param`**
+* **`jeo.param`**
   Represents a single method parameter.
-- **`jeo.maxs`**
+* **`jeo.maxs`**
   Represents the maximum stack and local variable sizes.
 
 ### Primitive Values
 
-- **`jeo.int`** - Represents an integer value.
-- **`jeo.bool`** - Represents a boolean value.
-- **`jeo.string`** - Represents a string value.
-- **`jeo.float`** - Represents a float value.
-- **`jeo.double`** - Represents a double value.
-- **`jeo.long`** - Represents a long value.
-- **`jeo.char`** - Represents a char value.
-- **`jeo.short`** - Represents a short value.
-- **`jeo.byte`** - Represents a byte value.
-- **`jeo.bytes`** - Represents a byte array.
+* **`jeo.int`** - Represents an integer value.
+* **`jeo.bool`** - Represents a boolean value.
+* **`jeo.string`** - Represents a string value.
+* **`jeo.float`** - Represents a float value.
+* **`jeo.double`** - Represents a double value.
+* **`jeo.long`** - Represents a long value.
+* **`jeo.char`** - Represents a char value.
+* **`jeo.short`** - Represents a short value.
+* **`jeo.byte`** - Represents a byte value.
+* **`jeo.bytes`** - Represents a byte array.
 
 ### Collections and Complex Types
 
-- **`jeo.nullable`**
+* **`jeo.nullable`**
   Represents an object that can be `null`.
-- **`jeo.array`**
+* **`jeo.array`**
   Represents an array of objects.
-- **`jeo.type`**
+* **`jeo.type`**
   Represents a Java type.
-- **`jeo.seq.*`**
+* **`jeo.seq.*`**
   Represents a sequence of objects with a specific size,
   like `jeo.seq.of0`, `jeo.seq.of1`, etc.
 
 ### Annotations and Metadata
 
-- **`jeo.annotation`**
+* **`jeo.annotation`**
   Represents a Java annotation.
-- **`jeo.annotation-property`**
+* **`jeo.annotation-property`**
   Represents a single annotation element.
-- **`jeo.annotation-default-value`**
+* **`jeo.annotation-default-value`**
   Represents a default value of a Java interface method or annotation property.
-- **`jeo.inner-class`**
+* **`jeo.inner-class`**
   Represents a Java inner class annotation property.
 
 ### Local Variables and Control Flow
 
-- **`jeo.local-variable`**
+* **`jeo.local-variable`**
   Represents a local variable entry.
-- **`jeo.try-catch`**
+* **`jeo.try-catch`**
   Represents a try-catch block.
 
 ### Labels, Handles, Frames
 
-- **`jeo.label`**
+* **`jeo.label`**
   Represents a Java label.
-- **`jeo.handle`**
+* **`jeo.handle`**
   Represents a Java method handle.
-- **`jeo.frame`**
+* **`jeo.frame`**
   Represents a stack frame.
 
 ## How to Build the Plugin
@@ -373,7 +375,6 @@ Pay attention to the `qulice` profile, which activates the static analysis
 tools. The `long` profile is optional and runs the full test suite, including
 long-running integration tests.
 
-
 ## How to Run Benchmarks
 
 To run the benchmarks, you need to execute the following command:
@@ -399,7 +400,7 @@ provided they don't violate our quality standards. To avoid frustration,
 before sending us your pull request please run full Maven build:
 
 ```bash
-$ mvn clean install -Pqulice
+mvn clean install -Pqulice
 ```
 
 You will need [Maven 3.3+](https://maven.apache.org) and Java 11+ installed.
diff --git a/src/it/custom-transformations/src/main/java/org/eolang/jeo/Application.java b/src/it/custom-transformations/src/main/java/org/eolang/jeo/Application.java
index 391bb62b0..4917a8f75 100644
--- a/src/it/custom-transformations/src/main/java/org/eolang/jeo/Application.java
+++ b/src/it/custom-transformations/src/main/java/org/eolang/jeo/Application.java
@@ -17,7 +17,7 @@
 public class Application {
     public static void main(String[] args) {
         dynamicDispatch();
-        funcionalInterfaces();
+        functionalInterfaces();
         streams();
     }
 
@@ -40,7 +40,7 @@ private static int bar(double x) {
         return 8;
     }
 
-    private static void funcionalInterfaces() {
+    private static void functionalInterfaces() {
         Runnable r = () -> System.out.println("Runnable test passed successfully!");
         r.run();
         Predicate<String> p = s -> s.length() > 10;
diff --git a/src/it/custom-transformations/src/main/java/org/eolang/spring/package-info.java b/src/it/custom-transformations/src/main/java/org/eolang/spring/package-info.java
index 5c5845983..4c6acf68b 100644
--- a/src/it/custom-transformations/src/main/java/org/eolang/spring/package-info.java
+++ b/src/it/custom-transformations/src/main/java/org/eolang/spring/package-info.java
@@ -3,7 +3,7 @@
  * SPDX-License-Identifier: MIT
  */
 /**
- * This package contains all the cases that accidentaly broke `spring-fat` integration test.
+ * This package contains all the cases that accidentally broke `spring-fat` integration test.
  * So, all the identified cases are placed here.
  * @since 0.3
  */
diff --git a/src/it/jna/README.md b/src/it/jna/README.md
index 17f4514f2..92a340a4a 100644
--- a/src/it/jna/README.md
+++ b/src/it/jna/README.md
@@ -1,7 +1,7 @@
 # JNA Usage Test
 
 This integration test was added in order to mitigate the problem
-with JNA usage: https://github.com/objectionary/hone-maven-plugin/issues/58
+with [JNA usage](https://github.com/objectionary/hone-maven-plugin/issues/58)
 
 To run this test exclusively, execute the command below:
 
diff --git a/src/it/spring-fat/README.md b/src/it/spring-fat/README.md
index 0cd94d7b0..7a2b5c982 100644
--- a/src/it/spring-fat/README.md
+++ b/src/it/spring-fat/README.md
@@ -13,7 +13,7 @@ The process is as follows:
 
 1. **Download all dependencies**
 2. **Unpack them**
-3. **Disassemble**: Apply transformation via the `jeo-maven-plugin:dissassemble`
+3. **Disassemble**: Apply transformation via the `jeo-maven-plugin:disassemble`
    goal for all the
    unpacked dependencies
 4. **Assemble**: Apply back transformation via the `jeo-maven-plugin:assemble`
diff --git a/src/main/java/org/eolang/jeo/representation/bytecode/BytecodeMethod.java b/src/main/java/org/eolang/jeo/representation/bytecode/BytecodeMethod.java
index d50abd672..27372d311 100644
--- a/src/main/java/org/eolang/jeo/representation/bytecode/BytecodeMethod.java
+++ b/src/main/java/org/eolang/jeo/representation/bytecode/BytecodeMethod.java
@@ -35,7 +35,7 @@ public final class BytecodeMethod {
     /**
      * Method Instructions.
      */
-    private final List<BytecodeEntry> instructions;
+    private final List<BytecodeEntry> entries;
 
     /**
      * Method annotations.
@@ -180,7 +180,7 @@ public BytecodeMethod(
         final BytecodeAttributes attributes
     ) {
         this.tryblocks = tryblocks;
-        this.instructions = instructions;
+        this.entries = instructions;
         this.annotations = annotations;
         this.properties = properties;
         this.defvalues = defvalues;
@@ -195,7 +195,7 @@ public BytecodeMethod(
     public BytecodeMethod withoutMaxs() {
         return new BytecodeMethod(
             this.tryblocks,
-            this.instructions,
+            this.entries,
             this.annotations,
             this.properties,
             this.defvalues,
@@ -229,7 +229,7 @@ public BytecodeMethod trycatch(final BytecodeEntry entry) {
      * @return This object.
      */
     public BytecodeMethod entry(final BytecodeEntry entry) {
-        this.instructions.add(entry);
+        this.entries.add(entry);
         return this;
     }
 
@@ -255,8 +255,8 @@ public String name() {
      * Method instructions.
      * @return Instructions.
      */
-    public List<BytecodeEntry> intructions() {
-        return Collections.unmodifiableList(this.instructions);
+    public List<BytecodeEntry> instructions() {
+        return Collections.unmodifiableList(this.entries);
     }
 
     /**
@@ -277,7 +277,7 @@ public DirectivesMethod directives(final int number) {
                 new MethodName(this.properties.name()).xmir()
             ),
             this.properties.directives(this.maxs),
-            this.instructions.stream().map(BytecodeEntry::directives)
+            this.entries.stream().map(BytecodeEntry::directives)
                 .collect(Collectors.toList()),
             this.tryblocks.stream().map(BytecodeEntry::directives)
                 .collect(Collectors.toList()),
@@ -314,7 +314,7 @@ void write(final CustomClassWriter visitor) {
             if (!this.properties.isAbstract()) {
                 mvisitor.visitCode();
                 this.tryblocks.forEach(block -> block.writeTo(mvisitor, all));
-                this.instructions.forEach(instruction -> instruction.writeTo(mvisitor, all));
+                this.entries.forEach(instruction -> instruction.writeTo(mvisitor, all));
                 final BytecodeMaxs max;
                 if (this.maxs.compute()) {
                     max = this.computeMaxs();
@@ -393,7 +393,7 @@ BytecodeMethod opcode(final int opcode, final Object... args) {
      * @return Instructions view in human-readable format.
      */
     String instructionsView() {
-        return this.instructions.stream()
+        return this.entries.stream()
             .map(BytecodeEntry::view)
             .collect(Collectors.joining("\n"));
     }
@@ -404,7 +404,7 @@ String instructionsView() {
      */
     private int computeStack() {
         return new MaxStack(
-            this.instructions,
+            this.entries,
             this.tryblocks.stream()
                 .filter(BytecodeTryCatchBlock.class::isInstance)
                 .map(BytecodeTryCatchBlock.class::cast)
@@ -419,7 +419,7 @@ private int computeStack() {
     private int computeLocals() {
         return new MaxLocals(
             this.properties,
-            this.instructions,
+            this.entries,
             this.tryblocks.stream()
                 .filter(BytecodeTryCatchBlock.class::isInstance)
                 .map(BytecodeTryCatchBlock.class::cast)
diff --git a/src/main/java/org/eolang/jeo/representation/bytecode/package-info.java b/src/main/java/org/eolang/jeo/representation/bytecode/package-info.java
index 53f5ccede..a975ea67b 100644
--- a/src/main/java/org/eolang/jeo/representation/bytecode/package-info.java
+++ b/src/main/java/org/eolang/jeo/representation/bytecode/package-info.java
@@ -4,7 +4,7 @@
  */
 /**
  * Contains classes for generating bytecode in the form of Java classes.
- * Some sort of API for generating Java classes. Usefull for generating
+ * Some sort of API for generating Java classes. Useful for generating
  * inputs for tests. The classes also used in {@link org.eolang.jeo.representation.xmir} package
  * to generate bytecode from XMIR files.
  *
diff --git a/src/main/java/org/eolang/jeo/representation/directives/DirectivesValues.java b/src/main/java/org/eolang/jeo/representation/directives/DirectivesValues.java
index cc39ffb8a..d4b3ce39d 100644
--- a/src/main/java/org/eolang/jeo/representation/directives/DirectivesValues.java
+++ b/src/main/java/org/eolang/jeo/representation/directives/DirectivesValues.java
@@ -39,12 +39,12 @@ public final class DirectivesValues implements Iterable<Directive> {
 
     /**
      * Constructor.
-     * @param vaues Values themselves.
+     * @param values Values themselves.
      * @param <T> Values type.
      */
     @SafeVarargs
-    <T> DirectivesValues(final T... vaues) {
-        this("", vaues);
+    <T> DirectivesValues(final T... values) {
+        this("", values);
     }
 
     /**
diff --git a/src/test/java/org/eolang/jeo/representation/asm/AsmProgramTest.java b/src/test/java/org/eolang/jeo/representation/asm/AsmProgramTest.java
index f55d474a1..c0adc68ce 100644
--- a/src/test/java/org/eolang/jeo/representation/asm/AsmProgramTest.java
+++ b/src/test/java/org/eolang/jeo/representation/asm/AsmProgramTest.java
@@ -46,7 +46,7 @@ void skipsDebugLabels() throws Exception {
                 .top()
                 .methods()
                 .get(1)
-                .intructions()
+                .instructions()
                 .stream()
                 .anyMatch(entry -> entry instanceof BytecodeLabel || entry instanceof BytecodeLine),
             Matchers.is(false)
diff --git a/src/test/java/org/eolang/jeo/representation/directives/DirectivesInstructionTest.java b/src/test/java/org/eolang/jeo/representation/directives/DirectivesInstructionTest.java
index 478bf3394..cf7881d4d 100644
--- a/src/test/java/org/eolang/jeo/representation/directives/DirectivesInstructionTest.java
+++ b/src/test/java/org/eolang/jeo/representation/directives/DirectivesInstructionTest.java
@@ -24,7 +24,7 @@ final class DirectivesInstructionTest {
     @MethodSource("instructions")
     void addsBeautifulComment(final BytecodeInstruction instr, final String comment) {
         MatcherAssert.assertThat(
-            "We expect, that during convertation to XML, we will get a beautiful comment for bytecode instruction",
+            "We expect, that during transformation to XML, we will get a beautiful comment for bytecode instruction",
             new Xembler(instr.directives()).xmlQuietly(),
             Matchers.containsString(comment)
         );
diff --git a/src/test/resources/maxs/MaxInterface.java b/src/test/resources/maxs/MaxInterface.java
index 5504e6535..ea7bea0da 100644
--- a/src/test/resources/maxs/MaxInterface.java
+++ b/src/test/resources/maxs/MaxInterface.java
@@ -6,7 +6,7 @@
 /**
  * This class contains many different methods with different number of local
  * variables and stack elements.
- * Primarly this class is used in {@link BytecodeMethodTest} to test how the
+ * Primarily this class is used in {@link BytecodeMethodTest} to test how the
  * {@link BytecodeMethod} class counts the maxs.
  * @since 0.6
  */
diff --git a/src/test/resources/maxs/Maxs.java b/src/test/resources/maxs/Maxs.java
index 1abcb4342..8801bcbe9 100644
--- a/src/test/resources/maxs/Maxs.java
+++ b/src/test/resources/maxs/Maxs.java
@@ -29,7 +29,7 @@
 /**
  * This class contains many different methods with different number of local
  * variables and stack elements.
- * Primarly this class is used in {@link BytecodeMethodTest} to test how the
+ * Primarily this class is used in {@link BytecodeMethodTest} to test how the
  * {@link BytecodeMethod} class counts the maxs.
  * @since 0.6
  */


Reviews:
user: login: yegor256
body: @volodya-lombrozo looks good, but a few changes I would make
state: CHANGES_REQUESTED
author_association: MEMBER
submitted_at: 2025-05-13T09:14:56Z
user: login: volodya-lombrozo
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-05-13T11:42:41Z
user: login: volodya-lombrozo
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-05-13T11:46:42Z
user: login: volodya-lombrozo
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-05-13T11:47:10Z
user: login: yegor256
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-05-13T11:50:22Z
user: login: yegor256
body: @volodya-lombrozo LGTM
state: APPROVED
author_association: MEMBER
submitted_at: 2025-05-14T08:35:03Z
user: login: volodya-lombrozo
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-05-14T08:35:15Z

Review comments:
diff_hunk: @@ -0,0 +1,19 @@
+# SPDX-FileCopyrightText: Copyright (c) 2016-2025 Objectionary.com
+# SPDX-License-Identifier: MIT
+---
+# Default state for all rules
+default: true
+
+# Line length : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md013.md
+MD013:
+  line_length: 100
+
+# Inline HTML : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md033.md
+MD033:
+  allowed_elements: [ img ]
+
+# Fenced code blocks should have a language specified : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md040.md
+MD040: false
path: .markdownlint.yml
user: login: yegor256
body: @volodya-lombrozo what's the point of disabling this? Just use `text` where you don't know the language.
created_at: 2025-05-13T09:13:04Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,19 @@
+# SPDX-FileCopyrightText: Copyright (c) 2016-2025 Objectionary.com
+# SPDX-License-Identifier: MIT
+---
+# Default state for all rules
+default: true
+
+# Line length : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md013.md
+MD013:
+  line_length: 100
+
+# Inline HTML : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md033.md
+MD033:
+  allowed_elements: [ img ]
+
+# Fenced code blocks should have a language specified : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md040.md
+MD040: false
+
+# First line in a file should be a top-level heading : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md041.md
+MD041: false
path: .markdownlint.yml
user: login: yegor256
body: @volodya-lombrozo maybe it's better to listen to this checker? Just put the header on top and maybe remove the logo.
created_at: 2025-05-13T09:13:33Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,19 @@
+# SPDX-FileCopyrightText: Copyright (c) 2016-2025 Objectionary.com
+# SPDX-License-Identifier: MIT
+---
+# Default state for all rules
+default: true
+
+# Line length : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md013.md
+MD013:
+  line_length: 100
+
+# Inline HTML : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md033.md
+MD033:
+  allowed_elements: [ img ]
path: .markdownlint.yml
user: login: yegor256
body: @volodya-lombrozo you can simply use Markdown image: https://stackoverflow.com/questions/41604263/how-do-i-display-local-image-in-markdown or maybe even remove the logo from the README
created_at: 2025-05-13T09:14:49Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,19 @@
+# SPDX-FileCopyrightText: Copyright (c) 2016-2025 Objectionary.com
+# SPDX-License-Identifier: MIT
+---
+# Default state for all rules
+default: true
+
+# Line length : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md013.md
+MD013:
+  line_length: 100
+
+# Inline HTML : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md033.md
+MD033:
+  allowed_elements: [ img ]
path: .markdownlint.yml
user: login: volodya-lombrozo
body: @yegor256 This is [the only](https://stackoverflow.com/questions/24383700/resize-image-in-the-wiki-of-github-using-markdown) way to resize the image. And I don't think we need to remove the logo just to comply a linter.
created_at: 2025-05-13T11:42:40Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,19 @@
+# SPDX-FileCopyrightText: Copyright (c) 2016-2025 Objectionary.com
+# SPDX-License-Identifier: MIT
+---
+# Default state for all rules
+default: true
+
+# Line length : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md013.md
+MD013:
+  line_length: 100
+
+# Inline HTML : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md033.md
+MD033:
+  allowed_elements: [ img ]
+
+# Fenced code blocks should have a language specified : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md040.md
+MD040: false
+
+# First line in a file should be a top-level heading : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md041.md
+MD041: false
path: .markdownlint.yml
user: login: volodya-lombrozo
body: @yegor256 Yea. I've removed this.
created_at: 2025-05-13T11:46:42Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,19 @@
+# SPDX-FileCopyrightText: Copyright (c) 2016-2025 Objectionary.com
+# SPDX-License-Identifier: MIT
+---
+# Default state for all rules
+default: true
+
+# Line length : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md013.md
+MD013:
+  line_length: 100
+
+# Inline HTML : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md033.md
+MD033:
+  allowed_elements: [ img ]
+
+# Fenced code blocks should have a language specified : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md040.md
+MD040: false
path: .markdownlint.yml
user: login: volodya-lombrozo
body: @yegor256 Sure. Can't agree more.
created_at: 2025-05-13T11:47:10Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,19 @@
+# SPDX-FileCopyrightText: Copyright (c) 2016-2025 Objectionary.com
+# SPDX-License-Identifier: MIT
+---
+# Default state for all rules
+default: true
+
+# Line length : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md013.md
+MD013:
+  line_length: 100
+
+# Inline HTML : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md033.md
+MD033:
+  allowed_elements: [ img ]
path: .markdownlint.yml
user: login: yegor256
body: @volodya-lombrozo there is yet another way: changing the size of the logo in SVG. This is how we did it recently, with another logo (a similar problem): https://github.com/jcabi/jcabi-parent/pull/609/files Maybe you can do the same with our cactus SVG, which is here: https://github.com/objectionary/objectionary.github.io If you set its size to 64x64, we'll be able to use in all README files in all repos without problems.
created_at: 2025-05-13T11:50:22Z
author_association: MEMBER
diff_hunk: @@ -0,0 +1,19 @@
+# SPDX-FileCopyrightText: Copyright (c) 2016-2025 Objectionary.com
+# SPDX-License-Identifier: MIT
+---
+# Default state for all rules
+default: true
+
+# Line length : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md013.md
+MD013:
+  line_length: 100
+
+# Inline HTML : https://github.com/DavidAnson/markdownlint/blob/v0.33.0/doc/md033.md
+MD033:
+  allowed_elements: [ img ]
path: .markdownlint.yml
user: login: volodya-lombrozo
body: @yegor256 Now we are using a fixed size image. I removed this check
created_at: 2025-05-14T08:35:15Z
author_association: MEMBER

PR comments:
user: login: github-actions[bot]
created_at: 2025-05-12T14:07:31Z
body: <!-- add-pr-comment:add-pr-comment -->

### 🚀 Performance Analysis

All benchmarks are within the acceptable range. No critical degradation detected (threshold is 100%). Please refer to the detailed report for more information.
<details>
<summary>Click to see the detailed report</summary>

| Test | Base Score | PR Score | Change | % Change | Unit | Mode |
|------|------------|----------|--------|----------|------|------|
| `benchmark.AssembleBenchmark.assemble` | 51.699 | 54.869 | 3.170 | 6.13% | ops/s | Throughput |
| `benchmark.DisassembleBenchmark.disassemble` | 826.775 | 1058.524 | 231.749 | 28.03% | ops/s | Throughput |

✅ Performance gain: `benchmark.AssembleBenchmark.assemble` is faster by 3.170 ops/s (6.13%)
✅ Performance gain: `benchmark.DisassembleBenchmark.disassemble` is faster by 231.749 ops/s (28.03%)
</details>

author_association: CONTRIBUTOR
user: login: volodya-lombrozo
created_at: 2025-05-13T06:42:05Z
body: @yegor256 Could you have a look, please?
author_association: MEMBER
user: login: volodya-lombrozo
created_at: 2025-05-14T08:32:57Z
body: @yegor256 Could you have a look one more time, please?
author_association: MEMBER
user: login: volodya-lombrozo
created_at: 2025-05-14T09:28:28Z
body: @rultor merge
author_association: MEMBER
user: login: rultor
created_at: 2025-05-14T09:30:29Z
body: > @rultor merge

@volodya-lombrozo OK, I'll try to merge now. You can check the progress of the merge [here](https://www.rultor.com/t/48367-2879487841).
author_association: CONTRIBUTOR
user: login: rultor
created_at: 2025-05-14T09:37:41Z
body: > @rultor merge

@volodya-lombrozo Oops, I failed. You can see the full log [here](https://www.rultor.com/t/48367-2879487841) (spent 6min).

```
    at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75)
    at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162)
    at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:206)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:569)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:283)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:226)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:407)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:348)
Caused by: org.apache.maven.plugin.MojoFailureException: 1 build failed. See console output above for details.
    at org.apache.maven.plugins.invoker.InvokerSession.handleFailures (InvokerSession.java:247)
    at org.apache.maven.plugins.invoker.InvokerMojo.processResults (InvokerMojo.java:78)
    at org.apache.maven.plugins.invoker.AbstractInvokerMojo.execute (AbstractInvokerMojo.java:864)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:126)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:328)
    at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174)
    at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75)
    at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162)
    at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:118)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:261)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:173)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:101)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:906)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:283)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:206)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:77)
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:569)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:283)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:226)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:407)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:348)
[ERROR] 
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
\u001b[0m\u001b[0mcontainer b2e729daa214ca8d4718944aec708c9ecc637e17738ca0d029fbc4f256f88e3a is dead
Wed May 14 09:37:36 UTC 2025
```
author_association: CONTRIBUTOR
user: login: 0crat
created_at: 2025-05-14T15:17:04Z
body: @yegor256 Great job on the review! You've earned +12 points for your contribution. This includes the base 12 points for reviewing, without any deductions for self-review or lack of comments. Your current balance stands at [-558](https://www.eolang.org/zerocracy/objectionary-vitals.html). Keep up the good work and remember, more detailed reviews with comments can earn you up to 8 additional points! 💻👍

<!-- Thanks for the review! You've earned +12 points.  Your running balance is [-558](https://www.eolang.org/zerocracy/objectionary-vitals.html).  -->
author_association: NONE
user: login: 0crat
created_at: 2025-05-14T16:52:16Z
body: @volodya-lombrozo Great work on your contribution! 🎉 You've earned +23 points: +16 base, +7 for your 143 [hits-of-code](https://www.yegor256.com/2014/11/14/hits-of-code.html). This aligns perfectly with our policy, maximizing your reward without hitting any deductions. Your [balance](https://www.eolang.org/zerocracy/objectionary-vitals.html) is now +32. Keep up the excellent work and remember, [quality](https://www.yegor256.com/2018/03/06/speed-vs-quality.html) contributions like this are always appreciated!

<!-- Thanks for the contribution! You've earned +23 points for this: +16 as a basis; +7 for the 143 hits-of-code that you wrote. Please, [keep](https://www.yegor256.com/2018/03/06/speed-vs-quality.html) them coming. Your running balance is [+32](https://www.eolang.org/zerocracy/objectionary-vitals.html).  -->
author_association: NONE