Skip to content

docs(changelog): composite-policy written spec + template example rename - #204

Merged
rayyan224 merged 3 commits into
rfc/wrokflowfrom
changelog/cobalt-policy-registry-composite-policy-spec
Aug 18, 2026
Merged

docs(changelog): composite-policy written spec + template example rename#204
rayyan224 merged 3 commits into
rfc/wrokflowfrom
changelog/cobalt-policy-registry-composite-policy-spec

Conversation

@rayyan224

Copy link
Copy Markdown
Collaborator

Summary

  • Stacked on chore: workflow skills + composite-policy spec rewrite #203. Adds the full written specification at changelog/02_Cobalt_PolicyRegistry_composite_policy.md, generated from the point-form draft via the technical-document skill and verified against src/interfaces/IPolicyRegistry.sol.
  • Renames changelog/COMPOSITE_POLICY.md to changelog/TEMPLATE_COMPOSITE_POLICY.md, keeping the filled-in point-form draft as a worked example alongside the generic changelog/TEMPLATE_POINT_FORM.md, now that the feature has its own written entry.

Test plan

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>
@github-actions

Copy link
Copy Markdown

Interface Coverage

✅ All interface functions have test coverage.

@github-actions

github-actions Bot commented Aug 18, 2026

Copy link
Copy Markdown

📊 Forge Coverage (src/lib/)

🟡 ≥95% across all metrics — some metrics below 99%.

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
rayyan224 force-pushed the changelog/cobalt-policy-registry-composite-policy-spec branch from d30d628 to fc58c27 Compare August 18, 2026 15:35
@github-actions

github-actions Bot commented Aug 18, 2026

Copy link
Copy Markdown

❌ Fork tests did not run

The build or setup step failed before any tests could execute. Check the workflow logs for details.

@@ -0,0 +1,226 @@
# ADR Template (Point Form)

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will be removed for prod, here to show how it works / generated from


## Summary

- Introduce two new `PolicyRegistry` policy types, `UNION` (OR) and `INTERSECT` (AND) — collectively

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is what the devloper fills out

@@ -0,0 +1,232 @@
# Composite Policies (UNION/INTERSECT)

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Long Form Document

@stephancill stephancill left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit

Comment thread changelog/02_Cobalt_PolicyRegistry_composite_policy.md Outdated
Co-authored-by: Stephan Cilliers <stephan.cilliers@coinbase.com>
@rayyan224
rayyan224 marked this pull request as ready for review August 18, 2026 18:57
@rayyan224
rayyan224 merged commit 450a25d into rfc/wrokflow Aug 18, 2026
6 of 7 checks passed
@rayyan224
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>
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.

2 participants