Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
0cf4a98
fix(ui): run end-of-scene memory hygiene and survive shutdown after l…
Nov 4, 2026
1bbeed2
chore(types): bring strict mypy to zero errors
Nov 4, 2026
5f0e874
fix(infra): pull MinIO from quay.io
Nov 4, 2026
8df02c9
ci: merge test jobs into one parallel run and move mutation testing t…
Nov 4, 2026
5181b6e
feat(ingest): I-17 decompose a PDF into a lossless, stable book tree
Nov 4, 2026
6d553c7
feat(ingest): I-17 extract claims from every sentence, resumably
Nov 4, 2026
422dca5
feat(ingest): I-17 review claims, with a ledger and an answer key
Nov 4, 2026
d0a4c06
feat(ingest): I-17 build separate rules and lore graphs, and add the …
Nov 4, 2026
7470078
docs: I-17 add the book decomposition plan and measured results
Nov 4, 2026
b88d2e9
docs: I-17 map how decomposition fits into the ingestion pipeline
Nov 4, 2026
3ffe090
docs: I-17 add the file-by-file implementation plan
Nov 4, 2026
cd2a8c4
docs: I-17 record baseline measurements of the current PDF reader
Nov 4, 2026
c5adc5b
feat(ingest): I-17 convert a book tree to section blocks
Nov 4, 2026
53c38aa
fix(ingest): I-17 read PDF sections through the lossless book tree
Nov 4, 2026
3997ec8
test(ingest): I-17 pin that PDF sections neither repeat nor lose text
Nov 4, 2026
3bc7f1f
fix(analyzer): I-17 sample chunks across the whole book, repeatably
Nov 4, 2026
fa3d9bc
docs: correct the audit's PDF caching claim and the analyzer timeout …
Nov 4, 2026
3cd2916
chore(ingest): I-17 remove the unused ingestion loop and a stale arti…
Nov 4, 2026
519f643
feat(data): I-17 store book decomposition progress in MongoDB
Nov 4, 2026
335b892
feat(agents): I-17 add MongoDB backends for extraction and review pro…
Nov 4, 2026
685c69d
feat(data): I-17 add a decompose stage, paused status and coverage to…
Nov 4, 2026
07775f2
feat(agents): I-17 map reviewed claims to a KnowledgePack
Nov 4, 2026
3036b79
feat(ingest): I-17 run book decomposition as a resumable background job
Nov 4, 2026
d0a21b1
feat(ui): I-17 start and resume book decomposition from the ingest ro…
Nov 4, 2026
f3606c5
feat(ui): I-17 show decomposition progress and resume in the jobs list
Nov 4, 2026
771d9a6
style(ingest): I-17 format book decomposition storage
Nov 4, 2026
14796b7
feat(ingest): I-17 detect ruled tables and titles set into text
Nov 4, 2026
5bc6297
feat(agents): I-17 catch sample characters, book descriptions and ver…
Nov 4, 2026
b5cb19b
feat(agents): I-17 store rules and lore domains, trees and optional g…
Nov 4, 2026
3e7f264
fix(ui): I-17 delete book progress with its source
Nov 4, 2026
561dc1d
chore(agents): I-17 retire the prototype script and Kimi client
Nov 4, 2026
0fc911d
docs: I-17 record what was built, what changed, and what's left
Nov 4, 2026
3847803
feat(canon): I-17 store book structure in Neo4j through CanonKeeper
Nov 4, 2026
8cddbe6
fix(ingest): I-17 keep the analyzer's limit inside the job's
Nov 4, 2026
153dd02
docs: I-17 record real database results and the final design
Nov 4, 2026
c9be356
fix(ingest): record job progress so the watchdog stops failing health…
Nov 4, 2026
c8796fb
fix(ingest): I-17 keep long decompositions alive and clear chunks on …
Nov 4, 2026
073071b
docs: I-17 record the audit of every plan step
Nov 4, 2026
f843c9f
fix(agents): I-17 map freeform entity types onto the pack schema
Nov 4, 2026
7664fb0
docs: I-17 record the first live run
Nov 4, 2026
4a9b0bc
fix(ingest): I-17 keep overprinted text once and stop treating prose …
Nov 4, 2026
297029c
docs: I-17 record the first quality measure
Nov 4, 2026
6fd09dc
docs: I-17 record the removal of Dune quotes
Nov 5, 2026
f43eb47
docs: I-17 record the Chapter 5 live run and correct the first sample
Nov 5, 2026
7d10a91
docs: I-17 record the second quality check
Nov 5, 2026
a1d4c4c
docs: I-17 correct the re-roll finding
Nov 5, 2026
d1259c7
fix(agents): I-17 send conflicts the book states both ways to a person
Nov 5, 2026
7878ffa
docs: I-17 record the contradiction fix and the specialist name
Nov 5, 2026
670eebb
fix(ingest): I-17 put decorated first letters back and stop lone numb…
Nov 5, 2026
cc00211
feat(agents): I-17 show how many claims wait for a person on the job
Nov 5, 2026
05b81eb
docs: I-17 record the reader and review-count fixes
Nov 5, 2026
9b5dfcd
feat(ingest): I-17 let a person accept, reword or reject held claims
Nov 6, 2026
2e5cc5c
docs: I-17 record the held-claims review
Nov 6, 2026
b70e6a9
feat(agents): I-17 put accepted held claims in the rules and lore trees
Nov 6, 2026
3e26e39
Merge branch 'master' into feat/book-decomposition-i17
Nov 7, 2026
114e138
fix(ui): remove unused functools import after merge
Nov 7, 2026
cca56e3
test(ui): fix hermetic test failures after master merge
Nov 7, 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
23 changes: 0 additions & 23 deletions .github/workflows/behavior-tests.yml

This file was deleted.

43 changes: 22 additions & 21 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,26 +3,32 @@ name: CI
on:
push:
branches: [master, main]
paths-ignore: ["docs/**", "**/*.md"]
pull_request:
paths-ignore: ["docs/**", "**/*.md"]

concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true

jobs:
lint:
static:
name: Lint, layers, types
runs-on: ubuntu-latest
timeout-minutes: 10
timeout-minutes: 15
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v5
with:
python-version: "3.11"
enable-cache: true
- run: uv sync --frozen || uv sync
- name: Ruff
run: uv run ruff check packages
run: uv run ruff check packages scripts
- name: Layer boundaries
run: uv run python scripts/check_layer_dependencies.py
- name: mypy (strict, zero-error baseline)
run: uv run mypy packages/data-layer/src packages/agents/src packages/cli/src packages/ui/backend/src --cache-dir /tmp/mypy-cache

sealed-suite-guard:
name: Sealed-suite guard (T_test)
Expand All @@ -44,32 +50,27 @@ jobs:
git show "${BASE_SHA}:scripts/sealed_suite_guard.py" > /tmp/sealed_suite_guard_base.py
python3 /tmp/sealed_suite_guard_base.py --base "${BASE_SHA}" ${ALLOW}

typecheck:
runs-on: ubuntu-latest
timeout-minutes: 15
# Informational until the strict-mypy backlog is cleared (FINAL_FABLE T-020+)
continue-on-error: true
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v5
with:
python-version: "3.11"
- run: uv sync --frozen || uv sync
- name: mypy
run: uv run mypy packages/data-layer/src packages/agents/src --cache-dir /tmp/mypy-cache

unit-tests:
tests:
name: Hermetic test suite
runs-on: ubuntu-latest
timeout-minutes: 20
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v5
with:
python-version: "3.11"
enable-cache: true
- run: uv sync --frozen || uv sync
- name: Hermetic unit suite (no network, fake keys — enforced by conftest.py)
run: uv run pytest packages tests -q --tb=short -p no:cacheprovider --cov=packages --cov-branch --cov-report=xml --cov-report=term-missing
# No network, fake keys (enforced by conftest.py). Includes tests/contracts,
# tests/property, tests/behavior and tests/verification.
- name: Tests
if: github.event_name != 'push'
run: uv run pytest packages tests -q --tb=short -p no:cacheprovider -n auto
- name: Tests with coverage (master pushes only; branch coverage is slow)
if: github.event_name == 'push'
run: uv run pytest packages tests -q --tb=short -p no:cacheprovider -n auto --cov=packages --cov-branch --cov-report=xml
- name: Upload coverage to Codecov
if: github.event_name == 'push'
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
Expand Down
23 changes: 0 additions & 23 deletions .github/workflows/contract-tests.yml

This file was deleted.

26 changes: 0 additions & 26 deletions .github/workflows/mutation-diff.yml

This file was deleted.

184 changes: 0 additions & 184 deletions .github/workflows/mutation.yml

This file was deleted.

4 changes: 2 additions & 2 deletions .github/workflows/nightly-integration.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
name: Nightly Integration
name: Weekly Integration

on:
schedule:
- cron: "17 4 * * *"
- cron: "17 4 * * 1"
workflow_dispatch:

jobs:
Expand Down
23 changes: 0 additions & 23 deletions .github/workflows/property-tests.yml

This file was deleted.

2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ FastAPI app at `packages/ui/backend/src/monitor_ui/`. Routers in `routers/`. The
agents MUST NOT modify or delete files under these paths; CI enforces this via
`scripts/sealed_suite_guard.py` (override label `sealed-override` is maintainer-only).
Write tests for your changes in `tests/unit/`, `tests/api/`, `tests/contracts/`, or the
per-package `tests/` dirs instead. Mutants surviving on lines your PR changes fail CI
per-package `tests/` dirs instead. Mutation testing runs locally, not in CI
(`scripts/mutation_diff.py`); weaken nothing to get a green run.

## Documentation Map
Expand Down
4 changes: 2 additions & 2 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@
- Sealed suites: never modify or delete `tests/verification/**` or `tests/property/**`
(T_test). CI blocks it via `scripts/sealed_suite_guard.py`; only a maintainer applying
the `sealed-override` label can land such changes. Never weaken asserts or hardcode
responses to turn tests green — the mutation gate (`scripts/mutation_diff.py`) rejects
survivors on changed lines.
responses to turn tests green — the local mutation check (`scripts/mutation_diff.py`, not run in CI)
flags survivors on changed lines.

## Forbidden Patterns (From AGENTS.md)

Expand Down
Loading
Loading