Skip to content
This repository was archived by the owner on Feb 4, 2026. It is now read-only.

Release 0.6.2#20

Merged
siy merged 8 commits intomainfrom
release-0.6.2
Dec 29, 2025
Merged

Release 0.6.2#20
siy merged 8 commits intomainfrom
release-0.6.2

Conversation

@siy
Copy link
Copy Markdown
Owner

@siy siy commented Dec 29, 2025

Summary

  • Deployment metrics tracking
  • CLI improvements (blueprint apply, renamed to aether)
  • Artifact repository integrated into AetherNode
  • Installation package with install.sh
  • GitHub release workflow

Changes

  • feat: add deployment metrics and CLI run scripts
  • feat: add blueprint apply command and rename CLI to aether
  • feat: integrate artifact repository into AetherNode
  • feat: add installation package and release workflow
  • docs: update documentation for integrated artifact repository

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added blueprint management command for deploying cluster components
    • Introduced artifact repository with GET/PUT endpoints for storing and retrieving artifacts
    • Deployment metrics tracking for monitoring slice deployment timing and status
    • Automated installation script for setting up Aether toolkit
  • Documentation

    • Revised installation and getting-started guides with updated command examples
    • Restructured CLI reference documentation and infrastructure services architecture guide
  • Chores

    • Version bumped from 0.6.1 to 0.6.2
    • Added release automation workflow for tagged releases
    • Created shell wrapper scripts for CLI, Node, and Forge tools

✏️ Tip: You can customize this high-level summary in your review settings.

siy and others added 8 commits December 29, 2025 10:57
- Add deployment timing metrics (full, net, per-transition)
- Add DeploymentMetricsCollector for local/remote metrics aggregation
- Add DeploymentMetricsScheduler for leader-based distribution
- Use MessageRouter for deployment event dispatch
- Add topology change handling for stale metrics cleanup
- Add run scripts for CLI, Node, and Forge tools
- Update CLI reference and getting-started documentation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Replace awaitility with simple polling utility
- Update CI workflow to trigger on release branches

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add 'aether blueprint apply' command for TOML blueprints
- Add /blueprint POST endpoint to ManagementServer
- Rename CLI from aether-cli to aether
- Rename script from aether-cli.sh to aether.sh
- Update documentation with new commands

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add DHTConfig with full replication support (0 = all nodes store everything)
- Wire DHT, ArtifactStore, and MavenProtocolHandler into AetherNode
- Add /repository/** routes to ManagementServer for production use
- Add /repository/** routes to ForgeApiHandler for testing
- Update dependency management for artifact-repo module

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- CLI outputs aether.jar (renamed from aether-cli.jar)
- Node outputs aether-node.jar with shade plugin
- Forge outputs aether-forge.jar
- Add install.sh for quick installation
- Add release.yml workflow for GitHub releases on tag push
- Update README with installation instructions

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Dec 29, 2025

Caution

Review failed

The pull request is closed.

📝 Walkthrough

Walkthrough

Version bump from 0.6.1 to 0.6.2 introducing deployment metrics infrastructure for tracking slice deployment timing, artifact repository integration via DHT and Maven protocol handler, blueprint support for slice configuration, automated CI/release workflows, and installation scripts. Removes slice-annotations module and related classloader infrastructure.

Changes

Cohort / File(s) Summary
Version Bumping
pom.xml, cli/pom.xml, cluster/pom.xml, common/pom.xml, example-slice/pom.xml, examples/order-demo/pom.xml, forge/pom.xml, http-server/pom.xml, infra-services/pom.xml, infra-services/artifact-repo/pom.xml, node/pom.xml, slice/pom.xml, slice-annotations/pom.xml, slice-api/pom.xml
Parent and module versions bumped from 0.6.1 to 0.6.2 across all Maven POMs; examples/order-demo/pom.xml adds new artifact-repo dependency; node/pom.xml adds artifact-repo dependency and Maven shade plugin configuration.
Documentation Updates
CHANGELOG.md, CLAUDE.md, README.md, docs/aether-node.md, docs/archive/aether-high-level-overview.md, docs/demos.md, docs/development-priorities.md, docs/guide/cli-reference.md, docs/guide/getting-started.md, docs/guide/migration-guide.md, docs/infrastructure-services.md, docs/jbct-cli-slice-support-task.md, docs/typed-slice-api-design.md, example-slice/README.md
Version references updated to 0.6.2; README restructured with Installation sections replacing Quick Start; getting-started guide rewritten for cluster deployment and slice examples; cli-reference substantially reorganized; infrastructure-services reworked to describe built-in artifact repository and DHT-based distribution.
CI/CD & Deployment Automation
.github/workflows/ci.yml, .github/workflows/release.yml, install.sh
CI workflow modified to trigger on release/* and release-* branches; new release.yml workflow automates building and publishing artifacts (aether.jar, aether-node.jar, aether-forge.jar) on tag pushes matching v*; new install.sh script downloads and installs Aether toolkit with PATH configuration.
Shell Scripts
script/aether.sh, script/aether-node.sh, script/aether-forge.sh
Three new launcher scripts for CLI cluster management, node startup, and Forge simulator; each checks for pre-built JAR and triggers Maven build if missing before executing with java -jar.
CLI & Command Updates
cli/pom.xml, cli/src/main/java/org/pragmatica/aether/cli/AetherCli.java
CLI renamed from aether-cli to aether; version updated to 0.6.2; new blueprint subcommand with ApplyCommand to POST blueprints to /blueprint endpoint; finalName changed to aether; Maven shade plugin filters added to exclude signature files.
HTTP Server & Repository API
node/src/main/java/org/pragmatica/aether/api/ManagementServer.java, forge/src/main/java/org/pragmatica/aether/forge/ForgeApiHandler.java
MAX_CONTENT_LENGTH increased to 64MB; new repository GET/PUT endpoints delegating to MavenProtocolHandler; blueprint POST endpoint with BlueprintParser integration; metrics endpoint restructured with separate load and deployments sections; ForgeApiHandler adds repository endpoints with DHT integration.
Deployment Metrics Infrastructure
cluster/src/main/java/org/pragmatica/cluster/metrics/DeploymentMetricsMessage.java, node/src/main/java/org/pragmatica/aether/metrics/deployment/DeploymentEvent.java, node/src/main/java/org/pragmatica/aether/metrics/deployment/DeploymentMetrics.java, node/src/main/java/org/pragmatica/aether/metrics/deployment/DeploymentMetricsCollector.java, node/src/main/java/org/pragmatica/aether/metrics/deployment/DeploymentMetricsScheduler.java
New sealed interface DeploymentMetricsMessage with Ping/Pong records for inter-node metric exchange; new DeploymentEvent sealed interface with StartTime, StateTransition, Completed, Failed record types; new DeploymentMetrics record tracking deployment timing across lifecycle stages; DeploymentMetricsCollector interface with concurrent implementation for aggregating and retaining deployment metrics; DeploymentMetricsScheduler interface for leader-driven metric broadcasting every 5 seconds.
Node Deployment Managers
node/src/main/java/org/pragmatica/aether/deployment/cluster/ClusterDeploymentManager.java, node/src/main/java/org/pragmatica/aether/deployment/node/NodeDeploymentManager.java
MessageRouter dependency added to ClusterDeploymentManager and Active state; DeploymentStarted event emission on LOAD command issuance; NodeDeploymentManager updated to emit StateTransition, DeploymentCompleted, and DeploymentFailed events to MessageRouter; ActiveNodeDeploymentState now requires MessageRouter for event propagation.
DHT & Configuration
common/src/main/java/org/pragmatica/dht/DHTConfig.java
New FULL_REPLICATION constant (value 0) and FULL configuration enabling full replication mode; validation relaxed to allow replicationFactor = 0; quorum checks skipped for full replication; new withReplication() factory method and isFullReplication() check; isStronglyConsistent() logic updated to treat full replication as always consistent; effectiveReplicationFactor() helper added.
Node Configuration & Wiring
node/src/main/java/org/pragmatica/aether/node/AetherNodeConfig.java, node/src/main/java/org/pragmatica/aether/node/AetherNode.java
AetherNodeConfig adds public DHTConfig artifactRepo field; all factory methods updated to accept and pass DHTConfig parameter; testConfig uses DHTConfig.FULL for tests; AetherNode adds deploymentMetricsCollector() and mavenProtocolHandler() public accessors; wires DeploymentMetricsCollector, DeploymentMetricsScheduler, DHTNode, LocalDHTClient, ArtifactStore, and MavenProtocolHandler into node construction; configureRoutes updated to register deployment and metrics message handlers.
Test Suites
node/src/test/java/org/pragmatica/aether/deployment/cluster/ClusterDeploymentManagerTest.java, node/src/test/java/org/pragmatica/aether/deployment/node/NodeDeploymentManagerTest.java, node/src/test/java/org/pragmatica/aether/metrics/deployment/DeploymentMetricsTest.java, node/src/test/java/org/pragmatica/aether/metrics/deployment/DeploymentMetricsCollectorTest.java, node/src/test/java/org/pragmatica/aether/metrics/deployment/DeploymentMetricsSchedulerTest.java
ClusterDeploymentManagerTest updated to pass MessageRouter to factory; NodeDeploymentManagerTest imports DeploymentEvent types; new comprehensive test suites added for DeploymentMetrics (state transitions, timing calculations, protocol conversion), DeploymentMetricsCollector (lifecycle, retention, ping/pong workflow, topology changes), and DeploymentMetricsScheduler (leadership transitions, periodic broadcasting, failover).

Sequence Diagram(s)

sequenceDiagram
    actor Node1
    actor Node2
    participant DMC as DeploymentMetricsCollector
    participant DMS as DeploymentMetricsScheduler
    participant Net as ClusterNetwork
    actor Leader

    Note over Leader,Node2: Deployment Metrics Collection & Broadcasting

    Node1->>DMC: onDeploymentStarted(event)
    Note over DMC: Track in-progress deployment
    Node1->>DMC: onStateTransition(LOAD→LOADED)
    Note over DMC: Update load timing
    Node1->>DMC: onDeploymentCompleted(event)
    Note over DMC: Finalize, move to completed<br/>with retention policy

    rect rgb(200, 220, 255)
    Note over Leader: Leader periodically broadcasts (5s interval)
    Leader->>DMS: Triggered by interval
    DMS->>DMC: collectLocalEntries()
    DMC-->>DMS: Return metrics map
    DMS->>Net: send(DeploymentMetricsPing)
    end

    Net->>Node1: onDeploymentMetricsPing(ping)
    Note over Node1: If sender != self
    Node1->>Net: send(DeploymentMetricsPong)
    
    Net->>Leader: onDeploymentMetricsPong(pong)
    Leader->>DMC: onDeploymentMetricsPong(pong)
    Note over DMC: Merge remote metrics<br/>Enforce retention per artifact

    rect rgb(240, 200, 200)
    Note over Node1: On topology change
    DMC->>DMC: onTopologyChange(nodeRemoved)
    Note over DMC: Cleanup in-progress &<br/>remote metrics for node
    end

    Note over DMC: Query interface<br/>allDeploymentMetrics()<br/>metricsFor(artifact)
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

  • Release 0.5.0 #18: Introduces DHT stack (DHTNode, DHTConfig, ConsistentHashRing), artifact repository infrastructure (ArtifactStore, MavenProtocolHandler), and route self-registration components that this PR extends with metrics collection and blueprint support.
  • Release 0.6.1 #19: Removes or replaces slice-annotations module, SliceBridge interface, and FrameworkClassLoader that were introduced in PR #19, moving toward simpler slice deployment model.

Poem

🐰 Metrics bloom in every node,
Deployment journeys now foretold,
From start to active, timings trace,
A distributed metrics embrace,
While blueprints paint the cluster's face!

✨ Finishing touches
  • 📝 Generate docstrings

📜 Recent review details

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3cd93ea and 2d292e3.

📒 Files selected for processing (53)
  • .github/workflows/ci.yml
  • .github/workflows/release.yml
  • CHANGELOG.md
  • CLAUDE.md
  • README.md
  • cli/pom.xml
  • cli/src/main/java/org/pragmatica/aether/cli/AetherCli.java
  • cluster/pom.xml
  • cluster/src/main/java/org/pragmatica/cluster/metrics/DeploymentMetricsMessage.java
  • common/pom.xml
  • common/src/main/java/org/pragmatica/dht/DHTConfig.java
  • docs/aether-node.md
  • docs/archive/aether-high-level-overview.md
  • docs/demos.md
  • docs/development-priorities.md
  • docs/guide/cli-reference.md
  • docs/guide/getting-started.md
  • docs/guide/migration-guide.md
  • docs/infrastructure-services.md
  • docs/jbct-cli-slice-support-task.md
  • docs/typed-slice-api-design.md
  • example-slice/README.md
  • example-slice/pom.xml
  • examples/order-demo/pom.xml
  • examples/order-demo/run.sh
  • forge/pom.xml
  • forge/src/main/java/org/pragmatica/aether/forge/ForgeApiHandler.java
  • http-server/pom.xml
  • infra-services/artifact-repo/pom.xml
  • infra-services/pom.xml
  • install.sh
  • node/pom.xml
  • node/src/main/java/org/pragmatica/aether/api/ManagementServer.java
  • node/src/main/java/org/pragmatica/aether/deployment/cluster/ClusterDeploymentManager.java
  • node/src/main/java/org/pragmatica/aether/deployment/node/NodeDeploymentManager.java
  • node/src/main/java/org/pragmatica/aether/metrics/deployment/DeploymentEvent.java
  • node/src/main/java/org/pragmatica/aether/metrics/deployment/DeploymentMetrics.java
  • node/src/main/java/org/pragmatica/aether/metrics/deployment/DeploymentMetricsCollector.java
  • node/src/main/java/org/pragmatica/aether/metrics/deployment/DeploymentMetricsScheduler.java
  • node/src/main/java/org/pragmatica/aether/node/AetherNode.java
  • node/src/main/java/org/pragmatica/aether/node/AetherNodeConfig.java
  • node/src/test/java/org/pragmatica/aether/deployment/cluster/ClusterDeploymentManagerTest.java
  • node/src/test/java/org/pragmatica/aether/deployment/node/NodeDeploymentManagerTest.java
  • node/src/test/java/org/pragmatica/aether/metrics/deployment/DeploymentMetricsCollectorTest.java
  • node/src/test/java/org/pragmatica/aether/metrics/deployment/DeploymentMetricsSchedulerTest.java
  • node/src/test/java/org/pragmatica/aether/metrics/deployment/DeploymentMetricsTest.java
  • pom.xml
  • script/aether-forge.sh
  • script/aether-node.sh
  • script/aether.sh
  • slice-annotations/pom.xml
  • slice-api/pom.xml
  • slice/pom.xml

Comment @coderabbitai help to get the list of available commands and usage tips.

@siy siy merged commit adec7b1 into main Dec 29, 2025
2 of 3 checks passed
@coderabbitai coderabbitai bot mentioned this pull request Jan 1, 2026
@siy siy deleted the release-0.6.2 branch January 16, 2026 23:09
@coderabbitai coderabbitai bot mentioned this pull request Jan 18, 2026
3 tasks
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant