Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
2b7c2f5
test(email-writing): define review evidence contracts
seonghobae Aug 12, 2026
c458e24
feat(email-writing): persist privacy-minimized review evidence
seonghobae Aug 12, 2026
001da50
fix(email-writing): register evidence metadata explicitly
seonghobae Aug 12, 2026
764f8e9
ci(email-writing): add one-shot evidence review repair
seonghobae Aug 12, 2026
9cec449
ci(email-writing): run one-shot evidence review repair
seonghobae Aug 12, 2026
3522691
ci(email-writing): remove feedback tenant identifiers
seonghobae Aug 12, 2026
2da5309
ci(email-writing): rerun corrected evidence repair
seonghobae Aug 12, 2026
2c91c44
fix(email-writing): harden evidence tests under safety settings
seonghobae Aug 12, 2026
7c28cc3
ci(email-writing): split backend repair from workflow mutation
seonghobae Aug 12, 2026
b688d0a
ci(email-writing): materialize backend review repair without workflow…
seonghobae Aug 12, 2026
96cd7f8
fix(email-writing): address review evidence findings
github-actions[bot] Aug 12, 2026
4a182c4
ci(email-writing): remove completed one-shot repair workflow
seonghobae Aug 12, 2026
9d08e14
ci(email-writing): refresh Task 3 on current contracts parent
seonghobae Aug 15, 2026
24b7644
Merge remote-tracking branch 'origin/feat/llm-email-writing-contracts…
Aug 15, 2026
6ab000e
ci(email-writing): remove Task 3 parent refresh workflow
Aug 15, 2026
51fb5e8
Merge remote-tracking branch 'origin/feat/llm-email-writing-contracts…
cursoragent Aug 17, 2026
f65974e
Merge current Task 2 into email-writing evidence Task 3
seonghobae Sep 1, 2026
7ae87ab
Merge current Task 2 into email-writing evidence Task 3
seonghobae Sep 1, 2026
ea61b9d
Merge current Task 2 into email-writing evidence Task 3
seonghobae Sep 1, 2026
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
106 changes: 106 additions & 0 deletions .github/workflows/email-writing-evidence-tdd.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
name: Email Writing Evidence TDD

on:
push:
branches:
- feat/llm-email-writing-review-evidence-task3
workflow_dispatch:

permissions:
contents: read

concurrency:
group: email-writing-evidence-tdd-${{ github.ref }}
cancel-in-progress: true

env:
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true

jobs:
review-evidence:
runs-on: ubuntu-24.04
timeout-minutes: 15
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: ${{ github.sha }}
persist-credentials: false
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: "3.14"
cache: pip
cache-dependency-path: backend/requirements-hashes.txt
- run: python -m pip install --disable-pip-version-check --require-hashes -r backend/requirements-hashes.txt
- name: Install hash-verified coverage tool
run: |
set -euo pipefail
mkdir -p /tmp/coverage-wheel
cat >/tmp/coverage-lock.txt <<'EOF'
coverage==7.15.2 --hash=sha256:eb6bcae8d1a9d305351ecb108232441d11c5cfe9de840a04388ba5d2db8d735c
EOF
python -m pip download \
--disable-pip-version-check \
--require-hashes \
--no-deps \
--only-binary=:all: \
--platform any \
--python-version 3.14 \
--implementation py \
--abi none \
--dest /tmp/coverage-wheel \
-r /tmp/coverage-lock.txt
python -m pip install --disable-pip-version-check --no-deps /tmp/coverage-wheel/coverage-7.15.2-py3-none-any.whl
- name: Run privacy-minimized model and migration tests
env:
PYTHONWARNINGS: error
DISABLE_BACKGROUND_WORKERS: "1"
run: |
set -euo pipefail
cd backend
output_file="$(mktemp)"
trap 'rm -f "$output_file"' EXIT
set +e
python -m pytest -q \
tests/test_email_writing_models.py \
tests/test_email_writing_migration.py 2>&1 | tee "$output_file"
test_status=${PIPESTATUS[0]}
set -e
if grep -Eiq '(^|[^[:alnum:]_])(Timeout|Fatal|Warn|Denied)([^[:alnum:]_]|$)' "$output_file"; then
echo "::error::Backend tests emitted prohibited stability output."
exit 1
fi
exit "$test_status"
- name: Verify migration statement and branch coverage
env:
PYTHONWARNINGS: error
DISABLE_BACKGROUND_WORKERS: "1"
run: |
set -euo pipefail
cd backend
output_file="$(mktemp)"
trap 'rm -f "$output_file"' EXIT
python -m coverage erase
set +e
python -m coverage run --branch \
--include='alembic/versions/20260812_0001_add_email_writing_review_evidence.py' \
-m pytest -q tests/test_email_writing_migration.py 2>&1 | tee "$output_file"
test_status=${PIPESTATUS[0]}
set -e
if grep -Eiq '(^|[^[:alnum:]_])(Timeout|Fatal|Warn|Denied)([^[:alnum:]_]|$)' "$output_file"; then
echo "::error::Coverage tests emitted prohibited stability output."
exit 1
fi
if [[ "$test_status" -ne 0 ]]; then
exit "$test_status"
fi
python -m coverage report --show-missing --fail-under=100 \
alembic/versions/20260812_0001_add_email_writing_review_evidence.py
Comment thread
seonghobae marked this conversation as resolved.
- name: Lint evidence implementation and tests
run: |
cd backend
python -m ruff check \
db/email_writing_evidence.py \
alembic/env.py \
alembic/versions/20260812_0001_add_email_writing_review_evidence.py \
tests/test_email_writing_models.py \
tests/test_email_writing_migration.py
4 changes: 2 additions & 2 deletions backend/alembic/env.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@
from sqlalchemy.ext.asyncio import async_engine_from_config

from core.config import settings
from db.models import Base
from db.email_writing_evidence import EmailReviewSession

config = context.config

if config.config_file_name is not None:
fileConfig(config.config_file_name)

target_metadata = Base.metadata
target_metadata = EmailReviewSession.__table__.metadata


def _database_url() -> str:
Expand Down
Loading