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
188 changes: 185 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ on:
- conductor/1167b2-durable-managed-reporting
- conductor/reporting-receipt-ingress-b22
- conductor/reporting-frozen-account-feed-b23
- conductor/reporting-schema-proof-receipt-diagnostics-hardening

# Default @adcp/sdk runner alias for storyboard jobs. Tracks the current
# stable @adcp/sdk release via the ``latest`` npm dist-tag.
Expand Down Expand Up @@ -109,7 +110,7 @@ jobs:

- name: Run adopter type-check suite
if: matrix.python-version == '3.12'
run: mypy --strict tests/type_checks/ examples/reporting_webhook_activity.py examples/reporting_status_notifications.py examples/reporting_destination_writer.py examples/reporting_durable_materializer.py examples/reporting_receipt_ingress.py
run: mypy --strict tests/type_checks/ examples/reporting_webhook_activity.py examples/reporting_status_notifications.py examples/reporting_destination_writer.py examples/reporting_durable_materializer.py examples/reporting_receipt_ingress.py examples/reporting_production.py

- name: Enforce adopter type-check fixture contract
if: matrix.python-version == '3.12'
Expand Down Expand Up @@ -200,6 +201,10 @@ jobs:
--ignore=tests/conformance/reporting/test_reporting_materializer_installed_pg.py \
--ignore-glob='tests/conformance/reporting/test_reporting_receipt_*.py' \
--ignore-glob='tests/conformance/reporting/test_reporting_feed_*.py' \
--ignore-glob='tests/conformance/reporting/test_reporting_production*.py' \
--ignore-glob='tests/conformance/reporting/test_reporting_projection*.py' \
--ignore=tests/conformance/reporting/test_reporting_tier_projection.py \
--ignore=tests/conformance/reporting/test_reporting_schedule_schema.py \
-v -ra
;;
process)
Expand All @@ -216,7 +221,7 @@ jobs:
runs-on: ubuntu-latest
timeout-minutes: 5
permissions: {}
needs: [pg-conformance, pg-reporting-status, pg-reporting-materializer, pg-reporting-receipts, pg-reporting-receipt-compatibility, pg-reporting-feed, pg-reporting-feed-compatibility, pg-reporting-feed-installed]
needs: [pg-conformance, pg-reporting-status, pg-reporting-materializer, pg-reporting-receipts, pg-reporting-receipt-compatibility, pg-reporting-feed, pg-reporting-feed-compatibility, pg-reporting-feed-installed, pg-reporting-production, pg-reporting-production-compatibility, pg-reporting-production-installed]
if: ${{ always() }}
steps:
- name: Require every Postgres conformance lane
Expand All @@ -229,8 +234,11 @@ jobs:
FEED_RESULT: ${{ needs.pg-reporting-feed.result }}
FEED_COMPATIBILITY_RESULT: ${{ needs.pg-reporting-feed-compatibility.result }}
FEED_INSTALLED_RESULT: ${{ needs.pg-reporting-feed-installed.result }}
PRODUCTION_RESULT: ${{ needs.pg-reporting-production.result }}
PRODUCTION_COMPATIBILITY_RESULT: ${{ needs.pg-reporting-production-compatibility.result }}
PRODUCTION_INSTALLED_RESULT: ${{ needs.pg-reporting-production-installed.result }}
run: |
if [ "$PG_RESULT" != "success" ] || [ "$STATUS_RESULT" != "success" ] || [ "$MATERIALIZER_RESULT" != "success" ] || [ "$RECEIPTS_RESULT" != "success" ] || [ "$RECEIPT_COMPATIBILITY_RESULT" != "success" ] || [ "$FEED_RESULT" != "success" ] || [ "$FEED_COMPATIBILITY_RESULT" != "success" ] || [ "$FEED_INSTALLED_RESULT" != "success" ]; then
if [ "$PG_RESULT" != "success" ] || [ "$STATUS_RESULT" != "success" ] || [ "$MATERIALIZER_RESULT" != "success" ] || [ "$RECEIPTS_RESULT" != "success" ] || [ "$RECEIPT_COMPATIBILITY_RESULT" != "success" ] || [ "$FEED_RESULT" != "success" ] || [ "$FEED_COMPATIBILITY_RESULT" != "success" ] || [ "$FEED_INSTALLED_RESULT" != "success" ] || [ "$PRODUCTION_RESULT" != "success" ] || [ "$PRODUCTION_COMPATIBILITY_RESULT" != "success" ] || [ "$PRODUCTION_INSTALLED_RESULT" != "success" ]; then
echo "Postgres conformance matrix result: $PG_RESULT"
echo "Reporting status conformance result: $STATUS_RESULT"
echo "Durable materializer conformance result: $MATERIALIZER_RESULT"
Expand All @@ -239,6 +247,9 @@ jobs:
echo "Frozen feed conformance result: $FEED_RESULT"
echo "Feed rolling compatibility result: $FEED_COMPATIBILITY_RESULT"
echo "Installed frozen feed result: $FEED_INSTALLED_RESULT"
echo "pg-reporting-production result: $PRODUCTION_RESULT"
echo "pg-reporting-production-compatibility result: $PRODUCTION_COMPATIBILITY_RESULT"
echo "pg-reporting-production-installed result: $PRODUCTION_INSTALLED_RESULT"
exit 1
fi
echo "All Postgres conformance lanes passed"
Expand Down Expand Up @@ -661,6 +672,177 @@ jobs:
${{ runner.temp }}/hardening-installed-evidence
if-no-files-found: error

pg-reporting-production:
name: Production reporting status, ownership and notification contracts
runs-on: ubuntu-latest
permissions:
contents: read
timeout-minutes: 35
services:
postgres:
image: postgres:16
env:
POSTGRES_HOST_AUTH_METHOD: trust
POSTGRES_DB: adcp_production_test
ports: ["5432:5432"]
options: >-
--health-cmd pg_isready --health-interval 5s
--health-timeout 5s --health-retries 10
steps:
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
with:
python-version: "3.12"
cache: pip
cache-dependency-path: pyproject.toml
- name: Install test dependencies
run: pip install -e ".[dev,pg]"
- name: Run complete production and projection conformance
shell: bash
timeout-minutes: 30
env:
ADCP_PG_TEST_URL: postgresql://postgres@localhost:5432/adcp_production_test
run: |
# Explicit pytest paths bypass --ignore; preselect and reject empty globs.
shopt -s nullglob
source_tests=()
for test in tests/conformance/reporting/test_reporting_production*.py; do
case "$test" in
*test_reporting_production_packaging.py|*test_reporting_production_rolling.py) continue ;;
esac
source_tests+=("$test")
done
projection_tests=(tests/conformance/reporting/test_reporting_projection*.py)
if (( ${#source_tests[@]} == 0 || ${#projection_tests[@]} == 0 )); then
echo "Production or projection test selection is empty"
exit 1
fi
python scripts/reporting_test_harness.py pytest \
"${source_tests[@]}" \
"${projection_tests[@]}" \
tests/conformance/reporting/test_reporting_tier_projection.py \
tests/conformance/reporting/test_reporting_schedule_schema.py \
tests/test_reporting_capability_models.py \
tests/test_reporting_revision_ownership.py \
tests/test_reporting_production_public.py \
tests/test_schema_datetime_formats.py \
-v -s -ra | tee pg-reporting-production-evidence.log
- name: Preserve production contract evidence
if: always()
uses: actions/upload-artifact@v7
with:
name: pg-reporting-production-evidence-${{ github.run_attempt }}
path: pg-reporting-production-evidence.log
if-no-files-found: error

pg-reporting-production-installed:
name: Installed production reporting (${{ matrix.cell }}, Python 3.10)
runs-on: ubuntu-latest
permissions:
contents: read
timeout-minutes: 40
strategy:
fail-fast: false
matrix:
cell: [base-vcs, base-sdist, pg-vcs, pg-sdist]
services:
postgres:
image: postgres:16
env:
POSTGRES_HOST_AUTH_METHOD: trust
POSTGRES_DB: adcp_production_installed_test
ports: ["5432:5432"]
options: >-
--health-cmd pg_isready --health-interval 5s
--health-timeout 5s --health-retries 10
steps:
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
id: production-python310
with:
python-version: "3.10"
- uses: actions/setup-python@v6
with:
python-version: "3.12"
cache: pip
cache-dependency-path: pyproject.toml
- name: Install test dependencies
run: pip install -e ".[dev,pg]"
- name: Run installed source-equivalent production contract
shell: bash
timeout-minutes: 35
env:
ADCP_PG_TEST_URL: postgresql://postgres@localhost:5432/adcp_production_installed_test
ADCP_PYTHON310: ${{ steps.production-python310.outputs.python-path }}
ADCP_PRODUCTION_EVIDENCE: ${{ runner.temp }}/production-installed-evidence
PRODUCTION_CELL: ${{ matrix.cell }}
run: |
python scripts/reporting_test_harness.py pytest \
tests/conformance/reporting/test_reporting_production_packaging.py \
-k "$PRODUCTION_CELL" -v -s -ra | tee pg-reporting-production-installed.log
- name: Preserve installed origins, original inner logs and exact asset hashes
if: always()
uses: actions/upload-artifact@v7
with:
name: pg-reporting-production-installed-${{ matrix.cell }}-${{ github.run_attempt }}
path: |
pg-reporting-production-installed.log
${{ runner.temp }}/production-installed-evidence
if-no-files-found: error

pg-reporting-production-compatibility:
name: B2.3 and hardening to installed B2.4 activation and restart
runs-on: ubuntu-latest
permissions:
contents: read
timeout-minutes: 50
services:
postgres:
image: postgres:16
env:
POSTGRES_HOST_AUTH_METHOD: trust
POSTGRES_DB: adcp_production_rolling_test
ports: ["5432:5432"]
options: >-
--health-cmd pg_isready --health-interval 5s
--health-timeout 5s --health-retries 10
steps:
- uses: actions/checkout@v6
- name: Fetch integrated feed and hardening comparison artifacts
timeout-minutes: 1
run: git fetch --no-tags origin 2d777ace7b4bf8be519ce0abd4fd0a25ed4f1da7 e16eb8cf3074cabd45aab42840950f05ad6d2b43
- uses: actions/setup-python@v6
id: production-python310
with:
python-version: "3.10"
- uses: actions/setup-python@v6
with:
python-version: "3.12"
cache: pip
cache-dependency-path: pyproject.toml
- name: Install test dependencies
run: pip install -e ".[dev,pg]"
- name: Run actual historical page one, activation, SIGKILL and cold continuations
shell: bash
timeout-minutes: 42
env:
ADCP_PG_TEST_URL: postgresql://postgres@localhost:5432/adcp_production_rolling_test
ADCP_PYTHON310: ${{ steps.production-python310.outputs.python-path }}
ADCP_PRODUCTION_EVIDENCE: ${{ runner.temp }}/production-rolling-evidence
run: |
python scripts/reporting_test_harness.py pytest \
tests/conformance/reporting/test_reporting_production_rolling.py \
-v -s -ra | tee pg-reporting-production-rolling.log
- name: Preserve exact installed historical continuity and fence evidence
if: always()
uses: actions/upload-artifact@v7
with:
name: pg-reporting-production-rolling-${{ github.run_attempt }}
path: |
pg-reporting-production-rolling.log
${{ runner.temp }}/production-rolling-evidence
if-no-files-found: error

conventional-commits:
name: Validate conventional commit format
runs-on: ubuntu-latest
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/pr-title-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: PR Title Check
on:
pull_request:
types: [opened, edited, synchronize, reopened]
branches: [main, conductor/1167b2-durable-managed-reporting, conductor/reporting-receipt-ingress-b22, conductor/reporting-frozen-account-feed-b23]
branches: [main, conductor/1167b2-durable-managed-reporting, conductor/reporting-receipt-ingress-b22, conductor/reporting-frozen-account-feed-b23, conductor/reporting-schema-proof-receipt-diagnostics-hardening]

permissions:
contents: read
Expand Down
Loading
Loading