Skip to content

feat(consumerapi): Drops rename + slice 2 — the four-leaf member economy over the API#9

Merged
NetworkTheoryAppliedResearchInstitute merged 2 commits into
mainfrom
feat/consumerapi-slice2
Jul 13, 2026
Merged

feat(consumerapi): Drops rename + slice 2 — the four-leaf member economy over the API#9
NetworkTheoryAppliedResearchInstitute merged 2 commits into
mainfrom
feat/consumerapi-slice2

Conversation

@NetworkTheoryAppliedResearchInstitute

Copy link
Copy Markdown
Contributor

Transplants the two queued ladder commits onto main, in the handoff's PR order:

  • refactor(record): retag domains cloudy/record/* -> drops/* (product: Drops)
  • feat(consumerapi): slice 2 — drops, assessments, economy (escrow-refuses-spend), disputes over the JSON API

Also restores main to green: slice 1 (#7) tripped TestImportGraph (consumerapi composes the JFA leaves); slice 2 blesses internal/consumerapi as the member-facing composition root with the positive control extended, per the 2026-07-12 handoff. Prefer a rebase merge to keep the two signed commits distinct.

…Drops)

Executes the locked 2026-07-09 naming decision: Drops is the product name
of Cloudy's member-covenant record; the Go package stays 'record'. All six
unexported domain-separation tags move to the drops/* namespace, and the
package doc names the product. Done now because the window is closing:
no durable logs and no external consumers exist yet, so the hash-derivation
change is free today and becomes a migration once persistence lands.

Also folds in the Phase-0 hygiene fix: internal/storage doc.go/audit.go
pointed at Development/SCP-completion-roadmap.md, which moved to
Development/Planning/ and was never resolvable for external cloners; the
comments now name the roadmap's canonical home (sohocloud-protocol repo)
with the NTARI-internal copy as a secondary pointer.

Signed-off-by: Jodson Graves <info@ntari.org>
Composes economy, covenant, record (Drops), and dispute in the member-facing
server exactly as cmd/cloudy composes them headlessly: one shared member
directory, one operator Drops log, one Entry.ID->seq index serving both
cross-layer anchor joins. New surfaces:

- Drops: GET /drops/log, POST /drops (client-sealed dialogs; both parties
  must be registered; the server can order but never author a covenant),
  GET /drops/{id}, GET /drops/checkpoints — the checkpoint response carries
  the record layer's REQUIRED honest label: stand_in=true until two or more
  independent witnesses countersign (Phase-3 federation).
- Covenant: POST /assessments (member-signed, anchored to sealed dialogs via
  recAnchors; duplicates 409; No-Trust requires a comment hash). Standing
  remains distributions-only — no average anywhere in the surface.
- Economy: GET /credit/policy, /credit/accounts/{id}/balance and /history,
  POST /credit/spends. While the governed policy is escrow mode the ledger
  refuses every spend and the API reports it as a plain 409 — the
  escrow->credit switch is a governed PolicyChange (bylaws s5.7), never an
  API affordance, and no steward key exists in-process to sign one.
- Disputes: POST /disputes (complainant-signed filing), GET /disputes/{id},
  POST /disputes/{id}/withdraw. No adjudicator key exists in-process, so no
  ruling is producible; the doc labels operator-local filing as NOT the
  Phase-3 lifecycle witnessing (filing at an independent witness upstream
  of the operator) and does not simulate it.

Resolves the TestImportGraph failure slice 1 introduced: internal/consumerapi
is blessed as the member-facing composition root (Phase-1 design s2 — cloudyd
= composition root + consumer JSON API; cmd/cloudyd stays a thin main over
it), with the positive control extended so all three roots must import all
four JFA leaves. The stricter alternative — port-inversion so consumerapi
imports zero leaves — is noted in the session handoff for review.

Signed-off-by: Jodson Graves <info@ntari.org>
@NetworkTheoryAppliedResearchInstitute
NetworkTheoryAppliedResearchInstitute merged commit 933cfbb into main Jul 13, 2026
1 check 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.

1 participant