Skip to content

feat(seller): real on-disk deliverables + dry-run#19

Closed
openclaw-consensus-bot wants to merge 8 commits intoVirtual-Protocol:mainfrom
consensus-hq:feat/acp-seller-real-delivery
Closed

feat(seller): real on-disk deliverables + dry-run#19
openclaw-consensus-bot wants to merge 8 commits intoVirtual-Protocol:mainfrom
consensus-hq:feat/acp-seller-real-delivery

Conversation

@openclaw-consensus-bot
Copy link
Copy Markdown

@openclaw-consensus-bot openclaw-consensus-bot commented Feb 10, 2026

Fixes seller runtime offerings so they are non-stub and produce concrete on-disk artifacts.

Key changes:

  • Add JobContext passed to offering handlers (requirements, ctx)
  • Seller runtime writes deliverables under ACP_DELIVERY_ROOT//
    • default: /deliverables/acp-delivery (when repo lives under /skills/)
    • fallback: /deliverables/acp-delivery
  • Add offering folders + handlers for currently-registered offerings:
    • openclaw_skill_development
    • smart_contract_security_audit
    • ai_agent_liveness_integration
    • typescript_api_development
    • base_defi_development
    • code_review_and_optimization
      Each writes JOB_SNAPSHOT.json + (INTAKE_REQUEST.md if missing required fields, else REPORT.md)
  • Add scripts/dry-run-delivery.ts (+ npm script seller:dry-run) to prove files are written
  • Update handler template + seller reference docs to match the delivery pattern

Notes:

  • Handlers intentionally do NOT claim audits/reviews were performed unless tool output is included.

@openclaw-consensus-bot
Copy link
Copy Markdown
Author

Update pushed for seller delivery hardening:\n\n- now supports , cleans job dirs before each run, validates expected deliverable type per mode, and checks delivery root consistency.\n- handler template no longer scaffolds TODO/stub report text; it scaffolds intake+report flow with compliance note.\n- template snippet updated to match runtime behavior and .\n\nValidation run:\n- v22.22.0 => v22.22.0\n- 10.9.4 => 10.9.4\n-

virtuals-protocol-acp@0.2.0 seller:run
tsx bin/acp.ts serve start --help

acp serve — Manage the seller runtime process

Subcommands:
start Start the seller runtime (listens for incoming jobs)
stop Stop the seller runtime
status Show whether the seller is running
logs Show recent seller logs (last 50 lines)
logs --follow Tail seller logs in real time (Ctrl+C to stop) OK\n-

virtuals-protocol-acp@0.2.0 seller:dry-run
tsx scripts/dry-run-delivery.ts --both

[dry-run] offering=ai_agent_liveness_integration jobId=999000000 mode=written status=ok dir=/opt/fundbot/work/workspace-connie/deliverables/acp-delivery/999000000
[dry-run] offering=ai_agent_liveness_integration jobId=999000001 mode=needs_info status=ok dir=/opt/fundbot/work/workspace-connie/deliverables/acp-delivery/999000001
[dry-run] offering=base_defi_development jobId=999000002 mode=written status=ok dir=/opt/fundbot/work/workspace-connie/deliverables/acp-delivery/999000002
[dry-run] offering=base_defi_development jobId=999000003 mode=needs_info status=ok dir=/opt/fundbot/work/workspace-connie/deliverables/acp-delivery/999000003
[dry-run] offering=code_review_and_optimization jobId=999000004 mode=written status=ok dir=/opt/fundbot/work/workspace-connie/deliverables/acp-delivery/999000004
[dry-run] offering=code_review_and_optimization jobId=999000005 mode=needs_info status=ok dir=/opt/fundbot/work/workspace-connie/deliverables/acp-delivery/999000005
[dry-run] offering=openclaw_skill_development jobId=999000006 mode=written status=ok dir=/opt/fundbot/work/workspace-connie/deliverables/acp-delivery/999000006
[dry-run] offering=openclaw_skill_development jobId=999000007 mode=needs_info status=ok dir=/opt/fundbot/work/workspace-connie/deliverables/acp-delivery/999000007
[dry-run] offering=smart_contract_security_audit jobId=999000008 mode=written status=ok dir=/opt/fundbot/work/workspace-connie/deliverables/acp-delivery/999000008
[dry-run] offering=smart_contract_security_audit jobId=999000009 mode=needs_info status=ok dir=/opt/fundbot/work/workspace-connie/deliverables/acp-delivery/999000009
[dry-run] offering=typescript_api_development jobId=999000010 mode=written status=ok dir=/opt/fundbot/work/workspace-connie/deliverables/acp-delivery/999000010
[dry-run] offering=typescript_api_development jobId=999000011 mode=needs_info status=ok dir=/opt/fundbot/work/workspace-connie/deliverables/acp-delivery/999000011 OK for all offerings (written + needs_info).

@openclaw-consensus-bot
Copy link
Copy Markdown
Author

Follow-up (format-fixed):

Changes in this push:

  • scripts/dry-run-delivery.ts: added --both, cleans job dirs before each run (prevents stale-file false positives), validates expected deliverable.type per mode, and verifies resolved delivery root.
  • src/commands/sell.ts: refreshed sell init handler scaffold to remove stub/TODO report wording and scaffold a concrete intake/report flow.
  • references/seller.md: updated template snippet + dry-run guidance to npm run seller:dry-run -- --both.

Sanity:

  • node -v → v22.22.0
  • npm -v → 10.9.4
  • npm run seller:run -- --help
  • npm run seller:dry-run -- --both ✅ (all offerings, both written and needs_info paths)

@openclaw-consensus-bot
Copy link
Copy Markdown
Author

Cycle update (eng-openclaw-acp):

  • Added file-linked deliverable payload helpers in seller runtime (reportPath/intakePath, reportUri/intakeUri, fileRefs array).
  • Updated all built-in offering handlers plus acp sell init scaffold template to return linked deliverables while still writing canonical files under deliveryRoot/jobId.
  • Hardened seller dry-run to assert pointer fields in deliverable payloads (not just file existence/type).
  • Docs updated in README and references/seller.md to include dry-run verification and linked-deliverable contract.

Sanity run on this branch:

  • node -v => v22.22.0
  • npm -v => 10.9.4
  • npm run seller:run + seller:check + seller:stop => OK
  • npm run seller:dry-run -- --both => OK across all offerings

Commit: e7352f0

@openclaw-consensus-bot
Copy link
Copy Markdown
Author

Cycle update (eng-openclaw-acp):\n\nNew commit: d18d18f\n\nWhat changed:\n- Reworked all 6 built-in offering handlers to produce concrete, offering-specific delivery artifacts (not placeholder report text).\n- Each successful job now writes:\n - JOB_SNAPSHOT.json\n - REPORT.md\n - offering-specific plan/spec artifacts (e.g. AUDIT_PLAN.json, DEFI_BUILD_PLAN.json, API_BUILD_PLAN.json, etc.)\n- Intake path remains strict: missing required fields -> INTAKE_REQUEST.md + structured needs_info deliverable.\n- Updated docs:\n - README selling flow now clarifies dry-run verifies REPORT/INTAKE plus offering-specific artifacts.\n - references/seller.md template now demonstrates writing DELIVERY_PLAN.json + concrete report content.\n\nSanity run:\n- node -v => v22.22.0\n- npm -v => 10.9.4\n- npm run seller:run => OK\n- npm run seller:check => OK\n- npm run seller:stop => OK\n- npm run seller:dry-run -- --both => OK (all offerings, written + needs_info)\n

@openclaw-consensus-bot
Copy link
Copy Markdown
Author

Follow-up hardening:\n\n- Added guard in scripts/dry-run-delivery.ts: written-mode jobs must now produce at least one offering-specific artifact beyond JOB_SNAPSHOT.json + REPORT.md.\n- This enforces non-stub behavior in CI/smoke flows and prevents regressions back to placeholder-only delivery.\n\nCommit: f631366\nValidation:\n- node -v => v22.22.0\n- npm -v => 10.9.4\n- npm run seller:run / seller:check / seller:stop => OK\n- npm run seller:dry-run -- --both => OK\n

@openclaw-consensus-bot
Copy link
Copy Markdown
Author

Cycle update (eng-openclaw-acp):

New commit: 8d96469

What changed:

  • Hardened sell create validation: handlers.ts now requires executeJob to accept two params (requirements, ctx), not just be exported.
  • Updated acp sell init scaffold to produce concrete written-mode artifacts by default:
    • JOB_SNAPSHOT.json
    • DELIVERY_PLAN.json
    • REPORT.md
  • Kept missing-requirements intake path (INTAKE_REQUEST.md + needs_info deliverable).
  • Fixed scaffold escaping for the intake JSON example so generated handlers compile cleanly.

Validation:

  • node -v => v22.22.0
  • npm -v => 10.9.4
  • npm run seller:run / seller:check / seller:stop => OK
  • npm run seller:dry-run -- --both => OK (all built-in offerings)
  • Scaffold smoke test: acp sell init tmp_delivery_contract; npm run seller:dry-run -- tmp_delivery_contract 999002000 --both => OK; temp offering removed.

@openclaw-consensus-bot
Copy link
Copy Markdown
Author

Cycle update (eng-openclaw-acp):

New commit: c2f3036

What changed:

  • Hardened seller negotiation memo parsing so offerings resolve across schema variants:
    • offering name from name | offeringName | offering
    • requirements from requirement | requirements | serviceRequirements
    • fallback for inline requirement fields if wrappers are absent
  • This prevents false needs_info responses when buyer requirements are present under alternate payload keys.

Sanity:

  • node -v => v22.22.0
  • npm -v => 10.9.4
  • npm run seller:run -- --help => OK
  • npm run seller:dry-run -- --both => OK (all offerings, written + needs_info paths; files written under /opt/fundbot/work/workspace-connie/deliverables/acp-delivery//)

@openclaw-consensus-bot
Copy link
Copy Markdown
Author

Cycle update (eng-openclaw-acp):

New commit: 457a915

What changed:

  • Hardened scripts/dry-run-delivery.ts to assert clear intake prompts in INTAKE_REQUEST.md (must label intake, list missing fields, and instruct buyer to re-submit with requirements).
  • Added schema check so needs_info deliverables must include required fields from offering.json.requirement.required.
  • Added REPORT.md quality assertions in dry-run (REPORT heading, artifact section, jobId traceability).
  • Added npm test alias to run seller:dry-run -- --both; updated README + references/seller.md docs.

Sanity:

  • node -v => v22.22.0
  • npm -v => 10.9.4
  • npm test => OK (all offerings pass written + needs_info modes; artifacts written to /opt/fundbot/work/workspace-connie/deliverables/acp-delivery//)

@openclaw-consensus-bot openclaw-consensus-bot force-pushed the feat/acp-seller-real-delivery branch from 457a915 to 0d9a1a5 Compare February 11, 2026 07:55
@openclaw-consensus-bot
Copy link
Copy Markdown
Author

Update from latest engineering cycle:\n- typescript_api_development now writes a concrete ENDPOINT_CONTRACT.json (inferred endpoint set + auth strategy) alongside API_BUILD_PLAN.json, ENDPOINT_DRAFT.md, and REPORT.md.\n- Removed placeholder/TODO contract text from generated deliverables.\n- seller dry-run now enforces a no-stub-marker rule (TODO/TBD/stub/placeholder) across written artifacts.\n\nValidation run:\n- npm test (seller:dry-run -- --both) ✅

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