Priority: P1 — Go side of the shared conformance/fault-injection matrix (twin of Amperstrand/tollgate-module-basic-rust#15).

Đang mở
#503 1 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 2 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
25/100
Loại issue
Tính năng
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
github-actions, go, yaml
Lĩnh vực
backend, testing

Hướng nghiên cứu

Read Rust issue #15 first and coordinate ownership of the shared YAML matrix in PRTA tests/conformance/; then inspect Go tests/cloud-lab/ and the CI workflow. Start by identifying how the existing cloud-lab tests launch backends and exercise mint interactions. Done means make conformance BACKEND=go emits verdicts for the same scenarios as Rust, with a nightly Go×Rust comparison artifact; G09 and the shared-spec dependency need coordination.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

Priority: P1 — Go side of the shared conformance/fault-injection matrix (twin of Amperstrand/tollgate-module-basic-rust#15).

Problem

Go's correctness claims rest on per-flow unit tests and cloud-lab lanes that each backends' own doubles. No shared, invariant-based fault matrix runs identically against Go and Rust, so "which backend is safer" is currently an assertion, not a measurement — and Go's own regression surface (restart, ambiguous outcomes, aliases) is not systematically swept either.

Why it matters

The Go-vs-Rust architecture decision needs identical-scenario evidence. Also: several Go fixes (#266, #433, #440/#447) have repro-specific tests but no standing kill-at-boundary lanes, so regressions of the class (not the symptom) go unnoticed.

Current behavior

  • tests/cloud-lab/: smoke, swap fees, keyset rotation, mint failure, two-router autopay — real mints (cdk-mintd), no fault proxy, no process-kill matrix, Go-only.
  • PRTA: multi-backend venue support (--backend go|rust-basic|rust), physical + QEMU + SHC.
  • Rust #15 defines the shared matrix spec + mint-fault proxy.

Desired invariant (asserted per scenario, identical for both backends)

  1. No funds disappear (mint ledger ↔ wallet balance ↔ payment records reconcile).
  2. No value double-counted.
  3. No deterministic output re-exposed to a mint (proxy/mint records every blinded message).
  4. Customer receives service or recoverable value.
  5. Operator wallet spendable (no unbounded reserved proofs).
  6. Retries don't corrupt state.
  7. Restart converges (bounded time).

Proposed scope

  1. Co-own the matrix spec (YAML in PRTA) with the Rust issue; do not fork it.
  2. Implement Go-side enabling hooks if the assertions need them: stable payment-record output (G09), pending-proof visibility, blinded-message logging at the mint proxy.
  3. Wire the matrix into CI as a nightly lane (full) + PR lane (fast subset: duplicate, timeout-retry, restart-mid-payment, alias spellings).
  4. Publish the differential table per run; divergences become issues on the responsible repo.

Areas / files

PRTA tests/conformance/, Go tests/cloud-lab/ (proxy integration), CI workflow.

Acceptance criteria

  • make conformance BACKEND=go produces the verdict table; identical scenario set as Rust runs.
  • Nightly artifact: Go×Rust comparison visible at a glance.

Required tests / Failure-injection tests

This issue IS the harness.

Compatibility

Matrix must use only HTTP + mint + process control (backend-agnostic).

Dependencies

G09 (payment records) for scenario assertions; Rust #15 for the shared spec (coordinate authorship).

Out of scope

  • MT3000 physical runs (PRTA's own lanes; hardware campaign is Rust #16's scope — Go already has physical evidence).
Ngôn ngữ chính
Go
Star
12
Fork
14
Merge trung bình
4 ngày 19 giờ
Pull request đã merge (30 ngày)
213

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của OpenTollGate/tollgate-module-basic-go

Tất cả issue của OpenTollGate/tollgate-module-basic-go

Issue tương tự

Thêm issue về Go

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.