eyeprolog 1.5.52 → 1.5.53

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -70,7 +70,7 @@ printf 'human(socrates).\nmortal(X) :- human(X).\n' |
70
70
  - [Introduction to EyeProlog](https://eyereasoner.github.io/eyeprolog/examples/deck/introduction-to-eyeprolog) — short presentation deck for first-time audiences
71
71
  - [Symbiotic Knowledge Graphs](https://eyereasoner.github.io/eyeprolog/examples/deck/symbiotic-knowledge-graphs) — RDF ↔ Prolog heatwave-response demo for human/AI/KG co-evolution
72
72
  - [rdf-prolog-roundtrip](https://github.com/eyereasoner/rdf-prolog-roundtrip) — standalone RDF 1.2 ↔ ISO Prolog bridge used by the RDF examples
73
- - [ISO conformance audit](test/conformance/ISO-COMPLIANCE.md) — supported Part 1 profile
73
+ - [ISO conformance review](test/conformance/ISO-COMPLIANCE.md) — supported Part 1 profile
74
74
  - [Latest Neumerkel conformity](test/conformance/NEUMERKEL-LATEST.md) — tracked result from the current live upstream inventory
75
75
  - [Conformance report](conformance-report.md) — generated executable conformance status, local corpus summary, and known deviations
76
76
  - [Acknowledgements](ACKNOWLEDGEMENTS.md) — funding, standards consulted, and credits for vendored conformance corpora
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "1.5.52",
6
+ "version": "1.5.53",
7
7
  "description": "EyeProlog turns facts and rules into answers and proofs.",
8
8
  "type": "module",
9
9
  "main": "./index.js",
@@ -1,6 +1,6 @@
1
- # ISO Part 1 built-in mode/error audit
1
+ # ISO Part 1 built-in mode/error review
2
2
 
3
- This matrix turns the broad built-in audit in `ISO-COMPLIANCE.md` into smaller,
3
+ This matrix turns the broad built-in review in `ISO-COMPLIANCE.md` into smaller,
4
4
  release-gated units. The normative baseline is ISO/IEC 13211-1:1995 plus
5
5
  Technical Corrigenda 1:2007, 2:2012, and 3:2017.
6
6
 
@@ -15,7 +15,7 @@ does not infer a universal priority merely from the textual order of an error
15
15
  table.
16
16
 
17
17
  The table is intentionally explicit about what has and has not been closed.
18
- The current audit now covers the complete 8.2-8.17 built-in family at the
18
+ The current review now covers the complete 8.2-8.17 built-in family at the
19
19
  level of prescribed modes, success/failure behavior, individual error
20
20
  conditions, and explicit not-applicable processor branches. Closely related
21
21
  conditions may share a row only when that row names every condition and the
@@ -30,9 +30,9 @@ existing file-based cases remain additional regression evidence.
30
30
  | Clause / predicate | Prescribed row | Status | Executable evidence |
31
31
  | --- | --- | --- | --- |
32
32
  | 8.2.1 `(=)/2` | `?term, ?term`; succeeds/fails according to Prolog unification; no prescribed errors | covered | existing unification corpus and `term_modes_and_ordering` |
33
- | 8.2.2 `unify_with_occurs_check/2` | `?term, ?term`; succeeds/fails and never reports a prescribed error | covered | strict row-audit success assertion plus unification corpus |
33
+ | 8.2.2 `unify_with_occurs_check/2` | `?term, ?term`; succeeds/fails and never reports a prescribed error | covered | strict row-review success assertion plus unification corpus |
34
34
  | 8.2.3 `(\=)/2` | `@term, @term`; succeeds/fails for the defined NSTO cases; no prescribed errors | covered | unification/control corpus |
35
- | Cor.2 8.2.4 `subsumes_term/2` | `@term, @term`; succeeds/fails without binding its arguments; no prescribed errors | covered | strict row-audit success assertion and Corrigendum 2 term-predicate cases |
35
+ | Cor.2 8.2.4 `subsumes_term/2` | `@term, @term`; succeeds/fails without binding its arguments; no prescribed errors | covered | strict row-review success assertion and Corrigendum 2 term-predicate cases |
36
36
 
37
37
  ## 8.3 — type testing
38
38
 
@@ -147,7 +147,7 @@ The Corrigendum 2 additions have the same shape.
147
147
  | 8.8.1 error (c) | private procedure -> access/private-procedure permission error | covered | strict static/private tests |
148
148
  | 8.8.1 error (d) | fixed non-callable Body -> callable type error | covered | strict dynamic `clause(p(_),4)` coverage |
149
149
  | 8.8.1 clause-to-term conversion | source variable goals become `call/1` while preserving sharing with the head | covered | strict `foo(X):-X` -> `clause(foo(C),call(C))`; nested `;/2` and `->/2` regressions |
150
- | 8.8.2 `current_predicate/1` | enumerate/query user-defined predicate indicators, including empty declared procedures | covered | strict row audit and empty-procedure lifetime tests |
150
+ | 8.8.2 `current_predicate/1` | enumerate/query user-defined predicate indicators, including empty declared procedures | covered | strict row review and empty-procedure lifetime tests |
151
151
  | 8.8.2 error (a) | fixed non-predicate-indicator -> predicate-indicator type error | covered | strict `current_predicate(4)` |
152
152
 
153
153
  ## 8.9 — database modification
@@ -301,7 +301,7 @@ The Corrigendum 2 additions have the same shape.
301
301
 
302
302
  | Clause / predicate | Prescribed row | Status | Executable evidence |
303
303
  | --- | --- | --- | --- |
304
- | 8.16.1 `atom_length/2` | atom -> length / check supplied length | covered | `logtalk_atom_length`, strict row audit |
304
+ | 8.16.1 `atom_length/2` | atom -> length / check supplied length | covered | `logtalk_atom_length`, strict row review |
305
305
  | 8.16.1 error: atom variable | required atom unavailable -> instantiation error | covered | strict `atom_length(X,4)` |
306
306
  | 8.16.1 error: atom type | first argument non-atom -> atom type error | covered | strict `atom_length(1.2,4)` |
307
307
  | 8.16.1 error: length type | non-integer length -> integer type error | covered | strict `atom_length(atom,'4')` |
@@ -356,9 +356,9 @@ built-in matrix does not have a gap at 8.17.
356
356
 
357
357
  | Clause / predicate | Prescribed row | Status | Executable evidence |
358
358
  | --- | --- | --- | --- |
359
- | 8.17.1 `set_prolog_flag/2` | set a supported, changeable flag value | covered | strict flag audit |
359
+ | 8.17.1 `set_prolog_flag/2` | set a supported, changeable flag value | covered | strict flag review |
360
360
  | 8.17.1 errors | variable/name type/domain, value type/domain, and non-changeable-flag permission distinctions | covered | `covers the Part 1 flag defaults, value domains, and changeability` plus file-based flag errors |
361
- | 8.17.2 `current_prolog_flag/2` | enumerate/query current standard flags | covered | strict complete flag audit |
361
+ | 8.17.2 `current_prolog_flag/2` | enumerate/query current standard flags | covered | strict complete flag review |
362
362
  | 8.17.2 flag-name type error | fixed non-atom name -> atom type error | covered | strict `current_prolog_flag(1,_)` |
363
363
  | 8.17.2 unknown-flag domain error | fixed unsupported flag name -> Prolog-flag domain error | covered | strict `current_prolog_flag(no_such_iso_flag,_)` |
364
364
  | 8.17.3 `halt/0` | terminate with implementation-defined successful host status | covered | `halt` conformance case / host runner tests |
@@ -368,10 +368,10 @@ built-in matrix does not have a gap at 8.17.
368
368
 
369
369
  ## Closure note
370
370
 
371
- The built-in **8.2-8.17 row audit is complete** at the level tracked by this
371
+ The built-in **8.2-8.17 row review is complete** at the level tracked by this
372
372
  file: prescribed modes, success/failure behavior, individual error conditions,
373
373
  and conditional/not-applicable processor branches all have explicit outcomes.
374
- “Row audit” means condition-by-condition accounting; it does not promise one
374
+ “Row review” means condition-by-condition accounting; it does not promise one
375
375
  Markdown table row per condition when a grouped row enumerates them all.
376
376
  ISO 7.12 simultaneous-error selection remains an implementation-dependent
377
377
  processor choice unless more specific normative text constrains it.
@@ -1,6 +1,6 @@
1
1
  # ISO/IEC 13211-1 compliance ledger
2
2
 
3
- This ledger is the release-facing audit and high-level coverage map for
3
+ This ledger is the release-facing review and high-level coverage map for
4
4
  EyeProlog's ISO/IEC 13211-1 core. The normative baseline is ISO/IEC 13211-1:1995
5
5
  together with Technical Corrigenda 1:2007, 2:2012, and 3:2017. Detailed
6
6
  row-level evidence lives only where it adds information: the built-in, processor,
@@ -11,13 +11,13 @@ published-Corrigenda, WG17-syntax, and STC draft ledgers in this directory. The
11
11
  The ledger deliberately does **not** claim independent certification. A row
12
12
  marked `covered` means EyeProlog has implementation and executable tests for
13
13
  that family, an explicit disposition for every requirement accounted for by
14
- the linked audit rows, and no known open defect in the listed behavior. An
15
- audit row may group closely related modes or error conditions, but it must name
14
+ the linked review rows, and no known open defect in the listed behavior. An
15
+ review row may group closely related modes or error conditions, but it must name
16
16
  each grouped condition and its evidence; `covered` does not imply one Markdown
17
17
  row per occurrence of the word `shall`. A row marked
18
- `audit` means the family is implemented and tested, but the project has not yet
18
+ `review` means the family is implemented and tested, but the project has not yet
19
19
  mapped every normative `shall`, option combination, prescribed error, and
20
- relevant implementation-dependent overlap choice to an explicit audit outcome.
20
+ relevant implementation-dependent overlap choice to an explicit review outcome.
21
21
 
22
22
  ## Processor compliance requirements
23
23
 
@@ -26,7 +26,7 @@ relevant implementation-dependent overlap choice to an explicit audit outcome.
26
26
  | 5.1(a) prepare conforming Prolog text | covered | Clause 6 token/term production and rejection families are mapped by the strict production gate and the complete 366-case vendored WG17 syntax matrix; 7.4 preparation/directive behavior is separately closed. |
27
27
  | 5.1(b) execute conforming Prolog goals | covered | Clause 7 term/control/execution semantics, the higher-level 7.10 stream model, 7.11 flags, the 7.12 error envelope, all 8.2-8.17 built-in rows, and Clause 9 arithmetic have explicit executable dispositions. |
28
28
  | 5.1(c) reject nonconforming text/read-terms | covered | WG17 negative syntax cases, focused malformed-production/escape/comment/operator cases, read-term syntax errors, and strict rejection of implementation-specific syntax provide explicit rejection evidence across the Clause 6 families. |
29
- | 5.1(d) document permitted variations | covered | The clause-by-clause [ISO 5.4 decision index](ISO-IMPLEMENTATION-DEFINED.md) records every explicit implementation-defined decision found in the Part 1 + Corrigenda baseline and separately inventories implementation-specific extension families. The index retains an `audit gap` category for future discoveries; no current release-facing row depends on one. |
29
+ | 5.1(d) document permitted variations | covered | The clause-by-clause [ISO 5.4 decision index](ISO-IMPLEMENTATION-DEFINED.md) records every explicit implementation-defined decision found in the Part 1 + Corrigenda baseline and separately inventories implementation-specific extension families. The index retains an `gap` category for future discoveries; no current release-facing row depends on one. |
30
30
  | 5.1(e) offer a strictly conforming mode | covered | `--iso-strict` and API option `isoStrict: true` restrict the processor to the Part 1 + Corrigenda 1-3 core language surface, remove EyeProlog-only registry/flag/operator features, reject explicit tabling and other normal-profile extensions, and reject the normal-profile host `stringTerm(Text)` term type at strict program/goal entry. |
31
31
  | 5.4 accompanying documentation | covered | *The Art of EyeProlog* remains the implementation reference; [ISO-IMPLEMENTATION-DEFINED.md](ISO-IMPLEMENTATION-DEFINED.md) is the closed clause-by-clause 5.4 decision index and points each decision to implementation evidence. |
32
32
  | 5.5 extension boundaries | covered | [ISO-PROCESSOR-REQUIREMENTS.md](ISO-PROCESSOR-REQUIREMENTS.md) gives an explicit disposition for every 5.5 extension hook. The Clause 6 cross-profile gate verifies that normal-mode syntax extensions do not reinterpret standard text accepted by the strict reader. |
@@ -40,21 +40,21 @@ relevant implementation-dependent overlap choice to an explicit audit outcome.
40
40
  | 7.4 — Prolog text and directives | covered | [ISO-PROLOG-TEXT-EXECUTION-MATRIX.md](ISO-PROLOG-TEXT-EXECUTION-MATRIX.md) closes the preparation/directive rows: declaration semantics, source clauses, cross-text operators/character conversion/flags, initialization order/lifetime, `include/1`, and one-time `ensure_loaded/1`, with implementation-defined cross-text choices indexed under 5.4. |
41
41
  | 7.5-7.6 — database and term/clause conversion | covered | [ISO-PROLOG-TEXT-EXECUTION-MATRIX.md](ISO-PROLOG-TEXT-EXECUTION-MATRIX.md) closes static/dynamic and private/public procedure semantics, clause order, logical-update visibility, empty/unknown lifetime, and term/body/clause conversion. Source and runtime assertion conversion recurse through `,/2`, `;/2`, and `->/2`, preserve variable identity, and protect standardized static/control procedures. |
42
42
  | 7.7 — execution and backtracking | covered | [ISO-PROLOG-TEXT-EXECUTION-MATRIX.md](ISO-PROLOG-TEXT-EXECUTION-MATRIX.md) closes ordinary clause selection/backtracking, source/database order, empty-versus-unknown procedures, logical-update visibility, and strict dispatch. The normal-profile `table` declaration, `tnot/1`, and recursive numeric shortcuts remain outside the strict profile. |
43
- | 7.8 — control constructs and exceptions | covered | [ISO-PROLOG-TEXT-EXECUTION-MATRIX.md](ISO-PROLOG-TEXT-EXECUTION-MATRIX.md) closes `true/0`, `fail/0`, `call/1`, cut, conjunction, disjunction, if-then(-else), and `catch/3`/`throw/1`, including Corrigendum 2 catchability of errors arising from the protected goal and Corrigendum 3 term-to-body conversion at `call/1` entry; the regression suite pins the resulting cut scope when an initially unbound variable goal later becomes `!`. The 8.15 built-in additions remain independently row-audited. |
44
- | 7.9 — expression evaluation | covered | [ISO-EVALUABLE-FUNCTOR-MATRIX.md](ISO-EVALUABLE-FUNCTOR-MATRIX.md) closes recursive evaluation, direct-variable precedence, corrected non-evaluable `F/N` errors (including STC #69), operand template/type rules, mixed arithmetic-comparison conversion, exceptional values, and finite-host resource normalization. The audit also fixes float-only `float_integer_part/1` and `float_fractional_part/1` so even huge valid integers reach `type_error(float,...)` before any I->F overflow. |
45
- | 7.10 — input/output concepts | covered | Higher-level stream semantics are pinned for non-atom ground stream terms, alias lifetime, current/target stream selection and fallback, write truncation, append positioning, contradictory stream options, exact binary round-tripping, flushing, standard-stream close behavior, and repositioned overwrite. Term-output spelling is also checked lexically where ISO distinguishes token forms: Corrigendum 2 bar operators are written with bare `|`, ordinary atom/functor `|` remains quoted, and the semicolon name token is emitted bare by canonical output. The complete 8.11-8.14 built-in mode/error family remains row-audited in [ISO-BUILTIN-MODE-ERROR-MATRIX.md](ISO-BUILTIN-MODE-ERROR-MATRIX.md), while all implementation-defined stream choices are indexed in [ISO-IMPLEMENTATION-DEFINED.md](ISO-IMPLEMENTATION-DEFINED.md). |
43
+ | 7.8 — control constructs and exceptions | covered | [ISO-PROLOG-TEXT-EXECUTION-MATRIX.md](ISO-PROLOG-TEXT-EXECUTION-MATRIX.md) closes `true/0`, `fail/0`, `call/1`, cut, conjunction, disjunction, if-then(-else), and `catch/3`/`throw/1`, including Corrigendum 2 catchability of errors arising from the protected goal and Corrigendum 3 term-to-body conversion at `call/1` entry; the regression suite pins the resulting cut scope when an initially unbound variable goal later becomes `!`. The 8.15 built-in additions remain independently row-reviewed. |
44
+ | 7.9 — expression evaluation | covered | [ISO-EVALUABLE-FUNCTOR-MATRIX.md](ISO-EVALUABLE-FUNCTOR-MATRIX.md) closes recursive evaluation, direct-variable precedence, corrected non-evaluable `F/N` errors (including STC #69), operand template/type rules, mixed arithmetic-comparison conversion, exceptional values, and finite-host resource normalization. The review also fixes float-only `float_integer_part/1` and `float_fractional_part/1` so even huge valid integers reach `type_error(float,...)` before any I->F overflow. |
45
+ | 7.10 — input/output concepts | covered | Higher-level stream semantics are pinned for non-atom ground stream terms, alias lifetime, current/target stream selection and fallback, write truncation, append positioning, contradictory stream options, exact binary round-tripping, flushing, standard-stream close behavior, and repositioned overwrite. Term-output spelling is also checked lexically where ISO distinguishes token forms: Corrigendum 2 bar operators are written with bare `|`, ordinary atom/functor `|` remains quoted, and the semicolon name token is emitted bare by canonical output. The complete 8.11-8.14 built-in mode/error family remains row-reviewed in [ISO-BUILTIN-MODE-ERROR-MATRIX.md](ISO-BUILTIN-MODE-ERROR-MATRIX.md), while all implementation-defined stream choices are indexed in [ISO-IMPLEMENTATION-DEFINED.md](ISO-IMPLEMENTATION-DEFINED.md). |
46
46
  | 7.11 — flags | covered | The complete Part 1 flag set, selected defaults, standard value domains, changeability, `current_prolog_flag/2`, and `set_prolog_flag/2` error behavior have dedicated strict tests. EyeProlog selects `bounded=false` and `integer_rounding_function=toward_zero`; valid alternative values of those fixed flags reach `permission_error(modify,flag,...)`, while `max_integer` and `min_integer` have no current value. STC #70 is recorded explicitly: EyeProlog has no separate finite procedure-arity ceiling, so the optional `max_procedure_arity` flag is absent while `max_arity` remains `unbounded`. Strict mode excludes the EyeProlog `occurs_check` extension. |
47
47
  | 7.12 — errors | covered | The strict error-envelope gate exercises instantiation, type, domain, existence, permission, representation, evaluation, resource, syntax, and system errors through `error(Error, Context)`. Built-in rows provide the individual prescribed conditions, implementation-defined representation/context choices are documented, and simultaneous-error regressions pin deterministic EyeProlog choices without treating textual table order as normative. |
48
- | 8.2-8.17 — built-in predicates | covered | [ISO-BUILTIN-MODE-ERROR-MATRIX.md](ISO-BUILTIN-MODE-ERROR-MATRIX.md) accounts for the complete Part 1 + Corrigenda built-in family across prescribed modes, success/failure behavior, individual error conditions, and conditional/not-applicable branches. Closely related conditions may share a row when every condition and its executable evidence are named. The audit exposed and fixed source/runtime 7.6.2 body conversion/variable sharing, strict host-string leakage, input-code error timing, `close/2` force handling, and closed-stream `stream_property/2` behavior. Simultaneous-error choices are documented as implementation dependent under 7.12 unless separately constrained. |
48
+ | 8.2-8.17 — built-in predicates | covered | [ISO-BUILTIN-MODE-ERROR-MATRIX.md](ISO-BUILTIN-MODE-ERROR-MATRIX.md) accounts for the complete Part 1 + Corrigenda built-in family across prescribed modes, success/failure behavior, individual error conditions, and conditional/not-applicable branches. Closely related conditions may share a row when every condition and its executable evidence are named. The review exposed and fixed source/runtime 7.6.2 body conversion/variable sharing, strict host-string leakage, input-code error timing, `close/2` force handling, and closed-stream `stream_property/2` behavior. Simultaneous-error choices are documented as implementation dependent under 7.12 unless separately constrained. |
49
49
  | Clause 9 — evaluable functors | covered | [ISO-EVALUABLE-FUNCTOR-MATRIX.md](ISO-EVALUABLE-FUNCTOR-MATRIX.md) records the published Part 1 + Corrigenda arithmetic templates and exceptional branches across 9.1, 9.3, and 9.4. It pins the unbounded integer model, `rndI`/`rndF`/`resultF` choices, float-only conversion rules, I->F overflow, explicit `exp/1` and power underflow, Corrigendum 2 additions and mixed-type `max/2`/`min/2` implementation-dependent choice, Corrigendum 3 negative-power correction, signed bitwise/shift choices, and resource-error translation. Post-N289 STC #75 remains a separately tracked draft proposal rather than a silent change to the published baseline. |
50
50
  | Corrigendum 1 | covered | [ISO-CORRIGENDA-MATRIX.md](ISO-CORRIGENDA-MATRIX.md) dispositions every amendment cluster, including the square-root boundary, double-quoted operator atoms, typed expression errors, clause/operator enumeration, and atomic-conversion corrections; editorial items and the later-superseded set-order example are identified explicitly. |
51
51
  | Corrigendum 2 | covered | [ISO-CORRIGENDA-MATRIX.md](ISO-CORRIGENDA-MATRIX.md) tracks the bar/operator changes, new predicates and evaluable functors, catch and uninstantiation corrections, atomic-conversion errors, and every other amendment cluster to executable evidence or an explicit editorial disposition. |
52
52
  | Corrigendum 3 | covered | [ISO-CORRIGENDA-MATRIX.md](ISO-CORRIGENDA-MATRIX.md) tracks option-extension/error rules, final layout, term-to-body conversion, metadata traversal, writing rules, stream/built-in corrections, and negative integer powers; editorial changes are dispositioned separately. |
53
53
 
54
- ## Conformance corrections and audit closure
54
+ ## Conformance corrections and review closure
55
55
 
56
- The audit against the licensed Part 1 text and Corrigenda closed two
57
- concrete mismatches that are now part of the closed Part 1 audit:
56
+ The review against the licensed Part 1 text and Corrigenda closed two
57
+ concrete mismatches that are now part of the closed Part 1 review:
58
58
 
59
59
  - `bounded=false` no longer exposes implementation-specific `unbounded` values
60
60
  for `max_integer` or `min_integer`; the corresponding
@@ -63,7 +63,7 @@ concrete mismatches that are now part of the closed Part 1 audit:
63
63
  when the `char_conversion` flag is `on`, leaves quoted characters unchanged,
64
64
  and feeds the same mapping into execution-time term input.
65
65
 
66
- A follow-on audit made the processor-character-set/collation choices explicit.
66
+ A follow-on review made the processor-character-set/collation choices explicit.
67
67
  A follow-up processor-character-set review corrected an over-strict interpretation: because PCS membership
68
68
  and extended-character classification are implementation defined by Part 1,
69
69
  `--iso-strict` must not replace EyeProlog's ordinary processor choice. Both
@@ -75,7 +75,7 @@ without changing these implementation-defined character choices. The complete
75
75
  WG17 syntax matrix remains a release gate.
76
76
 
77
77
 
78
- The subsequent arity audit originally selected a finite `max_arity=65535`, but
78
+ The subsequent arity review originally selected a finite `max_arity=65535`, but
79
79
  the post-Corrigendum STC arity review exposed that as the wrong
80
80
  abstraction: Part 1 `max_arity` is the maximum arity of **compound terms**, not
81
81
  a procedure-arity limit. EyeProlog now again selects `max_arity=unbounded` and
@@ -88,10 +88,10 @@ database update errors, and Corrigendum 3 variable metadata traversal/write
88
88
  naming.
89
89
 
90
90
  The public WG17 `number_chars/2` comparison used in preparation of Corrigendum
91
- 2 has additionally been checked during the audit. It remains supporting review
91
+ 2 has additionally been checked during the review. It remains supporting review
92
92
  evidence rather than a duplicated vendored corpus or release criterion.
93
93
 
94
- The flag and term-I/O audit closes the Part 1 flag family and tightens the 8.14
94
+ The flag and term-I/O review closes the Part 1 flag family and tightens the 8.14
95
95
  term-I/O/operator error rules. The strict flag registry now distinguishes a
96
96
  standard value that is valid but not selectable from a value outside the
97
97
  standard domain: attempts to change fixed `bounded` or
@@ -105,7 +105,7 @@ the Part 1 plus Corrigendum 3 option surface; the normal-profile
105
105
  implementation-specific EyeProlog extensions.
106
106
 
107
107
 
108
- The preparation, stream, conversion, sorting, and arithmetic audit expands the coverage into Prolog-text,
108
+ The preparation, stream, conversion, sorting, and arithmetic review expands the coverage into Prolog-text,
109
109
  stream, atomic-conversion, sorting, and arithmetic edge cases. Strict
110
110
  preparation now enforces the Part 1 declaration constraints for `dynamic/1`,
111
111
  `multifile/1`, and `discontiguous/1`, including cross-text multifile use and
@@ -115,7 +115,7 @@ requirements, and tightens creation, truncation/append, repositioning, flush,
115
115
  EOF, close, and current-stream behavior. Corrigendum 2 `keysort/2` variable and
116
116
  non-pair errors are corrected. Strict arithmetic no longer exposes the
117
117
  EyeProlog-only evaluable atom `e`, while the Corrigendum arithmetic additions
118
- remain available. These corrections are retained as regression evidence inside the closed shall-by-shall/error-condition audit.
118
+ remain available. These corrections are retained as regression evidence inside the closed shall-by-shall/error-condition review.
119
119
 
120
120
  The next Corrigendum 2 pass closed the prescribed `call/2..8` max-arity
121
121
  branch for processors with a finite `max_arity`, and corrected reverse
@@ -150,7 +150,7 @@ operation, so an integer outside the selected finite binary64 range reports
150
150
  result. The explicit underflow clauses for `exp/1`, Part 1 `**/2`, and
151
151
  Corrigendum 2 `^/2` are enforced even though EyeProlog retains the
152
152
  implementation-defined `round(x)` choice for generic `resultF` arithmetic. The
153
- power audit also preserves the specified negative-base and zero/negative
153
+ power review also preserves the specified negative-base and zero/negative
154
154
  exception conditions before any later I->F overflow, including Corrigendum 3's
155
155
  correction to the `**/2` operand wording and Corrigendum 2's distinct rule that
156
156
  `^/2` may accept an integer-valued float exponent.
@@ -170,8 +170,8 @@ The row-level matrices make the exit criteria concrete rather than leaving confo
170
170
  [ISO-BUILTIN-MODE-ERROR-MATRIX.md](ISO-BUILTIN-MODE-ERROR-MATRIX.md) now records
171
171
  each prescribed mode/error row for the 8.2-8.5 and 8.15-8.17 slices, and
172
172
  [ISO-PROCESSOR-REQUIREMENTS.md](ISO-PROCESSOR-REQUIREMENTS.md) decomposes the
173
- Clause 5 obligations into covered, audit, and not-applicable decisions. While
174
- doing that mapping, the 7.6.2 term-to-clause conversion audit exposed a runtime
173
+ Clause 5 obligations into covered, review, and not-applicable decisions. While
174
+ doing that mapping, the 7.6.2 term-to-clause conversion review exposed a runtime
175
175
  assertion defect: variables and invalid terms nested under `;/2` or `->/2` were
176
176
  not being recursively converted. `asserta/1` and `assertz/1` now convert all
177
177
  three standardized binary control forms `,/2`, `;/2`, and `->/2` recursively,
@@ -189,7 +189,7 @@ a sixth term type in the Part 1 strict execution domain.
189
189
 
190
190
  A row-level 8.6-8.10 pass then turns arithmetic predicates, clause/database
191
191
  operations, and all-solutions predicates into explicit mode/error-condition
192
- entries. During that audit, strict source preparation exposed a 7.6.2 defect:
192
+ entries. During that review, strict source preparation exposed a 7.6.2 defect:
193
193
  a clause such as `foo(X) :- X.` was executed as a variable goal but was not
194
194
  stored in the converted `call(X)` form, so `clause(foo(C),call(C))` and the
195
195
  corresponding `retract/1` pattern lost the required head/body variable identity.
@@ -199,7 +199,7 @@ also records the 7.12 rule for simultaneous errors, so deterministic overlap
199
199
  tests are treated as processor choices unless more specific normative text
200
200
  constrains them.
201
201
 
202
- The subsequent 8.11-8.14 pass completes the built-in row audit. Stream
202
+ The subsequent 8.11-8.14 pass completes the built-in row review. Stream
203
203
  selection/control, character/code input and output, byte I/O, term I/O,
204
204
  operators, and character conversion now each have explicit success/mode and
205
205
  individual-error outcomes in `ISO-BUILTIN-MODE-ERROR-MATRIX.md`. During this
@@ -211,7 +211,7 @@ still a `domain_error(stream, ...)`. The higher-level Clause 6, 7.10, and 7.12 g
211
211
  ## Post-Corrigendum STC cross-check
212
212
 
213
213
  The public WG17 STC draft is tracked as useful defect-discovery material, but it
214
- is not silently treated as a fourth published Corrigendum. The current audit
214
+ is not silently treated as a fourth published Corrigendum. The current review
215
215
  confirms EyeProlog already has the behavior implicated by the substantive STC
216
216
  items on negative-number layout/operator syntax, arithmetic instantiation
217
217
  precedence, EOF actions/end tokens, character/code/byte output error overlap,
@@ -297,9 +297,9 @@ conformance outputs are never auto-accepted.
297
297
 
298
298
  ## Exit criteria for a full conformance claim
299
299
 
300
- The Part 1 audit is closed by explicit dispositions, not by a test-count threshold.
300
+ The Part 1 review is closed by explicit dispositions, not by a test-count threshold.
301
301
  The table below records the closure criteria used by the project. A `covered`
302
- status is an implementation/audit result, not an independent certification. Public
302
+ status is an implementation/review result, not an independent certification. Public
303
303
  post-N289 STC drafts remain review input until standardized.
304
304
 
305
305
  | Criterion | Status | Evidence |
@@ -315,7 +315,7 @@ post-N289 STC drafts remain review input until standardized.
315
315
  | Current post-N289 draft is tracked without silently changing the published baseline | covered | `STC-DRAFT-STATUS.md` tracks reviewed draft items separately from normative requirements |
316
316
  | Latest Neumerkel conformity is a live release gate | covered | `npm test` fetches and executes the seven current TU Wien conformity sources with dynamic inventories; the vendored WG17 matrix remains an offline reviewed-outcome regression layer |
317
317
  | Third-party standard-core regression provenance is retained | covered | adapted Logtalk, Scryer, Trealla, and SWI-Prolog cases retain source identifiers and licenses in `THIRD_PARTY.md` |
318
- | No unexplained deviation remains in the release-facing ledger | covered | the release-facing ledger contains no remaining `audit` rows; documented variation points are implementation-defined/specific or draft-only rather than unexplained deviations. |
318
+ | No unexplained deviation remains in the release-facing ledger | covered | the release-facing ledger contains no remaining `review` rows; documented variation points are implementation-defined/specific or draft-only rather than unexplained deviations. |
319
319
 
320
320
  The specialized row matrices are evidence for this ledger, not separate public
321
321
  status documents. *The Art of EyeProlog* remains the implementation reference.
@@ -1,4 +1,4 @@
1
- # ISO/IEC 13211-1 published Corrigenda audit
1
+ # ISO/IEC 13211-1 published Corrigenda review
2
2
 
3
3
  This matrix records every amendment cluster in Technical Corrigenda 1:2007,
4
4
  2:2012, and 3:2017 against EyeProlog's published Part 1 baseline. It separates
@@ -7,24 +7,24 @@ from text superseded by a later Corrigendum. A `covered` behavior row names
7
7
  executable evidence; an `editorial` row records that no processor behavior was
8
8
  changed; a `superseded` row points to the later published amendment.
9
9
 
10
- The stable audit IDs are checked by the documentation regression suite. They
10
+ The stable review IDs are checked by the documentation regression suite. They
11
11
  make omission detectable without reproducing the licensed standard text here.
12
12
 
13
13
  ## Technical Corrigendum 1:2007
14
14
 
15
- | Audit ID | Clauses / amendment cluster | Disposition | EyeProlog evidence |
15
+ | Review ID | Clauses / amendment cluster | Disposition | EyeProlog evidence |
16
16
  | --- | --- | --- | --- |
17
17
  | C1-01 | 3.106, 3.108, 3.125, 3.148 terminology and typography | editorial | Definitions/source typography; no processor behavior changes. |
18
18
  | C1-02 | 4.1.3.5 non-negative square-root axiom | covered | Strict test `pins behavior-changing Technical Corrigendum 1 corrections` checks `sqrt(0)`. |
19
19
  | C1-03 | 6.3.7 priority of a double-quoted atom that names an operator | covered | Same strict test plus `iso/corrigendum1_double_quote_operator`. |
20
20
  | C1-04 | 7.2.5 compound-term ordering wording | editorial | The corrected condition is represented by the Clause 7.2 standard-order tests. |
21
- | C1-05 | 7.8.5.4, table 35, and 7.8.8.4 control-model/example corrections | editorial | Corrected notation; conjunction and if-then-else behavior is independently covered by the strict 7.8 audit. |
21
+ | C1-05 | 7.8.5.4, table 35, and 7.8.8.4 control-model/example corrections | editorial | Corrected notation; conjunction and if-then-else behavior is independently covered by the strict 7.8 review. |
22
22
  | C1-06 | 7.9.2 integer- and float-operand type errors | covered | Strict Clause 7.9 tests exercise integer-only and float-only templates. |
23
23
  | C1-07 | 7.12.2 representation-error metavariable capitalization | editorial | Error-term representation is covered by the 7.12 envelope; this amendment changes notation only. |
24
24
  | C1-08 | 8.8.1.1 selected `clause/2` result is unified with head/body | covered | Strict test `pins behavior-changing Technical Corrigendum 1 corrections`. |
25
25
  | C1-09 | 8.9.4.1 `abolish/1` note wording | editorial | Singular/plural note correction only. |
26
26
  | C1-10 | 8.10.3.4 set-order example | superseded | Corrigendum 3 explicitly restores the original example; current behavior follows Corrigendum 3. |
27
- | C1-11 | 8.13.3.4 `put_byte/1-2` example values | editorial | Examples corrected; byte-output semantics are covered by the strict 8.13 audit. |
27
+ | C1-11 | 8.13.3.4 `put_byte/1-2` example values | editorial | Examples corrected; byte-output semantics are covered by the strict 8.13 review. |
28
28
  | C1-12 | 8.14.1.4 input-stream names and post-syntax-error example state | editorial | Examples corrected; read-stream behavior is covered by strict term-I/O tests. |
29
29
  | C1-13 | 8.14.4.1 selected `current_op/3` result is unified with its arguments | covered | Strict test `pins behavior-changing Technical Corrigendum 1 corrections`. |
30
30
  | C1-14 | 8.16.4 `atom_chars/2` accepts a matching supplied list prefix | covered | Strict test `pins behavior-changing Technical Corrigendum 1 corrections`. |
@@ -35,7 +35,7 @@ make omission detectable without reproducing the licensed standard text here.
35
35
 
36
36
  ## Technical Corrigendum 2:2012
37
37
 
38
- | Audit ID | Clauses / amendment cluster | Disposition | EyeProlog evidence |
38
+ | Review ID | Clauses / amendment cluster | Disposition | EyeProlog evidence |
39
39
  | --- | --- | --- | --- |
40
40
  | C2-01 | 6.3.4, 6.4, 6.5 bar token/operator rules and protected `[]`/`{}` operators | covered | WG17 lexical output cases, `corrigenda_bar_operator`, and strict `op/3` tests. |
41
41
  | C2-02 | 6.3.4.4 predefined unary plus and `div` operators | covered | Strict predefined-operator and arithmetic tests. |
@@ -53,7 +53,7 @@ make omission detectable without reproducing the licensed standard text here.
53
53
  | C2-14 | 8.9.3 static `retract/1` uses modify permission | covered | Strict database predicate error tests. |
54
54
  | C2-15 | 8.9.5 `retractall/1` | covered | Strict lifetime/error tests and `corrigenda_retractall`. |
55
55
  | C2-16 | 8.11.5 non-variable `open/4` stream result | covered | Strict uninstantiation-error test. |
56
- | C2-17 | 8.14.3 protected operator priority/specifier combinations | covered | Strict `op/3` row audit and bar-operator cases. |
56
+ | C2-17 | 8.14.3 protected operator priority/specifier combinations | covered | Strict `op/3` row review and bar-operator cases. |
57
57
  | C2-18 | 8.15.4 `call/2..8` and implementation-dependent higher arities | covered | Strict closure expansion, error, and selected ceiling tests. |
58
58
  | C2-19 | 8.15.5 `false/0` | covered | Strict registry, execution, and static-procedure protection tests. |
59
59
  | C2-20 | 8.16.4-8.16.8 atomic/number conversion partial-list errors | covered | Individual strict mode/error assertions for all four predicates. |
@@ -63,7 +63,7 @@ make omission detectable without reproducing the licensed standard text here.
63
63
 
64
64
  ## Technical Corrigendum 3:2017
65
65
 
66
- | Audit ID | Clauses / amendment cluster | Disposition | EyeProlog evidence |
66
+ | Review ID | Clauses / amendment cluster | Disposition | EyeProlog evidence |
67
67
  | --- | --- | --- | --- |
68
68
  | C3-01 | 5.5.12 implementation-specific options and their error classification | covered | Strict option surfaces reject normal-only options and exercise variable/domain distinctions. |
69
69
  | C3-02 | 6.2.1 optional final layout text | covered | Strict test `pins behavior-changing Technical Corrigendum 3 corrections`. |
@@ -1,6 +1,6 @@
1
- # ISO Part 1 expression/evaluable-functor audit matrix
1
+ # ISO Part 1 expression/evaluable-functor coverage matrix
2
2
 
3
- This file is the row-level audit for Part 1 Clause 7.9 and Clause 9, including
3
+ This file is the row-level review for Part 1 Clause 7.9 and Clause 9, including
4
4
  the arithmetic additions and corrections in Technical Corrigenda 1-3. It is
5
5
  paired with the strict regression named `closes the ISO 7.9 and Clause 9
6
6
  evaluable-functor rows`.
@@ -7,7 +7,7 @@ pages at complang.tuwien.ac.at are useful review input, but draft proposals are
7
7
  not silently treated as normative changes to that licensed baseline.
8
8
 
9
9
  [*The Art of EyeProlog*](../../the-art-of-eyeprolog.md) remains the single
10
- implementation reference. This file is an audit index: it identifies each
10
+ implementation reference. This file is an review index: it identifies each
11
11
  explicitly implementation-defined decision in Part 1, states the EyeProlog
12
12
  choice, and points to the implementation boundary that realizes it. Repeated
13
13
  references to the same decision are folded into one row. Requirements that the
@@ -19,7 +19,7 @@ Status values are:
19
19
  - **defined** — the current behavior is implemented and stated here;
20
20
  - **not applicable** — the standard decision is conditional and the condition
21
21
  is false for EyeProlog's selected profile;
22
- - **audit gap** — retained for any future implementation-defined choice whose
22
+ - **gap** — retained for any future implementation-defined choice whose
23
23
  code/documentation boundary is still unresolved. Open *normative* shall-by-
24
24
  shall work is tracked separately in `ISO-COMPLIANCE.md`.
25
25
 
@@ -4,7 +4,7 @@ This ledger maps EyeProlog's normal module profile to the requirements clarified
4
4
  by the attached 2013 ISO/IEC 13211-2 amendment draft (WG17 N251). It is narrowly
5
5
  scoped to that amendment. It does **not** turn the broader ISO/IEC 13211-2:2000
6
6
  base document into a release-facing certification claim; unchanged Part 2
7
- facilities outside the amendment still need their own clause-by-clause audit.
7
+ facilities outside the amendment still need their own clause-by-clause review.
8
8
 
9
9
  Executable evidence lives in `test/run-iso-part2-amendment.mjs` and is included
10
10
  in both `npm test` and the conformance aggregate.
@@ -24,7 +24,7 @@ This amendment coverage is intentionally narrower than a complete Part 2
24
24
  conformance claim. In particular, the Part 1 strict registry does not enable
25
25
  module directives or the Part 2 `:` operator, and the project does not infer
26
26
  full Part 2 coverage from interoperability with Scryer, Trealla, or Logtalk. A
27
- future complete Part 2 claim would require a clause-by-clause audit of the
27
+ future complete Part 2 claim would require a clause-by-clause review of the
28
28
  unchanged ISO/IEC 13211-2:2000 module-interface and re-export facilities as well
29
29
  as the amendment.
30
30
 
@@ -1,9 +1,9 @@
1
- # ISO Part 1 processor-requirements audit
1
+ # ISO Part 1 processor-requirements review
2
2
 
3
3
  This is the clause-level checklist for the processor requirements that sit
4
4
  above the individual built-ins. It complements `ISO-COMPLIANCE.md`: the latter
5
5
  is release-facing prose, while this file keeps each Clause 5 requirement or
6
- extension boundary visible as its own auditable row.
6
+ extension boundary visible as its own reviewable row.
7
7
 
8
8
  The normative baseline is ISO/IEC 13211-1:1995 plus Technical Corrigenda 1-3.
9
9
  `covered` means the requirement has an implementation/documentation decision
@@ -26,7 +26,7 @@ certification claim.
26
26
  | Requirement | Status | Current evidence |
27
27
  | --- | --- | --- |
28
28
  | 5.2 conforming and strictly conforming Prolog text boundary | covered | strict parsing/preparation accepts the Part 1 + Corrigenda language under the documented PCS choices and rejects implementation-specific language facilities; normal-profile preservation is checked against every strict-accepted WG17 case |
29
- | 5.3 conforming and strictly conforming Prolog goal boundary | covered | strict registry/control/evaluable filtering plus closed 7.1-7.12, 8.2-8.17, and Clause 9 audits define the goal boundary |
29
+ | 5.3 conforming and strictly conforming Prolog goal boundary | covered | strict registry/control/evaluable filtering plus closed 7.1-7.12, 8.2-8.17, and Clause 9 reviews define the goal boundary |
30
30
  | 5.4 accompanying documentation for implementation-defined and implementation-specific features | covered | `ISO-IMPLEMENTATION-DEFINED.md`, *The Art of EyeProlog*, strict-boundary documentation, and release-facing conformance ledgers |
31
31
 
32
32
  ## 5.5 — extension boundaries
@@ -40,15 +40,15 @@ certification claim.
40
40
  | 5.5.4 additional term types | covered | the normal JavaScript API's `stringTerm(Text)` is documented as an implementation-specific sixth term type, including disjointness, ordering, clause conversion, lack of source token syntax, expression behavior, and writing; strict program/goal entry rejects that type with `representation_error(term)` |
41
41
  | 5.5.5 additional directives | covered | normal module/library directives are documented implementation-specific features and are rejected by strict mode |
42
42
  | 5.5.6 additional side effects | covered | normal-profile `statistics/0-2`, cleanup/library state, proof/statistics host instrumentation, and other extension effects are documented outside the Part 1 core; strict registry tests exclude the Prolog-visible statistics/cleanup extensions. Host instrumentation is an embedding observation rather than an extra strict Prolog goal effect |
43
- | 5.5.7 additional control constructs | covered | `tnot/1`, `wfs_truth/2`, and implementation-specific execution optimizations are absent/disabled in strict mode; standard control constructs remain separately audited |
44
- | 5.5.8 additional flags | covered | normal `occurs_check` extension is absent from strict mode; the Part 1 flag family is fully audited |
43
+ | 5.5.7 additional control constructs | covered | `tnot/1`, `wfs_truth/2`, and implementation-specific execution optimizations are absent/disabled in strict mode; standard control constructs remain separately reviewed |
44
+ | 5.5.8 additional flags | covered | normal `occurs_check` extension is absent from strict mode; the Part 1 flag family is fully reviewed |
45
45
  | 5.5.9 additional built-in predicates and error forms | covered | strict registry excludes normal-profile library/native additions; `ISO-BUILTIN-MODE-ERROR-MATRIX.md` closes the complete 8.2-8.17 family row-by-row; simultaneous-error choices are documented per 7.12 rather than treated as a global table-order mandate |
46
- | 5.5.10 additional evaluable functors/types | covered | strict mode rejects the normal-profile evaluable `e` extension while retaining the full Part 1 + Corrigenda arithmetic set. `ISO-EVALUABLE-FUNCTOR-MATRIX.md` now closes the Clause 9 semantic/error audit and pins the 9.1.4.2 `resultF`, mixed-type `max/2`/`min/2`, and signed bitwise/shift choices. Post-N289 STC #75 remains separate from the published baseline |
46
+ | 5.5.10 additional evaluable functors/types | covered | strict mode rejects the normal-profile evaluable `e` extension while retaining the full Part 1 + Corrigenda arithmetic set. `ISO-EVALUABLE-FUNCTOR-MATRIX.md` now closes the Clause 9 semantic/error review and pins the 9.1.4.2 `resultF`, mixed-type `max/2`/`min/2`, and signed bitwise/shift choices. Post-N289 STC #75 remains separate from the published baseline |
47
47
  | 5.5.11 reserved atoms | not applicable | EyeProlog declares no reserved-atom extension; extension names remain ordinary atoms unless used in a documented syntactic/predicate/directive role |
48
48
 
49
49
  ## Clause 6 syntax-preservation closure
50
50
 
51
- The production audit is kept here rather than in another status file. The strict
51
+ The production review is kept here rather than in another status file. The strict
52
52
  regression gate covers the following families directly, while the complete WG17
53
53
  matrix supplies detailed externally sourced syntax expectations.
54
54
 
@@ -1,6 +1,6 @@
1
1
  # ISO Part 1 Prolog-text, database, and execution matrix
2
2
 
3
- This matrix closes the remaining row-level audit for ISO/IEC 13211-1:1995
3
+ This matrix closes the remaining row-level review for ISO/IEC 13211-1:1995
4
4
  Clauses 7.4-7.8 against the published Part 1 baseline plus Technical
5
5
  Corrigenda 1-3. It complements the built-in mode/error matrix: these rows are
6
6
  processor semantics above individual predicate definitions.
@@ -22,7 +22,7 @@ chosen behavior is also indexed by `ISO-IMPLEMENTATION-DEFINED.md`.
22
22
  | 7.4.2.6 `initialization/1` | covered | Goals are retained in preparation order and run after preparation. Reusing the same prepared `Program` does not run them again accidentally. |
23
23
  | 7.4.2.7 `include/1` | covered | The included text is prepared at the directive position and shares operator/character/flag preparation state with its parent. |
24
24
  | 7.4.2.8 `ensure_loaded/1` | covered | A source is prepared at most once in the current load graph, including repeated references and self/top-level references. |
25
- | 7.4.2.9 `set_prolog_flag/2` | covered | Preparation-time flag changes affect subsequent text and are replayed into execution state; strict flag names/values/changeability remain governed by the closed 7.11 audit. |
25
+ | 7.4.2.9 `set_prolog_flag/2` | covered | Preparation-time flag changes affect subsequent text and are replayed into execution state; strict flag names/values/changeability remain governed by the closed 7.11 review. |
26
26
  | 7.4.3 source clauses | covered | Source heads/bodies are validated like program clauses, standardized static/control procedures are protected, declarations can create empty procedures, and body conversion follows 7.6.2 while preserving head/body variable identity. The built-in restriction applies in every execution mode, so consulting a clause for a built-in predicate or control construct reports the same `permission_error(modify, static_procedure)` as `assert`ing one; EyeProlog's own library and extension predicates are not standard built-ins and stay redefinable. Corpus: `error/iso/consult_redefines_builtin`. |
27
27
 
28
28
  The strict release test `closes ISO 7.4 Prolog-text preparation and directive
@@ -70,7 +70,7 @@ converted body.
70
70
  | clause order and re-execution | covered | Clauses are tried in prepared/database order; re-executable predicates expose subsequent solutions on backtracking. |
71
71
  | empty versus unknown procedure | covered | A defined procedure with zero clauses fails normally. A missing procedure follows the `unknown` flag (`error` by default in the strict profile). |
72
72
  | side effects and database changes | covered | Standard side effects occur at their execution point; successful dynamic changes become visible to later activations while preserving the logical-update view of active calls. |
73
- | built-in/control delegation | covered | Standardized built-ins dispatch through the strict registry and control constructs through the strict execution path; implementation-specific predicates/shortcuts are excluded by the 5.5 boundary audit. |
73
+ | built-in/control delegation | covered | Standardized built-ins dispatch through the strict registry and control constructs through the strict execution path; implementation-specific predicates/shortcuts are excluded by the 5.5 boundary review. |
74
74
 
75
75
  ## 7.8 - control constructs and exceptions
76
76
 
@@ -88,9 +88,9 @@ converted body.
88
88
  | 7.8.10 `throw/1` | covered | Throws propagate until a matching catch and use a renamed/fresh term for exception matching. |
89
89
 
90
90
  The strict test `closes ISO 7.8 general control-construct and exception rows`
91
- keeps the general semantics visible in addition to the 8.15 built-in audit.
91
+ keeps the general semantics visible in addition to the 8.15 built-in review.
92
92
 
93
- ## Audit result
93
+ ## Review result
94
94
 
95
95
  Clauses **7.4-7.8 are covered at row level** for the declared strict Part 1
96
96
  profile. Remaining Clause 7 exit work is therefore no longer general
@@ -1,6 +1,6 @@
1
- # ISO Part 1 term-semantics audit matrix
1
+ # ISO Part 1 term-semantics coverage matrix
2
2
 
3
- This file closes the Clause 7.1-7.3 audit at a finer granularity than the
3
+ This file closes the Clause 7.1-7.3 review at a finer granularity than the
4
4
  release-facing `ISO-COMPLIANCE.md`. The normative baseline is ISO/IEC
5
5
  13211-1:1995 plus Technical Corrigenda 1-3.
6
6
 
@@ -29,7 +29,7 @@ Counts are output from upstream, not hard-coded test constants.
29
29
  - [cleanup](https://www.complang.tuwien.ac.at/ulrich/iso-prolog/cleanup)
30
30
 
31
31
  Exact fetched bytes, SHA-256 hashes, fetch timestamps, and HTTP validators remain under
32
- Git-ignored `.cache/neumerkel/` for local audit/reproduction and are intentionally not committed.
32
+ Git-ignored `.cache/neumerkel/` for local inspection/reproduction and are intentionally not committed.
33
33
  A normal test run warns when this tracked report is stale. Refresh directly from live
34
34
  upstream with `npm run conformance:update:neumerkel`, or sync the exact successful
35
35
  snapshot already fetched by `npm test` with `npm run conformance:sync:neumerkel`.
@@ -44,11 +44,11 @@ uses this race-free sync path and stages the generated reports into the release
44
44
  commit. The tracked report intentionally omits fetch timestamps and HTTP validators,
45
45
  so repeated runs against unchanged upstream suites do not dirty the checkout.
46
46
 
47
- ## Local audit cache
47
+ ## Local inspection cache
48
48
 
49
49
  Exact downloaded bytes, SHA-256 hashes, fetch timestamps, HTTP validators, and
50
50
  machine-readable results are kept under `.cache/neumerkel/`. `.cache/` remains
51
- Git-ignored: it is an audit/reproduction cache, not published project evidence.
51
+ Git-ignored: it is an inspection/reproduction cache, not published project evidence.
52
52
 
53
53
  Use:
54
54
 
@@ -7,8 +7,8 @@ supported ISO Prolog profile, built-ins, extensions, and reasoner behavior.
7
7
 
8
8
  The suite is intentionally file-based. Exact standard output, errors, warnings,
9
9
  and proof output test the behavior of the JavaScript implementation.
10
- [ISO-COMPLIANCE.md](ISO-COMPLIANCE.md) is the high-level Part 1 audit and coverage map. [ISO-BUILTIN-MODE-ERROR-MATRIX.md](ISO-BUILTIN-MODE-ERROR-MATRIX.md)
11
- tracks the row-by-row built-in audit,
10
+ [ISO-COMPLIANCE.md](ISO-COMPLIANCE.md) is the high-level Part 1 review and coverage map. [ISO-BUILTIN-MODE-ERROR-MATRIX.md](ISO-BUILTIN-MODE-ERROR-MATRIX.md)
11
+ tracks the row-by-row built-in review,
12
12
  [ISO-TERM-SEMANTICS-MATRIX.md](ISO-TERM-SEMANTICS-MATRIX.md) closes 7.1-7.3,
13
13
  [ISO-PROLOG-TEXT-EXECUTION-MATRIX.md](ISO-PROLOG-TEXT-EXECUTION-MATRIX.md)
14
14
  closes 7.4-7.8, [ISO-EVALUABLE-FUNCTOR-MATRIX.md](ISO-EVALUABLE-FUNCTOR-MATRIX.md)
@@ -31,7 +31,7 @@ review evidence, not normative ISO claims.
31
31
  profile and implementation extensions. The default registry covers the exact
32
32
  predicate indicators listed in Appendix B of the book across the Part 1 strict-core
33
33
  target and the normal-mode module/DCG compatibility families. [ISO-COMPLIANCE.md](ISO-COMPLIANCE.md) is the explicit
34
- release-facing ledger for the Part 1 strict-core audit. This suite is not an independent certification. The release-facing Part 1
34
+ release-facing ledger for the Part 1 strict-core review. This suite is not an independent certification. The release-facing Part 1
35
35
  ledger now has explicit dispositions for Clause 5 processor obligations, Clause 6
36
36
  syntax/rejection, Clause 7 semantics, the complete 8.2-8.17 built-in family, and
37
37
  Clause 9 evaluable functors. Public comparison material remains supporting review
@@ -99,7 +99,7 @@ npm run test:wg17 # vendored reviewed WG17 syntax regression
99
99
  ```
100
100
 
101
101
  `test:neumerkel` always fetches the current TU Wien sources. It does not skip a
102
- fetch because a cache exists. The runner discovers the number of active tests from those sources and fails on any newly introduced case EyeProlog does not pass. If the stable, tracked [NEUMERKEL-LATEST.md](NEUMERKEL-LATEST.md) is stale, normal tests warn rather than turning a passing engine run into a failure. `npm run conformance:update:neumerkel` performs a fresh live run and refreshes the report; after `npm test`, `npm run conformance:sync:neumerkel` refreshes it from the exact successful cached snapshot; and `npm run conformance:check:neumerkel` verifies that snapshot without a second network fetch. Exact bytes, SHA-256 hashes, timestamps, and HTTP validators stay under Git-ignored `.cache/neumerkel/` for audit/reproduction only. See [NEUMERKEL-LIVE.md](NEUMERKEL-LIVE.md).
102
+ fetch because a cache exists. The runner discovers the number of active tests from those sources and fails on any newly introduced case EyeProlog does not pass. If the stable, tracked [NEUMERKEL-LATEST.md](NEUMERKEL-LATEST.md) is stale, normal tests warn rather than turning a passing engine run into a failure. `npm run conformance:update:neumerkel` performs a fresh live run and refreshes the report; after `npm test`, `npm run conformance:sync:neumerkel` refreshes it from the exact successful cached snapshot; and `npm run conformance:check:neumerkel` verifies that snapshot without a second network fetch. Exact bytes, SHA-256 hashes, timestamps, and HTTP validators stay under Git-ignored `.cache/neumerkel/` for inspection/reproduction only. See [NEUMERKEL-LIVE.md](NEUMERKEL-LIVE.md).
103
103
 
104
104
  The vendored WG17 syntax snapshot is intentionally secondary. Update all upstream conformance evidence with `npm run conformance:update`, or use the focused commands:
105
105
 
@@ -32,11 +32,11 @@ regressions.
32
32
  | [#49](https://www.complang.tuwien.ac.at/ulrich/iso-prolog/stc#49) | `read_term/3` and EOF | Covered by strict reader/conformance tests and the interactive-read regressions. |
33
33
  | [#50](https://www.complang.tuwien.ac.at/ulrich/iso-prolog/stc#50) | mixed integer/float arithmetic comparison | The STC-facing normal-profile case requires exact cross-type ordering and `max/2`/`min/2` use the same comparison. `--iso-strict` deliberately retains the published Part 1 integer-to-float comparison rule; the draft case is not silently substituted for that normative baseline. |
34
34
  | [#55](https://www.complang.tuwien.ac.at/ulrich/iso-prolog/stc#55) | integer rounding function | Existing flag conformance verifies `integer_rounding_function = toward_zero`. |
35
- | [#56](https://www.complang.tuwien.ac.at/ulrich/iso-prolog/stc#56) | protect `(:-)/1` and `(:-)/2` from database modification | **The audit found a gap.** Strict database operations now treat both functors as static/private for `assert*`, `retract*`, `abolish/1`, declarations, and `clause/2`, while ordinary calls still follow the separate procedure-existence behavior described by the STC item. |
35
+ | [#56](https://www.complang.tuwien.ac.at/ulrich/iso-prolog/stc#56) | protect `(:-)/1` and `(:-)/2` from database modification | **The review found a gap.** Strict database operations now treat both functors as static/private for `assert*`, `retract*`, `abolish/1`, declarations, and `clause/2`, while ordinary calls still follow the separate procedure-existence behavior described by the STC item. |
36
36
  | [#58](https://www.complang.tuwien.ac.at/ulrich/iso-prolog/stc#58) | `set_prolog_flag/2` instantiation error | Existing strict/error coverage requires an instantiation error when a required flag value is a variable. |
37
37
  | [#67](https://www.complang.tuwien.ac.at/ulrich/iso-prolog/stc#67) | `bagof/3` answer-order example | `stc/bagof_answer_order` verifies the proposed clarifying example produces `[2,1]`. |
38
38
  | [#68](https://www.complang.tuwien.ac.at/ulrich/iso-prolog/stc#68) | division examples | Existing arithmetic coverage evaluates signed integer `/` through the floating operation; no implementation-defined signed-division result is used. |
39
- | [#69](https://www.complang.tuwien.ac.at/ulrich/iso-prolog/stc#69) | arithmetic example culprit | **The audit found a gap.** Strict expression evaluation now applies 7.9.2(c) to an atomic subexpression such as `foo`: it reports `type_error(evaluable,foo/0)` rather than the misleading `type_error(number,foo)` shown by the old 9.1.7 example. |
39
+ | [#69](https://www.complang.tuwien.ac.at/ulrich/iso-prolog/stc#69) | arithmetic example culprit | **The review found a gap.** Strict expression evaluation now applies 7.9.2(c) to an atomic subexpression such as `foo`: it reports `type_error(evaluable,foo/0)` rather than the misleading `type_error(number,foo)` shown by the old 9.1.7 example. |
40
40
  | [#70](https://www.complang.tuwien.ac.at/ulrich/iso-prolog/stc#70) | optional `max_procedure_arity` | Reviewed after the STC arity discussion corrected the earlier #71 pointer. EyeProlog has no declared procedure-arity limit smaller than its `max_arity=unbounded` term model, so the implementation-defined optional flag is intentionally absent. |
41
41
  | [#72](https://www.complang.tuwien.ac.at/ulrich/iso-prolog/stc#72) | tentative non-ground stream-term instances | Reviewed as a tentative post-2026 proposal. EyeProlog does not make this draft wording normative in `--iso-strict`; the published Part 1 stream-term/domain rules remain the baseline until WG17 settles the proposal. |
42
42
  | [#73](https://www.complang.tuwien.ac.at/ulrich/iso-prolog/stc#73) | `read/1-2` and `read_term/2-3` representation limits | The 2026-08-23 post-N289 draft now explicitly proposes `max_float` / `min_float` alongside the existing representation-limit flags. EyeProlog already reports those errors while reading overflowing positive/negative float tokens; strict regression coverage now exercises both `read/1` and `read_term/2`, and the literal STC cases pin parser preparation. |
@@ -474,7 +474,7 @@ export function formatNeumerkelMarkdown({ summary }) {
474
474
  lines.push(
475
475
  '',
476
476
  'Exact fetched bytes, SHA-256 hashes, fetch timestamps, and HTTP validators remain under',
477
- 'Git-ignored `.cache/neumerkel/` for local audit/reproduction and are intentionally not committed.',
477
+ 'Git-ignored `.cache/neumerkel/` for local inspection/reproduction and are intentionally not committed.',
478
478
  'A normal test run warns when this tracked report is stale. Refresh directly from live',
479
479
  'upstream with `npm run conformance:update:neumerkel`, or sync the exact successful',
480
480
  'snapshot already fetched by `npm test` with `npm run conformance:sync:neumerkel`.',
@@ -5901,7 +5901,7 @@ ${profile}`;
5901
5901
  },
5902
5902
  },
5903
5903
  {
5904
- name: 'published ISO Corrigenda have a complete stable audit inventory',
5904
+ name: 'published ISO Corrigenda have a complete stable review inventory',
5905
5905
  run: () => {
5906
5906
  const compliance = fs.readFileSync(path.join(testRoot, 'conformance', 'ISO-COMPLIANCE.md'), 'utf8');
5907
5907
  const matrix = fs.readFileSync(path.join(testRoot, 'conformance', 'ISO-CORRIGENDA-MATRIX.md'), 'utf8');
@@ -5913,7 +5913,7 @@ ${profile}`;
5913
5913
  const rows = matrix.split('\n')
5914
5914
  .filter((line) => /^\| C[123]-\d\d \|/.test(line))
5915
5915
  .map((line) => line.split('|').slice(1, -1).map((cell) => cell.trim()));
5916
- assertEqual(rows.map(([id]) => id).join(','), expected.join(','), 'Corrigenda stable audit IDs');
5916
+ assertEqual(rows.map(([id]) => id).join(','), expected.join(','), 'Corrigenda stable review IDs');
5917
5917
  for (const [id, clauses, disposition, evidence] of rows) {
5918
5918
  assertEqual(Boolean(clauses), true, `${id} clause/amendment cluster`);
5919
5919
  assertEqual(['covered', 'editorial', 'superseded'].includes(disposition), true, `${id} disposition`);
@@ -5981,7 +5981,7 @@ ${profile}`;
5981
5981
  '| Latest Neumerkel conformity is a live release gate | covered |',
5982
5982
  '| No unexplained deviation remains in the release-facing ledger | covered |',
5983
5983
  ]) assertIncludes(exit, item, item);
5984
- assertNotIncludes(exit, '| audit |', 'no release-facing audit rows remain');
5984
+ assertNotIncludes(exit, '| gap |', 'no release-facing gap rows remain');
5985
5985
  },
5986
5986
  },
5987
5987
  {
@@ -5996,13 +5996,13 @@ ${profile}`;
5996
5996
  'ISO-EVALUABLE-FUNCTOR-MATRIX.md',
5997
5997
  ]) assertIncludes(book, name, `book ${name}`);
5998
5998
  assertIncludes(readme, 'implementation reference is [*The Art of EyeProlog*]', 'README book hand-off');
5999
- assertIncludes(readme, 'test/conformance/ISO-COMPLIANCE.md', 'README concise audit link');
5999
+ assertIncludes(readme, 'test/conformance/ISO-COMPLIANCE.md', 'README concise review link');
6000
6000
  for (const heading of ['## Tabling', '## Cleanup-aware control', '## Strict ISO',
6001
6001
  '## Module and definite clause grammar', '## Trealla and Scryer interoperability']) {
6002
6002
  assertNotIncludes(readme, heading, `README delegates ${heading} to the book`);
6003
6003
  }
6004
- assertEqual(readme.includes('2026-08-23 draft items #73-#76'), false, 'README omits audit-history detail');
6005
- assertIncludes(profile, 'Part 1 processor, syntax, semantic, built-in, and arithmetic', 'Why EyeProlog audit state');
6004
+ assertEqual(readme.includes('2026-08-23 draft items #73-#76'), false, 'README omits review-history detail');
6005
+ assertIncludes(profile, 'Part 1 processor, syntax, semantic, built-in, and arithmetic', 'Why EyeProlog review state');
6006
6006
  },
6007
6007
  },
6008
6008
  {
@@ -10403,7 +10403,7 @@ node test/run-conformance-report.mjs
10403
10403
  ```
10404
10404
 
10405
10405
  `test/conformance/ISO-COMPLIANCE.md` is the processor-requirement ledger for the
10406
- Part 1 conformance audit. It records explicit dispositions for the tracked processor, syntax, semantic, built-in, and arithmetic requirements. `test/conformance/ISO-COMPLIANCE.md`
10406
+ Part 1 conformance review. It records explicit dispositions for the tracked processor, syntax, semantic, built-in, and arithmetic requirements. `test/conformance/ISO-COMPLIANCE.md`
10407
10407
  maps language families to representative executable cases.
10408
10408
  `test/conformance/ISO-IMPLEMENTATION-DEFINED.md` is the ISO 5.4 decision
10409
10409
  index: it enumerates the Part 1 implementation-defined decisions and the
@@ -10416,7 +10416,7 @@ rows. The exit checklist in `ISO-COMPLIANCE.md` records the closure criteria and
10416
10416
  upstream syntax cases. Reviewed cases can pin exact strict-reader outcomes, while
10417
10417
  newly upgraded cases execute directly against the upstream Codex expectation.
10418
10418
 
10419
- The syntax audit also cross-checks extension safety: each vendored WG17 case
10419
+ The syntax review also cross-checks extension safety: each vendored WG17 case
10420
10420
  accepted by the strict Part 1 reader is executed through the normal profile and
10421
10421
  must preserve the same observable outcome. Additional normal-mode syntax may
10422
10422
  accept texts outside the strict grammar, but it may not reinterpret an accepted
@@ -10463,7 +10463,7 @@ expansion/`phrase/2-3`, quads, EyeProlog libraries, the `occurs_check` flag,
10463
10463
  the normal-profile `table` declaration, `call_cleanup/2`, and `setup_call_cleanup/3` are outside
10464
10464
  that Part 1 strict surface.
10465
10465
 
10466
- The strict-core audit has explicit dispositions for the Clause 5 processor
10466
+ The strict-core review has explicit dispositions for the Clause 5 processor
10467
10467
  obligations, Clause 6 syntax and rejection families, Clause 7 term/execution/I/O
10468
10468
  and error semantics, the 8.2-8.17 built-in families, and Clause 9 evaluable
10469
10469
  functors. The complete vendored WG17 syntax matrix is checked together with normal-mode safety: each strict-success WG17 observation must keep the same result when normal-mode extensions are enabled. Implementation-defined
package/why-eyeprolog.md CHANGED
@@ -235,7 +235,7 @@ tests, and production behavior easier to compare.
235
235
  EyeProlog targets the ISO Part 1 core together with Technical Corrigenda 1, 2,
236
236
  and 3. It provides separately documented compatibility profiles for Part 2
237
237
  modules and Part 3 definite clause grammars in normal mode. The post-N289
238
- WG17/STC working draft is audit input, not a published Corrigendum silently
238
+ WG17/STC working draft is review input, not a published Corrigendum silently
239
239
  added to the strict baseline.
240
240
 
241
241
  The executable conformance matrix records explicit dispositions for the
@@ -288,7 +288,7 @@ documented embedding hook.
288
288
  It should resist duplicate aliases, hidden execution phases, advisory syntax,
289
289
  and integrations that can live outside the reasoning engine. The durable idea
290
290
  is that useful, proof-producing reasoning does not require an opaque language
291
- or an enormous runtime. A carefully audited standard core, portable modules,
291
+ or an enormous runtime. A carefully reviewed standard core, portable modules,
292
292
  and an ordinary JavaScript API can remain both practical and understandable.
293
293
 
294
294
  ## References