Skip to content

Feature/cyclic topology - #9

Merged
piotr-blue merged 9 commits into
nextfrom
feature/cyclic-topology
Aug 20, 2026
Merged

Feature/cyclic topology#9
piotr-blue merged 9 commits into
nextfrom
feature/cyclic-topology

Conversation

@piotr-blue

Copy link
Copy Markdown
Contributor

Summary

Finalizes BEX exact-value and semantic-identity handling, and migrates the public release pipeline to the published Blue Language 3.1.0-rc.21 artifacts.

What changed

  • Added explicit exact-value, established-identity, and semantic-boundary capabilities.
  • Bridged Contracts ProcessorExecutionContext into BEX gas, identity, and output-admission boundaries.
  • Bound BEX to Language tag v3.1.0-rc.21 at commit 5c4e5c88fa75d6cbc52b2e8772f14f2ac5246f52.
  • Recorded and authenticated the exact Maven Central coordinates, API surface, and JAR SHA-256 values.
  • Made working, modernization, release, publish, and JReleaser lanes published-only.
  • Replaced local/published comparison claims with four isolated standalone-published builds:
    • four separate BEX checkouts;
    • four separate Git directories;
    • four empty Gradle homes;
    • two byte-identical artifact pairs;
    • four-run semantic and exact-gas repeatability.
  • Retained live independent-build evidence through the publish and JReleaser workflow steps.
  • Gave publish and JReleaser separate empty Gradle homes for reproducible Language resolution.
  • Updated release documentation, API classifications, migration ledgers, and provenance evidence.
  • Retired the pre-publication SDK candidate lane as historical evidence.

Verification

An exact tagged v1.1.0-rc.4 workflow simulation passed:

  • releaseReady: true
  • workingReady: true
  • modernizationReady: true
  • 910 / 910 tests
  • 60 / 60 normative vectors
  • 105 / 105 behavior fixtures
  • 30 / 30 gas fixtures
  • 86 / 86 operators
  • hosted boundary checks: passed
  • semantic and gas parity: passed
  • Java 8 bytecode: passed
  • API evidence: passed
  • JMH smoke and full benchmark campaign: passed
  • reproducibility: passed
  • published dependency authentication: passed
  • independent clean builds: passed
  • published semantic/exact-gas repeatability: passed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 8ee7d1f9ea

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment on lines +61 to +64
BexEstablishedIdentity carried = Objects.requireNonNull(
semanticIdentity.carryExactIdentity(
exactId,
BexFrozenWriter.toFrozen(value)),

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Apply failure policy to exact identity carries

When a host implementation of carryExactIdentity throws an unexpected runtime exception, this exact-value branch lets it escape directly, whereas transient identity establishment passes the same kind of host failure through failureBoundary.preserveOrWrap. This exposes adapter exceptions such as IllegalStateException to callers instead of the documented BexException boundary; wrap this call using the same failure-policy handling as establishIdentity.

Useful? React with 👍 / 👎.

Comment on lines +67 to +69
require(blockers,
"candidate-source-lock".equals(baseline.get("status")),
"candidate-baseline-not-source-locked");

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Align the SDK-stage verifier with the checked-in baseline

Every invocation of the newly exposed bexSdkStageVerify task fails here regardless of the staged artifacts because its checked-in sdk-stage-language-baseline.json has status retired-after-publication, not candidate-source-lock. This contradicts the README's new claim that the task verifies the locked candidate repository; either make the lifecycle explicitly unavailable for a retired baseline or supply an active source-lock baseline when advertising the task.

Useful? React with 👍 / 👎.

Comment thread settings.gradle.kts
Comment on lines +55 to +57
require(stagedRepositoryPath == null) {
"$requestedPublishedOnlyTask is published-only and forbids " +
"blueLanguageRepository"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Permit the staged Language repository during SDK publishing

When publish is invoked with bexSdkStagingRepository, PublicationConventionsPlugin makes each publish task depend on bexSdkStageVerify, and that gate requires -PblueLanguageRepository. This settings check rejects that required property for every task whose name starts with publish, so the separate candidate-publish flow cannot even configure; running verification first does not help because the publish graph executes the gate again. Exempt the explicitly staged SDK publication mode from this published-only rejection.

Useful? React with 👍 / 👎.

Comment on lines +76 to +78
const artifactHashes = reports.map(
(report) => report.dependency?.resolution?.artifact?.sha256 ?? 'missing'
);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Compare all focused dependency hashes across repeatability runs

If the repository serves different focused module JARs to the four isolated builds while the aggregate blue-language-java JAR remains unchanged, this repeatability check still reports dependencyIdentityRepeated because it compares only resolution.artifact.sha256 for the aggregate. Each report already contains dependency.resolution.artifacts, so the complete name/hash set should be compared; otherwise the published-repeatability receipt can claim identical dependencies for builds that actually compiled and ran against different Language module bytes.

Useful? React with 👍 / 👎.

@piotr-blue
piotr-blue merged commit 7034066 into next Aug 20, 2026
2 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

Development

Successfully merging this pull request may close these issues.

1 participant