Skip to content

docs: DACS/SR-4 progress + negotiate-rfq slice plan#947

Merged
tcsenpai merged 1 commit into
stabilisationfrom
docs/dacs-progress
Jun 24, 2026
Merged

docs: DACS/SR-4 progress + negotiate-rfq slice plan#947
tcsenpai merged 1 commit into
stabilisationfrom
docs/dacs-progress

Conversation

@Shitikyan

@Shitikyan Shitikyan commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

Status doc for DACS now that the SR-4 substrate is merged.

Done (substrate, merged): CCI membership binding (WI-1), ChannelMessage envelope w/ sequencing + CCI-key signing (WI-2), encrypted transcript anchor (WI-3) — sdks#94; L2PS transport (subnet/messaging/balance/nonce) — node #936/#937/#943/#944/#945; identity invariant (Demos key = CCI key = on-chain party) already aligned.

Not done: transport wiring (SR-4 envelope to L2PS messaging), negotiate-rfq / sealed-envelope orchestration, AgreementDocument co-sign, E2E.

Integration assessment: L2PS messaging and SR-4 are individually solid and share the same ed25519 identity, but currently disjoint. Four gaps to bridge (ordered delivery / channelId routing / dacs message-type / anchor de-dup). Recommendation: keep SR-4 transport-agnostic, wire via a thin adapter.

Next slice: negotiate-rfq end-to-end as WI-A..E.

Dependency: DACS-3 §8.4 spec — referenced by the SR-4 brief but not in our repos; needed from WI-B onward.

Doc only — no code changes.

Summary by CodeRabbit

  • Documentation
    • Added progress documentation outlining current implementation status, integration requirements, and planned milestones for ongoing development initiatives.

Captures where DACS stands now that the SR-4 substrate is merged:
what's done (CCI binding, channel envelope, transcript anchor, L2PS
transport, identity invariant), what's not (transport wiring,
negotiate-* orchestration, AgreementDocument co-sign, E2E), the
L2PS-messaging ↔ SR-4 integration assessment (4 gaps), and the next
vertical slice broken into WI-A..E (channel-over-L2PS adapter →
negotiate-rfq phase logic → transcript anchor → agreement co-sign →
E2E harness). Notes the DACS-3 §8.4 spec dependency.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@qodo-code-review

Copy link
Copy Markdown
Contributor

Qodo reviews are paused for this user.

Troubleshooting steps vary by plan Learn more →

On a Teams plan?
Reviews resume once this user has a paid seat and their Git account is linked in Qodo.
Link Git account →

Using GitHub Enterprise Server, GitLab Self-Managed, or Bitbucket Data Center?
These require an Enterprise plan - Contact us
Contact us →

@coderabbitai

coderabbitai Bot commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 0d3b6e62-f2f2-4a57-a266-2b61deb019a6

📥 Commits

Reviewing files that changed from the base of the PR and between d536cc9 and be7d3c4.

📒 Files selected for processing (1)
  • docs/dacs-progress.md

Walkthrough

A new documentation file docs/dacs-progress.md is added, describing the current state of the DACS SR-4 effort: completed substrate components, four integration gaps between L2PS messaging and SR-4, the negotiate-rfq next vertical slice (WI-A through WI-E), open blockers, and a stakeholder status summary.

Changes

DACS SR-4 Progress Documentation

Layer / File(s) Summary
SR-4 substrate status and L2PS integration gaps
docs/dacs-progress.md
Adds document header and metadata, enumerates completed SR-4 substrate pieces and missing negotiation layer components, and details four L2PS integration gaps with the adapter-first design decision.
negotiate-rfq slice definition, blockers, and stakeholder status
docs/dacs-progress.md
Defines WI-A through WI-E for the negotiate-rfq slice (adapter wiring, offer/counter state machine, transcript anchoring, AgreementDocument co-signing, E2E harness), lists blockers on missing DACS-3 spec sections and orchestration placement, and provides the stakeholder summary.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~5 minutes

Possibly related issues

Poem

🐇 Hopping through the spec with care,
The substrate's built, the gaps laid bare.
WI-A to E, a slice defined,
Negotiation flows all aligned.
The rabbit checks the blocker list—
No DACS-3 §8.4 yet missed! 📜

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: adding documentation about DACS/SR-4 progress and the negotiate-rfq slice plan, which directly matches the new docs/dacs-progress.md file and its contents.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/dacs-progress

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@greptile-apps

greptile-apps Bot commented Jun 23, 2026

Copy link
Copy Markdown

Greptile Summary

This PR adds a DACS/SR-4 progress document and next-slice plan. The main changes are:

  • Status of completed SR-4 substrate and L2PS transport work.
  • Integration gaps between SR-4 channel envelopes and L2PS messaging.
  • Proposed WI-A through WI-E plan for negotiate-rfq end-to-end.
  • Blockers around the missing DACS-3 negotiation spec and orchestration ownership.

Confidence Score: 3/5

The document is mergeable, but the next-slice plan leaves several transport and membership integration details underspecified.

The changed file is documentation-only and the issues are concentrated in the WI-A adapter plan, where current messaging behavior does not yet match the described DACS channel requirements.

docs/dacs-progress.md

Reviews (1): Last reviewed commit: "docs: DACS/SR-4 progress + negotiate-rfq..." | Re-trigger Greptile

Comment thread docs/dacs-progress.md
Comment on lines +80 to +81
- `send(channelMsg)` → serialize envelope → L2PS messaging `send` with a
`dacs` message type, encrypted under the subnet key.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Transport type missing

This step says the adapter can send with a dacs transport message type, but the current L2PS messaging send payload only carries to, encrypted, and messageHash, and the server does not persist or forward a message kind. An implementation following this plan can silently lose the DACS discriminator, so receivers still cannot distinguish channel envelopes from normal chat traffic.

Comment thread docs/dacs-progress.md
`dacs` message type, encrypted under the subnet key.
- `onReceive` → deserialize → **reorder buffer** keyed on `sequence` →
`session.receiveIncoming` in order.
- Map `channelId` to the subnet `uid` (1 channel = 1 subnet) for routing.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Routing misses recipients

Mapping channelId to the subnet uid only chooses the L2PS network. The current messaging transport still requires a single to recipient and routes one message to one peer, while this document describes DACS channels as N-party groups. A multi-party channel can therefore miss members unless WI-A also specifies fanout to every bound channel member or explicitly scopes this slice to two-party channels.

Comment thread docs/dacs-progress.md
Comment on lines +82 to +83
- `onReceive` → deserialize → **reorder buffer** keyed on `sequence` →
`session.receiveIncoming` in order.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Buffer key collides

The reorder buffer is keyed only on sequence, but sequences are per channel/session. If one client handles two channels and both receive sequence=1, a sequence-only buffer can mix, drop, or unblock the wrong channel message before calling session.receiveIncoming. The adapter plan should key the buffer by channelId or session plus sequence.

Comment thread docs/dacs-progress.md
Comment on lines +86 to +88
**DoD:** two clients on one subnet exchange signed `ChannelMessage`s in
both directions; out-of-order arrivals are buffered and applied in
sequence; a non-member (no subnet key) cannot read.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Membership check missing

This DoD only proves that a non-member without the subnet key cannot read messages. The existing L2PS messaging registration proves key ownership and a loaded l2psUid, not DACS channel membership, so a subnet participant that is not bound to the channel can still send DACS-looking encrypted envelopes. WI-A should require rejecting envelopes whose signer is not in the WI-1 channel membership before they reach the session.

@tcsenpai tcsenpai merged commit c0e411a into stabilisation Jun 24, 2026
9 checks passed
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