---
title: "Establish source_verified from reviewed real execution"
method: POST
path: "/v1/projects/{project_id}/onboarding/verify"
tags: ["Onboarding"]
---

# Establish source_verified from reviewed real execution

`POST /v1/projects/{project_id}/onboarding/verify`

## Request

- Base URL: `https://api.agentry.sh`
- URL: `https://api.agentry.sh/v1/projects/{project_id}/onboarding/verify`
- Auth: HTTP bearer

Send no body. Through the connected read-only PostHog OAuth query path, verification checks the short-lived proof property on every approved event/property and on the selected $exception failure marker/context. It separately checks trusted Agentry CI deploy attribution against the active proof session. No PostHog row is matched by an Agentry browser/server credential or public-key hash. If incomplete, follow the structured remaining analytics, safe_error, and deploy groups, run only those real paths, read the new ETag, and retry. Historical rows never satisfy this operation. Completion requires evidence_status.source=source_verified and a bounded source-verification receipt.

## Path parameters

- `project_id` string, required

## Headers

- `If-Match` string, required

## Response `200`

Structured remaining source proof or a source_verified state and receipt.

- union
  - object
    - `ok` false, required
    - `state` OnboardingV3ProvingState, required
      - `status` 'proving', required
      - `installation_complete` false, required
      - `evidence_status` object, required
        - `historical` 'not_established' | 'historically_observed', required
        - `source` 'pending', required
      - `etag` string, required
      - `next_action` OnboardingV3ProvingNextAction, required
        - `id` 'exercise_and_verify', required
        - `instruction` 'Deploy the approved final source with the CI marker, then exercise every approved real milestone and safe error with the short-lived PostHog proof property, then verify.', required
        - `requires_human` false, required
        - `operation` object, required
          - `method` 'POST', required
          - `path` string, required: Exact project-scoped operation that completes this action after its checklist.
        - `checklist` unknown[], required
          - unknown
        - `completion_condition` 'The returned state has evidence_status.source source_verified, installation_complete true, and next_action null.', required
        - `guide_anchor` 'https://github.com/agentry-sh/agentry/blob/main/INSTALL.md#6-prove-the-deployed-result', required
      - `contract_version` '3', required
      - `project_id` string, required
      - `onboarding_id` string, required
      - `revision` integer, required
      - `plan_sha256` string, required
      - `updated_at` integer, required
      - `implementation_source_snapshot` OnboardingV3SourceSnapshot, required
        - `git_head_sha` string, nullable, required
        - `source_fingerprint_sha256` string, required
        - `source_fingerprint_algorithm` 'agentry-source-tree-sha256-v1', required
      - `proof_session` object, required
        - `proof_session_id` string, required
        - `status` 'open', required
        - `started_at` integer, required
        - `expires_at` integer, required
      - `plan` OnboardingV3Plan, required
        - `business_question` string, required
        - `plan_markdown` string, required: Human-readable actor or interacting actors, entry, complete connected value flow, first value, business result, failures, and deploy rationale. Multi-actor products include the producer/setup side through the consumer result. Never include credentials or raw telemetry.
        - `source_snapshot` OnboardingV3SourceSnapshot, required
          - `git_head_sha` string, nullable, required
          - `source_fingerprint_sha256` string, required
          - `source_fingerprint_algorithm` 'agentry-source-tree-sha256-v1', required
        - `historical_evidence` OnboardingV3HistoricalEvidence, required
          - `status` 'historically_observed', required
          - `source` 'posthog_cloud', required
          - `posthog_project_id` integer, required
          - `observed_at` integer, required
          - `window` object, required
            - `from` integer, required
            - `to` integer, required
          - `query_receipt_sha256` string, required
          - `observations` OnboardingV3HistoricalObservation[], required: Bounded counts, timestamps, signal identifiers, and property identifiers from PostHog. This is non-authorizing historical evidence, never source proof.
            - union
              - …
        - `milestones` OnboardingV3Milestone[], required: Every material durable transition in the selected value flow.
          - `event` string, required: Repository-chosen opaque value; spelling is not an acceptance signal.
          - `meaning` string, required: Durable value progress proved after this target succeeds.
          - `posthog_boundary` 'browser_posthog' | 'server_posthog', required
          - `properties` string[], required
          - `targets` OnboardingV3SourceTarget[], required
            - `file` string, required: Repository-relative shipped source or configuration path.
            - `anchor` string, required: Exact source text locating the outcome boundary in this file.
        - `failures` OnboardingV3Failure[], required
          - `marker` string, required: Repository-chosen opaque value; spelling is not an acceptance signal.
          - `meaning` string, required: Business-impacting failure proved at this exact exit.
          - `posthog_boundary` 'browser_posthog' | 'server_posthog', required
          - `context` string[], required
          - `safe_live_proof` boolean, required
          - `targets` OnboardingV3SourceTarget[], required
            - `file` string, required: Repository-relative shipped source or configuration path.
            - `anchor` string, required: Exact source text locating the outcome boundary in this file.
        - `deploy` OnboardingV3Deploy, required
          - `environment` string, required
          - `sha_source` 'git_head', required
          - `targets` OnboardingV3SourceTarget[], required
            - `file` string, required: Repository-relative shipped source or configuration path.
            - `anchor` string, required: Exact source text locating the outcome boundary in this file.
    - `remaining` OnboardingV3Remaining, required
      - `analytics` object, required
        - `blockers` OnboardingV3ProofBlocker[], required
        - `milestones` object[], required
          - `milestone_index` integer, required
          - `event` string, required: Repository-chosen opaque value; spelling is not an acceptance signal.
          - `posthog_boundary` 'browser_posthog' | 'server_posthog', required
        - `properties` object[], required
          - `milestone_index` integer, required
          - `event` string, required: Repository-chosen opaque value; spelling is not an acceptance signal.
          - `properties` string[], required: Approved keys that must be present and nonempty together on the proof-tagged PostHog event.
          - `requirement` 'present_and_nonempty_together', required
      - `safe_error` object, nullable, required
        - `marker` string, required: Repository-chosen opaque value; spelling is not an acceptance signal.
        - `posthog_boundary` 'browser_posthog' | 'server_posthog', required
        - `marker_missing` boolean, required
        - `context` string[], required
        - `context_requirement` 'present_and_nonempty_together', required
        - `blockers` OnboardingV3ProofBlocker[], required
      - `deploy` object, nullable, required
        - `environment` string, required
        - `blockers` OnboardingV3ProofBlocker[], required
  - object
    - `ok` true, required
    - `state` OnboardingV3VerifiedState, required
      - `status` 'verified', required
      - `installation_complete` true, required
      - `evidence_status` object, required
        - `historical` 'not_established' | 'historically_observed', required
        - `source` 'source_verified', required
      - `etag` string, required
      - `next_action` unknown, required
      - `contract_version` '3', required
      - `project_id` string, required
      - `onboarding_id` string, required
      - `revision` integer, required
      - `plan_sha256` string, required
      - `updated_at` integer, required
      - `implementation_source_snapshot` OnboardingV3SourceSnapshot, required
        - `git_head_sha` string, nullable, required
        - `source_fingerprint_sha256` string, required
        - `source_fingerprint_algorithm` 'agentry-source-tree-sha256-v1', required
      - `proof_session` object, required
        - `proof_session_id` string, required
        - `status` 'satisfied', required
        - `started_at` integer, required
        - `expires_at` integer, required
      - `receipt` OnboardingV3VerifiedReceipt, required
        - `evidence_status` 'source_verified', required
        - `source_verified_at` integer, required
        - `analytics` OnboardingV3ObservedMilestone[], required
          - `event` string, required: Repository-chosen opaque value; spelling is not an acceptance signal.
          - `posthog_boundary` 'browser_posthog' | 'server_posthog', required
          - `required_properties` string[], required
          - `observed_properties` string[], required
          - `row_count` integer, required
        - `error` object, required
          - `marker` string, required: Repository-chosen opaque value; spelling is not an acceptance signal.
          - `posthog_boundary` 'browser_posthog' | 'server_posthog', required
          - `required_context` string[], required
          - `observed_context` string[], required
          - `row_count` integer, required
        - `deploy` object, required
          - `environment` string, required
          - `source_snapshot` OnboardingV3SourceSnapshot, required
            - `git_head_sha` string, nullable, required
            - `source_fingerprint_sha256` string, required
            - `source_fingerprint_algorithm` 'agentry-source-tree-sha256-v1', required
          - `row_count` integer, required
      - `plan` OnboardingV3Plan, required
        - `business_question` string, required
        - `plan_markdown` string, required: Human-readable actor or interacting actors, entry, complete connected value flow, first value, business result, failures, and deploy rationale. Multi-actor products include the producer/setup side through the consumer result. Never include credentials or raw telemetry.
        - `source_snapshot` OnboardingV3SourceSnapshot, required
          - `git_head_sha` string, nullable, required
          - `source_fingerprint_sha256` string, required
          - `source_fingerprint_algorithm` 'agentry-source-tree-sha256-v1', required
        - `historical_evidence` OnboardingV3HistoricalEvidence, required
          - `status` 'historically_observed', required
          - `source` 'posthog_cloud', required
          - `posthog_project_id` integer, required
          - `observed_at` integer, required
          - `window` object, required
            - `from` integer, required
            - `to` integer, required
          - `query_receipt_sha256` string, required
          - `observations` OnboardingV3HistoricalObservation[], required: Bounded counts, timestamps, signal identifiers, and property identifiers from PostHog. This is non-authorizing historical evidence, never source proof.
            - union
              - …
        - `milestones` OnboardingV3Milestone[], required: Every material durable transition in the selected value flow.
          - `event` string, required: Repository-chosen opaque value; spelling is not an acceptance signal.
          - `meaning` string, required: Durable value progress proved after this target succeeds.
          - `posthog_boundary` 'browser_posthog' | 'server_posthog', required
          - `properties` string[], required
          - `targets` OnboardingV3SourceTarget[], required
            - `file` string, required: Repository-relative shipped source or configuration path.
            - `anchor` string, required: Exact source text locating the outcome boundary in this file.
        - `failures` OnboardingV3Failure[], required
          - `marker` string, required: Repository-chosen opaque value; spelling is not an acceptance signal.
          - `meaning` string, required: Business-impacting failure proved at this exact exit.
          - `posthog_boundary` 'browser_posthog' | 'server_posthog', required
          - `context` string[], required
          - `safe_live_proof` boolean, required
          - `targets` OnboardingV3SourceTarget[], required
            - `file` string, required: Repository-relative shipped source or configuration path.
            - `anchor` string, required: Exact source text locating the outcome boundary in this file.
        - `deploy` OnboardingV3Deploy, required
          - `environment` string, required
          - `sha_source` 'git_head', required
          - `targets` OnboardingV3SourceTarget[], required
            - `file` string, required: Repository-relative shipped source or configuration path.
            - `anchor` string, required: Exact source text locating the outcome boundary in this file.
    - `remaining` OnboardingV3Remaining, required
      - `analytics` object, required
        - `blockers` OnboardingV3ProofBlocker[], required
        - `milestones` object[], required
          - `milestone_index` integer, required
          - `event` string, required: Repository-chosen opaque value; spelling is not an acceptance signal.
          - `posthog_boundary` 'browser_posthog' | 'server_posthog', required
        - `properties` object[], required
          - `milestone_index` integer, required
          - `event` string, required: Repository-chosen opaque value; spelling is not an acceptance signal.
          - `properties` string[], required: Approved keys that must be present and nonempty together on the proof-tagged PostHog event.
          - `requirement` 'present_and_nonempty_together', required
      - `safe_error` object, nullable, required
        - `marker` string, required: Repository-chosen opaque value; spelling is not an acceptance signal.
        - `posthog_boundary` 'browser_posthog' | 'server_posthog', required
        - `marker_missing` boolean, required
        - `context` string[], required
        - `context_requirement` 'present_and_nonempty_together', required
        - `blockers` OnboardingV3ProofBlocker[], required
      - `deploy` object, nullable, required
        - `environment` string, required
        - `blockers` OnboardingV3ProofBlocker[], required

## Other responses

- `default`: Agent-readable failure with a stable code and recovery action.

---

[API](https://skmtc.dev/agentry/apis/agentry-api.md) · [All operations](https://skmtc.dev/agentry/apis/agentry-api/llms.txt) · [OpenAPI document](https://skmtc.dev/agentry/apis/agentry-api/revisions/abdecddf009f?raw)
