docs(changelog): composite-policy written spec + template example rename - #204
Merged
rayyan224 merged 3 commits intoAug 18, 2026
Merged
Conversation
Converts the COMPOSITE_POLICY.md point-form draft into a full written changelog entry at changelog/02_Cobalt_PolicyRegistry_composite_policy.md, verified against src/interfaces/IPolicyRegistry.sol. Co-Authored-By: Claude <noreply@anthropic.com>
Interface Coverage✅ All interface functions have test coverage. |
📊 Forge Coverage (
|
| File | Lines | Stmts | Branches | Funcs |
|---|---|---|---|---|
| 🟡 B20FactoryLib.sol | 97.70% | 98.00% | 100.00% | 95.00% |
| 🔴 test/lib/ForceFeeder.sol | 0.00% | 0.00% | 100.00% | 0.00% |
| 🔴 test/lib/PrecompileProbe.sol | 0.00% | 0.00% | 0.00% | 0.00% |
| 🟢 MockActivationRegistry.sol | 100.00% | 100.00% | 100.00% | 100.00% |
| 🟢 MockActivationRegistryStorage.sol | 100.00% | 100.00% | 100.00% | 100.00% |
| 🟢 MockB20.sol | 100.00% | 100.00% | 100.00% | 100.00% |
| 🟢 MockB20Asset.sol | 100.00% | 100.00% | 100.00% | 100.00% |
| 🟡 MockB20Factory.sol | 98.96% | 99.10% | 100.00% | 100.00% |
| 🟢 MockB20Stablecoin.sol | 100.00% | 100.00% | 100.00% | 100.00% |
| 🟢 MockB20Storage.sol | 100.00% | 100.00% | 100.00% | 100.00% |
| 🟡 MockPolicyRegistry.sol | 100.00% | 99.54% | 97.67% | 100.00% |
| 🟢 MockPolicyRegistryStorage.sol | 100.00% | 100.00% | 100.00% | 100.00% |
| Total | 97.07% | 97.52% | 98.16% | 97.00% |
Full report: download artifact. To browse locally: make coverage (runs forge coverage + genhtml + opens the HTML report).
Keeps changelog/COMPOSITE_POLICY.md in place and adds a copy at changelog/TEMPLATE_COMPOSITE_POLICY.md, alongside the generic changelog/TEMPLATE_POINT_FORM.md, so both remain visible for comparison. Co-Authored-By: Claude <noreply@anthropic.com>
rayyan224
force-pushed
the
changelog/cobalt-policy-registry-composite-policy-spec
branch
from
August 18, 2026 15:35
d30d628 to
fc58c27
Compare
❌ Fork tests did not runThe build or setup step failed before any tests could execute. Check the workflow logs for details. |
rayyan224
commented
Aug 18, 2026
| @@ -0,0 +1,226 @@ | |||
| # ADR Template (Point Form) | |||
Collaborator
Author
There was a problem hiding this comment.
Will be removed for prod, here to show how it works / generated from
rayyan224
commented
Aug 18, 2026
|
|
||
| ## Summary | ||
|
|
||
| - Introduce two new `PolicyRegistry` policy types, `UNION` (OR) and `INTERSECT` (AND) — collectively |
Collaborator
Author
There was a problem hiding this comment.
This is what the devloper fills out
rayyan224
commented
Aug 18, 2026
| @@ -0,0 +1,232 @@ | |||
| # Composite Policies (UNION/INTERSECT) | |||
Collaborator
Author
There was a problem hiding this comment.
Long Form Document
stephancill
reviewed
Aug 18, 2026
Co-authored-by: Stephan Cilliers <stephan.cilliers@coinbase.com>
rayyan224
marked this pull request as ready for review
August 18, 2026 18:57
rayyan224
requested review from
amiecorso,
eric-ships,
ilikesymmetry and
stevieraykatz
as code owners
August 18, 2026 18:57
rayyan224
deleted the
changelog/cobalt-policy-registry-composite-policy-spec
branch
August 18, 2026 18:57
rayyan224
added a commit
that referenced
this pull request
Aug 20, 2026
* docs(changelog): split entry-authoring instructions into AGENTS.md README.md now documents only the current state (ordinals, index of shipped/upcoming entries). Naming rules, entry structure, and verification requirements move to changelog/AGENTS.md. Co-Authored-By: Claude <noreply@anthropic.com> * feat: init workflow * chore: techinal document * feat: create agents.md * fix: move technical-document skill into .claude/skills Claude Code only discovers skills under .claude/skills/, so the skill was invisible in the skills listing while it lived under .agents/skills/. Co-Authored-By: Claude <noreply@anthropic.com> * docs(changelog): composite-policy written spec + template example rename (#204) * docs(changelog): expand composite-policy point-form into written spec Converts the COMPOSITE_POLICY.md point-form draft into a full written changelog entry at changelog/02_Cobalt_PolicyRegistry_composite_policy.md, verified against src/interfaces/IPolicyRegistry.sol. Co-Authored-By: Claude <noreply@anthropic.com> * docs(changelog): add TEMPLATE_COMPOSITE_POLICY.md as a worked example Keeps changelog/COMPOSITE_POLICY.md in place and adds a copy at changelog/TEMPLATE_COMPOSITE_POLICY.md, alongside the generic changelog/TEMPLATE_POINT_FORM.md, so both remain visible for comparison. Co-Authored-By: Claude <noreply@anthropic.com> * Update changelog/02_Cobalt_PolicyRegistry_composite_policy.md Co-authored-by: Stephan Cilliers <stephan.cilliers@coinbase.com> --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Stephan Cilliers <stephan.cilliers@coinbase.com> * docs(changelog): add Cobalt B20 seize spec + point-form source Convert the seize point-form template into the written changelog entry 02_Cobalt_B20_seize.md (already indexed in changelog/README.md). Co-Authored-By: Claude <noreply@anthropic.com> * feat: seize policy * changelog: add seize surface + burnBlocked deprecation for Cobalt Adds 02_Cobalt_B20_seize.md documenting the new seizeWithMemo function added to the shared IB20 interface, with independent policy slots (SEIZE_HOLDER_POLICY, SEIZE_RECEIVER_POLICY), dedicated pause vector PausableFeature.SEIZE, and SEIZE_ROLE. burnBlocked is deprecated-dialable. Co-authored-by: OpenCode <opencode-noreply@coinbase.com> Co-Authored-By: Claude <noreply@anthropic.com> * changelog: add seize surface + burnBlocked deprecation for Cobalt (technical-document format) Adds 02_Cobalt_B20_seize.md with the full technical specification generated from the point-form template via /technical-document skill. Includes Interface Changes with selector/topic0 table, trimmed code snippet, Behavioural Changes with execution flow, Examples before/after, Design Decisions, and Migration Steps. Co-authored-by: OpenCode <opencode-noreply@coinbase.com> Co-Authored-By: Claude <noreply@anthropic.com> * feat: init * changelog: update B20 Asset/Stablecoin background section Rewrites the Background section to precisely describe the policy-slot architecture: fine-grained slots keyed by operation and actor position, PolicyRegistry isAuthorized consultation, and the separation of access control (roles) from compliance logic (policy slots). Co-authored-by: OpenCode <opencode-noreply@coinbase.com> Co-Authored-By: Claude <noreply@anthropic.com> * chore: renaming * chore: update git ignore * chore: update seize * changelog: add Cobalt B20Asset multiplier scheduling (ERC-8056) - Adds scheduled multiplier path via updateUIMultiplier(newMultiplier, effectiveAt) - Adds cancelUIMultiplierUpdate, newUIMultiplier, effectiveAt, totalSupplyUI, MAX_UI_MULTIPLIER - Adds ERC-8056 view aliases: uiMultiplier, balanceOfUI, toUIAmount, fromUIAmount, supportsInterface - Adds UIMultiplierUpdated and UIMultiplierUpdateCancelled events - Adds EffectiveAtInPast, EffectiveAtTooFar, UIMultiplierUpdateExists, UIMultiplierUpdateDoesNotExist errors - Retains updateMultiplier as deprecated instant failsafe - New PendingMultiplier storage at PENDING_OFFSET=4 in ERC-7201 namespace - No breaking changes; all legacy selectors remain dialable Co-authored-by: OpenCode <opencode-noreply@coinbase.com> Co-Authored-By: Claude <noreply@anthropic.com> * chore: remove stray COMPOSITE_POLICY.md from changelog/ This file was accidentally committed at the top level of changelog/; the canonical composite-policy entry lives at changelog/02_Cobalt_PolicyRegistry_composite_policy.md. * feat: add gap check * changelog(cobalt): add seize surface + burnBlocked deprecation specification Convert SEIZE_POLICY_POINTFORM.md point-form template to written specification following changelog/TEMPLATE_POINT_FORM.md structure. Verified all selectors, topic0 values, and signatures against src/interfaces/IB20.sol and src/lib/B20Constants.sol. Applied Simplified Technical English and Google technical-writing guidelines for clarity and consistency. Co-authored-by: OpenCode <opencode-noreply@coinbase.com> Co-Authored-By: Claude <noreply@anthropic.com> * feat: add new changes * feat: update policy registry --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Stephan Cilliers <stephan.cilliers@coinbase.com> Co-authored-by: OpenCode <opencode-noreply@coinbase.com>
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.
Summary
changelog/02_Cobalt_PolicyRegistry_composite_policy.md, generated from the point-form draft via thetechnical-documentskill and verified againstsrc/interfaces/IPolicyRegistry.sol.changelog/COMPOSITE_POLICY.mdtochangelog/TEMPLATE_COMPOSITE_POLICY.md, keeping the filled-in point-form draft as a worked example alongside the genericchangelog/TEMPLATE_POINT_FORM.md, now that the feature has its own written entry.Test plan
changelog/README.mdindex entry for PolicyRegistry composite policies still resolves to02_Cobalt_PolicyRegistry_composite_policy.mdmain