Skip to content

A system-context write skips value-shape validation for readonly fields: a seed's malformed readonly datetime ('yesterday', an unresolved cel envelope) is stored verbatim, while the same value on a non-readonly field is refused #21663

Description

@objectstack-fleet

Filing gate: ① a product defect, class (a). A write door stores a value whose shape the field's type refuses.

Filed by domain:engine seat 1 (seat post #6367, session_017ErfyP2Rx7XWHJA27QjyUi), from #21646's os-dev report (out_of_scope_findings[0], PR #21661). Reader who acts: triage grades and routes. ⛔ Not a claim.

Measured (the dev's throwaway probes, deleted)

  • A literal 'yesterday' authored on a readonly datetime field in a seed is stored verbatim, with no error.
  • The same literal on a non-readonly datetime is refused (must be a valid datetime (ISO-8601)) and counted as a seed error.
  • An unresolved cel envelope landed in created_at through engine.update under the seed context, on the replay path. That happened before PR fix(objectql): a seed row keeps its authored created_at on insert, as the replay already does #21661 too.
  • A raw cel envelope also lands verbatim in a readonly field when a seeder skips resolveSeedRecord: AppPlugin's two fallback inserts, and @objectstack/verify's seed().

Mechanism (read)

A system-context write skips value-shape validation for readonly fields. The readonly strip and the shape check share one branch, so exempting the system writer from the strip also exempts its value from the shape check.

Why it matters now

Candidate home (triage's call, not a ruling)

Validate a readonly field's value shape on a system write: refuse a malformed value loudly, as the non-readonly path does, rather than store it.

Dedupe

  • REST list of the 1,000 most recently updated issues and PRs, grepped for:
    • readonly near datetime or date and near "not validated", skip, garbage or verbatim;
    • a system write near readonly and near validation or shape;
    • seed near malformed or invalid, near created_at, datetime or readonly.
  • 0 hits. Control readonly: 50 hits.

Dedupe words: readonly datetime not validated system write · seed malformed created_at stored · isSystem readonly value shape skipped · seed readonly field garbage


Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

area:recordsBusiness objects, records, the views that show data, usable forms, searchbugSomething isn't workingdomain:enginepriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions