{
  "schema_version": "softjunk-paypal-verification-status-v1",
  "updated": "2026-06-01",
  "status_url": "https://trungcodeer.github.io/softjunk-lead-kit/paypal-verification-status.json",
  "paypal_payment_verified": false,
  "proof_state": "unverified_due_to_missing_credentials",
  "last_local_verifier_result": "PAYPAL_PAYMENT_VERIFIED=false reason=missing_credentials required=PAYPAL_ACCESS_TOKEN_or_PAYPAL_CLIENT_ID_and_PAYPAL_SECRET",
  "last_github_package_verifier_result": {
    "checked": "2026-06-01",
    "command": "npm exec --yes --package github:trungcodeer/softjunk-lead-kit -- softjunk-lead-kit verify-paypal --json",
    "run_context": "Clean temporary directory with npm cache on D: and no local softjunk-lead-kit.js PATH shadow.",
    "exit_code": 2,
    "status_line": "PAYPAL_PAYMENT_VERIFIED=false reason=missing_credentials required=PAYPAL_ACCESS_TOKEN_or_PAYPAL_CLIENT_ID_and_PAYPAL_SECRET",
    "verified": false,
    "reason": "missing_credentials",
    "not_payment_proof": true,
    "does_not_prove_absence_of_payment": true,
    "windows_path_shadowing_note": "If the command exits without JSON on Windows, run it from a clean directory and make sure no local softjunk-lead-kit.js shadows npm's .bin shim."
  },
  "missing_credentials": true,
  "required": [
    "PAYPAL_ACCESS_TOKEN",
    "or PAYPAL_CLIENT_ID and PAYPAL_SECRET",
    "or trusted seller-side PayPal CSV proof",
    "or manual seller confirmation inside PayPal"
  ],
  "does_not_prove_absence_of_payment": true,
  "not_payment_proof": true,
  "payment_proof_boundary": "This status is verifier-readiness evidence only. It is not payment proof and does not prove that no payment arrived. Do not claim paid, received, fulfilled, complete, or stopped unless seller-side PayPal evidence exists, the API verifier succeeds, trusted seller-side CSV proof verifies the 5 USD payment, or the seller manually confirms the same payment inside PayPal.",
  "verify_with_api": {
    "command": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts/verify-paypal-5usd.ps1",
    "credentials_file_command": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts/verify-paypal-5usd.ps1 -CredentialsPath \"private-paypal/paypal-credentials.local.json\"",
    "cli_command": "softjunk-lead-kit verify-paypal --json",
    "cli_credentials_file_command": "softjunk-lead-kit verify-paypal --credentials-path \"private-paypal/paypal-credentials.local.json\" --json",
    "github_package_cli_command": "npm exec --yes --package github:trungcodeer/softjunk-lead-kit -- softjunk-lead-kit verify-paypal --json",
    "cli_smoke_command": "npm run paypal-cli-verify:smoke",
    "credentials_smoke_command": "npm run paypal:credentials-smoke",
    "credentials_environment_variable": "PAYPAL_CREDENTIALS_JSON",
    "private_credentials_example_url": "https://trungcodeer.github.io/softjunk-lead-kit/docs/examples/paypal-credentials.example.json",
    "private_credentials_suggested_path": "private-paypal/paypal-credentials.local.json",
    "credentials_privacy_rule": "Keep the real PayPal API credentials file local and ignored. Do not commit tokens, client IDs, secrets, PayPal account details, transaction IDs, or payer details.",
    "success_signal": "PAYPAL_PAYMENT_VERIFIED=true",
    "required_environment": [
      "PAYPAL_ACCESS_TOKEN",
      "or PAYPAL_CLIENT_ID and PAYPAL_SECRET",
      "or PAYPAL_CREDENTIALS_JSON pointing to a private ignored credentials file"
    ]
  },
  "verify_with_csv": {
    "command": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts/verify-paypal-5usd.ps1 -CsvPath \"C:\\\\path\\\\to\\\\paypal-activity.csv\"",
    "environment_variable": "PAYPAL_TRANSACTION_CSV",
    "private_confirmation_example_url": "https://trungcodeer.github.io/softjunk-lead-kit/docs/examples/seller-paypal-confirmation.example.json",
    "private_confirmation_suggested_path": "private-paypal/seller-paypal-confirmation.local.json",
    "success_signal": "PAYPAL_PAYMENT_VERIFIED=true source=csv",
    "redacted_success_example": "PAYPAL_PAYMENT_VERIFIED=true source=csv amount=5.00 currency=USD matches=1 transaction_details=redacted",
    "default_output_privacy": "Successful CSV and API verification output redacts transaction details by default.",
    "include_details_flag": "-IncludeTransactionDetails",
    "include_details_rule": "Use -IncludeTransactionDetails only in a private local seller terminal. Do not paste transaction IDs or PayPal details into GitHub issues, public logs, or public docs.",
    "privacy_rule": "Use only a trusted seller-side PayPal CSV export. Do not commit the CSV, upload it publicly, or paste buyer/payment details into issues."
  },
  "verify_with_manual_confirmation": {
    "command": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts/verify-paypal-5usd.ps1 -ManualConfirmationPath \"private-paypal/seller-paypal-confirmation.local.json\"",
    "init_command": "softjunk-lead-kit init-paypal-confirmation",
    "local_init_command": "node bin/softjunk-lead-kit.js init-paypal-confirmation --json",
    "github_package_init_command": "npm exec --yes --package github:trungcodeer/softjunk-lead-kit -- softjunk-lead-kit init-paypal-confirmation --json",
    "npm_script": "npm run paypal:init-manual",
    "smoke_command": "npm run paypal:init-manual-smoke",
    "environment_variable": "PAYPAL_MANUAL_CONFIRMATION",
    "private_confirmation_example_url": "https://trungcodeer.github.io/softjunk-lead-kit/docs/examples/seller-paypal-confirmation.example.json",
    "private_confirmation_suggested_path": "private-paypal/seller-paypal-confirmation.local.json",
    "success_signal": "PAYPAL_PAYMENT_VERIFIED=true source=manual",
    "redacted_success_example": "PAYPAL_PAYMENT_VERIFIED=true source=manual amount=5.00 currency=USD transaction_details=redacted",
    "init_boundary": "The init command creates an ignored private local file with seller_confirmed_inside_paypal=false. It is not payment proof and the verifier rejects it until the seller privately reviews PayPal and changes the confirmation truthfully.",
    "validation_rule": "Passes only when the private JSON says the seller confirmed the matching completed 5.00 USD payment inside PayPal, source is manual_seller_review_inside_paypal, and transaction_details is redacted.",
    "privacy_rule": "Keep the real manual confirmation local and private. Do not commit it or paste transaction IDs, payer details, or PayPal account details into public surfaces."
  },
  "proof_audit": {
    "command": "npm run paypal:proof-audit",
    "local_command": "node scripts/paypal-proof-audit.js --json",
    "cli_command": "softjunk-lead-kit paypal-proof-audit --json",
    "github_package_cli_command": "npm exec --yes --package github:trungcodeer/softjunk-lead-kit -- softjunk-lead-kit paypal-proof-audit --json",
    "smoke_command": "npm run paypal:proof-audit-smoke",
    "current_expected_exit_code_without_seller_proof": 2,
    "success_signal": "PAYPAL_PAYMENT_VERIFIED=true",
    "redacted_failure_boundary": "When seller-side proof is missing, the audit exits 2 and reports not_payment_proof=true. That is not payment proof and does not prove no payment arrived.",
    "privacy_rule": "The audit prints presence booleans and redacted verifier output only. Do not post tokens, client IDs, secrets, transaction IDs, payer details, PayPal account details, or private lead details."
  },
  "proof_watch": {
    "command": "npm run paypal:proof-watch",
    "local_command": "node scripts/paypal-proof-watch.js --json --max-attempts 1 --interval-seconds 0",
    "cli_command": "softjunk-lead-kit paypal-proof-watch --json --max-attempts 1 --interval-seconds 0",
    "github_package_cli_command": "npm exec --yes --package github:trungcodeer/softjunk-lead-kit -- softjunk-lead-kit paypal-proof-watch --json --max-attempts 1 --interval-seconds 0",
    "smoke_command": "npm run paypal:proof-watch-smoke",
    "current_expected_exit_code_without_seller_proof": 2,
    "success_signal": "PAYPAL_PAYMENT_VERIFIED=true",
    "success_condition": "Exits 0 only after paypal-proof-audit returns PAYPAL_PAYMENT_VERIFIED=true and completion_gate.can_mark_goal_complete=true.",
    "redacted_failure_boundary": "When seller-side proof is missing, the watcher exits 2 after its configured attempts and reports not_payment_proof=true. That is not payment proof and does not prove no payment arrived.",
    "privacy_rule": "The watcher prints only redacted proof-audit summaries. Do not post tokens, client IDs, secrets, transaction IDs, payer details, PayPal account details, or private lead details."
  },
  "verify_with_github_actions": {
    "workflow_template_path": "PAYPAL_VERIFICATION_WORKFLOW.yml.example",
    "workflow_template_url": "https://github.com/trungcodeer/softjunk-lead-kit/blob/main/PAYPAL_VERIFICATION_WORKFLOW.yml.example",
    "live_status_url": "https://trungcodeer.github.io/softjunk-lead-kit/paypal-workflow-live-status.json",
    "enable_path": ".github/workflows/verify-paypal-payment.yml",
    "live_workflow_file_present": false,
    "enablement_preflight_command": "npm run paypal-workflow-live-status:smoke",
    "workflow_scope_preflight_command": "npm run paypal-workflow-scope:preflight",
    "current_enablement_state": "not_enabled_due_to_missing_workflow_scope",
    "workflow_scope_required": true,
    "required_secrets": [
      "PAYPAL_ACCESS_TOKEN",
      "or PAYPAL_CLIENT_ID and PAYPAL_SECRET"
    ],
    "manual_trigger": "Actions -> Verify PayPal 5 USD payment -> Run workflow",
    "schedule": "17 */6 * * *",
    "announcement_issue_default": "9",
    "success_signal": "PAYPAL_PAYMENT_VERIFIED=true source=workflow",
    "redacted_success_example": "PAYPAL_PAYMENT_VERIFIED=true source=workflow amount=5.00 currency=USD transaction_details=redacted",
    "missing_credentials_result": "PAYPAL_PAYMENT_VERIFIED=false reason=missing_credentials required=PAYPAL_ACCESS_TOKEN_or_PAYPAL_CLIENT_ID_and_PAYPAL_SECRET",
    "privacy_rule": "The workflow comments only after verification succeeds and posts redacted output. Do not post transaction IDs, payer emails, payer names, or PayPal account details."
  },
  "paid_order_board": {
    "issue_url": "https://github.com/trungcodeer/softjunk-lead-kit/issues/9",
    "issue_api_url": "https://api.github.com/repos/trungcodeer/softjunk-lead-kit/issues/9",
    "label": "paid-order",
    "pending_label": "pending-paypal-verification",
    "smoke_command": "npm run paid-order-board:smoke",
    "proof_audit_command": "npm run paypal:proof-audit",
    "github_package_proof_audit_command": "npm exec --yes --package github:trungcodeer/softjunk-lead-kit -- softjunk-lead-kit paypal-proof-audit --json",
    "proof_watch_command": "npm run paypal:proof-watch",
    "github_package_proof_watch_command": "npm exec --yes --package github:trungcodeer/softjunk-lead-kit -- softjunk-lead-kit paypal-proof-watch --json --max-attempts 1 --interval-seconds 0",
    "workflow_announcement_issue": "9",
    "purpose": "Public redacted intake and verification board for the SoftJunk 5 USD paid order route.",
    "current_public_status_caveat": "PAYPAL_PAYMENT_VERIFIED=false reason=missing_credentials is verifier-readiness evidence only. It is not payment proof and does not prove no payment arrived.",
    "allowed_redacted_success_signals": [
      "PAYPAL_PAYMENT_VERIFIED=true",
      "PAYPAL_PAYMENT_VERIFIED=true source=workflow",
      "PAYPAL_PAYMENT_VERIFIED=true source=csv",
      "PAYPAL_PAYMENT_VERIFIED=true source=manual"
    ],
    "redacted_workflow_success_example": "PAYPAL_PAYMENT_VERIFIED=true source=workflow amount=5.00 currency=USD transaction_details=redacted",
    "privacy_rule": "Do not post PayPal transaction IDs, invoice IDs, payer email, payer name, customer contact details, PayPal account details, or private lead details in public issues.",
    "payment_proof_boundary": "The board routes checkout and redacted verification only. It is not payment proof unless a valid seller-side verification signal is present."
  },
  "paypal_url_health": {
    "manifest_url": "https://trungcodeer.github.io/softjunk-lead-kit/paypal-url-health.json",
    "payment_url": "https://paypal.me/softjunk/5USD",
    "expected_final_url": "https://www.paypal.com/paypalme/softjunk/5USD",
    "static_smoke_command": "npm run paypal-url-health:smoke",
    "live_check_command": "npm run paypal-url-health:live",
    "last_live_result": "paypal_url_health_smoke_ok static=1 live=1 status=200 amount=1 currency=1 redirect=1 gate=1 notProof=1 final_url=https://www.paypal.com/paypalme/softjunk/5USD",
    "payment_proof_boundary": "This proves only that the public PayPal handoff URL resolved during the stated check. It is not payment proof and does not prove a payment arrived."
  },
  "checkout_route_proof": {
    "package_metadata_url": "https://trungcodeer.github.io/softjunk-lead-kit/package.json",
    "package_root_checkout_proof_field": "softjunk.root_checkout_proof",
    "agent_checkout_router_url": "https://trungcodeer.github.io/softjunk-lead-kit/agent-checkout-router.json",
    "command": "npm exec --yes --package github:trungcodeer/softjunk-lead-kit -- softjunk-lead-kit pay --mode custom --json",
    "sponsor_route_before_paypal": "https://trungcodeer.github.io/softjunk-lead-kit/sponsor-button-buy.html",
    "after_packet_paypal_url": "https://paypal.me/softjunk/5USD",
    "success_signal": "PAYPAL_PAYMENT_VERIFIED=true",
    "payment_proof_boundary": "This proves the executable checkout route only. It is not payment proof."
  },
  "completion_gate": {
    "can_mark_goal_complete": false,
    "allowed_completion_evidence": [
      "PAYPAL_PAYMENT_VERIFIED=true from the PayPal API verifier",
      "PAYPAL_PAYMENT_VERIFIED=true source=workflow from the enabled GitHub Actions API verifier with seller credentials",
      "PAYPAL_PAYMENT_VERIFIED=true source=csv from a trusted seller-side PayPal CSV export",
      "PAYPAL_PAYMENT_VERIFIED=true source=manual from a private seller confirmation after reviewing PayPal"
    ]
  }
}
