Skip to content

The coverage IT runs an attachment upload and a snapshot mint - #7684

Merged
delchev merged 1 commit into
eclipse-dirigible:masterfrom
nedelcho-delchev-tues:issue-7623-attachment-snapshot-coverage
Oct 5, 2026
Merged

delchev merged 1 commit into
eclipse-dirigible:masterfrom
nedelcho-delchev-tues:issue-7623-attachment-snapshot-coverage

Conversation

@nedelcho-delchev-tues

Copy link
Copy Markdown
Contributor

Fixes #7623

#7568 put a drop of every system-owned column at the top of the generated repository's save(). IntentEmissionCoverageIT was green on that PR, and the change still broke every function: Attachment upload and every function: Snapshot mint — the fixture declared neither. Its own readOnly columns are all written through updateProperties by the generated jobs, notifications and task write-backs, which never reach save(), so a regression on the create path of a system writer was invisible to the one IT that is supposed to compile and run the whole generated surface.

The fixture gains both families. An Archive document master with an items child, an ArchiveFile (function: Attachment) and an ArchiveCopy (function: Snapshot), plus a process that runs the generated snapshot delegate twice in one run so the copy's Version goes 1 then 2 while the document's own identity does not move.

The assertions go through HTTP against the generated controllers, because reading the rendered template proved nothing about the row the last time:

  1. the upload answers with the five metadata columns, and the stored row carries them — read back through the master-scoped list and then by id, with StoragePath ending in the Uuid folder of the stored file, so the two columns name one object rather than merely both being present;
  2. the file downloads byte for byte through the generated endpoint;
  3. a plain POST carrying all five still stores null for each of them while keeping the authored Caption (intent: readOnly and system-owned columns are preserved on update only - a POST stores any value for them #7549 stays fixed);
  4. the document carries two copies, Version 1 and 2, each with a non-null file name, application/pdf, a non-zero size and a /Attachments/ArchiveCopy/ path.

The entities constant was already at the 65535-byte limit for a Java string constant, so the two families ride in a third constant concatenated between the entities and the glue — one document, three constants, for the same reason the glue was split out.

components/engine/engine-intent/CLAUDE.md now names the seven writer families whose create path is save() (REST create, attachment upload, snapshot mint, create-from, postings:/posts:, inbound: arrivals, aggregates: first row), so a change to Repository.java.template's save() or update() is checked against each one by name rather than against "the coverage IT is green".

Verified locally: IntentEmissionCoverageIT passes, 173 s.

eclipse-dirigible#7568 put a drop of every system-owned column at the top of the generated
repository's save(). IntentEmissionCoverageIT was green on that PR, and the
change still broke every `function: Attachment` upload and every
`function: Snapshot` mint: the fixture declared neither. Its own readOnly
columns are written through updateProperties by jobs, notifications and task
write-backs, which never reach save(), so a regression on the create path of a
system writer was invisible to the one IT meant to run the whole generated
surface.

The fixture gains an Archive document with both file children and a process
that mints twice in one run. The assertions go through HTTP against the
generated controllers, because reading the rendered template proved nothing
about the row the last time:

- the upload answers with the five metadata columns and the STORED row carries
  them, with StoragePath ending in the Uuid folder of the stored file;
- the file downloads byte for byte through the generated endpoint;
- a plain create still stores null for all five while keeping the authored
  column;
- the document carries two copies, Version 1 and 2, each describing the PDF it
  stored.

The entities constant was already at the 65535-byte limit, so the two families
ride in a third constant concatenated between the entities and the glue - one
document, three constants, for the reason the glue was split out.

components/engine/engine-intent/CLAUDE.md now names the seven writer families
whose create path is save(), so a change to the generated save() or update()
is checked against each one by name.

Fixes eclipse-dirigible#7623

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@delchev
delchev merged commit e397790 into eclipse-dirigible:master Oct 5, 2026
14 of 16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants