Eiffel Loop - Round Two

13 views
Skip to first unread message

Liberty Lover

unread,
Jan 19, 2026, 7:53:32 AM (18 hours ago) Jan 19
to Eiffel Users
Modernizing Eiffel Loop Base: A Specification-Driven Approach

After several hours attempting to directly update the Eiffel Loop (EL) Base library through incremental modifications, it became clear that a "brute force" approach wasn't going to succeed. The codebase has diverged too far from current ISE Eiffel Base lib and Gobo conventions, and the tangled inheritance hierarchies made surgical updates impractical.

I have now pivoted to a specification-first methodology, using Claude as a forensic analyst rather than a code patcher.

The New Approach

Instead of trying to fix what exists, we're treating the original EL Base library as a specification document. Claude is performing a deep analysis to extract:

  1. Library Decomposition — Identifying which functionality from EL Base maps to potential simple_* libraries. Finnian's work extended and modified ISE Base classes and integrated Gobo components in ways that could be cleanly separated into focused, single-purpose libraries.

  2. Semantic Intent Capture — The specification focuses on what EL Base was trying to accomplish, not how it was structured. The inheritance hierarchies Finnian used were products of ISE Eiffel and Gobo up to the point where Void Safety disallowed further development. Our goal now in 2026 is to capture the raw intent, semantic context, and design goals—then express those as modern Void Safe code using the design guidance of the older Eiffel Loop code as it exists now.

  3. Inheritance & Generics Analysis — Understanding the original Generic Type Relationships and Inheritance chains is necessary to replicate the intent, but the output at this stage is comprehensive specifications, not code. The actual implementation will follow modern Eiffel idioms.

  Why This Matters

  EL Base may contain genuinely useful abstractions that never made it into the standard library. By extracting specifications first, we can:

  - Build focused libraries that do one thing well
  - Avoid inheriting technical debt from 15+ years of accumulated workarounds
  - Produce code that integrates cleanly with the simple_* ecosystem
  - Document the why behind design decisions, not just the what

  The specifications are being developed towards a simple_loop family of libs and will guide implementation of one or more new libraries that capture Finnian's useful innovations in a form that works with EiffelStudio 25.02 and modern Gobo.

Liberty Lover

unread,
Jan 19, 2026, 9:15:23 AM (17 hours ago) Jan 19
to eiffel...@googlegroups.com
The analysis is done and the planning has begun. Here is the highly detailed analysis:

# Gap Analysis: simple_* Specifications vs Current Implementation

## Executive Summary

After analyzing the 7 specification files against the actual simple_* ecosystem (98 libraries in `D:\prod`), I have identified:

|-----------------------|-----------------|--------------------------|
| Category              | Status          | Action Required          |
|-----------------------|-----------------|--------------------------|
| **simple_factory**    | NOT IMPLEMENTED | Create new library       |
| **simple_reflection** | NOT IMPLEMENTED | Create new library       |
| **simple_container**  | NOT IMPLEMENTED | Create new library       |
| **simple_string**     | NOT IMPLEMENTED | Create new library       |
| **simple_encoding**   | PARTIAL         | Enhance existing library |
| **simple_file**       | PARTIAL 
        | Enhance existing library |
| **simple_math**       | PARTIAL         | Enhance existing library |
|-----------------------|-----------------|--------------------------|

**Bottom Line:** 4 new libraries must be built; 3 existing libraries need enhancement.

---

## Part 1: Libraries That Do NOT Exist

### 1.1 simple_factory (MISSING)

**Spec File:** `01_simple_factory.md`

**What the Spec Defines:**
- `SIMPLE_FACTORY[G]` - Generic factory with creation agents
- `SIMPLE_CREATABLE` - Interface for factory-created objects
- `SIMPLE_SINGLETON[G]` - Thread-safe singleton pattern
- `SIMPLE_OBJECT_POOL[G]` - Object pooling with acquire/release
- `SIMPLE_LAZY[G]` - Lazy initialization wrapper
- `SIMPLE_ONCE_FACTORY` - Once-per-process initialization
- `SIMPLE_SHARED_SINGLETON[G]` - SCOOP-aware singleton
- `SIMPLE_BOUNDED_POOL[G]` - Pool with size limits

**Current State:** No `D:\prod\simple_factory` directory exists.

**Gap:** 100% - Entire library must be built.

**Recommendation:** CREATE NEW LIBRARY

---

### 1.2 simple_reflection (MISSING)

**Spec File:** `02_simple_reflection.md`

**What the Spec Defines:**
- `SIMPLE_TYPE_INFO` - Type introspection (name, ancestors, features)
- `SIMPLE_FIELD_INFO` - Field access metadata
- `SIMPLE_FEATURE_INFO` - Feature (method/attribute) metadata
- `SIMPLE_ENUMERATION[G]` - Type-safe enumeration pattern
- `SIMPLE_ENUMERATION_VALUE[G]` - Individual enum values
- `SIMPLE_TUPLE_READER` - TUPLE field access by name
- `SIMPLE_OBJECT_GRAPH_WALKER` - Object graph traversal
- `SIMPLE_STORABLE_HELPER` - Serialization assistance

**Current State:** No `D:\prod\simple_reflection` directory exists.

**Gap:** 100% - Entire library must be built.

**Recommendation:** CREATE NEW LIBRARY

---

### 1.3 simple_container (MISSING)

**Spec File:** `03_simple_container.md`

**What the Spec Defines:**
- `SIMPLE_QUERY_CONDITION[G]` - Composable filter predicates
- `SIMPLE_LIST_QUERY[G]` - Query builder for lists
- `SIMPLE_TABLE_QUERY[K,G]` - Query builder for hash tables
- `SIMPLE_CURSOR_SCOPE[G]` - RAII cursor preservation
- `SIMPLE_SLICE[G]` - List slicing with Python-like semantics
- `SIMPLE_CHAIN_ITERATOR[G]` - Multiple container iteration
- `SIMPLE_SET_OPERATIONS[G]` - Union, intersection, difference
- `SIMPLE_SORTED_LIST[G]` - Auto-sorted container
- `SIMPLE_BIMAP[K,V]` - Bidirectional map
- `SIMPLE_MULTIMAP[K,V]` - Key-to-multiple-values map

**Current State:** No `D:\prod\simple_container` directory exists.

**Gap:** 100% - Entire library must be built.

**Recommendation:** CREATE NEW LIBRARY

---

### 1.4 simple_string (MISSING)

**Spec File:** `04_simple_string.md`

**What the Spec Defines:**

**Core ZSTRING Family:**
- `SIMPLE_ZSTRING` - Dual-storage string (8-bit + compacted 32-bit overflow)
- `SIMPLE_COMPACT_SUBSTRINGS_32` - Compacted Unicode storage
- `SIMPLE_ZCODEC` - Abstract codec for 8-bit character sets
- `SIMPLE_ISO_8859_15_ZCODEC` - Default Western European codec

**String Utilities:**
- `SIMPLE_STRING_SPLITTER` - Split strings by delimiters/patterns
- `SIMPLE_STRING_ESCAPER` - Escape/unescape special characters
- `SIMPLE_STRING_EDITOR` - In-place modifications
- `SIMPLE_STRING_FORMATTER` - Printf-style and template formatting
- `SIMPLE_STRING_SEARCHER` - Boyer-Moore and other search algorithms
- `SIMPLE_STRING_BUILDER` - Efficient concatenation

**Current State:** No `D:\prod\simple_string` directory exists.

**Gap:** 100% - Entire library must be built.

**Recommendation:** CREATE NEW LIBRARY

---

## Part 2: Libraries That Exist But Need Enhancement

### 2.1 simple_encoding Enhancement

**Spec File:** `05_simple_encoding_enhancements.md`

**Current Implementation** (`D:\prod\simple_encoding\src\simple_encoding.e`):

```
WHAT EXISTS:
- utf_32_to_utf_8: STRING_32 -> STRING_8
- utf_8_to_utf_32: STRING_8 -> STRING_32
- Error handling with replacement character (U+FFFD)
- has_error, last_error status
```

**What the Spec Defines (MISSING):**

|-----------------------------|---------|----------------------------------|
| Feature                     | Exists? | Notes                            |
|-----------------------------|---------|----------------------------------|
| UTF-8 <-> UTF-32            | YES     | Core functionality present       |
| ISO-8859-1 codec            | NO  
    | Latin-1 support missing          |
| ISO-8859-15 codec           | NO      | Latin-9/Euro support missing     |
| Windows-1252 codec          | NO      | Common Windows encoding missing  |
| SIMPLE_CODEC_REGISTRY       | NO      | Codec lookup by name missing     |
| SIMPLE_CHARACTER_PROPERTIES | NO      | Unicode property queries missing |
| SIMPLE_ENCODING_DETECTOR    | NO      | BOM/heuristic detection missing  |
| SIMPLE_CODEC_CONVERTER      | NO      | Any-to-any conversion missing    |
|-----------------------------|---------|----------------------------------|

**Gap Analysis:**
- **Implemented:** ~15% (basic UTF-8/32 only)
- **Missing:** ~85%

**Recommendation:** ENHANCE EXISTING LIBRARY

**Specific Additions Needed:**
1. Add `SIMPLE_CODEC` deferred class as base
2. Add `SIMPLE_ISO_8859_1_CODEC` implementation
3. Add `SIMPLE_ISO_8859_15_CODEC` implementation
4. Add `SIMPLE_WINDOWS_1252_CODEC` implementation
5. Add `SIMPLE_CODEC_REGISTRY` for name-based lookup
6. Add `SIMPLE_CHARACTER_PROPERTIES` for Unicode queries
7. Add `SIMPLE_ENCODING_DETECTOR` for BOM detection

---

### 2.2 simple_file Enhancement

**Spec File:** `06_simple_file_enhancements.md`

**Current Implementation:**

**SIMPLE_FILE** (`D:\prod\simple_file\src\simple_file.e`):
```
WHAT EXISTS:
- File operations: read_text, write_text, read_bytes, write_bytes
- Directory operations: entries, files, directories, create_directory
- Metadata: size, modified_timestamp, extension, base_name
- Operations: copy_to, move_to, delete, rename_to
- Streaming: each_line, read_chunk
- Path transformation: resolve, normalize, absolute_path
```

**SIMPLE_PATH** (`D:\prod\simple_file\src\simple_path.e`):
```
WHAT EXISTS:
- Fluent builder: add, up, with_extension, without_extension
- Factory: make_current, make_temp, make_home
- Status: exists, is_file, is_directory, is_absolute
- Components: parent, file_name, extension, stem
```

**What the Spec Defines (MISSING):**

|-----------------------|---------|-----------------------------------|
| Feature               | Exists? | Notes                             |
|-----------------------|---------|-----------------------------------|
| Basic file operations | YES     | read/write/delete present         |
| Fluent path builder   | YES 
    | SIMPLE_PATH exists                |
| SIMPLE_FILE_PATH      | NO      | Type-safe file-only path          |
| SIMPLE_DIRECTORY_PATH | NO      | Type-safe directory-only path     |
| SIMPLE_RELATIVE_PATH  | NO      | Relative path operations          |
| SIMPLE_TEMP_PATH      | NO      | Auto-cleanup temp paths           |
| SIMPLE_PATH_TEMPLATE  | NO      | Parameterized paths               |
| relative_to operation | NO      | Compute relative path between two |
| is_under query        | NO      | Check containment                 |
| Type separation       | NO      | File vs Dir compile-time safety   |
|-----------------------|---------|-----------------------------------|

**Gap Analysis:**
- **Implemented:** ~50% (operations exist, type safety missing)
- **Missing:** ~50% (primarily type-safe path separation)

**Recommendation:** ENHANCE EXISTING LIBRARY

**Specific Additions Needed:**
1. Add `SIMPLE_FILE_PATH` as type-safe file path
2. Add `SIMPLE_DIRECTORY_PATH` as type-safe directory path
3. Add `SIMPLE_RELATIVE_PATH` for relative operations
4. Add `SIMPLE_TEMP_PATH` with auto-cleanup
5. Add `relative_to` feature to compute relative paths
6. Add `is_under` containment check

---

### 2.3 simple_math Enhancement

**Spec File:** `07_simple_math_enhancements.md`

**Current Implementation:**

**SIMPLE_MATH** (`D:\prod\simple_math\src\simple_math.e`):
```
WHAT EXISTS:
- Constants: pi, e, golden_ratio, sqrt_2
- Trig: sin, cos, tan, asin, acos, atan, atan2
- Exp/Log: exp, log, log10, log2, pow, sqrt, cbrt
- Root finding: bisection, newton_raphson
- Integration: trapezoidal, simpson
- Interpolation: linear_interpolate, lagrange_interpolate
- Utility: factorial, binomial, gcd, lcm, clamp, lerp, is_close
```

**SIMPLE_VECTOR** (`D:\prod\simple_math\src\simple_vector.e`):
```
WHAT EXISTS:
- N-dimensional vector
- Operations: +, -, *, dot, cross (3D)
- Metrics: magnitude, distance, normalized
- Statistics: sum, mean, min, max
```

**SIMPLE_MATRIX** (`D:\prod\simple_math\src\simple_matrix.e`):
```
WHAT EXISTS:
- M x N matrix
- Operations: +, -, *, transposed, scaled
- Linear algebra: trace, determinant, inverse
- Status: is_square, is_symmetric, is_diagonal, is_identity
```

**What the Spec Defines (MISSING):**

|-------------------------|---------|----------------------------------|
| Feature                 | Exists? | Notes                            |
|-------------------------|---------|----------------------------------|
| N-dimensional vectors   | YES     | SIMPLE_VECTOR exists             |
| Matrices                | YES
     | SIMPLE_MATRIX exists             |
| Statistics              | YES     | SIMPLE_STATISTICS exists         |
| SIMPLE_POINT_2D         | NO      | 2D point with x/y                |
| SIMPLE_REAL_INTERVAL    | NO      | [lower, upper] with containment  |
| SIMPLE_INTEGER_INTERVAL | NO      | Integer range with iteration     |
| SIMPLE_RECTANGLE        | NO      | 2D rectangle geometry            |
| SIMPLE_PROGRESS         | NO      | Progress tracking (0-100%)       |
| SIMPLE_RATIO            | NO      | Rational number arithmetic       |
| SIMPLE_ANGLE            | NO      | Degree/radian with normalization |
|-------------------------|---------|----------------------------------|

**Gap Analysis:**
- **Implemented:** ~60% (core linear algebra present)
- **Missing:** ~40% (geometry primitives, intervals, progress)

**Recommendation:** ENHANCE EXISTING LIBRARY

**Specific Additions Needed:**
1. Add `SIMPLE_POINT_2D` for 2D coordinate geometry
2. Add `SIMPLE_REAL_INTERVAL` for continuous ranges
3. Add `SIMPLE_INTEGER_INTERVAL` for discrete ranges
4. Add `SIMPLE_RECTANGLE` for 2D bounds
5. Add `SIMPLE_PROGRESS` for progress tracking
6. Add `SIMPLE_ANGLE` for angle conversions

---

## Part 3: Summary and Recommendations

### Action Matrix

|-----------------------|---------|----------|--------------|---------------------|
| Library               | Action  | Priority | Est. Classes | Dependencies        |
|-----------------------|---------|----------|--------------|---------------------|
| **simple_factory**    | CREATE  | HIGH     | 8-10         | None (foundational) |
| **simple_reflection** | CREATE  | HIGH     | 10-12        | simple_factory      |
| **simple_container**  | CREATE  | MEDIUM   | 12-15        | None                |
| **simple_string**     | CREATE  | HIGH     | 15-20        | simple_encoding     |
| **simple_encoding**   | ENHANCE | MEDIUM   | +6-8         | None                |
| **simple_file**       | ENHANCE | LOW      | +4-5         | None                |
| **simple_math**       | ENHANCE | LOW      | +5-6         | None                |

|-----------------------|---------|----------|--------------|---------------------|

### Recommended Implementation Order

```
Phase 1 (Foundational):
├── simple_factory (no dependencies)
└── simple_encoding enhancements (no dependencies)

Phase 2 (Core):
├── simple_reflection (needs simple_factory)
├── simple_string (needs simple_encoding)
└── simple_container (standalone)

Phase 3 (Enhancements):
├── simple_file enhancements
└── simple_math enhancements
```

### Total Effort Estimate

|---------------|-------------------|---------------------|
| Category      | New Classes       | Enhancement Classes |
|---------------|-------------------|---------------------|
| New Libraries | 45-57 classes     | -                   |
| Enhancements  | -                 | 15-19 classes       |
|---------------|-------------------|---------------------|
| **Total**     | **60-76 classes** |                     |
|---------------|-------------------|---------------------|

---

## Part 4: Detailed Gap Inventory

### 4.1 Classes to CREATE (New Libraries)

**simple_factory (8 classes):**
1. `SIMPLE_FACTORY[G]`
2. `SIMPLE_CREATABLE`
3. `SIMPLE_SINGLETON[G]`
4. `SIMPLE_SHARED_SINGLETON[G]`
5. `SIMPLE_OBJECT_POOL[G]`
6. `SIMPLE_BOUNDED_POOL[G]`
7. `SIMPLE_LAZY[G]`
8. `SIMPLE_ONCE_FACTORY`

**simple_reflection (10 classes):**
1. `SIMPLE_TYPE_INFO`
2. `SIMPLE_FIELD_INFO`
3. `SIMPLE_FEATURE_INFO`
4. `SIMPLE_ENUMERATION[G]`
5. `SIMPLE_ENUMERATION_VALUE[G]`
6. `SIMPLE_TUPLE_READER`
7. `SIMPLE_OBJECT_GRAPH_WALKER`
8. `SIMPLE_STORABLE_HELPER`
9. `SIMPLE_TYPE_REGISTRY`
10. `SIMPLE_REFLECTOR`

**simple_container (12 classes):**
1. `SIMPLE_QUERY_CONDITION[G]`
2. `SIMPLE_AND_CONDITION[G]`
3. `SIMPLE_OR_CONDITION[G]`
4. `SIMPLE_NOT_CONDITION[G]`
5. `SIMPLE_LIST_QUERY[G]`
6. `SIMPLE_TABLE_QUERY[K,G]`
7. `SIMPLE_CURSOR_SCOPE[G]`
8. `SIMPLE_SLICE[G]`
9. `SIMPLE_CHAIN_ITERATOR[G]`
10. `SIMPLE_SET_OPERATIONS[G]`
11. `SIMPLE_BIMAP[K,V]`
12. `SIMPLE_MULTIMAP[K,V]`

**simple_string (15 classes):**
1. `SIMPLE_ZSTRING`
2. `SIMPLE_READABLE_ZSTRING`
3. `SIMPLE_COMPACT_SUBSTRINGS_32`
4. `SIMPLE_ZCODEC`
5. `SIMPLE_ISO_8859_15_ZCODEC`
6. `SIMPLE_STRING_SPLITTER`
7. `SIMPLE_STRING_ESCAPER`
8. `SIMPLE_STRING_EDITOR`
9. `SIMPLE_STRING_FORMATTER`
10. `SIMPLE_STRING_SEARCHER`
11. `SIMPLE_STRING_BUILDER`
12. `SIMPLE_SUBSTRING_INDEX`
13. `SIMPLE_STRING_OCCURRENCE_ITERATOR`
14. `SIMPLE_SPLIT_STRING_LIST`
15. `SIMPLE_TEMPLATE`

### 4.2 Classes to ADD (Enhancements)

**simple_encoding additions (7 classes):**
1. `SIMPLE_CODEC` (deferred base)
2. `SIMPLE_ISO_8859_1_CODEC`
3. `SIMPLE_ISO_8859_15_CODEC`
4. `SIMPLE_WINDOWS_1252_CODEC`
5. `SIMPLE_CODEC_REGISTRY`
6. `SIMPLE_CHARACTER_PROPERTIES`
7. `SIMPLE_ENCODING_DETECTOR`

**simple_file additions (5 classes):**
1. `SIMPLE_FILE_PATH`
2. `SIMPLE_DIRECTORY_PATH`
3. `SIMPLE_RELATIVE_PATH`
4. `SIMPLE_TEMP_PATH`
5. `SIMPLE_PATH_TEMPLATE`

**simple_math additions (6 classes):**
1. `SIMPLE_POINT_2D`
2. `SIMPLE_REAL_INTERVAL`
3. `SIMPLE_INTEGER_INTERVAL`
4. `SIMPLE_RECTANGLE`
5. `SIMPLE_PROGRESS`
6. `SIMPLE_ANGLE`

---

## Part 5: What Already Works

The current simple_* ecosystem has strong coverage in areas NOT covered by these specs:

- **simple_json** - Full JSON parsing, patch, pointer support
- **simple_codec** - Multi-format (JSON, TOML, YAML, XML) codec facade
- **simple_http/simple_web** - HTTP client and web framework
- **simple_datetime** - Date/time operations
- **simple_testing** - Test framework
- **simple_logger** - Structured logging
- **simple_postgres/simple_sql** - Database access
- **simple_regex** - Regular expressions
- **simple_base64** - Base64 encoding
- **simple_csv** - CSV parsing

These specs identify gaps that would complement the existing ecosystem, not replace it.

---

## Conclusion

The gap analysis reveals a clear picture:

1. **4 entirely new libraries needed** - These provide foundational capabilities (factory patterns, reflection, container queries, string manipulation) that the ecosystem currently lacks.

2. **3 existing libraries need enhancement** - The core functionality exists but lacks the sophisticated features documented in EL (type-safe paths, extended codecs, geometry primitives).

3. **The answer is BOTH** - New libraries AND enhancements to existing ones.

The recommended approach is to build foundational libraries first (simple_factory, simple_encoding enhancements), then layer dependent libraries on top (simple_reflection, simple_string), and finish with standalone enhancements (simple_container, simple_file, simple_math).

--
You received this message because you are subscribed to the Google Groups "Eiffel Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to eiffel-users...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/eiffel-users/9ac5b38f-4052-4216-bd52-63a53675140dn%40googlegroups.com.

Liberty Lover

unread,
Jan 19, 2026, 9:46:38 AM (16 hours ago) Jan 19
to eiffel...@googlegroups.com
Join me on ZOOM if you like:

Meeting ID
870 9062 4023
Passcode
176161
Host
Larry
Participant ID
290323


On Mon, Jan 19, 2026 at 7:53 AM Liberty Lover <rix....@gmail.com> wrote:
--

Liberty Lover

unread,
Jan 19, 2026, 10:19:06 AM (16 hours ago) Jan 19
to eiffel...@googlegroups.com
The first Eiffel Loop inspired library from specifications taken from EL is now ready. Find it here. (simple_factory)

Now, moving along to the next library ...

Liberty Lover

unread,
Jan 19, 2026, 10:34:14 AM (16 hours ago) Jan 19
to eiffel...@googlegroups.com
Send me a message here if you would like to ZOOM in. I am shutting down the current ZOOM due to local chores to be done (e.g. breakfast time!). 

Liberty Lover

unread,
Jan 19, 2026, 11:12:26 AM (15 hours ago) Jan 19
to eiffel...@googlegroups.com
Hey All,

The simple_encoding lib now has what EIffel Loop lib had/has (but was stale and out of date).

● WORKFLOW 9 COMPLETE - All 71 Steps Done

  Final Checklist (Step 71):
  ┌────────────────┬──────────────────────────┐
  │      Item      │          Status          │
  ├────────────────┼──────────────────────────┤
  │ All tests pass │ 83 passed, 0 failed      │
  ├────────────────┼──────────────────────────┤
  │ README updated │ README.md with full docs │
  ├────────────────┼──────────────────────────┤
  │ Docs updated   │ docs/index.html created  │
  ├────────────────┼──────────────────────────┤
  │ Git clean      │ Working tree clean       │
  └────────────────┴──────────────────────────┘

  Summary of simple_encoding Enhancement

  Added 7 new classes:
  - SIMPLE_CODEC - Deferred base for single-byte codecs
  - SIMPLE_ISO_8859_1_CODEC - Latin-1 (Western European)
  - SIMPLE_ISO_8859_15_CODEC - Latin-9 (Euro sign support)
  - SIMPLE_WINDOWS_1252_CODEC - Windows-1252
  - SIMPLE_CHARACTER_PROPERTIES - Unicode classification
  - SIMPLE_ENCODING_DETECTOR - BOM detection, UTF-8 validation
  - SIMPLE_CODEC_REGISTRY - Codec lookup by name with aliases

  Test coverage: 83 tests (42 original + 41 new)

  Documentation created:
  - README.md with installation, examples, API reference
  - docs/index.html styled documentation page
  - Full specs/ directory with design audit, hardening report, naming review

  Git commit: 6a4c91e - v2.0.0: Add codec classes and encoding utilities

  The library is now ready for GitHub push when you're ready.

Liberty Lover

unread,
Jan 19, 2026, 12:28:02 PM (14 hours ago) Jan 19
to eiffel...@googlegroups.com
● simple_reflection - we have completed the full hardening workflow:

  1. Maintenance Xtreme (X01-X10)
  2. Bug Hunting (H01-H08) - found 3 bugs
  3. Bug Fixing (F01-F07) - fixed object ID collision, INTEGER_64 crash
  4. Naming Review (N01-N08) - clean, no changes needed
  5. GitHub Prep (G01-G04) - pushed to https://github.com/simple-eiffel/simple_reflection

  44 tests passing, v1.0.0 published.

Liberty Lover

unread,
Jan 19, 2026, 12:40:43 PM (14 hours ago) Jan 19
to eiffel...@googlegroups.com
I am adding a new step for our library development process: Claude will now be tasked with identifying the best ways to integrate new libraries (such as simple_reflection) into the existing simple_* ecosystem.

Please be aware that as these libraries are evaluated, reworked, and hardened, these integrations may temporarily break downstream code. I apologize for any inconvenience this may cause. Our end goal is to produce rock-solid code, but as the project is currently in beta, please expect some instability as we work toward a more stable release.

Best regards,

Larry

Liberty Lover

unread,
Jan 19, 2026, 12:51:55 PM (13 hours ago) Jan 19
to eiffel...@googlegroups.com
Hey All,

From my perspective on Eiffel Loop, one of the most immediately memorable parts of Eiffel Loop that I wanted to try, but never could was the ZSTRING family of classes. Well, we have now arrived at the time where we get to build a fresh take on this library in modern Eiffel terms.

Wish me luck ... I'm goin' in!!!

---

# EXECUTION PLAN: simple_zstring

|------------------|-------------------------------------------------|
| Item             | Value                                           |
|------------------|-------------------------------------------------|
| **Library**      | simple_zstring                                  |
| **Type**         | NEW                                             |
| **Total Steps**  | 55                                              |
| **Spec File**    | `D:\prod\simple_loop\specs\04_simple_string.md` |
| **Target**       | `D:\prod\simple_zstring\`                       |
| **Dependencies** | simple_encoding (Phase 1)                       |
|------------------|-------------------------------------------------|

---

## Pre-Flight Checklist

Before starting, confirm:

- [ ] Read `D:\prod\reference_docs\research\AI-slop\prompts\00_ANTI-SLOP-RULES.md`
- [ ] Read spec file `04_simple_string.md` (contains ZSTRING specification)
- [ ] Verify simple_encoding enhancements are complete (dependency)
- [ ] Confirm target directory exists or will be created

**Say this before starting:**
```
ANTI-SLOP RULES LOADED:
- No hypothetical results
- Evidence required for every claim
- Compile before document
- No imagined code behavior
- Document ACTUAL not EXPECTED
```

---

## WORKFLOW 1: Project Creation (Steps 1-10)

### Step 1: ANALYZE-REQUIREMENTS
**Action:** Extract contractual elements from spec file.
**Input:** Read `D:\prod\simple_loop\specs\04_simple_string.md`
**Output:** List of:
- Domain concepts (ZSTRING dual-storage, codecs, compact substrings)
- Required classes (~15 total)
- Key constraints
- Error conditions

**Classes to build (from spec):**

*ZSTRING Core (dual-storage architecture):*
1. SIMPLE_ZSTRING (main class - 8-bit primary + 32-bit overflow)
2. SIMPLE_READABLE_ZSTRING (deferred ancestor)
3. SIMPLE_COMPACT_SUBSTRINGS_32 (compacted Unicode storage)
4. SIMPLE_ZCODEC (abstract codec base)
5. SIMPLE_ISO_8859_15_ZCODEC (default Western European codec)

*String Utilities:*
6. SIMPLE_ZSTRING_SPLITTER
7. SIMPLE_ZSTRING_ESCAPER
8. SIMPLE_ZSTRING_EDITOR
9. SIMPLE_ZSTRING_FORMATTER
10. SIMPLE_ZSTRING_SEARCHER
11. SIMPLE_ZSTRING_BUILDER
12. SIMPLE_SUBSTRING_INDEX
13. SIMPLE_ZSTRING_OCCURRENCE_ITERATOR
14. SIMPLE_SPLIT_ZSTRING_LIST
15. SIMPLE_ZSTRING_TEMPLATE

**Verification:** List produced, no code written yet.

---

### Step 2: DEFINE-CLASS-STRUCTURE
**Action:** Create class skeletons with signatures only.
**Input:** Requirements from Step 1
**Output:** Create files:
```
D:\prod\simple_zstring\
├── simple_zstring.ecf
├── src\
│   ├── core\
│   │   ├── simple_zstring.e
│   │   ├── simple_readable_zstring.e
│   │   ├── simple_compact_substrings_32.e
│   │   ├── simple_zcodec.e
│   │   └── simple_iso_8859_15_zcodec.e
│   ├── splitter\
│   │   ├── simple_zstring_splitter.e
│   │   └── simple_split_zstring_list.e
│   ├── editor\
│   │   ├── simple_zstring_editor.e
│   │   └── simple_zstring_escaper.e
│   ├── format\
│   │   ├── simple_zstring_formatter.e
│   │   ├── simple_zstring_builder.e
│   │   └── simple_zstring_template.e
│   └── search\
│       ├── simple_zstring_searcher.e
│       ├── simple_substring_index.e
│       └── simple_zstring_occurrence_iterator.e
└── testing\
    └── zstring_tests.e

```

**Verification:** COMPILE
```bash
/d/prod/ec.sh -batch -config /d/prod/simple_zstring/simple_zstring.ecf -target simple_zstring_tests -c_compile
```

---

### Step 3: WRITE-PRECONDITIONS
**Action:** Add `require` clauses to all features.
**Output:** All features have preconditions.

---

### Step 4: WRITE-POSTCONDITIONS
**Action:** Add `ensure` clauses to all features.
**Output:** All features have postconditions.

---

### Step 5: WRITE-INVARIANTS
**Action:** Add class `invariant` clauses.

**Key ZSTRING invariants:**
- `area.count >= count` (8-bit storage always exists)
- `unencoded.is_empty implies not has_mixed_encoding`
- Codec consistency maintained
- Count synchronization between storage layers

**Verification:** COMPILE

---

### Step 6: IMPLEMENT-FEATURES
**Action:** Write feature bodies.

**Critical ZSTRING features:**
- Dual-storage management (8-bit + 32-bit overflow)
- `z_code` for accessing full Unicode code points
- `set_z_code` for setting with automatic storage selection
- Codec encode/decode for 8-bit representation
- `unencoded` access for 32-bit outliers

**Verification:** COMPILE

---

### Step 7: COMPILE-CHECK
**Action:** Fix any compiler errors.
**Verification:** Clean compilation.

---

### Step 8: RUN-CONTRACTS
**Action:** Run with assertions enabled.
**Verification:** RUN smoke test.

---

### Step 9: GENERATE-TESTS
**Action:** Write test cases.

**Test categories:**
- Pure ASCII (no overflow)
- Latin characters (codec-encodable)
- Mixed encoding (ASCII + emoji)
- Full Unicode (CJK, emoji, symbols)
- Codec boundary tests
- Memory efficiency verification

**Verification:** COMPILE + RUN

---

### Step 10: ITERATE-REFINE
**Action:** Fix issues until green.
**Verification:** All tests pass.

---

## WORKFLOW 2: Maintenance (Steps 11-18)

### Step 11: AUDIT-CONTRACTS (M01)
### Step 12: AUDIT-STRUCTURE (M02)
### Step 13: AUDIT-VOID-SAFETY (M03)
### Step 14: AUDIT-TESTS (M04)
### Step 15: ADD-MISSING-PRECONDITIONS (M05) - COMPILE
### Step 16: ADD-MISSING-POSTCONDITIONS (M06) - COMPILE
### Step 17: COMPILE-VALIDATE (M07) - COMPILE + RUN
### Step 18: TEST-NEW-CONTRACTS (M08)

---

## WORKFLOW 3: Maintenance Xtreme (Steps 19-28)

### Step 19: RECONNAISSANCE (X01)
### Step 20: VULNERABILITY-SCAN (X02)
### Step 21: CONTRACT-ASSAULT (X03) - COMPILE
### Step 22: ADVERSARIAL-TESTS (X04) - COMPILE + RUN
### Step 23: STRESS-ATTACK (X05) - COMPILE + RUN
### Step 24: MUTATION-WARFARE (X06)
### Step 25: TRIAGE-FINDINGS (X07)
### Step 26: SURGICAL-FIXES (X08) - COMPILE + RUN
### Step 27: HARDEN-DEFENSES (X09) - COMPILE + RUN
### Step 28: VERIFY-HARDENING (X10)

---

## WORKFLOW 4: Bug Hunting (Steps 29-36)

### Step 29: SURVEY-RISK-AREAS (H01)
### Step 30: ANALYZE-SEMANTICS (H02)
### Step 31: PROBE-EDGE-CASES (H03)
### Step 32: PROBE-STATE-SEQUENCES (H04)
### Step 33: PROBE-CONCURRENCY (H05)
### Step 34: CONSTRUCT-EXPLOIT (H06)
### Step 35: CONFIRM-ROOT-CAUSE (H07)
### Step 36: DOCUMENT-FINDING (H08)

---

## WORKFLOW 5: Bug Fixing (Steps 37-43)

### Step 37: REPRODUCE-BUG (F01) - COMPILE + RUN
### Step 38: CLASSIFY-FIX-LAYERS (F02)
### Step 39: FIX-SPEC-CONTRACT (F03) - COMPILE
### Step 40: FIX-CODE (F04) - COMPILE + RUN
### Step 41: VERIFY-FIX (F05) - COMPILE + RUN
### Step 42: VERIFY-NO-REGRESSION (F06)
### Step 43: ADD-REGRESSION-TEST (F07) - COMPILE + RUN

---

## WORKFLOW 6: Naming Review (Steps 44-51)

### Step 44: SCAN-VIOLATIONS (N01)
### Step 45: CLASSIFY-ISSUES (N02)
### Step 46: FIX-CLASSES (N03) - COMPILE
### Step 47: FIX-FEATURES (N04) - COMPILE
### Step 48: FIX-ARGUMENTS (N05) - COMPILE
### Step 49: FIX-CONTRACTS (N06) - COMPILE
### Step 50: FIX-MAGIC-NUMBERS (N07) - COMPILE
### Step 51: VERIFY-NAMING (N08) - COMPILE + RUN

---

## WORKFLOW 7: GitHub Prep (Steps 52-55)

### Step 52: GIT-INIT (G01)
```bash
cd /d/prod/simple_zstring
git init
git add .
git commit -m "Initial commit: simple_zstring library

ZSTRING dual-storage string implementation for memory-efficient
Unicode handling. Based on Eiffel Loop ZSTRING architecture.

Co-Authored-By: Claude Opus 4.5 <nor...@anthropic.com>"
```

### Step 53: README-STANDARD (G02)
### Step 54: DOCS-STANDARD (G03)
### Step 55: FINAL-CHECKLIST (G04)

```bash
git remote add origin https://github.com/simple-eiffel/simple_zstring.git
git push -u origin main
```

---

## Completion Criteria

Library is DONE when:
1. All 55 steps completed
2. All tests pass
3. Published to GitHub
4. README and docs complete
5. ZSTRING dual-storage architecture verified working
6. Memory efficiency demonstrated vs STRING_32

Liberty Lover

unread,
Jan 19, 2026, 1:34:07 PM (13 hours ago) Jan 19
to eiffel...@googlegroups.com
● simple_zstring Library Complete

  All 55 steps of the plan have been executed. Summary:

  Workflows Completed:
  1. Project Creation - 11 classes created
  2. Maintenance - Contracts verified
  3. Maintenance Xtreme - Adversarial tests, 3 bugs fixed
  4. Bug Hunting & Fixing - is_ascii semantic bug found and fixed
  5. Naming Review - All conventions verified
  6. GitHub Prep - Git init, README.md, docs/index.html

  Library Structure:
  simple_zstring/
    src/core/
      simple_zstring.e              - Main dual-storage string
      simple_zstring_cursor.e       - Iteration cursor
      simple_zcodec.e               - Abstract codec
      simple_iso_8859_15_zcodec.e   - Latin-9 codec
      simple_compact_substrings_32.e - Unicode overflow storage
    src/splitter/
      simple_zstring_splitter.e     - String splitting
    src/search/
      simple_zstring_searcher.e     - String searching
    src/editor/
      simple_zstring_editor.e       - In-place modifications
      simple_zstring_escaper.e      - XML/JSON/URL escaping
    src/format/
      simple_zstring_formatter.e    - Formatting/templates
      simple_zstring_builder.e      - Fluent construction
    testing/
      zstring_tests.e               - 69 main tests
      adversarial_tests.e           - 113 adversarial tests
      test_runner.e                 - Combined runner

  Tests: 182 passing (69 main + 113 adversarial)

  Bugs Found and Fixed:
  1. search_empty_pattern - Return 0 for empty search pattern
  2. format_int_negative - Don't zero-pad negative numbers
  3. is_ascii - Return False when unencoded characters present

Liberty Lover

unread,
Jan 19, 2026, 1:45:27 PM (12 hours ago) Jan 19
to eiffel...@googlegroups.com

Liberty Lover

unread,
Jan 19, 2026, 6:57:05 PM (7 hours ago) Jan 19
to Eiffel Users
Integrating the four new Eiffel Loop inspired libs into simple_* ecosystem.

Starting with ...

Liberty Lover

unread,
Jan 19, 2026, 7:00:54 PM (7 hours ago) Jan 19
to eiffel...@googlegroups.com
# Eiffel-Loop Libraries Integration Execution Plan

## Date: 2026-01-19

## Overview

Execution plan for integrating the four Eiffel-Loop inspired libraries into the top 10 candidate libraries, following the anti-slop workflow system.

New Libraries to Integrate

| Library | Capabilities |
|-----------------------|-------------------------------------------------------------|
| **simple_encoding**   | UTF-8/UTF-32 conversion, codec registry, encoding detection |
| **simple_factory**    | Object pools, singletons, lazy initialization               |
| **simple_reflection** | Runtime introspection, field access, object graphs          |
| **simple_zstring**    | Memory-efficient strings, escaping, splitting, building     |


Target Libraries (Priority Order)

| #  | Library         | Score | Integrates                    |
|----|-----------------|-------|-------------------------------|
| 1  | simple_json     | 9     | encoding, reflection, zstring |
| 2  | simple_http     | 8     | encoding, factory, zstring    |
| 3  | simple_xml      | 7     | encoding, reflection, zstring |
| 4  | simple_sql      | 6     | encoding, factory, reflection |
| 5  | simple_csv      | 6 
   | encoding, reflection, zstring |
| 6  | simple_template | 4 
   | encoding, reflection, zstring |
| 7  | simple_mock     | 4 
   | factory, reflection           |
| 8  | simple_email    | 3 
   | encoding                      |
| 9  | simple_config   | 3 
   | factory                       |
| 10 | simple_diff     | 3 
   | reflection                    |

Reply all
Reply to author
Forward
0 new messages