mirror of
https://github.com/PR0M3TH3AN/bitgate.git
synced 2026-10-27 08:31:00 +00:00
Proves the engine did not stay video-specific during extraction. - application adapter contract in core (createApplicationAdapter, evaluateObject, collectTargets): an object names the targets that govern it and the strictest verdict reaching any of them wins, so denying a seller takes their whole catalogue down with no cascade logic in the application - examples/commerce: a marketplace on the public API covering all ten proof-of-fit behaviors the plan requires, including that no core change was needed. One product, one snapshot, four surfaces, four different verdicts. - README, integration guide, per-example README, CHANGELOG, four ADRs, and GPL-3.0-or-later LICENSE (the license was listed in Phase 1 but missing) - checkpoints rewritten to reflect actual state and to say plainly which migration-plan phases belong to the consumer repos rather than here Fixes a real gap found by the proof-of-fit: composeDecisions kept only the first decision's evidence, so an object governed by several targets lost the evidence that drove its verdict. Evidence now merges — counts summed, contributor lists unioned, flags or-ed. 556 tests; lint, typecheck, and per-package type build clean.
3.2 KiB
3.2 KiB
Changelog
Notable changes to this repository. The package version and the wire schema version move independently: a breaking package release does not imply a new event schema, and a new schema does not require a major package bump unless the public API changes with it.
[Unreleased]
Added
- Core decision model. Four independent dimensions (
ranking,visibility,interaction,transaction) with severity ladders and commutative max-merge composition. - Stable reason identifiers (
REASON_IDS) as part of the public contract. Renaming or removing one is a breaking change. - Structured evidence, redacted by default and merged across an object's targets, so a multi-target object explains itself with everything that contributed.
- Administrative-state reduction with capability filtering at merge time, community-source marking, and protected-actor stripping.
- Snapshot fingerprints for cache invalidation and mismatch records.
- Application adapter contract (
createApplicationAdapter,evaluateObject,collectTargets). - Codecs: canonical v1 on
kind:30078, NIP-56 reports, NIP-51 mute lists, legacy administrative lists, bech32/NIP-19, replaceable selection with a deterministic same-timestamp tiebreak, injected signature verification. - Runtime: six stores, transport orchestration, chunked report subscriptions, viewer lifecycle, diagnostics, idempotent teardown.
- Commands with local capability checks, protected-target refusal, partial relay acceptance, and stable error codes.
- Characterization corpus: 34 generated fixtures covering the behaviors the migration plan's Phase 0 requires, plus a conformance suite that evaluates them.
- Commerce proof-of-fit (
examples/commerce) demonstrating the engine outside a video application using only the public API. - GPL-3.0-or-later
LICENSE,README, and an integration guide.
Fixed
- Per-package
typesfields pointed at paths the build never produced, so consumers received no type declarations at all. Declarations now emit per package and resolve. reduceAdminStateaccepted malformed target identifiers, becausegetTargetKeyformats anything it is given.community-user-denyfired for any contributor rather than only for community-curated sources, making a direct moderator action indistinguishable from a federated one.composeDecisionskept only the first decision's evidence, so an object governed by several targets lost the evidence that drove its verdict.OverrideStore.clear()shadowed the inherited listenerclear(), leaking subscribers on teardown. NowclearOverrides().
Changed
- The evaluator no longer carries application thresholds. The previous invented
defaults (5/3/10/5) are gone; applications supply category thresholds through
a policy definition. The characterized reference values live in
@nostr-governance/bitvid-compatas one application's profile. createAuthorityStatetakes an options object and always grants the root every capability and protection.- Evaluation takes a
GovernanceSnapshotand aViewerStaterather than a flat state object, and reads an injected clock instead of wall time.