Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 11 additions & 3 deletions .github/workflows/igraph-live-proof.yml
Original file line number Diff line number Diff line change
Expand Up @@ -147,18 +147,26 @@ jobs:
for attempt in $(seq 1 36); do
status="$(curl -sS --max-time 120 -o /tmp/discover.json -w '%{http_code}' "$IGRAPH_URL/v1/discover?query=%2A" || true)"
echo "Discovery attempt $attempt returned HTTP $status"
if [ "$status" = "200" ] && jq -e '.live == true and ((.candidates | length) > 0)' /tmp/discover.json >/dev/null 2>&1; then
if [ "$status" = "200" ] && jq -e '
.live == true and
((.candidates | length) > 0) and
(any(.candidates[]; (.downstream_count // 0) > 0))
' /tmp/discover.json >/dev/null 2>&1; then
break
fi
if [ "$attempt" = "36" ]; then
echo "Live discovery did not return any dataset candidates"
echo "Live discovery did not return a dataset with loaded lineage"
cat /tmp/discover.json || true
exit 1
fi
sleep 5
done
cat /tmp/discover.json
jq -e '.live == true and (.candidates | length) > 0' /tmp/discover.json
jq -e '
.live == true and
(.candidates | length) > 0 and
(any(.candidates[]; (.downstream_count // 0) > 0))
' /tmp/discover.json
URN="$(jq -r '.candidates | max_by(.downstream_count) | .urn' /tmp/discover.json)"
test -n "$URN"
test "$URN" != "null"
Expand Down
38 changes: 21 additions & 17 deletions docs/DEVPOST_SUBMISSION.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,34 +14,38 @@ the Pact, target, artifact hash, expiry, and one-shot invocation limit before an
executor is reached. A Change Receipt records the decision, executor evidence,
validation states, and optional DataHub custom-property/Document write-back.

## What to show in the video

1. Run the deterministic authority-drift endpoint: the same rename request is
allowed to stage in an isolated context and blocked in a PII/dashboard/ML
context.
2. Analyze `orders.customer_id` and show the signed Pact, SQL migration hash, and
`require_approval` decision.
3. Attempt a tampered Pact or `target=production`; show `executor_invoked=false`.
4. Approve an in-scope staging artifact once; show the simulator receipt and the
second-attempt replay denial.
5. In live mode, show that a GMS timeout returns `context_unavailable` rather than
silently using fixture metadata.
## What the recorded proof demonstrates

1. Live DataHub context is available and discovery returns 10 candidates.
2. The `addresses` context binds 28 downstream assets into a signed Impact Pact
with a high consequence score of 55/100.
3. A tampered Pact is denied before executor invocation.
4. An expired Pact is rejected as `pact_stale` before executor invocation.
5. Unavailable live context fails closed as `context_unavailable` / HTTP 503;
iGraph does not substitute fixture metadata.

The 10-second video is a silent, deterministic vector reconstruction of the
control-room visual language, populated from the recorded proof artifact. It is
labeled as a reconstruction and does not claim a production deployment, real
database mutation, or DataHub write-back.

## Built with

- DataHub OSS / DataHub SDK
- DataHub Agent Context Kit (`datahub-agent-context`)
- FastAPI, Pydantic, and Python
- DataHub showcase-ecommerce datapack for the live demo
- DataHub showcase-ecommerce datapack for the live proof

## Links to include

- Public source repository: `https://github.com/Jaydearcadian/iGraph`
- Demo endpoint: `GET /v1/experiments/authority-drift`
- Public source repository: `https://github.com/etvjay/iGraph`
- Live proof run: `https://github.com/etvjay/iGraph/actions/runs/31479477960`
- Live proof artifact: `https://github.com/etvjay/iGraph/actions/runs/31479477960/artifacts/9096775884`
- Reproducible request: [`examples/change-request.json`](../examples/change-request.json)
- Video asset: `igraph-demo-candidate.mp4` from the accompanying demo package

## Honest scope

The built-in executor is a reversible staging simulator. Production deployment,
real database mutation, public repository visibility, and the final hosted video
remain submission/deployment steps outside this code-only patch.
real database mutation, and DataHub write-back remain outside this proof. The
live proof keeps `IGRAPH_ENABLE_WRITEBACK=false`.
32 changes: 32 additions & 0 deletions docs/LIVE_PROOF.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# iGraph live proof

This page records the public GitHub Actions proof for the merged iGraph code.

## Merged code

- Repository: https://github.com/etvjay/iGraph
- Main commit: `0136cef2fa556d79f7565999f77cfc92c0a66d42`
- Pull request: https://github.com/etvjay/iGraph/pull/2
- Post-merge CI: https://github.com/etvjay/iGraph/actions/runs/31618368233

## Recorded live results

The live-proof workflow ran against DataHub OSS and produced these results:

- `/health`: `context_mode=live`, `datahub_configured=true`, write-back disabled.
- `/v1/discover`: 10 live candidates; the top candidate is `addresses` with
22 downstream assets and risk score 55.
- `/v1/analyze`: live `addresses` context with 28 downstream assets, complete
retrieval, high risk 55/100, and signed Pact `igp_ce855182f9dc`.
- Tampered Pact: `deny`, `executor_invoked=false`.
- Expired Pact: `pact_stale`, `executor_invoked=false`.
- Missing live context: `context_unavailable` / HTTP 503, with no fixture fallback.

Download the complete workflow artifact from the successful proof run:
https://github.com/etvjay/iGraph/actions/runs/31479477960/artifacts/9096775884
Comment on lines +25 to +26

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve the proof artifact beyond seven days

This URL is presented as the downloadable evidence for the recorded results, but the referenced upload step sets retention-days: 7 in .github/workflows/igraph-live-proof.yml:251-258. Once that period expires, this link—and the duplicate Devpost link—will no longer substantiate the detailed proof claims, so publish the artifact in a durable location or use a suitably long retention period before documenting it as the proof source.

Useful? React with 👍 / 👎.


## Claim boundary

This proves live reads, discovery, Pact signing, enforcement denial, expiry
rejection, and fail-closed behavior. It does not prove production deployment,
real database mutation, DataHub write-back, or a deployed public video.
Loading