Skip to content

fix: close audit punch-list #44–#70#72

Merged
nficano merged 2 commits into
mainfrom
fix/open-issues-batch-2026-05-24
May 24, 2026
Merged

fix: close audit punch-list #44–#70#72
nficano merged 2 commits into
mainfrom
fix/open-issues-batch-2026-05-24

Conversation

@nficano
Copy link
Copy Markdown
Contributor

@nficano nficano commented May 24, 2026

Summary

Closes the open audit punch-list issues #44#70 in a single coherent batch
of behavior fixes, doc corrections, and tests. Each section below maps
back to its issue.

Bug fixes

Docs

Tests + build

Test plan

  • ./gradlew :lib:ktlintCheck :cli:ktlintCheck :tests:ktlintCheck
  • ./gradlew :lib:detekt :cli:detekt :tests:detekt
  • ./gradlew :lib:test :tests:test (rerun-tasks; all green)
  • ./gradlew assemble
  • CI passes on the PR

nficano and others added 2 commits May 23, 2026 23:21
Close out the audit punch-list from issues #44#70 in a single batch so
the SDK lands a coherent set of behavior + docs + tests rather than a
sprawl of one-line PRs.

Bugs
- ARCPClient: multiplex the transport inbound flow through a
  SharedFlow so listJobs (and future correlated calls) cannot steal
  envelopes from concurrent receive() subscribers (#58).
- CapabilityNegotiation: only reject on REQUIRED-feature mismatches and
  intersect binaryEncoding inside the advertised set; drop unknown
  vendor extensions silently (#51, #57).
- ARCPRuntime: malformed messages now return a correlated Nack instead
  of ending the runtime loop (#47). Session challenge flow either
  drives to completion or rejects explicitly (#50).
- EventLog: serialize all JDBC access through a Mutex so SQLite is not
  reentered from multiple coroutines (#48); idempotency now covers
  envelopes without a session id via a sentinel column value (#49).
- JobInventory: opaque, sort-key-tied pagination cursors so concurrent
  record/updateStatus cannot skip or duplicate pages (#59); expose
  evict + size so callers can enforce a retention window (#60).
- JwtAuth: honor allowedClockSkew on exp/nbf (default 1 minute) and
  optionally verify the issuer claim (#61).
- AgentRegistry / ArtifactStore: drop unsafe mutable collections in
  favor of concurrent maps; ArtifactStore enforces size bounds and
  reports overflow rather than silently dropping (#52).
- BudgetCounter / BudgetRegistry: counters never overshoot zero; the
  registry returns NotFound for unregistered jobs instead of masking
  configuration bugs (#65, #66).
- ResultChunkAssembler: AssembledResult has content equality over its
  ByteArray payload (#53); avoid repeated decoding and byte boxing on
  the hot path (#54); class-level KDoc states the not-thread-safe
  contract (#67).
- CredentialStore.revokeWithRetry: exponential backoff and a broader
  retryable-exception filter (#68).
- DefaultUpstreamErrorTranslator: structured cause matching replaces
  substring sniffing and the synthetic "unknown" currency (#69).
- Samples: remove the human-input sample that pointed at deleted
  source; init-time check rejects new entries with missing files (#55).

Docs
- Make README and getting-started quickstarts runnable end-to-end
  against the current API (#44).
- Correct conformance docs that overclaimed runtime support (#45).
- Add property-level KDoc across the public message models (#46).
- Treat Metric.unit as non-nullable in docs (#63).
- Fix docs/guides/job-events.md reference to JobStarted.jobId (#64).
- Clarify Capabilities.interrupt = true is a deliberate SDK exception
  to RFC §7, not a docs contradiction (#62).

Testing & build
- Add direct unit tests for ARCPClient correlation, JwtAuth,
  BudgetRegistry, BudgetCounter overshoot rejection,
  UpstreamErrorTranslator, MemoryTransport, ResultChunkAssembler
  equality, and CapabilityNegotiation edge cases (#70).
- Wire Kover aggregate verification across :lib and :tests with line
  and branch coverage floors that fail CI on regression (#56).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@nficano nficano merged commit ad901af into main May 24, 2026
4 checks passed
@nficano nficano deleted the fix/open-issues-batch-2026-05-24 branch May 24, 2026 17:40
This was referenced May 24, 2026
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