chore: workflow skills + composite-policy spec rewrite - #203
Open
rayyan224 wants to merge 18 commits into
Open
Conversation
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>
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).
rayyan224
force-pushed
the
rfc/wrokflow
branch
from
August 18, 2026 15:31
9f89e25 to
8f58001
Compare
✅ Fork tests: all 721 passedbase/base is fully in sync with the base-std spec. |
2 tasks
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>
…ame (#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>
stephancill
reviewed
Aug 18, 2026
stephancill
reviewed
Aug 18, 2026
Contributor
There was a problem hiding this comment.
wondering if we need this template if we have the point form one and we will have examples to reference by looking at existing changelog files
Collaborator
Author
There was a problem hiding this comment.
Template can live in the skill. The template is what should be filled in by the user in pointform.
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>
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>
…chnical-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>
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>
rayyan224
marked this pull request as ready for review
August 19, 2026 15:46
rayyan224
requested review from
amiecorso,
eric-ships,
ilikesymmetry and
stevieraykatz
as code owners
August 19, 2026 15:46
- 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>
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.
stephancill
reviewed
Aug 19, 2026
| Burn functionality and seize functionality must be explicitly distinct because they may be gated on different policies. Compliant asset issuers require freeze-and-seize models. | ||
|
|
||
| ## Mapping table | ||
| Currently, the system achieves seizure through a workaround that uses `burnBlocked` to burn the asset and `mint` to reissue it to the seizure account. This workaround has three steps: |
Contributor
There was a problem hiding this comment.
Suggested change
| Currently, the system achieves seizure through a workaround that uses `burnBlocked` to burn the asset and `mint` to reissue it to the seizure account. This workaround has three steps: | |
| Currently, the system enables seizure through a workaround that uses `burnBlocked` to burn the asset and `mint` to reissue it to the seizure account. This workaround has three steps: |
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-grillskill and atechnical-documentskill for round-tripping changelog entries through a point-form template.02_Cobalt_PolicyRegistry_composite_policy.md,02_Cobalt_B20Asset_multiplier.md, and02_Cobalt_B20_seize.mdentries with a single point-form draft,changelog/COMPOSITE_POLICY.md, plus the reusablechangelog/TEMPLATE_POINT_FORM.md.changelog/02_Cobalt_PolicyRegistry_composite_policy.md, generated from the point-form draft via thetechnical-documentskill and verified againstsrc/interfaces/IPolicyRegistry.sol.Note
This branch currently removes the previously-shipped
02_Cobalt_B20Asset_multiplier.mdand02_Cobalt_B20_seize.mdchangelog entries as part of the point-form migration. Flagging here since that's a broader change than the composite-policy spec alone — happy to split out if reviewers want the migration and the spec rewrite as separate PRs.Test plan
changelog/README.mdindex still points to valid entries for all three Cobalt line items02_Cobalt_B20Asset_multiplier.mdand02_Cobalt_B20_seize.mdshould be restored or migrated to point-form too