ci: add me-client to packages build matrix + release tag list#4
Merged
Conversation
The Packages workflow's build matrix was missing me-client, so PR #3 (me-client v0.1.0) merged green without ever building or testing the new package — and never auto-published to npm. v0.1.0 was published manually via NPM_TOKEN to unblock /integrate code samples. This commit closes that gap so future me-client versions go through the same gate every other package does: - packages.yml: add me-client to the build matrix. - release.yml: add me-client-v* to the tag-trigger list, plus a matching docstring entry. After merge, future releases ship with: yarn version → git tag me-client-v0.X.0 → git push --tags. Packages CI runs build+test on every push, release.yml publishes on tag push. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Xaxis
added a commit
that referenced
this pull request
Apr 30, 2026
…Fees (#5) * ci: add me-client to packages build matrix + release tag list The Packages workflow's build matrix was missing me-client, so PR #3 (me-client v0.1.0) merged green without ever building or testing the new package — and never auto-published to npm. v0.1.0 was published manually via NPM_TOKEN to unblock /integrate code samples. This commit closes that gap so future me-client versions go through the same gate every other package does: - packages.yml: add me-client to the build matrix. - release.yml: add me-client-v* to the tag-trigger list, plus a matching docstring entry. After merge, future releases ship with: yarn version → git tag me-client-v0.X.0 → git push --tags. Packages CI runs build+test on every push, release.yml publishes on tag push. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * feat: @orangecheck/me-client v0.2.0 — IntegratorPriceConfig + computeFees Mirror the systemic refactor in oc-me-web. The package now exports the canonical integrator-configurable pricing types: - IntegratorPriceConfig — what every integrator declares - IntegratorEventConfig — per-subtype { enabled, site_pays, user_share_pct } - SiteFeeShape — { kind: 'fixed_sats' | 'percent_of_amount', ... } - ComputedFees — the four-way split: gross / platform / user / site_rebate Plus the platform constants OC inherits to all integrators: - PLATFORM_FEE_POLICY = { pct: 0.2, min_floor_sats: 1, ratified } - MIN_INTEGRATOR_PRICE_SATS = 5 - computeFees(cfg, payment_amount?) helper for client-side preview Type bundle grew 3.79 KB → 4.81 KB. Already published manually; this commit makes the version bump auditable in git history. Future versions auto-publish on me-client-v0.X.0 tags now that PR #4 added me-client to the release workflow's tag list. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Xaxis
added a commit
that referenced
this pull request
May 7, 2026
Mirrors @orangecheck/pledge-core@0.1.0 function-for-function so the
"cross-impl, where it counts" claim on ochk.io now applies to OC Pledge
the same way it applies to OC Attest. All 28 committed test vectors in
oc-pledge-protocol/test-vectors/ reproduce byte-identically across the
two SDKs.
Module layout (orangecheck/pledge/):
canonical.py Canonical messages, ids, validators, RFC 8785 envelope
canonicalization. Exports:
canonical_pledge_message / _outcome_ / _abandonment_
compute_pledge_id / _outcome_id / _abandonment_id
validate_pledge_input / _outcome_ / _abandonment_
pledge_input_from_dict / _outcome_ / _abandonment_
canonicalize_envelope, generate_nonce
Frozen dataclasses for inputs (PledgeCanonicalInput,
OutcomeCanonicalInput, AbandonmentCanonicalInput,
ResolvesAtTime / ResolvesAtBlock, PledgeBond /
Resolution / Dispute, OutcomeEvidence).
envelopes.py create_pledge / verify_pledge with the §3.5
hex-id-as-sign-target rule and the §7.3
agent-address-as-verify-key override; create/verify
for outcome and abandonment envelopes; PledgeError
carrying SPEC §10 codes; the Bip322Signer Protocol
and VerifyBip322 Callable typing for caller adapters.
The §4.3 `expired_unresolved` nuance (test vector v16)
is honoured: outcomeRequiresSignature() keys off
resolved_by, not mechanism.
state.py classify_state — pure-function §4.4 transition table.
Pure Python ISO-8601-UTC parsing (regex + civil-from-
days arithmetic) avoids datetime quirks across CPython
versions and is stable on Python 3.9+.
bond.py verify_bond — the §8 algorithm with a sync-callable
attestation lookup. Caller pre-resolves an
AttestationLookupResult and hands it in; mirrors the
TS SDK's verifyBond shape minus the Promise.
resolution.py validate_resolution_query — regex-level grammar gates
for the seven §3.4 mechanisms. Refuses self_proof per
§3.4.8.
Conformance harness (tests/pledge/test_vectors.py):
* Loads vectors via OC_PLEDGE_VECTORS_DIR env, sibling-clone, or a
user-home fallback (same locator pattern as vote-core / agent-core).
* Parameterizes pytest over the 28 committed vectors; fails the named
vector if any of canonical_message / id / state / bond code / error
code drifts.
* As of this commit, all 28 pass:
v01-v10 pledge envelopes (all 7 mechanisms + agent-delegated +
edge cases)
v11-v16 outcome envelopes (kept / broken / disputed /
expired_unresolved across deterministic and
counterparty-signed paths)
v17 abandonment envelope
v18-v20 bond verification (valid / insufficient sats /
bond-draining UTXO spend)
v21-v22 bilateral consistency / contradiction → kept / disputed
v23-v27 state-machine transitions (pending / resolvable / kept /
broken-via-abandonment / expired_unresolved)
v28 empty-nonce rejection → E_PLEDGE_MALFORMED
Test counts (full sdk-py suite):
* Existing OC Attest tests: 52 passing (unchanged)
* New pledge conformance: 28 passing
* Total: 80 passing in 0.22s on Python 3.11
Package shape:
* pyproject.toml: 0.1.3 → 0.2.0 (minor — additive submodule)
* orangecheck/__init__.py: re-exports `from . import pledge as pledge`
so consumers can write `from orangecheck import pledge` or use the
nested attribute path.
* No new runtime dependency. Optional `[verify]` extra (bip322 native
binding) is reused; pledge's BIP-322 hook accepts any verifier
callable matching `(msg, sig_b64, address) -> bool`, including
orangecheck.verify_bip322_signature.
This unblocks Task #5 (extend the conformance CI job in
oc-packages/.github/workflows/packages.yml to clone oc-pledge-protocol
and run both SDKs against its 28 vectors). Closes Task #4.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes the gap that let me-client v0.1.0 merge without going through CI.
Also adds
me-client-v*to the release.yml tag-trigger list so future versions auto-publish on tag push.🤖 Generated with Claude Code