From 4868dfa352d70a4517091020e1914d8ded0a3719 Mon Sep 17 00:00:00 2001
From: Vito <5780819+Tapanito@users.noreply.github.com>
Date: Wed, 4 Mar 2026 13:51:29 +0100
Subject: [PATCH 1/4] adds copilot review instructions
---
.github/copilot-instructions.md | 158 ++++++++++++++++++++++++++++++++
1 file changed, 158 insertions(+)
create mode 100644 .github/copilot-instructions.md
diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md
new file mode 100644
index 000000000..e65e9fec4
--- /dev/null
+++ b/.github/copilot-instructions.md
@@ -0,0 +1,158 @@
+# GitHub Copilot Instructions for XRPL-Standards
+
+## Repository Summary
+
+**Documentation-only** repository for XRP Ledger Standards (XLSes) — Markdown specification documents plus Python validation/site-generation scripts and GitHub Actions CI. No application code to compile. Trust these instructions; only search if something here is incomplete or in error.
+
+## Project Layout
+
+| Path | Purpose |
+| ------------------------------------ | --------------------------------------------------------------------- |
+| `XLS-NNNN-short-title/README.md` | One specification per standard (74 total) |
+| `templates/XLS_TEMPLATE.md` | Base template for all new XLS specs |
+| `templates/AMENDMENT_TEMPLATE.md` | Specification section structure for Amendment XLSes |
+| `scripts/xls_parser.py` | Parses and validates preambles of all XLS docs (main CI) |
+| `scripts/validate_xls_template.py` | Validates structure of changed files (Beta CI) |
+| `scripts/requirements.txt` | Python deps: markdown, jinja2, beautifulsoup4, pyyaml, markdown-it-py |
+| `.github/workflows/lint.yml` | prettier@3.6.2 check — **required on every PR** |
+| `.github/workflows/validate-xls.yml` | xls_parser + template validator — **required on every PR** |
+| `.pre-commit-config.yaml` | prettier@3.6.2 + trailing-whitespace, end-of-file-fixer |
+
+## XLS Preamble Format
+
+Every `README.md` must open with a `
` block (the `xls_parser.py` CI reads it):
+
+```
+
+ xls: [number]
+ title: [max 44 chars, no "XLS" prefix or number]
+ description: [one full sentence]
+ author: [Name , Name2 (@github-handle)]
+ category: [Amendment | System | Ecosystem | Meta]
+ status: [Draft | Final | Living | Deprecated | Stagnant | Withdrawn]
+ proposal-from: [URL to GitHub Discussions thread]
+ created: YYYY-MM-DD
+ updated: YYYY-MM-DD ← optional
+ implementation: [URL] ← optional; required for Final Amendment/System
+ requires: XLS-N, XLS-M ← optional
+ withdrawal-reason: [text] ← required if status is Withdrawn
+
+```
+
+Every author **must** have a link — `Name ` or `Name (@github-handle)`; a bare name fails CI.
+
+## Template Compliance
+
+> **Always read the actual template files before reviewing or writing any XLS specification.** The structure documented below reflects the templates at the time these instructions were written; the files are the authoritative source and may have been updated since.
+>
+> - `templates/XLS_TEMPLATE.md` — top-level section structure for all XLS types
+> - `templates/AMENDMENT_TEMPLATE.md` — Specification section structure for Amendment XLSes
+
+## XLS_TEMPLATE.md — Required Top-Level Sections
+
+```
+## 1. Abstract ← required
+## 2. Motivation ← optional
+## 3. Specification ← required; for Amendment use AMENDMENT_TEMPLATE.md
+## 4. Rationale ← required
+## 5. Backwards Compatibility ← optional (required if incompatibilities exist)
+## 6. Test Plan ← optional (required for Amendment/System)
+## 7. Reference Implementation ← optional
+## 8. Security Considerations ← required (XLS rejected without it)
+# Appendix ← optional
+```
+
+## AMENDMENT_TEMPLATE.md — Specification Section Structure
+
+For Amendment-category XLSes, `## 3. Specification` contains components as `### 3.N. ComponentType: \`Name\``subsections. Each component has numbered sub-subsections`#### 3.N.M.` and deeper.
+
+### Ledger Entry (`### 3.N. Ledger Entry: \`Name\``)
+
+| Sub | Heading | Notes |
+| --- | ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| .1 | `Object Identifier` | Optional if entry already on mainnet. **Key Space:** `0x[XXXX]`; **ID Calculation Algorithm:** |
+| .2 | `Fields` | See table schema below. Standard rows always present: `LedgerEntryType`, `Account`, `OwnerNode`, `PreviousTxnID`, `PreviousTxnLgrSeq`. Field detail sub-subsections at `##### 3.N.2.1.` etc. |
+| .3 | `Flags` | Optional if none. Flag names use `lsf` prefix. See Flags table schema. |
+| .4 | `Ownership` | Optional if existing. **Owner:**; **Directory Registration:** |
+| .5 | `Reserves` | Optional if existing. **Reserve Requirement:** `[Standard/Custom/None]` |
+| .6 | `Deletion` | Optional if existing. **Deletion Transactions:**; **Deletion Conditions:** bullet list; **Account Deletion Blocker:** `[Yes/No]` |
+| .7 | `Pseudo-Account` | Optional. **Uses Pseudo-Account:** `[Yes/No]`; Purpose, AccountID Derivation, Capabilities |
+| .8 | `Freeze/Lock` | Optional. **Freeze Support:**; **Lock Support:** |
+| .9 | `Invariants` | Bullet list. Use `