Conversation
📝 WalkthroughWalkthroughDocumentation updates: renamed AltFeeTx front-matter title, added two new MorphTx specification/developer docs defining the EIP-2718 Changes
Sequence Diagram(s)(omitted) Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ❌ Deployment failed View logs |
pre-rail | 1902eda | Apr 01 2026, 09:05 AM |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@docs/about-morph/11-morphtx.md`:
- Around line 282-284: The V0 detection rule is contradictory: the condition
"firstByte >= 0xC0 or firstByte == 0x00" conflicts with the later statement that
V0 starts with an RLP list byte (>= 0xC0). Update the doc so the V0 rule only
classifies RLP list prefixes (firstByte >= 0xC0) as V0 and remove the "firstByte
== 0x00" clause (or explicitly mark 0x00 as invalid/handled separately), and
make the same correction for the corresponding lines referenced around the
second occurrence (lines ~294-295) so both descriptions match and third-party
decoders are not misled.
- Line 127: Several fenced code blocks in the file are missing language
identifiers (triggering markdownlint MD040); update each triple-backtick fence
(``` ) throughout the document to include the appropriate language label (for
example ```js, ```bash, ```json, ```text) that matches the block content so
rendering/tooling and static analysis pass; target every missing-fence instance
called out in the review and ensure each fence uses a correct language token
rather than a bare ``` to resolve MD040.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: b3968986-b575-4441-b384-d831f5472383
⛔ Files ignored due to path filters (1)
pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (3)
docs/about-morph/10-altfeetx.mddocs/about-morph/11-morphtx.mdsidebars.js
Deploying morph-doc with
|
| Latest commit: |
1902eda
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://f85737ae.morph-doc.pages.dev |
| Branch Preview URL: | https://feat-add-morphtx.morph-doc.pages.dev |
There was a problem hiding this comment.
Actionable comments posted: 3
🧹 Nitpick comments (1)
docs/about-morph/12-morphtx-developer.md (1)
127-127: Add language identifiers to fenced code blocks (MD040).Multiple fences are unlabeled. Add explicit languages (for example
text,go,json,python) to satisfy markdownlint and improve rendering/tooling.Also applies to: 192-192, 223-223, 247-247, 279-279, 300-300, 315-315, 332-332, 367-367, 376-376, 410-410, 475-475, 629-629, 852-852, 860-860, 1001-1001, 1038-1038, 1058-1058, 1075-1075, 1089-1089
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/about-morph/12-morphtx-developer.md` at line 127, Several fenced code blocks use bare triple backticks (```) without language identifiers; update each unlabeled fence (the ``` markers) to include an appropriate language tag (e.g., ```text, ```json, ```go, ```python) so markdownlint MD040 is satisfied and tooling renders correctly; apply this change to every unlabeled fence throughout the document (replace each ``` with ```<language> matching the block content).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@docs/about-morph/11-morphtx.md`:
- Around line 508-509: The receipt example currently shows V1-only fields
(`version`, `reference`, `memo`) while the shown transaction is V0; either
remove `version`, `reference`, and `memo` from the V0-shaped receipt JSON or
change the example to a V1 transaction (e.g., set `"version": "0x1"`) so the
fields match the documented visibility rules; apply the same fix to the other
examples referenced (the blocks around the second and third occurrences) and
ensure examples and surrounding text remain consistent with the `omitempty` V1+
rule.
In `@docs/about-morph/12-morphtx-developer.md`:
- Around line 282-284: The docs incorrectly classify firstByte == 0x00 as V0
despite stating V0 is an RLP list prefix (firstByte >= 0xC0); update the
algorithm text so the V0 branch only includes firstByte >= 0xC0 (and not 0x00)
wherever the rule appears (e.g., the lines mentioning "if firstByte >= 0xC0 or
firstByte == 0x00" and the repeated occurrence at 294-295), and clarify that
firstByte == 0x00 is handled by the V1/zero-byte rule instead to avoid
contradicting the RLP list-prefix definition.
- Around line 508-509: The example receipts in
docs/about-morph/12-morphtx-developer.md are inconsistent with the stated field
visibility: V0 transactions should only show feeTokenID and feeLimit, while
version/reference/memo are V1+; update the sample JSON blocks (the ones showing
"version": "0x0" and reference/memo: null) to be consistent by either changing
"version" to a V1 value and keeping reference/memo fields populated, or by
removing the reference and memo fields (and keeping version as 0x0) so V0 only
shows feeTokenID and feeLimit; ensure all other instances mentioned (the other
sample blocks around the same sections) are updated similarly so version,
reference, and memo only appear for V1+ examples.
---
Nitpick comments:
In `@docs/about-morph/12-morphtx-developer.md`:
- Line 127: Several fenced code blocks use bare triple backticks (```) without
language identifiers; update each unlabeled fence (the ``` markers) to include
an appropriate language tag (e.g., ```text, ```json, ```go, ```python) so
markdownlint MD040 is satisfied and tooling renders correctly; apply this change
to every unlabeled fence throughout the document (replace each ``` with
```<language> matching the block content).
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: e14027b7-430d-4f3f-93ad-ba6b839fc467
📒 Files selected for processing (2)
docs/about-morph/11-morphtx.mddocs/about-morph/12-morphtx-developer.md
| if firstByte >= 0xC0 or firstByte == 0x00: | ||
| → V0 format (first byte is RLP list prefix) | ||
| → Decode entire payload as RLP list |
There was a problem hiding this comment.
Fix conflicting V0 decode rule.
The algorithm classifies firstByte == 0x00 as V0, but the rationale says V0 is an RLP list prefix (>= 0xC0). This contradiction can break third-party decoders.
Suggested doc fix
-if firstByte >= 0xC0 or firstByte == 0x00:
+if firstByte >= 0xC0:
→ V0 format (first byte is RLP list prefix)
→ Decode entire payload as RLP listAlso applies to: 294-295
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@docs/about-morph/12-morphtx-developer.md` around lines 282 - 284, The docs
incorrectly classify firstByte == 0x00 as V0 despite stating V0 is an RLP list
prefix (firstByte >= 0xC0); update the algorithm text so the V0 branch only
includes firstByte >= 0xC0 (and not 0x00) wherever the rule appears (e.g., the
lines mentioning "if firstByte >= 0xC0 or firstByte == 0x00" and the repeated
occurrence at 294-295), and clarify that firstByte == 0x00 is handled by the
V1/zero-byte rule instead to avoid contradicting the RLP list-prefix definition.
| > Note: `version`, `reference`, `memo` fields only appear for V1+ transactions (`omitempty`). V0 transactions only return `feeTokenID` and `feeLimit`. | ||
|
|
There was a problem hiding this comment.
Align receipt examples with V1+ field visibility.
The sample receipt shows "version": "0x0" with reference/memo: null, but the text/table says these fields are V1+ only. Please make the example consistent (either V1 values or omit those fields for V0).
Also applies to: 514-523, 934-937
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@docs/about-morph/12-morphtx-developer.md` around lines 508 - 509, The example
receipts in docs/about-morph/12-morphtx-developer.md are inconsistent with the
stated field visibility: V0 transactions should only show feeTokenID and
feeLimit, while version/reference/memo are V1+; update the sample JSON blocks
(the ones showing "version": "0x0" and reference/memo: null) to be consistent by
either changing "version" to a V1 value and keeping reference/memo fields
populated, or by removing the reference and memo fields (and keeping version as
0x0) so V0 only shows feeTokenID and feeLimit; ensure all other instances
mentioned (the other sample blocks around the same sections) are updated
similarly so version, reference, and memo only appear for V1+ examples.
There was a problem hiding this comment.
♻️ Duplicate comments (13)
docs/about-morph/11-morphtx.md (13)
696-701:⚠️ Potential issue | 🟡 MinorAdd language identifier to V0 signing hash formula.
The V0 signing hash specification lacks a language identifier (MD040). Add
textorpseudocodefor consistency.📝 Proposed fix
-``` +```text sigHash = keccak256(0x7F || rlp([ chainID, nonce, gasTipCap, gasFeeCap, gas, to, value, data, accessList, feeTokenID, feeLimit ]))🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/about-morph/11-morphtx.md` around lines 696 - 701, The V0 signing hash block is missing a language identifier for the fenced code, so update the code fence containing the V0 signing hash (the sigHash = keccak256(0x7F || rlp([ ... ])) formula) to include a language tag such as text or pseudocode (e.g., ```text or ```pseudocode) so the snippet is correctly labeled; locate the fenced block showing sigHash, keccak256, rlp and add the chosen identifier to the opening backticks.
601-609:⚠️ Potential issue | 🟡 MinorAdd language identifier to V0 encoding specification.
The V0 encoding format block lacks a language identifier (MD040). Add
textfor consistency.📝 Proposed fix
-``` +```text Format: 0x7F || RLP([14 fields])🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/about-morph/11-morphtx.md` around lines 601 - 609, The code block that documents the V0 encoding ("Format: 0x7F || RLP([14 fields])" and the field list) is missing a language identifier; update the fenced code block to use a "text" language tag (i.e., change the opening ``` to ```text) so the V0 encoding block is annotated as plain text; locate the block containing the exact string "Format: 0x7F || RLP([14 fields])" to make this change.
704-709:⚠️ Potential issue | 🟡 MinorAdd language identifier to V1 signing hash formula.
The V1 signing hash specification lacks a language identifier (MD040). Add
textorpseudocodefor consistency.📝 Proposed fix
-``` +```text sigHash = keccak256(0x7F || rlp([ chainID, nonce, gasTipCap, gasFeeCap, gas, to, value, data, accessList, feeTokenID, feeLimit, version, reference, memo ]))🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/about-morph/11-morphtx.md` around lines 704 - 709, The code block showing the V1 signing hash formula is missing a fenced code language identifier; update the fenced block that contains "sigHash = keccak256(0x7F || rlp([ ... ]))" to include a language tag such as "text" or "pseudocode" (e.g., change the opening ``` to ```text) so the snippet is flagged correctly; locate the block containing the symbols sigHash, keccak256, and rlp and add the identifier to the opening fence.
615-623:⚠️ Potential issue | 🟡 MinorAdd language identifier to V1 encoding specification.
The V1 encoding format block lacks a language identifier (MD040). Add
textfor consistency.📝 Proposed fix
-``` +```text Format: 0x7F || 0x01 || RLP([16 fields])🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/about-morph/11-morphtx.md` around lines 615 - 623, The fenced code block that describes the V1 encoding ("Format: 0x7F || 0x01 || RLP([16 fields])" and the following Field order list) is missing a language identifier; update that code fence to use ```text (i.e., change the opening triple backticks to ```text) so the V1 encoding block includes the language identifier and matches the project's markdown linting rules.
648-665:⚠️ Potential issue | 🟡 MinorAdd language identifier to encoding/decoding paths diagram.
The encoding/decoding paths diagram lacks a language identifier (MD040). Add
textfor consistency.📝 Proposed fix
-``` +```text Encoding: Transaction.MarshalBinary() → encodeTyped(buf)🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/about-morph/11-morphtx.md` around lines 648 - 665, The fenced diagram block showing the Encoding/Decoding paths (which includes lines like Transaction.MarshalBinary(), encodeTyped(buf), MorphTx.encode(buf), Transaction.UnmarshalBinary(bytes), MorphTx.decode(bytes[1:]), and MorphTx.EncodeRLP/DecodeRLP) is missing a language identifier; update the opening triple-backtick for that diagram to ```text so the block is explicitly marked as plain text (i.e., replace ``` with ```text at the start of the diagram).
139-148:⚠️ Potential issue | 🟡 MinorAdd language identifier to the Reference generation examples.
The code block showing Reference generation patterns lacks a language identifier (MD040). Add
solidity,javascript, ortextdepending on the intended syntax.📝 Proposed fix
-``` +```solidity // Hash an order ID reference = keccak256("order-2026-03-30-00142")🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/about-morph/11-morphtx.md` around lines 139 - 148, The fenced code block showing Reference generation examples is missing a language identifier; update the triple-backtick fence to include a language (e.g., solidity) so syntax highlighting/linting passes (apply to the block containing keccak256("order-2026-03-30-00142"), bytes32(uuid), and keccak256(abi.encodePacked(merchantId, sessionId)) — add ```solidity before the block and close with ``` after).
669-672:⚠️ Potential issue | 🟡 MinorAdd language identifier to transaction hash formulas.
The transaction hash formulas lack a language identifier (MD040). Add
textfor proper rendering.📝 Proposed fix
-``` +```text V0: keccak256(0x7F || RLP([14 fields including V,R,S])) V1: keccak256(0x7F || 0x01 || RLP([16 fields including V,R,S]))🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/about-morph/11-morphtx.md` around lines 669 - 672, The fenced code block showing the transaction hash formulas for V0 and V1 is missing a language identifier; update the code fence that contains "V0: keccak256(0x7F || RLP([14 fields including V,R,S]))" and "V1: keccak256(0x7F || 0x01 || RLP([16 fields including V,R,S]))" to include the text language identifier (i.e., change the opening ``` to ```text) so the formulas render correctly.
631-642:⚠️ Potential issue | 🟡 MinorAdd language identifier to version detection pseudocode.
The version detection algorithm lacks a language identifier (MD040). Add
python,text, orpseudocodefor proper rendering.📝 Proposed fix
-``` +```python firstByte = inner_payload[0]🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/about-morph/11-morphtx.md` around lines 631 - 642, The fenced code block showing the version detection pseudocode (the snippet starting with "firstByte = inner_payload[0]" and the following if/elif/else) needs a language identifier for proper rendering; update the opening triple-backtick to include a language tag (e.g., ```python) so the block becomes a Python code fence.
570-597:⚠️ Potential issue | 🟡 MinorAdd language identifier to wire format diagram.
The wire format ASCII diagram lacks a language identifier (MD040). Add
textfor proper rendering.📝 Proposed fix
-``` +```text ┌─────────────────────────────────────────────────────────┐ │ Full wire format (MarshalBinary output) │🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/about-morph/11-morphtx.md` around lines 570 - 597, The fenced ASCII diagram block in the docs (the code block showing "Full wire format (MarshalBinary output)" with the box/lines) is missing a language identifier; update the opening ``` fence to ```text so the diagram renders correctly—find the code fence that begins the diagram (the triple-backtick before "┌─────────────────────────────────────────────────────────┐") and change it to include the text language tag.
715-725:⚠️ Potential issue | 🟡 MinorAdd language identifier to signing flow diagram.
The signing flow diagram lacks a language identifier (MD040). Add
textfor proper rendering.📝 Proposed fix
-``` +```text types.SignTx(tx, signer, privateKey) ├→ h = signer.Hash(tx)🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/about-morph/11-morphtx.md` around lines 715 - 725, The code block containing the signing flow diagram needs a language identifier so the markdown linter renders it correctly; update the fenced block that starts with the triple backticks before the diagram (which shows types.SignTx(tx, signer, privateKey), signer.Hash(tx), MorphTx.sigHash(chainID), crypto.Sign, and tx.WithSignature) to use a language tag of "text" (i.e., change ``` to ```text) so the diagram is treated as plain text.
102-104:⚠️ Potential issue | 🟡 MinorAdd language identifier to the formula code block.
The formula block lacks a language identifier, triggering markdownlint MD040. Add
textormathto improve rendering consistency.📝 Proposed fix
-``` +```text tokenAmount = ⌈(ethAmount × tokenScale) / tokenRate⌉</details> <details> <summary>🤖 Prompt for AI Agents</summary>Verify each finding against the current code and only fix it if needed.
In
@docs/about-morph/11-morphtx.mdaround lines 102 - 104, The fenced formula
block containing tokenAmount = ⌈(ethAmount × tokenScale) / tokenRate⌉ is missing
a language identifier; update the code fence to include a language tag (e.g.,
addtext ormath before the line) so the block becomes a fenced code block
with a language identifier and improves markdownlint MD040 compliance and
rendering consistency.</details> --- `459-473`: _⚠️ Potential issue_ | _🟡 Minor_ **Add language identifier to the timeline diagram.** The ASCII timeline diagram lacks a language identifier, triggering MD040. Add `text` to ensure proper rendering. <details> <summary>📝 Proposed fix</summary> ```diff -``` +```text Timeline ──────────────────────────────────────────────────────────► ``` </details> <details> <summary>🤖 Prompt for AI Agents</summary>Verify each finding against the current code and only fix it if needed.
In
@docs/about-morph/11-morphtx.mdaround lines 459 - 473, The fenced code block
that renders the ASCII timeline (the block starting withand the line "Timeline ──────────────────────────────────────────────────────────►") is missing a language identifier; update the opening fence totext so the
diagram is explicitly marked as plain text (modify the triple-backtick that
precedes the "Timeline ..." line in the 11-morphtx.md block containing the ASCII
diagram).</details> --- `634-635`: _⚠️ Potential issue_ | _🟠 Major_ **V0 version-detection rule contradicts its documentation across multiple files.** Line 634 in `docs/about-morph/11-morphtx.md` and line 282 in `docs/about-morph/12-morphtx-developer.md` both contain `if firstByte >= 0xC0 or firstByte == 0x00:` with the comment "V0 (first byte is RLP list prefix)". This is contradictory: RLP list prefixes are `>= 0xC0`, but `0x00` is not a valid RLP list prefix—it encodes a single zero byte. Either clarify why `0x00` is treated as V0, or remove it from the condition. <details> <summary>Proposed fix</summary> ```diff -if firstByte >= 0xC0 or firstByte == 0x00: +if firstByte >= 0xC0: → V0 (first byte is RLP list prefix) ``` </details> <details> <summary>🤖 Prompt for AI Agents</summary> ``` Verify each finding against the current code and only fix it if needed. In `@docs/about-morph/11-morphtx.md` around lines 634 - 635, The V0 detection conditional `if firstByte >= 0xC0 or firstByte == 0x00:` is inconsistent with RLP semantics (0x00 is not a list prefix); update the rule in both `11-morphtx.md` and `12-morphtx-developer.md` by either removing the `or firstByte == 0x00` clause or adding a brief clarifying sentence explaining why a lone 0x00 should be treated as V0, and ensure the comment “V0 (first byte is RLP list prefix)” matches the changed logic and references the same rationale. ``` </details> </blockquote></details> </blockquote></details> <details> <summary>🤖 Prompt for all review comments with AI agents</summary>Verify each finding against the current code and only fix it if needed.
Duplicate comments:
In@docs/about-morph/11-morphtx.md:
- Around line 696-701: The V0 signing hash block is missing a language
identifier for the fenced code, so update the code fence containing the V0
signing hash (the sigHash = keccak256(0x7F || rlp([ ... ])) formula) to include
a language tag such as text or pseudocode (e.g.,text orpseudocode) so
the snippet is correctly labeled; locate the fenced block showing sigHash,
keccak256, rlp and add the chosen identifier to the opening backticks.- Around line 601-609: The code block that documents the V0 encoding ("Format:
0x7F || RLP([14 fields])" and the field list) is missing a language identifier;
update the fenced code block to use a "text" language tag (i.e., change the
openingtotext) so the V0 encoding block is annotated as plain text;
locate the block containing the exact string "Format: 0x7F || RLP([14 fields])"
to make this change.- Around line 704-709: The code block showing the V1 signing hash formula is
missing a fenced code language identifier; update the fenced block that contains
"sigHash = keccak256(0x7F || rlp([ ... ]))" to include a language tag such as
"text" or "pseudocode" (e.g., change the openingtotext) so the snippet
is flagged correctly; locate the block containing the symbols sigHash,
keccak256, and rlp and add the identifier to the opening fence.- Around line 615-623: The fenced code block that describes the V1 encoding
("Format: 0x7F || 0x01 || RLP([16 fields])" and the following Field order list)
is missing a language identifier; update that code fence to usetext (i.e., change the opening triple backticks totext) so the V1 encoding block
includes the language identifier and matches the project's markdown linting
rules.- Around line 648-665: The fenced diagram block showing the Encoding/Decoding
paths (which includes lines like Transaction.MarshalBinary(), encodeTyped(buf),
MorphTx.encode(buf), Transaction.UnmarshalBinary(bytes),
MorphTx.decode(bytes[1:]), and MorphTx.EncodeRLP/DecodeRLP) is missing a
language identifier; update the opening triple-backtick for that diagram to
text so the block is explicitly marked as plain text (i.e., replacewith- Around line 139-148: The fenced code block showing Reference generation examples is missing a language identifier; update the triple-backtick fence to include a language (e.g., solidity) so syntax highlighting/linting passes (apply to the block containing keccak256("order-2026-03-30-00142"), bytes32(uuid), and keccak256(abi.encodePacked(merchantId, sessionId)) — add ```solidity before the block and close with ``` after). - Around line 669-672: The fenced code block showing the transaction hash formulas for V0 and V1 is missing a language identifier; update the code fence that contains "V0: keccak256(0x7F || RLP([14 fields including V,R,S]))" and "V1: keccak256(0x7F || 0x01 || RLP([16 fields including V,R,S]))" to include the text language identifier (i.e., change the opening ``` to ```text) so the formulas render correctly. - Around line 631-642: The fenced code block showing the version detection pseudocode (the snippet starting with "firstByte = inner_payload[0]" and the following if/elif/else) needs a language identifier for proper rendering; update the opening triple-backtick to include a language tag (e.g., ```python) so the block becomes a Python code fence. - Around line 570-597: The fenced ASCII diagram block in the docs (the code block showing "Full wire format (MarshalBinary output)" with the box/lines) is missing a language identifier; update the opening ``` fence to ```text so the diagram renders correctly—find the code fence that begins the diagram (the triple-backtick before "┌─────────────────────────────────────────────────────────┐") and change it to include the text language tag. - Around line 715-725: The code block containing the signing flow diagram needs a language identifier so the markdown linter renders it correctly; update the fenced block that starts with the triple backticks before the diagram (which shows types.SignTx(tx, signer, privateKey), signer.Hash(tx), MorphTx.sigHash(chainID), crypto.Sign, and tx.WithSignature) to use a language tag of "text" (i.e., change ``` to ```text) so the diagram is treated as plain text. - Around line 102-104: The fenced formula block containing tokenAmount = ⌈(ethAmount × tokenScale) / tokenRate⌉ is missing a language identifier; update the code fence to include a language tag (e.g., add ```text or ```math before the line) so the block becomes a fenced code block with a language identifier and improves markdownlint MD040 compliance and rendering consistency. - Around line 459-473: The fenced code block that renders the ASCII timeline (the block starting with ``` and the line "Timeline ──────────────────────────────────────────────────────────►") is missing a language identifier; update the opening fence to ```text so the diagram is explicitly marked as plain text (modify the triple-backtick that precedes the "Timeline ..." line in the 11-morphtx.md block containing the ASCII diagram). - Around line 634-635: The V0 detection conditional `if firstByte >= 0xC0 or firstByte == 0x00:` is inconsistent with RLP semantics (0x00 is not a list prefix); update the rule in both `11-morphtx.md` and `12-morphtx-developer.md` by either removing the `or firstByte == 0x00` clause or adding a brief clarifying sentence explaining why a lone 0x00 should be treated as V0, and ensure the comment “V0 (first byte is RLP list prefix)” matches the changed logic and references the same rationale.
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID:
db8745c9-2237-476a-b2c6-f24feddd8407📒 Files selected for processing (1)
docs/about-morph/11-morphtx.md
Summary by CodeRabbit