Skip to content

chore(release): promote v1.1.6 to main - #455

Merged
mohanagy merged 3 commits into
mainfrom
development
Sep 17, 2026
Merged

mohanagy merged 3 commits into
mainfrom
development

Conversation

@mohanagy

Copy link
Copy Markdown
Owner

Pull request

Summary

Refs #453. Reviewed release promotion of v1.1.6 from development to main. This is the only permitted main pull request per CONTRIBUTING.md.

Promotes three commits:

Merge with a merge commit. Do not squash. Squashing a long-lived-to-long-lived promotion bakes the content into a new SHA that development never receives, so the branches drift by identity every release and the next promotion reports a phantom conflict.

Security impact

No public API, dependency, credential, routing, policy-enforcement, redaction, audit, or subprocess change. No dependency was added, removed, or moved; the packaged file count is unchanged at 58. Fail-closed behavior on a genuine binding-storage outage is unchanged.

Two boundaries tighten deliberately, both from #451:

  • A configuration carrying a control character in an identity fingerprint is rejected at validation with its exact path, rather than validating, verifying, and then being silently rewritten into a verification failure by the binding store.
  • Probe output containing control characters is no longer accepted as an identity field, so unstorable evidence cannot reach the store or trip its process-sticky unavailable flag.

Neither case could previously produce a durable binding, so no working configuration is invalidated. The IDENTITY_* codes now appended to doctor output are fixed enumeration members, not identity values.

Validation

  • A failing test was observed first for each behavior or configuration-contract change.
  • npm run lint — pre-existing local .worktrees parser noise only; Linux quality passes in CI.
  • npm run typecheck — clean.
  • npm test — 162 files, 2003 passed, 34 skipped, 0 failed.
  • npm run build — success.
  • node dist/cli/main.js schema — success.
  • npm run check:pack — Package contract verified (58 files).
  • node dist/cli/main.js version — reports 1.1.6.
  • Full CI green on both contributing pull requests across macOS, Ubuntu, and Windows on Node 20, 22, and 24, plus Linux quality and Verify. One Windows Node 22 run failed on an npm ci --offline 120s timeout in the real-tarball install test and passed on re-run; Windows Node 20 and 24 passed that same test on the first attempt.
  • Fixtures, logs, screenshots, and examples contain no credentials or private data. tests/fixtures/fake-upstream-runtime.mjs is not modified, so the named-host evidence hash is intact.
  • User-facing documentation and CHANGELOG.md are updated.
  • Dependency and packaged-file changes are intentional and reviewed.
  • Undisclosed vulnerabilities are reported privately instead of in this pull request.

After merge

Create a GitHub Release for v1.1.6 at the exact current main commit to trigger .github/workflows/publish.yml, then verify registry version and provenance, verify the GitHub Release and workflow evidence, and open chore/sync-main-ancestry-v116 to back-merge this promotion into development (merge commit, never squash) so the branches do not drift.

🤖 Generated with Claude Code

mohanagy and others added 3 commits September 11, 2026 09:10
chore: sync the v1.1.5 promotion merge into development
An identity fingerprint containing a control character passed configuration
validation and passed verification, and was then silently rewritten into a
verification failure by the binding store.

Three layers disagreed about what a storable identity field is. The
configuration schema and the probe parser both accepted control characters,
while the durable binding store rejected any code point below 0x20 or equal
to 0x7f. A fingerprint that genuinely matched its probe therefore returned
"verified" and was immediately downgraded to failed / IDENTITY_BINDING_
UNAVAILABLE, because the store raises its record rejection outside save()'s
own error handling, the manager catches it as a bare failure, and the
resulting unavailable flag is process-sticky and so downgraded identity
verification for every profile in that process.

Extract the single shared predicate and use it in all three layers so they
cannot drift again. An unstorable fingerprint is now refused at configuration
time with its exact path, and unstorable probe evidence can never reach the
store. Doctor appends the IDENTITY_* code to its explanation so the cause is
recoverable from its output rather than requiring a patched build.

Fail-closed behavior on a genuine binding-storage outage is deliberate and is
unchanged. Probe tools whose response spans multiple lines remain unusable for
identity verification; that limitation is now reported by validate instead of
surfacing as an unexplained runtime failure.

Refs #451

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Finalize the compatible v1.1.6 patch release delivering the identity
fingerprint fix from #451. No public API, dependency, credential, routing,
redaction, or audit behavior changed, and fail-closed behavior on a genuine
binding-storage outage is unchanged.

Two boundaries tighten deliberately. A configuration carrying a control
character in an identity fingerprint is now rejected at validation with its
exact path, and probe output containing control characters is no longer
accepted as an identity field. Neither could previously produce a durable
binding, so no working configuration is invalidated.

Publication remains gated on exact development-to-main promotion and protected
OIDC trusted publishing, registry provenance, a fresh install, and package
signature verification; this release does not authorize removal of any legacy
behavior.

Refs #453

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Sep 17, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Team

Run ID: 83a7db47-ad31-42cc-a6a5-0d3af8b3d7a3

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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

@mohanagy
mohanagy merged commit d5a932d into main Sep 17, 2026
23 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