You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit ca63007
Browse filesBrowse the repository at this point in the historyBrowse files
docs(requirements): the decision record and port pages state the final behaviour
ADR-0057 says what is realized and states the stale-witness signal per language. The port pages, the changelog, the ledger spec and the corpus README are corrected where a review found them wrong or silent: the owned Program.cs advice for C#, the Python refusal of a project package under a standard-library name, how hooks and providers are imported, the Kotlin generator count, which loaders refuse a non-integer level, bare-name binding, and what verify does with metadata that does not load.
Refs docs/superpowers/plans/2026-10-05-requirements-slice-1-checks-and-test-generators.md and ADR-0057.
| Java |**Maven Central `8.0.13`** (`com.metaobjects:*` — the JVM major is npm major + 7) — loader + OMDB + render + Maven plugin all shipped; full conformance green |[`docs/ports/java.md`](docs/ports/java.md)|[`server/java/`](server/java/)|
136
-
| Kotlin |**Maven Central `8.0.13`** — codegen tier on top of Java: 14 generators (entity, Exposed table, relations, repository, payload, output-parser, output-prompt, render-helper, extractor, filter-allowlist, validator, Spring config, storedProc, Spring controller); 24 / 24 persistence-conformance |[`docs/ports/kotlin.md`](docs/ports/kotlin.md)|[`server/java/codegen-kotlin/`](server/java/codegen-kotlin/) · [`server/java/metadata-ktx/`](server/java/metadata-ktx/)|
136
+
| Kotlin |**Maven Central `8.0.13`** — codegen tier on top of Java: 15 generators (entity, Exposed table, names, relations, repository, output-parser, output-prompt, render-helper, extractor, filter-allowlist, validator, Spring config, storedProc, Spring controller, requirement-tests); 24 / 24 persistence-conformance |[`docs/ports/kotlin.md`](docs/ports/kotlin.md)|[`server/java/codegen-kotlin/`](server/java/codegen-kotlin/) · [`server/java/metadata-ktx/`](server/java/metadata-ktx/)|
Copy file name to clipboardExpand all lines: docs/features/requirements.md
+10-3Lines changed: 10 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -358,7 +358,7 @@ the summary at `info`, warnings as warnings and errors as errors.
358
358
|---|---|---|
359
359
|`ERR_REQUIREMENT_BAD_LEVEL`| error | The level is outside 1 to 5, on a functional requirement or a levelled architectural one. |
360
360
|`ERR_REQUIREMENT_LEVEL_NESTING`| error | A levelled requirement sits at or above the level of the requirement it is nested under. |
361
-
|`ERR_REQUIREMENT_LINK_ABOVE_FLOOR`| error |`@implementedBy` on a levelled requirement at L1 to L3. Nothing else is reported for that node. |
361
+
|`ERR_REQUIREMENT_LINK_ABOVE_FLOOR`| error |`@implementedBy` on a levelled requirement at L1 to L3. Nothing further is reported for that node: the checks below this row are skipped, and the two above it have already run. |
362
362
|`ERR_REQUIREMENT_L4_NOT_OBJECT`| error | A functional L4 names a member. |
363
363
|`ERR_REQUIREMENT_L5_NOT_MEMBER`| error | A functional L5 names an object. |
364
364
|`ERR_REQUIREMENT_DANGLING_REF`| error | An `@implementedBy` reference does not resolve on `live` or `partial`, or `@supersededBy` does not name a requirement in the ledger. |
@@ -396,15 +396,22 @@ diagnostics, and when any is an error, `<prefix> <n> error(s).` and a non-zero e
396
396
TypeScript caps the warnings it prints at `--limit` (20 by default); the other ports print
397
397
every one. The structured `--format json|toon` payload is TypeScript-only.
398
398
399
+
**Metadata that does not load** is not a model with no requirement: `verify` fails on it in
400
+
every port. The load errors are printed once. Where the drift gate that ran loaded the model,
401
+
that gate prints them; where none did (`metaobjects verify` with no generators selected,
402
+
`dotnet meta verify --codegen` handed off to an owned `codegen/` project), the requirement
403
+
gate prints them itself. Its load is strict unless `--lax`, as the drift gates' is.
404
+
399
405
### Known differences between ports
400
406
401
407
- The package a requirement is taken to be in can differ between ports for two multi-file
402
408
shapes: a root document with no package loaded beside packaged ones, and a child merged
403
409
from a package-less document into a requirement that declares its own package.
404
410
- Python applies only the dependency-import rule to decide which of a project's own
405
411
entities are counted; TypeScript also applies the project's `scope` patterns.
406
-
- A `level` that is not an integer is refused by some loaders and reaches the gate in
407
-
TypeScript.
412
+
- A `level` that is not an integer (`4.5`) is refused at load by the Python, Java and C#
413
+
loaders (`ERR_BAD_ATTR_VALUE`). The TypeScript loader lets it through, and the gate reports
0 commit comments