Skip to content

v1.1.3

Choose a tag to compare

@dmealing dmealing released this 26 Oct 07:38
· 37 commits to main since this release

npm 1.1.3 (full lockstep across all 14 @metaobjectsdev/* publish candidates), PyPI 1.1.3, NuGet 1.1.3 and Maven Central 8.1.3.

Changed

  • A report list route answers every row up to one cap, and is refused above it, in all five
    ports.
    With no limit a served object.report returns all of its rows; one row past the
    cap, or an explicit limit above it, is 400 { "error": "report_too_large", "maxRows": N },
    before any body is written. The cap is 10,000 by default and a generator option:
    routesFile({ reportMaxRows }) / routesFileHono (TypeScript), RoutesGenerator.ReportMaxRows
    (C#), the reportMaxRows generator arg (Java, Kotlin), router_generator(report_max_rows=)
    (Python). This changes served output in Java, Kotlin and Python, whose report lists used to
    stop at 50 rows with no limit; and in every port a report longer than the cap that used to answer
    now answers report_too_large. Entity and projection lists keep their paging. A report page
    bound that is not usable (limit below 1, a negative offset, not an integer) is
    400 pagination.invalid_value in every port. Gated by the new ReadingLog report and the
    cap-all-rows, cap-refused and bad-page-bound scenarios of the api-contract report/ corpus.

  • Requirements guidance: a feature commit updates its requirement. The agent context
    (the authoring and verify skills and the always-on file meta init writes) now tells an
    agent that a commit adding, changing or removing behaviour updates the ledger in the same
    commit, or says why not. verify checks that the ledger's links resolve, not that it is
    current, so nothing else enforces it.

  • The adoption docs recommend the strict requirements check (--require-implementers, or
    its per-port form) in the project's verify script or pre-push hook once the ledger is clean.

Fixed

  • meta verify --db no longer reports false drift on a regex CHECK over a varchar/text
    column.
    Postgres stores "key" ~ '^[a-z]+$' as ((key)::text ~ '^[a-z]+$'::text); the
    literal's ::text was already folded away but the column's was not, so a database migrate
    had just built showed the same constraint as both added and dropped. The comparison now
    drops a (col)::text cast before a regex-match operator (~, ~*, !~, !~*) only when
    the database column is text, varchar or bpchar; on any other column, citext included,
    the cast changes the operator and still reads as drift, as does a changed pattern or any
    other cast. Schema comparison is TypeScript-owned, so no other port
    carries this comparison.

  • A report list in Java, Kotlin and Python no longer silently drops rows past the 50th. A
    90-day daily report showed 50 days with no error when limit was omitted. C# also ignored a
    limit of 0 or below on a report instead of refusing it. See the report row cap under
    Changed.

  • The api reference now follows a routes generator's filter as well as its expose.
    routesFile({ filter }) and routesFileHono({ filter }) mount nothing for an entity the filter
    rejects, but the API pages still listed all five verbs for it. The pages now document the
    routes the generators mount and nothing else, from the one resolved answer the run reads off
    them (runRoutesExpose). Output with neither option is byte-identical. A routes generator
    ejected before the mountsRoutes marker existed is now named in a meta gen warning when the run
    writes an api reference: its expose and filter are invisible to the pages until it carries
    the marker (or is re-ejected with meta eject routes --force). TypeScript only: no other port
    has an expose option or a routes-generator filter, and the ports' api references document
    routes from the model alone.

  • C#: the two shared helpers now carry the // <auto-generated/> marker (#460).
    DecimalWire[.<Namespace>].g.cs and MetaNetValidation[.<Namespace>].g.cs were the only
    emitted files without it, so a runner with no GenStateDir wrote them once and then logged
    refusing to overwrite hand-written file on every later run, leaving a stale copy (and the
    @precision/@scale input check inside it) behind. A copy already on disk has no marker, so
    regenerating alone keeps refusing it: delete the existing DecimalWire*.g.cs and
    MetaNetValidation*.g.cs files, then regenerate. The marker is the only change to the
    helpers' text.

  • The 1.1.0 entry's handler-code figure of 439 lines retired is corrected to about 460, as
    measured in one adopter's pull request.