Skip to content

Establish initial Evert design - #6

Open
leynos wants to merge 8 commits into
mainfrom
initial-design
Open

Establish initial Evert design#6
leynos wants to merge 8 commits into
mainfrom
initial-design

Conversation

@leynos

@leynos leynos commented Jun 27, 2026

Copy link
Copy Markdown
Owner

Summary

This branch establishes Evert as a research and compiler-foundation project. It turns the generated Rust scaffold into a documented language-design workspace by adding the problem frame, semantic design, delivery roadmap, initial ADR set, and preserved reference inputs needed before implementation work starts.

Roadmap task: none. This branch creates the roadmap and initial design spine rather than completing a numbered roadmap task.

Execplan: none present for this branch.

Review walkthrough

Validation

  • make check-fmt: passed.
  • make lint: passed (rustdoc, Clippy, Whitaker Dylint).
  • make typecheck: passed.
  • make test: passed.
  • make markdownlint: passed (includes the en-GB-oxendict spelling gate).
  • make nixie: passed.
  • git diff --name-status origin/main...HEAD: inspected the full branch scope; the PR contains 18 changed files.

Notes

No issue is linked to this branch. No pre-implementation execplan is present; this branch is the initial design and roadmap package that future implementation tasks should derive from.

The branch has been rebased onto origin/main and force-pushed. Two conflicts were resolved by hand:

  • README.md: kept main's Ask DeepWiki badge alongside this branch's research-project pitch.
  • docs/developers-guide.md: kept main's new "Spelling policy" and "Workflow pins and Dependabot" sections alongside this branch's "Normative design sources" and "Design workflow" sections.

Rebasing also brought in main's new typos spelling gate. The generated typos.toml refreshed from the shared leynos/agent-helper-scripts dictionary, which withdraws the artifact/artifacts allowance. The affected prose in the preserved reference documents was corrected to house style rather than suppressed with local exceptions.

References

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @leynos, your pull request is larger than the review limit of 150000 diff characters

@coderabbitai

coderabbitai Bot commented Jun 27, 2026

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Summary

  • Establish Evert as a documented research and compiler-foundation project.
  • Add the language thesis, terms of reference, success criteria, context, design, roadmap, and user and developer guidance.
  • Add five ADRs covering the query-based workspace, interpreter-first backend, local-power semantics, effect-interface sealing, and capability authority staging.
  • Add the implementation plan in docs/references/evert-plan.md.
  • Preserve reference inputs and prior-art credits.
  • Align the README, documentation index, repository layout, and validation guidance with Evert.
  • Update spelling configuration and correct reference-document wording.
  • Validate formatting, linting, type checking, tests, Markdown linting, and Nixie checks.

Walkthrough

The change establishes Evert’s project documentation. It replaces generated-project text, adds language and compiler design documents, records architectural decisions, defines implementation references and roadmap phases, updates contributor guidance, and adjusts spelling validation.

Changes

Evert documentation foundation

Layer / File(s) Summary
Project orientation and terminology
README.md, docs/contents.md, docs/context.md, docs/repository-layout.md, docs/developers-guide.md, docs/users-guide.md, docs/terms-of-reference.md
Update project entry points and guides to describe Evert, its terminology, design sources, scope, status, and documentation workflow.
Architecture and language decisions
docs/evert-design.md, docs/adr-001-query-based-compiler-workspace.md, docs/adr-002-interpreter-first-backend-boundary.md, docs/adr-003-local-power-language-semantics.md, docs/adr-004-effect-interface-sealing-gate.md, docs/adr-005-capability-authority-staging.md
Define the compiler architecture, semantic model, interpreter-first backend boundary, effect staging, and capability authority rules.
Reference plan and language corpus
docs/references/evert-plan.md, docs/references/inciting-incident.md
Add the implementation plan and comprehensive language reference, including compiler components, APIs, semantic models, milestones, scope, and deferred features.
Delivery roadmap
docs/roadmap.md
Define staged implementation slices for source handling, names and types, interpretation, package tooling, native backends, and advanced language features.
Repository validation configuration
typos.toml
Add repository-specific spelling ignores, mappings, and American-English variants.

Possibly related PRs

Poem

Evert’s docs now mark the way,
With typed designs for each new day.
ADRs set the frame,
Roadmaps name the aim,
And spelling checks hold sway.

🚥 Pre-merge checks | ✅ 19 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Architectural Complexity And Maintainability ❓ Inconclusive Evidence collection is still in progress; the branch includes documentation and a lockfile change that require inspection. Inspect the lockfile diff and the new architectural documents before deciding whether the added concepts have a clear maintenance story.
✅ Passed checks (19 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarises the initial Evert design and documentation changes, and no roadmap item or issue reference applies.
Description check ✅ Passed The description clearly explains the Evert design, documentation, roadmap, ADR, reference, and validation changes.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Testing (Overall) ✅ Passed The diff adds documentation, spelling configuration, and Cargo.lock metadata only; no source or test paths changed, and README states that no usable compiler exists yet.
User-Facing Documentation ✅ Passed Accept the check: the diff adds no source or interface behaviour; users-guide states that no compiler exists, links the design and roadmap, and documents the current public commands. README signpos...
Developer Documentation ✅ Passed Developer guide records normative sources, workflow, spelling and tool requirements; design and ADRs define compiler boundaries; roadmap tasks are unchecked, with no execplan or locale set.
Module-Level Documentation ✅ Passed All three Rust module roots begin with //! documentation that states their purpose and role; the pull request adds no undocumented Rust modules.
Testing (Unit And Behavioural) ✅ Passed The diff changes documentation, spelling configuration, and Cargo.lock only; src/ and tests/ are unchanged, so no new executable behaviour or functional boundary requires tests.
Testing (Property / Proof) ✅ Passed The documentation introduces semantic invariants and explicitly recommends property-based tests in evert-design §13, plus model checking in roadmap tasks 2.1.4 and 6.2.3; it adds no formal lemma.
Testing (Compile-Time / Ui) ✅ Passed The PR changes only Markdown, Cargo.lock, and typos.toml; it adds no Rust or TypeScript compile-time behaviour. No trybuild test is required, and the design specifies focused semantic snapshots for...
Unit Architecture ✅ Passed The PR changes no executable units. Its design makes queries deterministic and immutable, keeps mutation in the driver, exposes typed edge errors, isolates adapters, and requires deterministic boun...
Domain Architecture ✅ Passed Keep this boundary: the design assigns semantics to domain crates, exposes typed ports, and places CLI, filesystem, diagnostics, hosts, and LLVM behind adapters; no implementation logic changed.
Observability ✅ Passed Pass: the diff changes documentation, Cargo.lock, and typos.toml; src, tests, scripts, and CI paths are unchanged, so it introduces no operational behaviour requiring observability.
Security And Privacy ✅ Passed Pass the check: the diff adds documentation, spelling data, and a minimal lockfile only; scans found no secrets, credentials, tokens, or private-session links, and the design stages capabilities an...
Performance And Resource Use ✅ Passed Accept this check: the 18-file diff contains 16 Markdown files, spelling configuration, and a metadata-only Cargo.lock; no executable source or runtime behaviour changed.
Concurrency And State ✅ Passed Keep this check passing: the diff adds no executable concurrency or shared mutable state; the design defers runtime work and requires cancellation RFCs, isolation rules, and model checks.
Rust Compiler Lint Integrity ✅ Passed Pass this check: the patch changes no Rust source or manifest, adds no prohibited lint suppression or clone, and preserves the existing Rust module graph and lint feedback.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch initial-design

Comment @coderabbitai help to get the list of available commands.

codescene-access[bot]

This comment was marked as outdated.

leynos and others added 8 commits August 4, 2026 16:43
Remove planning-tool citation wrapper tags from `evert-plan.md` while
preserving the referenced prose. Add a document title to the inciting
incident reference and demote the embedded ECLP sections so Markdown linting
accepts the file structure.
Define Evert's terms, architecture, ADRs, and roadmap from the inciting incident, planning input, prior art, and literature scan.

Record an interpreter-first compiler boundary, query-based workspace architecture, and local-power semantic staging so implementation work can proceed in review-sized slices.

Validation: make fmt; make nixie.
Absorb the Elicit follow-up and Firecrawl-verified paper metadata into the design documentation.

Add ADRs for the effect-interface sealing gate and capability authority staging, narrow the first executable effect set to Throw and Console, stage Clock behind the authority model, and put typed-Core growth on the critical path.

Validation: make fmt; make nixie.
Rewrite the README in the df12 house style as a research-project introduction and design-spine signpost.

Update the documentation index, repository layout, and developer guide so the visitor-facing README and normative design documents stay aligned.

Validation: make fmt; make nixie.
Add a concise README section naming the papers behind Evert's effects, handlers, laziness, local state, and typed-Core design choices.

Point readers to the full design bibliography and make clear the project is not presenting prior art as original invention.

Validation: make fmt; make nixie.
Refresh the generated `typos.toml` from the shared en-GB-oxendict dictionary
in `leynos/agent-helper-scripts`. The refreshed policy withdraws the
`artifact`/`artifacts` allowance and adds further Oxford-spelling entries, so
the previously green reference documents now fail the gate.

Correct the affected prose in `docs/references/evert-plan.md` and
`docs/references/inciting-incident.md` to house style rather than adding
local exceptions: `artifacts` to `artefacts`, `behaviors` to `behaviours`,
`optimiser` to `optimizer`, `tokenisation` to `tokenization`, and
`ritualized` to `ritualised`.

Normalize the blank-line spacing `make fmt` reports in the developer guide
after merging the upstream spelling-policy section.

Validation: make check-fmt; make lint; make typecheck; make test;
make markdownlint; make nixie.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@lodyai
lodyai Bot force-pushed the initial-design branch from 2e46a83 to 6a18904 Compare August 4, 2026 14:53
codescene-access[bot]

This comment was marked as outdated.

@codescene-access codescene-access Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No quality gates enabled for this code.

@leynos
leynos marked this pull request as ready for review August 7, 2026 00:12
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @leynos, your pull request is larger than the review limit of 150000 diff characters

@coderabbitai coderabbitai Bot added the Roadmap label Aug 7, 2026
@leynos

leynos commented Aug 9, 2026

Copy link
Copy Markdown
Owner Author

@coderabbitai full review

@coderabbitai

coderabbitai Bot commented Aug 9, 2026

Copy link
Copy Markdown
✅ Action performed

Full review finished.

@coderabbitai coderabbitai Bot removed the Roadmap label Aug 9, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 12

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/context.md`:
- Around line 11-28: Caption every table: add a clear caption to the
language/specification table in docs/context.md lines 11-28, the
compiler-architecture table in docs/context.md lines 32-46, the dependency
matrix in docs/references/evert-plan.md lines 425-433, the command-line API
table in docs/references/evert-plan.md lines 806-813, and the deliverable
mapping table in docs/references/evert-plan.md lines 1093-1126.

In `@docs/references/evert-plan.md`:
- Around line 1024-1030: Update the “Evaluation semantics through the
interpreter” MVP effect list to include only Throw<E> and Console, removing
Clock and the duplicate Throw reference. Keep Clock staged until
capability-authority fixtures are available.
- Around line 531-549: Add a figure caption immediately after the Mermaid
compiler-stage diagram, while preserving the preceding prose as its
screen-reader description. Use a concise caption identifying the diagram as the
Evert compiler pipeline, and keep the Mermaid syntax valid for Nixie validation.
- Around line 1031-1032: Clarify the heap-management requirements in the Runtime
section and reconcile the earlier tracing-collector and later reference-counting
statements. Explicitly designate the MVP heap model, identify the alternative as
future work, and state how reference cycles are handled for each applicable
model.
- Around line 328-339: Update the Logos reference prose to remove second-person
pronouns, including the “for you to create a Lexer” wording and the related “you
must have LLVM installed” text near the referenced section. Replace them with
neutral, impersonal phrasing while preserving the original technical meaning.

In `@docs/repository-layout.md`:
- Around line 3-9: Update the canonical tree in the repository-layout document
to include the spelling-tooling paths typos.toml and
scripts/generate_typos_config.py, alongside the required top-level directories
and critical contributor paths. Alternatively, explicitly state that tooling
paths are intentionally omitted, but do not describe the tree as the complete
current structure.

In `@docs/roadmap.md`:
- Around line 257-260: Add “Requires 3.2.6” to roadmap task 4.3.1 and update its
success or dependency notes to record the effect-interface sealing gate decision
before implementing the Throw<E> and Console handlers.
- Around line 348-352: Update roadmap tasks 6.2.1 and 6.3.2 to declare an
explicit dependency or shared RFC covering task-scope capture rules and
capability authority together. Require the design to specify capture,
propagation, and non-escape, and add negative fixtures for hidden authority,
handler-provided authority, and capability escape before Clock or richer
authority advances toward execution.
- Around line 3-13: Update docs/roadmap.md to expand GIST, ECLP, and ADR at
their first appearances, or link each to its governing convention where
appropriate. Preserve the existing roadmap hierarchy and references while
ensuring subsequent acronym usage remains consistent.

In `@README.md`:
- Around line 38-44: Update the README validation command list to include make
markdownlint alongside make fmt and make nixie, preserving the existing
documentation validation instructions.
- Around line 25-32: Replace the normative bullet list in the README with a
concise project summary that avoids specifying effect rows, handler/monad
semantics, or execution rules. Add links to docs/evert-design.md and
docs/context.md as the sources for those details.
- Around line 46-55: Expand project acronyms at their first occurrence in
README.md: write “Evert Core Language Proposal (ECLP)” before later ECLP
references, “Architecture Decision Record (ADR)” before later ADR references,
and introduce “concrete syntax tree (CST)” wherever CST first appears. Keep
subsequent uses abbreviated consistently.
🪄 Autofix

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: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 7227f618-2187-4e92-bd02-c75e768e4138

📥 Commits

Reviewing files that changed from the base of the PR and between 218a392 and 6a18904.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (17)
  • README.md
  • docs/adr-001-query-based-compiler-workspace.md
  • docs/adr-002-interpreter-first-backend-boundary.md
  • docs/adr-003-local-power-language-semantics.md
  • docs/adr-004-effect-interface-sealing-gate.md
  • docs/adr-005-capability-authority-staging.md
  • docs/contents.md
  • docs/context.md
  • docs/developers-guide.md
  • docs/evert-design.md
  • docs/references/evert-plan.md
  • docs/references/inciting-incident.md
  • docs/repository-layout.md
  • docs/roadmap.md
  • docs/terms-of-reference.md
  • docs/users-guide.md
  • typos.toml
🔗 Linked repositories identified

CodeRabbit considers these linked repositories for cross-repo context during reviews:

  • leynos/shared-actions (auto-detected)

Comment thread docs/context.md
Comment on lines +11 to +28
| Term | Definition |
| ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Evert | A strict-by-default functional systems language and its reference compiler. |
| ECLP | An Evert Core Language Proposal: a compact specification document for one language capability, invariant, or refusal. |
| Power | Any capability that changes evaluation, effects, mutation, ownership, concurrency, unsafe code, or abstraction machinery. Evert's rule is that power stays local, explicit, and non-contagious. |
| Pure function | A function whose inferred effect row is empty. `pure fn` asserts and locks this property. |
| Effect row | The structural set of effects attached to a function arrow or expression. |
| Effect interface | The named set of operations and operation signatures that introduce one effect into an effect row. |
| Effect-interface sealing | A restriction that prevents polymorphic effect interfaces or operation handles from leaking authority or abstraction details beyond their intended boundary. |
| Handler | A construct that interprets, eliminates, transforms, or re-emits operations from an effect row. |
| Capability | A value that grants authority to perform an operation, such as filesystem, network, clock, or unsafe system access. Capabilities are distinct from the resource values they may operate on. |
| Monadicity | Evert's support for `Functor`, `Applicative`, `Monad`, and `do M { ... }` as ordinary data-level abstractions rather than the only way to perform effects. |
| Lazy value | A pure suspended computation that is forced on demand and memoized after successful evaluation. |
| Black hole | The runtime state of a lazy value currently being forced; re-entering the same thunk reports recursive forcing instead of looping silently. |
| Mutate region | A lexical region that permits local mutable cells while preventing those cells from escaping. |
| Resource value | A linear or affine value with deterministic finalization rules. |
| Structured concurrency | A concurrency model where child tasks cannot outlive the lexical task scope that spawned them. |
| Edition | A declared language compatibility boundary that can change parsing defaults or reserve syntax without silently changing runtime meaning. |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Caption every table in the documentation set.

The changed documentation adds five tables without captions.

  • docs/context.md#L11-L28: Caption the language/specification table.
  • docs/context.md#L32-L46: Caption the compiler-architecture table.
  • docs/references/evert-plan.md#L425-L433: Caption the dependency matrix.
  • docs/references/evert-plan.md#L806-L813: Caption the command-line API table.
  • docs/references/evert-plan.md#L1093-L1126: Caption the deliverable mapping table.

As per coding guidelines, every table must have a caption.

🧰 Tools
🪛 LanguageTool

[style] ~22-~22: Consider using the typographical ellipsis character here instead.
Context: ... Functor, Applicative, Monad, and do M { ... } as ordinary data-level abstractions ...

(ELLIPSIS)

📍 Affects 2 files
  • docs/context.md#L11-L28 (this comment)
  • docs/context.md#L32-L46
  • docs/references/evert-plan.md#L425-L433
  • docs/references/evert-plan.md#L806-L813
  • docs/references/evert-plan.md#L1093-L1126
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/context.md` around lines 11 - 28, Caption every table: add a clear
caption to the language/specification table in docs/context.md lines 11-28, the
compiler-architecture table in docs/context.md lines 32-46, the dependency
matrix in docs/references/evert-plan.md lines 425-433, the command-line API
table in docs/references/evert-plan.md lines 806-813, and the deliverable
mapping table in docs/references/evert-plan.md lines 1093-1126.

Source: Coding guidelines

Comment on lines +328 to +339
**Lexing with Logos.** Logos is a derive-driven lexer generator whose stated
goals are to make it easy to create a Lexer, so you can focus on more complex
problems, and to make the generated Lexer faster than anything you'd write by
hand. It achieves this because it combines all token definitions into a single
deterministic state machine, optimizes branches into lookup tables or jump
tables, prevents backtracking inside token definitions, unwinds loops and
batches reads to minimize bounds checking, and does all of that heavy lifting
at compile time. The current line emits tokens as a `Result`: the Lexer
produces a Result<Token, Token::Error> which removes the need for the #[error]
variant, and whitespace/trivia are declared with the #[logos(skip …)]
attribute. This directly supports FR-1 (spanned tokens) and the
trivia-retention requirement.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Remove second-person pronouns from reference prose.

Rewrite phrases such as “for you to create a Lexer” and “you must have LLVM installed” with neutral wording.

Triage: [type:docstyle]

As per path instructions, Markdown documentation must avoid first- and second-person pronouns outside README.md.

Also applies to: 438-440

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/references/evert-plan.md` around lines 328 - 339, Update the Logos
reference prose to remove second-person pronouns, including the “for you to
create a Lexer” wording and the related “you must have LLVM installed” text near
the referenced section. Replace them with neutral, impersonal phrasing while
preserving the original technical meaning.

Source: Path instructions

Comment on lines +531 to +549
```mermaid
flowchart TD
SRC["Source text (.evt)"] --> LEX["evert_syntax: Logos lexer<br/>spanned tokens + trivia"]
LEX --> LAYOUT["Layout pass<br/>inject Indent / Dedent / Newline"]
LAYOUT --> PARSE["evert_syntax: Chumsky parser<br/>lossless CST + typed AST"]
PARSE --> HIR["evert_hir: name resolution<br/>desugaring + stable DefIds"]
HIR --> TYPES["evert_types: HM inference<br/>effect rows + traits + coherence"]
TYPES --> CORE["evert_core: typed Core IR"]
CORE --> LOWER["evert_lower: closures, thunks,<br/>dictionaries, handler/effect lowering"]
LOWER --> INTERP["evert_interpreter: tree-walking<br/>Core interpreter (semantic oracle)"]
LOWER --> CGAPI["evert_codegen_api: Backend trait"]
CGAPI -. deferred .-> LLVM["evert_codegen_llvm:<br/>textual IR, then Inkwell"]
INTERP --> RT["evert_runtime: values, thunks,<br/>Text, capabilities, GC"]
LLVM -. links .-> RT
DB[("evert_db: Salsa database<br/>memoization + early cutoff")] -.orchestrates.-> HIR
DB -.orchestrates.-> TYPES
DB -.orchestrates.-> CORE
DRIVER["evert_driver: CLI + diagnostics"] --> DB
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Caption the Mermaid diagram.

Add a figure caption for the compiler-stage diagram. Keep the preceding prose as the screen-reader description.

Triage: [type:docstyle]

As per coding guidelines, every diagram must have a caption and Mermaid diagrams must pass Nixie validation.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/references/evert-plan.md` around lines 531 - 549, Add a figure caption
immediately after the Mermaid compiler-stage diagram, while preserving the
preceding prose as its screen-reader description. Use a concise caption
identifying the diagram as the Evert compiler pipeline, and keep the Mermaid
syntax valid for Nixie validation.

Source: Coding guidelines

Comment on lines +1024 to +1030
- **Evaluation semantics through the interpreter**: typed Core IR and lowering
(FR-13); the tree-walking Core interpreter as the semantic oracle (FR-14);
laziness with pure-only thunks, memoization, and black-hole detection (FR-9);
`Functor`/`Monad` traits and `do` notation (FR-10); algebraic effects with
resumable handlers and `Throw<E>` (FR-11) for the MVP effect set (e.g.,
`Console`, `Clock`, `Throw`); and `mutate` regions with escape checking
(FR-12).

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

Keep Clock out of the first executable effect slice.

Remove Clock from this MVP effect list. The first executable effect set is Throw<E> and Console; Clock must remain staged until capability-authority fixtures exist. This sentence also lists Throw twice.

Based on learnings, the first executable effect MVP is limited to Throw<E> and Console, while Clock waits for authority-model conformance fixtures.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/references/evert-plan.md` around lines 1024 - 1030, Update the
“Evaluation semantics through the interpreter” MVP effect list to include only
Throw<E> and Console, removing Clock and the duplicate Throw reference. Keep
Clock staged until capability-authority fixtures are available.

Source: Learnings

Comment on lines +1031 to +1032
- **Runtime**: immutable values, thunks, real Unicode `Text`,
capability-mediated I/O, and a non-moving reference-counted heap (FR-15).

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift

Resolve the heap-management model before implementation.

This section requires a non-moving reference-counted heap, while earlier text requires a non-moving tracing collector and later text repeats reference counting. State which model belongs to the MVP and which model is future work, including cycle handling.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/references/evert-plan.md` around lines 1031 - 1032, Clarify the
heap-management requirements in the Runtime section and reconcile the earlier
tracing-collector and later reference-counting statements. Explicitly designate
the MVP heap model, identify the alternative as future work, and state how
reference cycles are handled for each applicable model.

Comment thread docs/roadmap.md
Comment on lines +257 to +260
- [ ] 4.3.1. Implement basic `Throw<E>` and `Console` handlers.
- Requires 4.2.1 and 3.2.2.
- Success: direct-style effect examples execute through handlers and
unhandled effects remain visible in the effect row.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

Make effect-interface sealing a prerequisite for handlers.

Add Requires 3.2.6 and the resulting gate decision to task 4.3.1. This task introduces executable handlers and broadens effect support, but it currently depends only on effect inference.

As per coding guidelines, roadmap tasks that broaden effect support must depend on completion of the effect-interface sealing gate.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~259-~259: Possible missing comma found.
Context: ...t-style effect examples execute through handlers and unhandled effects remain visibl...

(AI_HYDRA_LEO_MISSING_COMMA)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/roadmap.md` around lines 257 - 260, Add “Requires 3.2.6” to roadmap task
4.3.1 and update its success or dependency notes to record the effect-interface
sealing gate decision before implementing the Throw<E> and Console handlers.

Source: Coding guidelines

Comment thread docs/roadmap.md
Comment on lines +348 to +352
- [ ] 6.2.1. Accept an RFC for nurseries, task cancellation, and `Task<T, E>`.
- Requires phase 4.
- See `docs/evert-design.md` §§8 and 16.
- Success: the RFC states static capture rules, cancellation propagation, and
interpreter/runtime staging.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟠 Major | 🏗️ Heavy lift

Couple task-scope authority to capability staging.

Link tasks 6.2.1 and 6.3.2 through an explicit dependency or shared RFC. Task-scope capture rules and capability authority must define capture, propagation, and non-escape together. Add negative fixtures for hidden authority, handler-provided authority, and capability escape before Clock or richer authority moves towards execution.

Based on learnings, structured concurrency and capabilities must be designed together where task scopes capture authority.

Also applies to: 368-373

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/roadmap.md` around lines 348 - 352, Update roadmap tasks 6.2.1 and 6.3.2
to declare an explicit dependency or shared RFC covering task-scope capture
rules and capability authority together. Require the design to specify capture,
propagation, and non-escape, and add negative fixtures for hidden authority,
handler-provided authority, and capability escape before Clock or richer
authority advances toward execution.

Source: Learnings

Comment thread README.md
Comment on lines +25 to +32
- **Strict by default:** laziness is explicit, pure-only, and memoized.
- **Effects are typed:** `pure fn` means an empty inferred effect row.
- **Handlers, not monads, carry effects:** monads remain ordinary data
abstractions.
- **Compiler evidence first:** a typed Core interpreter becomes the semantic
oracle before LLVM or native execution.
- **Systems power is staged:** mutation, structured concurrency, capabilities,
ownership, and unsafe work have to earn their semantics before they execute.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win

Keep normative semantics out of the README.

Move exact rules such as the empty effect row for pure fn and the handler/monad distinction to the design documents. Keep a short project summary here and link to docs/evert-design.md and docs/context.md. This prevents source-of-truth drift.

As per coding guidelines, the README must remain concise and link-oriented, with normative semantics in the designated documentation.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@README.md` around lines 25 - 32, Replace the normative bullet list in the
README with a concise project summary that avoids specifying effect rows,
handler/monad semantics, or execution rules. Add links to docs/evert-design.md
and docs/context.md as the sources for those details.

Source: Coding guidelines

Comment thread README.md
Comment on lines +38 to +44
There is nothing to install as a language user yet. From a checkout, validate
the current research documentation with:

```shell
make fmt
make nixie
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Document the Markdownlint check.

Add make markdownlint to this validation list. The section currently runs formatting and Mermaid validation, but it claims to validate the documentation.

As per coding guidelines, Markdown changes must use make markdownlint, make fmt, and make nixie where applicable.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@README.md` around lines 38 - 44, Update the README validation command list to
include make markdownlint alongside make fmt and make nixie, preserving the
existing documentation validation instructions.

Source: Coding guidelines

Comment thread README.md
Comment on lines +46 to +55
Then start with the design spine:

- [Terms of reference](docs/terms-of-reference.md): the problem, scope,
stakeholders, constraints, and open questions.
- [Evert design](docs/evert-design.md): the proposed language semantics and
Rust reference compiler architecture.
- [Roadmap](docs/roadmap.md): the planned implementation order, from ECLP
split to interpreter-backed compiler slices.
- [ADRs](docs/contents.md#architecture-decisions): accepted decisions that
constrain the design and roadmap.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Expand project acronyms on first use.

Write Evert Core Language Proposal (ECLP), Architecture Decision Record (ADR), and concrete syntax tree (CST) before using the abbreviations. The README is the visitor entry point.

Triage: [type:docstyle]

As per coding guidelines, uncommon acronyms must be expanded on first use.

Also applies to: 65-74

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@README.md` around lines 46 - 55, Expand project acronyms at their first
occurrence in README.md: write “Evert Core Language Proposal (ECLP)” before
later ECLP references, “Architecture Decision Record (ADR)” before later ADR
references, and introduce “concrete syntax tree (CST)” wherever CST first
appears. Keep subsequent uses abbreviated consistently.

Source: Coding guidelines

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