Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
bc5e884
docs(plan): split Step 3b-2b into the REST sampler and verify; settle…
ChrisHuie Oct 21, 2026
580d18d
docs(plan): tighten Step 3b-2b's rules after review
ChrisHuie Oct 21, 2026
cfc040e
docs(plan): close the gaps the convergence review found in Step 3b-2b
ChrisHuie Oct 21, 2026
9c2b803
docs(plan): fail verify on anything it could not check (D37)
ChrisHuie Oct 21, 2026
19d4f3f
docs(plan): apply D37 to the sync and to Steps 4b-6 (D38)
ChrisHuie Oct 21, 2026
d77f919
docs(plan): close the gaps the review of D38 found
ChrisHuie Oct 21, 2026
423881d
docs(plan): settle the remaining gaps in D38's rules
ChrisHuie Oct 21, 2026
506665e
docs: no planted, seeded, or tampered inputs, and no mutation testing…
ChrisHuie Oct 21, 2026
12b2452
docs(plan): close the findings of the last review of D38
ChrisHuie Oct 21, 2026
ececdb7
docs(plan): close the findings of the review of 12b2452
ChrisHuie Oct 22, 2026
a2fed22
docs(plan): one D39 text everywhere it is restated; settle the last gaps
ChrisHuie Oct 22, 2026
54428dc
docs(plan): state verify's child-count and timeline tests without pla…
ChrisHuie Oct 22, 2026
49ab7d0
Merge branch 'feature/plan-step3b2b-verify' into feature/plan-d37-sil…
ChrisHuie Oct 22, 2026
f55ae74
docs(plan): take planting out of every step; replace the planted test…
ChrisHuie Oct 22, 2026
6dbd284
docs(plan): close the review of a2fed22 and f55ae74, and of #27's D37
ChrisHuie Oct 22, 2026
8f0a759
docs(plan): close the convergence check of 6dbd284
ChrisHuie Oct 22, 2026
863b850
Merge remote-tracking branch 'origin/main' into feature/plan-d37-sile…
ChrisHuie Oct 22, 2026
953db70
Merge remote-tracking branch 'origin/main' into feature/plan-d37-sile…
ChrisHuie Oct 22, 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
30 changes: 26 additions & 4 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,24 @@ uv run pytest # CI also runs Python 3.12, `alembic check`,
| [Architecture](docs/architecture.md), [Data Model](docs/data-model.md) | History: the pipeline and schema Step 3a removed, kept until Step 7 |
| [Roadmap](docs/roadmap.md) | History of earlier phases; superseded by the redesign plan |

## Test Evidence

Nothing is planted or tampered, no flaw is seeded, and there is no mutation testing, under any name
(redesign plan D39). No test, review, or acceptance changes a file or a copy of one (other than a stub or configuration the inputs below allow), or writes a file, a row, a revision, a call site, or a decoy holding a
flaw, to see whether something catches it, and none measures how many such flaws are found. A test's
or an acceptance's inputs are GitHub's recorded responses; stubs of a response GitHub or the
environment can send (a status, a body, a timeout, an interrupt, a failing `git`, a clock), which a
test may build in memory from a recorded unit changed into that shape; calls the code under test
must refuse, and configuration it must refuse or that names a state GitHub can produce (a repository
that does not resolve, one no longer listed); valid rows a test writes (through the models with
`tests/db/seed.py`, or in SQL); and databases and files this project's own code wrote, at any
revision. Each test asserts the exact result. A check over stored data, files, or source that only a
defect of this code could fail is tested on its passing side, with the exact count of the rows,
files, or values it compared, so it cannot pass on nothing; a check that GitHub, the environment, or
a caller can fail is tested on both sides. A fix comes with a regression test that fails against the
parent commit's code. Tests merged before D39 that change a file or a copy of one, or write a file,
a revision, a call, a connection, or a decoy holding a flaw, to see whether a check catches it are replaced in Step 3b-2a-2d. See [Testing](docs/testing.md).

## Current Scope

**Implemented:**
Expand All @@ -62,11 +80,15 @@ uv run pytest # CI also runs Python 3.12, `alembic check`,
- `ghactivity sync` (Step 3b-2a-2c, `cli/sync.py`): the engine's run with the options of plan
5.7; a run that never starts exits 1, and a run that starts exits with the engine's 0, 2, or 1

**Not implemented yet:** the REST sampler (Step 3b-2b-1) and `verify` (Step 3b-2b-2). The
tracked `github_activity.db` stays frozen at the first schema (D26).
**Not implemented yet:** tests without planted inputs (Step 3b-2a-2d, D39), D37 in the sync
(Step 3b-2a-3, D38), the REST
sampler (Step 3b-2b-1), and `verify` (Step 3b-2b-2). The tracked `github_activity.db` stays
frozen at the first schema (D26).

**Planned in the redesign plan:** the REST sampler (Step 3b-2b-1) and verify (Step 3b-2b-2);
GitHub Issues and closing-issue links (Step 4); scheduled sync and release publication (Step 6).
**Planned in the redesign plan:** tests without planted inputs (Step 3b-2a-2d), D37 in the sync
(Step 3b-2a-3), the REST sampler (Step
3b-2b-1), and verify (Step 3b-2b-2); GitHub Issues, closing-issue links, and default-branch
activity (Step 4); the full bootstrap (Step 5); scheduled sync and release publication (Step 6).

**Out of Scope (Future):**
- Webhooks / real-time sync
Expand Down
20 changes: 18 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -246,8 +246,24 @@ def test_reviewers(migrated_database: Path) -> None: # a copy of the alembic-bu
pr = seed.pull_request(seed.repository("prebid/Prebid.js"), 13481, seed.user("author"))
```

**3. Prove a check with planted inputs on both sides of its boundary**, and a fix with a test
that fails against the parent commit's code ([Testing Guide](docs/testing.md#principles)).
**3. Never plant, tamper, or seed a flaw** (redesign plan D39). Nothing is planted or tampered, no
flaw is seeded, and there is no mutation testing, under any name. No test, review, or acceptance
changes a file or a copy of one (other than a stub or configuration the inputs below allow), or writes a file, a row,
a revision, a call site, or a decoy holding a flaw, to see whether something catches it, and none
measures how many such flaws are found. A test's or an acceptance's inputs are GitHub's recorded
responses; stubs of a response GitHub or the environment can send (a status, a body, a timeout, an
interrupt, a failing `git`, a clock), which a test may build in memory from a recorded unit changed
into that shape; calls the code under test must refuse, and configuration it must refuse or that
names a state GitHub can produce (a repository that does not resolve, one no longer listed); valid
rows a test writes (through the models with `tests/db/seed.py`, or in SQL); and databases and files
this project's own code wrote, at any revision. Each test asserts the exact result. A check over
stored data, files, or source that only a defect of this code could fail is tested on its passing
side, with the exact count of the rows, files, or values it compared, so it cannot pass on nothing;
a check that GitHub, the environment, or a caller can fail is tested on both sides. A fix comes with
a regression test that fails against the parent commit's code. Tests merged before D39 that change a
file or a copy of one, or write a file, a revision, a call, a connection, or a decoy holding a flaw,
to see whether a check catches it are replaced in Step 3b-2a-2d. See the [Testing
Guide](docs/testing.md#principles).

### Running Tests

Expand Down
Loading