Skip to content

docs(readme): convert README.adoc -> Markdown (renders on Glama/profile/community-health) - #47

Merged
hyperpolymath merged 1 commit into
mainfrom
fix/readme-adoc-to-markdown
Jun 25, 2026
Merged

docs(readme): convert README.adoc -> Markdown (renders on Glama/profile/community-health)#47
hyperpolymath merged 1 commit into
mainfrom
fix/readme-adoc-to-markdown

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

README was AsciiDoc → renders as raw markup in Markdown consumers (Glama MCP directory, GitHub community-health, GitHub profile). pandoc asciidoc→GFM (badges → clickable), SPDX header kept, duplicate .adoc removed. Part of the estate README-format fix.

README must be real Markdown to render in GitHub community-health, the GitHub
profile, and external MCP directories (Glama) — AsciiDoc shows as raw markup
there. pandoc asciidoc->GFM, badges fixed to clickable, SPDX header kept as an
HTML comment, duplicate README.adoc removed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@hyperpolymath
hyperpolymath enabled auto-merge (squash) June 25, 2026 19:18
@hyperpolymath
hyperpolymath merged commit 9620609 into main Jun 25, 2026
3 of 13 checks passed
@hyperpolymath
hyperpolymath deleted the fix/readme-adoc-to-markdown branch June 25, 2026 19:19
hyperpolymath added a commit that referenced this pull request Jul 29, 2026
Work from the 2026-07-29 session. Full narrative:
`dev-notes/eclexia-sitrep-2026-07-27.md`.

## 1. Parser recursion limit — fixes the ClusterFuzzLite red

ClusterFuzzLite has been red on a **reproducible** finding (artifact
`oom-abc6a184…`). It is not really an OOM: the recursive-descent parser
descends the native stack, so deeply nested input aborts the process
with `fatal runtime error: stack overflow`, which libFuzzer reports as
an OOM. **About 1000 nested parens — roughly 2 KB — was enough**, far
inside the target's 100 KB cap.

Adds `MAX_RECURSION_DEPTH` + `with_recursion_guard()` at the four
recursive entry points (`parse_expr_prec`, `parse_type`, `parse_block`,
`parse_block_inner`), returning a `RecursionLimitExceeded` error instead
of dying.

The limit is **64** because it must hold on the smallest stack the
parser runs on: Rust spawns threads with 2 MiB by default and both the
LSP and the test harness parse off the main thread. At ~8 KiB of debug
stack per level, 256 still overflowed a 2 MiB thread while passing on
the main thread's 8 MiB — a discrepancy worth knowing about.

Verified: paren/type/brace nesting at 1k and 50k all survive on a 2 MiB
thread (all three aborted at 1k before); **all 108 `.ecl` files in the
repo parse with zero depth-limit rejections**; `cargo test -p
eclexia-parser` 7/7 including a new regression test.

## 2. Scorecards `startup_failure`

The reusable declares `contents: read` at workflow level; our caller's
job-level `permissions:` block **replaced** rather than extended it, so
Actions rejected the file at parse time. Parse rejection produces **no
check run at all**, which is why `gh pr checks` showed nothing — use `gh
run list --json conclusion`. Same root cause as #51.

## 3. Cargo Audit

RUSTSEC-2026-0204 (`crossbeam-epoch` 0.9.18 → 0.9.20) and warning-only
RUSTSEC-2026-0190 (`anyhow` 1.0.101 → 1.0.104).

## 4. CodeQL pin label

SHA `7188fc36` was commented `# v3.28.1`; `git ls-remote` resolves it to
tag **v4.37.1**. The SHA works, so this was green and invisible. SHA
kept, comment corrected. Supersedes local commit `3a140ae`, which
relabelled it to the equally-wrong `# v3` — **do not push that commit**.

## 5. Documentation, human and machine

Every defect here was copy-in, not decay:

- **`0-AI-MANIFEST.a2ml` pointed agents at `README.adoc`**, gone since
#47 converted it to Markdown — the agent entry point was dead. Now v1.1
with a correct pointer and explicit read-order.
- **`ARCHITECTURE.md` was a generic template stub** describing `src/
tests/ config/`, a layout this repo does not have. Replaced with the
real pipeline, directory table, resource economy (incl. Echo/Landauer),
and an honest gaps list.
- `STATE.a2ml` advanced June → July, with new `[repo-facts]` and
`[ci-status]` blocks.
- `QUICK_STATUS.md`, `TOOLCHAIN_STATUS.md`, `.claude/CLAUDE.md`:
currency notes rather than fake rewrites — the 2026-02 tables are
accurate as descriptions but predate Echo and undercount the workspace
(**53 members, not 25 crates**). `.claude/CLAUDE.md` also still listed
**Nix as a packaging fallback** despite the Guix-only ruling of
2026-05-18.
- `README.md`: licence badge alt-text said `PMPL-1.0` while its own
image said MPL-2.0.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Signed-off-by: Jonathan D.A. Jewell <6759885+hyperpolymath@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant