Skip to content

CI verification only — do not merge - #2

Closed
opusstudiohq-max wants to merge 23 commits into
masterfrom
fix-1450
Closed

opusstudiohq-max wants to merge 23 commits into
masterfrom
fix-1450

Conversation

@opusstudiohq-max

Copy link
Copy Markdown
Owner

Runs the Maven build against the fix for objectionary#1450 before it is proposed upstream.

yegor256 and others added 23 commits September 9, 2026 06:48
…ng raw hex (objectionary#1427)

sprintf-constant-args counted a format specifier by looking for its
literal hex byte sequence (e.g. "2566" for "%f") inside the untouched
hex dump of the format string. A specifier carrying a flag, width or
precision (e.g. "%08.2f") inserts extra bytes between "%" and the
conversion letter, so its hex sequence never matched and the lint
silently missed the defect.

Decode the hex bytes back into the actual characters first (the same
approach sprintf-without-formatters already uses), then count
specifiers with a regex that understands flags, width and precision.


Claude-Session: https://claude.ai/code/session_01TFrxLNmS5phrWQhwndWUCU

Co-authored-by: Claude <noreply@anthropic.com>
…ectionary#1428)

`XtLint` produced `<defect>` elements with `line`, `severity` and text
only, so a pack's `asserts:` had no way to check which rule fired. Each
element now also carries `@rule` from `Defect#rule()`.

That was the blocking half of the puzzle. The other half it enabled —
moving the Java tests that exist only to assert a rule name into YAML
packs — is left as a new puzzle rather than done silently here, since it
deletes tests and belongs in its own review.
…rs (objectionary#1436)

* fix(objectionary#1434): teach test-name.xsl the p🌵/n🌵 test markers

The EO parser no longer prefixes a test attribute name with `+` or `-`,
because those are not legal φ-calculus attribute names (objectionary/eo#8566).
A truthy test now comes as `p🌵name` and a throwing one as `n🌵name`.

`eo:test-name` now accepts both spellings, so the two repositories may
move independently. Since the markers differ in width, `eo:test-marker`
and `eo:test-title` replace the `substring(@name, 2)` slicing in
`bad-test-name`, `wrong-test-order`, `unit-test-without-phi` and
`incorrect-test-object-name`, while `eo:positive-test` gives
`bad-test-name` its polarity instead of `starts-with(@name, '+')`.

`LtTestNotVerb` had the marker written into its XPath inline; it now goes
through `MarkedName`, the Java twin of the same function.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XWJEebtyWwtj6cuN9AoRiq

* style(objectionary#1434): keep the new pack assert under 80 columns

yamllint reads a breakable line over 80 characters as an error, and the
assert in `catches-negative-prefix-in-cactus-positive-test` was 83.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XWJEebtyWwtj6cuN9AoRiq

---------

Co-authored-by: Claude <noreply@anthropic.com>
…rved-name.yaml

The parser rejects a comment placed between metas and the object; the
earlier cleanup sed only matched single-word comments and missed this
two-word one, tripping the deep-tagged validatesEoPacksForErrors check.
… line-length rule

The escaped-quote XPath assertion exceeded 80 chars on one line. Switched
to a folded block scalar with unquoted XPath (single/double quotes are
literal in a YAML plain/folded scalar, so no escaping is needed).
Bump qulice-maven-plugin from 0.35.1 to 0.35.2 and fix the violations
reported by the new version:

- JavadocEmptyLineBeforeTagCheck (164): add an empty Javadoc line
  before the block of at-clauses across 80 files
- CloseInlineResourceRule (2): close inline AutoCloseable expressions
  with try-with-resources in Vocabulary, and drop ReaderOf in favour of
  TextOf in LtByXslTest


Claude-Session: https://claude.ai/code/session_01PWNy4KFmfg1LDcDEMufvR8

Co-authored-by: Yegor Bugayenko <yegor@zerocracy.com>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
LineOf.value() regex-gated line="abc" but still let a numeric
string wider than Integer.MAX_VALUE escape as a bare
NumberFormatException. Parsing is now wrapped so overflow falls
back to 0, same as any other unusable @line value.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LXmkW1iAS7vgk51MWW4wdm
fix(objectionary#1451): catch overflow when parsing numeric @line values
`Version.CORE` was anchored at the start only, and `parsed` used
`find`, so it read the first three numbers it met and ignored whatever
followed. `1.2.3garbage`, `1.2.3.4` and `999.0.0oops` all came back as
valid versions.

That reaches a user through `LtSyntaxVersion`, which documents that a
non-SemVer `+syntax` value is ignored. A malformed value was instead
compared as if it were a version, so `+syntax 999.0.0oops` could raise
a hard error demanding a newer parser.

The pattern now describes the whole spelling and `matches` requires all
of it: the numeric core, then an optional SemVer pre-release or build
suffix. A real pre-release such as `1.2.3-alpha.1` is still read by its
numeric core, which is what the comparison wants.

The digits are still `\d+` rather than SemVer's stricter
no-leading-zero form, so nothing that parses today stops parsing except
the malformed spellings above. A component above `Integer.MAX_VALUE`
still matches the pattern and is still turned into an empty result by
the existing `NumberFormatException` guard; the last test pins that, so
this change cannot quietly undo objectionary#1442.
@github-actions github-actions Bot added the core label Sep 15, 2026
@opusstudiohq-max

Copy link
Copy Markdown
Owner Author

Verified green; upstream PR is objectionary#1469.

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants