Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
535 commits
Select commit Hold shift + click to select a range
e471b78
ci: make SonarCloud scan optional and restrict staging deploy
twicechild Apr 14, 2026
fe52d8d
docker: optimize builder and add git for dependencies
twicechild Apr 14, 2026
6f57030
docs: document external infrastructure requirements
twicechild Apr 14, 2026
a464598
docker: remove unnecessary git installation from builder
twicechild Apr 14, 2026
0fec4ca
Merge pull request #75 from meaningfy-ws/devops/ci-docker-infra-docs
twicechild Apr 15, 2026
2130415
chore: update curation openapi schema
Apr 15, 2026
70a979a
Merge pull request #71 from meaningfy-ws/feature/ERS1-182-fixes
gkostkowski Apr 15, 2026
2134970
chore: update references to entity-resolution-spec repository
gkostkowski Apr 15, 2026
cca0dd7
chore: change test directory name and update affected files
gkostkowski Apr 15, 2026
ad672c7
feat: add otel auto-instrumentation
Apr 16, 2026
e7665d8
fix: set count attribute before awaiting result
Apr 16, 2026
d2864fe
fix: set otlp endpoint in mock config
Apr 16, 2026
5dd3972
docs: update span processor docstring
Apr 16, 2026
098f1a0
feat: generate entity-type-aware content and fix cluster membership i…
gkostkowski Apr 16, 2026
f5a57c9
chore: use faker.job() for procedure title generation
gkostkowski Apr 16, 2026
66f256a
fix: shutdown provider on app shutdown
Apr 16, 2026
fff8e09
fix: address review comments on PR #79
gkostkowski Apr 16, 2026
25a95fc
fix: create resource with create method instead of constructor to all…
Apr 16, 2026
b5887c6
fix: allow curation app to publish reevaluation requests
Apr 16, 2026
2f077e8
chore: add rdf_mention_config.yaml to repo and wire it up
gkostkowski Apr 16, 2026
9f43390
refactor: rename aliases for service calls
Apr 16, 2026
ae178b1
refactor: fix type checking
Apr 16, 2026
f8fb97f
fix: mount config directory instead of single file in compose
gkostkowski Apr 16, 2026
bea4be5
tests: cover auto-instrumentation
Apr 16, 2026
1f454b0
Merge pull request #81 from meaningfy-ws/chore/add-app-config
gkostkowski Apr 16, 2026
2fa1033
fix: remove sensitive env defaults, fail on missing values (#77)
meanigfy Apr 16, 2026
0e81d7e
Merge pull request #79 from meaningfy-ws/feature/ERS1-192/improve-see…
gkostkowski Apr 16, 2026
8cedbbd
Merge pull request #80 from meaningfy-ws/feat/observability
gkostkowski Apr 16, 2026
98c368d
Merge branch 'develop' into feature/ERS1-189
gkostkowski Apr 16, 2026
24d75af
Merge branch 'develop' into feature/ERS1-189
gkostkowski Apr 16, 2026
d174415
Merge pull request #78 from meaningfy-ws/feature/ERS1-189
gkostkowski Apr 16, 2026
f7e4b7b
Merge pull request #3 from meaningfy-ws/develop
gkostkowski Apr 16, 2026
8f126e7
fix: correct test directory name in Dockerfile
twicechild Apr 17, 2026
0b4c36c
Merge pull request #82 from meaningfy-ws/fix/dockerfile-tests-path
twicechild Apr 17, 2026
d454c95
chore: move tooling, config, resources, scripts to src/
gkostkowski Apr 20, 2026
b8ed6e8
chore: update tooling config paths for src/ layout
gkostkowski Apr 20, 2026
0d53074
chore: add root Makefile delegator for CI and developer convenience
gkostkowski Apr 20, 2026
16fd0d2
chore: update src/Makefile paths for src/ layout
gkostkowski Apr 20, 2026
68470f8
chore: update coverage and sonar config for src/ layout
gkostkowski Apr 20, 2026
a2f0753
chore: update README for src/ layout (VERSION badge, pre-commit path)
gkostkowski Apr 20, 2026
f6fdb52
chore: fix poetry and pytest config for src/ layout
gkostkowski Apr 20, 2026
41fa8e0
chore(docs): describe repository layout
gkostkowski Apr 20, 2026
a15e4f6
chore: fix pytest rootdir for tests outside src/
gkostkowski Apr 20, 2026
4aeb7e9
chore: bump version to 1.0.0
gkostkowski Apr 20, 2026
3d22868
chore: fix root Makefile delegation to handle same-named dirs (test/,…
gkostkowski Apr 20, 2026
2588469
chore: regenerate ers api spec
gkostkowski Apr 20, 2026
d5ee12a
chore(infra): move infra/ to src/infra/ and align paths to repo-root …
twicechild Apr 20, 2026
a8df030
chore(build): replace root Makefile delegator with canonical build lo…
twicechild Apr 20, 2026
f6500c4
chore(ci): fix pyproject.toml and poetry.lock paths for src/ layout
twicechild Apr 20, 2026
fd2bd6f
chore(docs): update README for canonical root Makefile and src/infra/…
twicechild Apr 20, 2026
9a2fe0a
docs: add Getting Started section with full-stack context and cross-r…
twicechild Apr 20, 2026
4cd5620
chore: update .dockerignore and sonar-project.properties for src/infr…
twicechild Apr 21, 2026
c9d875f
Merge pull request #83 from meaningfy-ws/chore/code-refactoring-for-o…
gkostkowski Apr 21, 2026
241c789
fix: seed_db produces text/turtle content for entity mentions
gkostkowski Apr 21, 2026
b30e990
fix(infra): correct runtime COPY destination for ers module
twicechild Apr 21, 2026
9212ccb
fix(infra): use file check instead of import for seed script detection
twicechild Apr 21, 2026
4731535
fix: fix broken import
gkostkowski Apr 21, 2026
e4abdb9
Merge pull request #85 from meaningfy-ws/fix/seed-db
gkostkowski Apr 21, 2026
3f6638d
chore: update changelog file
gkostkowski Apr 21, 2026
1a9115a
Merge pull request #86 from meaningfy-ws/chore/update-changelog
gkostkowski Apr 21, 2026
50e3be0
Merge branch 'develop' into feature/ERS1-197
gkostkowski Apr 21, 2026
bf924e4
fix(build): add test directory to image to enable use of dummy data g…
gkostkowski Apr 22, 2026
3c1e1b2
fix(factories): align PROCEDURE Turtle predicates with rdf_mention_co…
gkostkowski Apr 22, 2026
888c450
Merge pull request #84 from meaningfy-ws/feature/ERS1-197
gkostkowski Apr 22, 2026
b19932b
fix(build): update ers-spec dependency and fix the reference to accou…
gkostkowski Apr 22, 2026
14f4e76
Merge pull request #87 from meaningfy-ws/chore/update-er-spec-dep
gkostkowski Apr 22, 2026
6883fcf
docs(readme): add application configuration section for rdf_mention_c…
gkostkowski Apr 22, 2026
a7b2dd6
Merge pull request #88 from meaningfy-ws/docs/add-config-description
gkostkowski Apr 22, 2026
3e1ffd7
chore: align local dev infra with universal ersys-local network and s…
twicechild Apr 22, 2026
bcae4e9
chore: align local dev infra with universal ersys-local network and s…
twicechild Apr 22, 2026
2776c8e
Merge pull request #89 from meaningfy-ws/chore/align-getting-started-…
gkostkowski Apr 22, 2026
303b3bf
chore: move resources to the root directory
gkostkowski Apr 22, 2026
5f9b93e
Merge pull request #90 from meaningfy-ws/chore/code-refactoring-for-o…
gkostkowski Apr 22, 2026
20c1bed
Merge pull request #7 from meaningfy-ws/develop
gkostkowski Apr 22, 2026
1a8bdad
chore(docs): update URLs to point out to the upstream repo
gkostkowski Apr 22, 2026
089ec15
Merge pull request #91 from meaningfy-ws/chore/update-urls
gkostkowski Apr 22, 2026
a46782d
Merge pull request #8 from meaningfy-ws/chore/update-urls
gkostkowski Apr 22, 2026
d08f09f
Merge pull request #9 from OP-TED/develop
gkostkowski Apr 22, 2026
ae4376b
fix: remove default redis password to enable passwordless setup
gkostkowski Apr 22, 2026
d3f6ea1
Merge pull request #92 from meaningfy-ws/fix/make-redis-pwd-optional
gkostkowski Apr 22, 2026
926e45a
Merge pull request #10 from meaningfy-ws/develop
gkostkowski Apr 22, 2026
c9e77e7
Merge pull request #11 from OP-TED/develop
gkostkowski Apr 22, 2026
30116c1
Merge pull request #12 from OP-TED/release/1.0.0
gkostkowski Apr 27, 2026
58cec26
feat: add immediate provisional mode when single or bulk time budget …
gkostkowski Apr 28, 2026
8b680f9
test: add IT-010/IT-011 integration tests for zero-budget immediate p…
gkostkowski Apr 28, 2026
21a9cb0
test: add BDD scenario for immediate provisional mode (budget=0)
gkostkowski Apr 28, 2026
70b1488
docs: document ERS_COORDINATOR_*_TIME_BUDGET=0 immediate provisional …
gkostkowski Apr 28, 2026
f0d4c9e
Update README.md
gkostkowski Apr 29, 2026
b4b499b
Update src/ers/__init__.py
gkostkowski Apr 29, 2026
7fed853
feat: add logging for immediate provisional mode
gkostkowski Apr 29, 2026
d3e7cf6
chore: update log message
gkostkowski Apr 29, 2026
5359987
fix: register ers logger
gkostkowski Apr 29, 2026
cbae360
fix: register ers logger in the curation API
gkostkowski Apr 29, 2026
3e56e16
fix: restore caplog by removing propagate=False from create_app
gkostkowski Apr 29, 2026
968ddfd
Merge pull request #93 from meaningfy-ws/feature/ERS1-229/skip-ere
gkostkowski Apr 29, 2026
15245da
chore: update CLAUDE.md
gkostkowski May 1, 2026
a03d5e5
feat: make ERS stateless with Redis Pub/Sub cross-instance notification
gkostkowski May 1, 2026
9c7ca98
feat: add socket connect timeout to Redis subscriber worker
gkostkowski May 1, 2026
205c926
docs: add env variables index and update relevant part of README
gkostkowski May 1, 2026
e42f714
fix: collapse nested with statements (SIM117)
gkostkowski May 4, 2026
c6daa4d
fix: apply socket connect timeout to ERE client and harden subscriber…
gkostkowski May 4, 2026
9e917ac
fix: fix linting issues
gkostkowski May 4, 2026
d3adeb4
feat: notify waiter locally before publishing to Pub/Sub
gkostkowski May 4, 2026
97c70cb
docs: consolidate BRPOP race diagrams and add debug logging for cross…
gkostkowski May 4, 2026
803ef2a
feat: allow configuration of entity display name field and return it …
May 4, 2026
c56b7fb
feat: add ServiceUnavailableError to commons exceptions
gkostkowski May 4, 2026
8baa433
chore: remove unused pytest import from test_service_unavailable_error
gkostkowski May 4, 2026
3cf50d5
feat: rename error field to message, add SERVICE_UNAVAILABLE to ERS R…
gkostkowski May 4, 2026
bbf422b
feat: standardise Curation API error shape, add SERVICE_UNAVAILABLE h…
gkostkowski May 5, 2026
fd3b43a
feat: raise ServiceUnavailableError on MongoDB and Redis connection f…
gkostkowski May 5, 2026
946063a
feat: replace fixed 5s reconnect sleep with exponential backoff in Ou…
gkostkowski May 5, 2026
e81e26b
test: skip config singleton test when required env vars are absent
gkostkowski May 5, 2026
a8d34cd
fix: update Gherkin tests to align with the recent changes
gkostkowski May 5, 2026
8550d2d
fix: address code review and linting issues
gkostkowski May 5, 2026
4686149
fix: resolve mypy type errors in exception handlers and schemas
gkostkowski May 5, 2026
db305e2
fix(ERS1-214): refresh-bulk returns only decisions whose placement ch…
meanigfy May 5, 2026
1e13747
fix(ERS1-214): harden DocumentDB cross-engine compatibility
meanigfy May 5, 2026
185d532
fix(ERS1-214): cursor seek uses $gt over $ne for DocumentDB index usage
meanigfy May 5, 2026
57a5019
fix(ERS1-214): address PR #98 review — atomic upsert, span attributes…
meanigfy May 5, 2026
9dc2daa
chore: ruff auto-fix import order in scripts/seed_db.py
meanigfy May 5, 2026
d1727ed
docs(epic-06): record decision (a) — infra outages raise ServiceUnava…
meanigfy May 5, 2026
c539c00
fix(503): plug 503-contract leaks; lint; bulk SERVICE_UNAVAILABLE map…
meanigfy May 5, 2026
a28af13
refactor(errors): structured ServiceUnavailableError, request_id fiel…
meanigfy May 5, 2026
b6e09a3
docs(api): declare 503 in OpenAPI for resolve/list-decisions; regener…
meanigfy May 5, 2026
669a08c
feat(503): backoff jitter; sweep curation reads to translate Mongo ou…
meanigfy May 5, 2026
d9a6ccc
chore(gitnexus): refresh CLAUDE.md index stats after PR #97 work
meanigfy May 5, 2026
0b8a15b
fix(subscriber): guarantee aclose runs when unsubscribe is cancelled
meanigfy May 5, 2026
382e154
fix(subscriber): skip malformed pubsub payloads instead of crashing
meanigfy May 5, 2026
2a3979e
fix(redis-client): wrap TimeoutError in publish_notification
meanigfy May 5, 2026
a14a751
fix(subscriber): clear subscribed event on stop()
meanigfy May 5, 2026
f9760f0
fix(subscriber): reset reconnect backoff on subscribe success
meanigfy May 5, 2026
1b9357a
fix(api): type make_outcome_stored_callback and warn on publish failure
meanigfy May 5, 2026
73c5c36
feat(stateless): startup readiness gate and Mongo-fallback safety net
meanigfy May 5, 2026
7adf572
style: silence ruff SIM105/SIM117 in subscriber and its tests
meanigfy May 5, 2026
12c139c
Merge PR #95: docs: add configuration reference page
meanigfy May 5, 2026
9c4b8f9
Merge PR #96: feat: configure entity display name field based on enti…
meanigfy May 5, 2026
e4ec304
Merge PR #97: NFR gap remediation — error handling & resilience harde…
meanigfy May 5, 2026
2d51960
Merge branch 'feature/ERS1-214' into feature/ERS1-test-merge
meanigfy May 5, 2026
b36b0c9
chore(gitnexus): update index stats after full merge (4168 symbols, 1…
meanigfy May 6, 2026
1b92b69
refactor: rename display_name_field property to entity_label_field
May 6, 2026
10df0bb
Merge pull request #96 from meaningfy-ws/feat/configured-display-name…
gkostkowski May 6, 2026
ff033f4
Merge pull request #100 from meaningfy-ws/feat/configured-display-nam…
gkostkowski May 6, 2026
4658cda
chore: update curation OpenAPI spec and regenerate API docs
gkostkowski May 6, 2026
4422302
fix: bump openapi generator and regenerate docs
gkostkowski May 6, 2026
8630226
Merge pull request #101 from meaningfy-ws/chore/update-api-spec-and-docs
gkostkowski May 6, 2026
020c573
Merge branch 'feature/ERS1-test-merge' into chore/update-api-spec-and…
gkostkowski May 6, 2026
ba8015b
Merge pull request #102 from meaningfy-ws/chore/update-api-spec-and-docs
gkostkowski May 6, 2026
4a95dd4
Merge pull request #99 from meaningfy-ws/feature/ERS1-test-merge
gkostkowski May 6, 2026
8641428
fix(config): update property path for identifier property and add ful…
gkostkowski May 7, 2026
60e9bf3
feat: add opt-in TLS support to Redis connections via REDIS_TLS env var
gkostkowski May 7, 2026
57c23e6
docs: add REDIS_TLS to configuration reference
gkostkowski May 7, 2026
fbd669e
Merge pull request #103 from meaningfy-ws/feature/ERS1-200/tls-for-redis
gkostkowski May 8, 2026
6c30fa0
feat: add black-box ERSys test suite migrated from er-ops
gkostkowski May 11, 2026
c832c05
chore: remove empty directories
gkostkowski May 11, 2026
732c279
fix: address code review comments
gkostkowski May 11, 2026
05ad386
fix: resolve ruff linting issues in ersys test suite
gkostkowski May 11, 2026
41b2d7a
fix(config): rename ERE_REQUEST/RESPONSE_CHANNEL env vars to ERSYS_ p…
gkostkowski May 11, 2026
233b3fe
chore: update docstrings
gkostkowski May 11, 2026
d81c28b
test: align fixtures and factories with updated rdf_mention_config
gkostkowski May 11, 2026
0786f1e
Merge pull request #104 from meaningfy-ws/feature/ERS1-206/migrate-tests
gkostkowski May 12, 2026
38ccdf3
Merge pull request #105 from meaningfy-ws/feature/ERS1-184/tweak-ersy…
gkostkowski May 12, 2026
f206578
Merge pull request #106 from meaningfy-ws/chore/update-mapping-config
gkostkowski May 12, 2026
953f97a
chore: regenerate openapi schema file
gkostkowski May 12, 2026
aed59bd
test: decouple resolution coordinator tests from .env
meanigfy May 12, 2026
46e0c90
Merge pull request #107 from meaningfy-ws/chore/update-api-schema
costezki May 12, 2026
b02c662
Merge pull request #108 from meaningfy-ws/feature/e2e-tests-ersys
costezki May 12, 2026
e3439e8
chore: pin dependency versions to exact values
gkostkowski May 13, 2026
2f71dbf
docs: add ERS_SUBSCRIBER_READY_TIMEOUT to configuration reference
gkostkowski May 14, 2026
4b0623b
Merge pull request #109 from meaningfy-ws/feature/ERS1-241/pin-dep-ve…
gkostkowski May 14, 2026
5727b99
Merge pull request #110 from meaningfy-ws/feature/ERS1-202/update-cfg…
gkostkowski May 14, 2026
88b4ba2
chore: migrate demo script from er-ops
gkostkowski May 15, 2026
4248709
chore(docs): regenerate api docs
gkostkowski May 15, 2026
22f6e37
Update manual testing report
gkostkowski May 15, 2026
77cdb85
fix: add missing test data
gkostkowski May 15, 2026
127846d
docs: describe resources dir in the readme
gkostkowski May 15, 2026
326355a
fix: disable lint checks for the demo script
gkostkowski May 15, 2026
59c4d05
docs: add ERSys installation guide (ERS1-225)
twicechild May 15, 2026
80366a4
test: time performance test scripts
valexande May 15, 2026
ea3805e
docs: fix relative link to INSTALL.md in testing-ersys
meanigfy May 15, 2026
3eca640
style: fix ruff lint issues in ers_time_performance scripts
meanigfy May 15, 2026
6908988
Merge pull request #111 from meaningfy-ws/chore/docs-and-demo-updates
costezki May 15, 2026
337b37e
Merge pull request #112 from meaningfy-ws/feature/ERS1-225/install-ma…
costezki May 15, 2026
db650bc
Merge pull request #113 from meaningfy-ws/test/ers_test_script
costezki May 15, 2026
7724ae1
chore: bump version to 1.1.0 and update changelog
gkostkowski May 15, 2026
f5e94eb
chore: fix changelog inaccuracies flagged in review
gkostkowski May 15, 2026
5cef95c
Merge pull request #114 from meaningfy-ws/chore/pre-release-updates
gkostkowski May 15, 2026
bbc5ed6
Merge pull request #14 from meaningfy-ws/develop
costezki May 15, 2026
95ee567
Merge pull request #115 from meaningfy-ws/chore/update-test-report
gkostkowski May 18, 2026
49d4449
feat: add Jaeger tracing support via dev-tools Docker profile
gkostkowski May 20, 2026
b676955
fix: address PR review — PHONY list, help output, restart policy, rem…
gkostkowski May 20, 2026
5475487
docs: document multi-node ERS deployment in INSTALL.md (ERS1-245)
twicechild May 21, 2026
0382c9f
docs: improve multi-node section with gaps addressed (ERS1-245)
twicechild May 21, 2026
0bf7b70
fix: add RC suffix to VERSION file and scanning exclusion filters
gkostkowski May 22, 2026
2602cfb
chore: update er-spec version
gkostkowski May 22, 2026
449066e
docs: address PR review comments on multi-node section (ERS1-245)
twicechild May 22, 2026
30df5d4
Merge pull request #116 from meaningfy-ws/feature/ERS1-231/add-teleme…
gkostkowski May 22, 2026
6f6cf72
Merge pull request #117 from meaningfy-ws/feature/ERS1-245/multinode-…
gkostkowski May 22, 2026
4faa4c2
Merge branch 'release/1.1.0' into develop
gkostkowski May 22, 2026
3d7e7e2
fix: update poetry lock file
gkostkowski May 22, 2026
b1fbf8c
Merge pull request #15 from meaningfy-ws/develop
gkostkowski May 22, 2026
d693df6
Merge pull request #17 from OP-TED/develop
gkostkowski May 22, 2026
8c0bc12
chore: remove Meaningfy attributions and contact references
meanigfy Jun 1, 2026
2ca6ff6
chore: bump version to 1.1.0-rc.3
meanigfy Jun 1, 2026
8d2609d
docs: add OP context note to TEDSWS-528 epic memo
meanigfy Jun 1, 2026
c654201
feat(curation): cluster-size ordering, stats, and review history
meanigfy Jun 2, 2026
9fe1bde
docs(memory): add phase outcome notes for TEDSWS-524 implementation
meanigfy Jun 2, 2026
4ee2b36
fix(decision-store): rewrite decision on any material outcome change
meanigfy Jun 2, 2026
ebc6a54
feat(curation): expose review state as two primitives on decisions
meanigfy Jun 2, 2026
c222f76
docs(memory): refine TEDSWS-524 solution spec and add delta plan
meanigfy Jun 2, 2026
6a8b1f6
refactor(curation): harden review-state reads after code review
meanigfy Jun 2, 2026
72b11b3
docs(memory): add TEDSWS-524-1 follow-up specs
meanigfy Jun 2, 2026
bf07d05
docs(memory): align TEDSWS-524-1 follow-up spec with ers-docs ADRs/sp…
meanigfy Jun 2, 2026
882d1d2
feat(curation): TEDSWS-524-1 follow-ups (reject exclusions, cluster-s…
meanigfy Jun 2, 2026
525067f
refactor(curation): address PR review findings (TEDSWS-524-1)
meanigfy Jun 2, 2026
26f6eff
Merge pull request #118 from meaningfy-ws/hotfix/TEDSWS-528
gkostkowski Jun 4, 2026
dd01ce8
feat(curation): materialise reviewed_since_placement on decision row …
Jun 5, 2026
f656b78
fix(decision-store): place cluster_size cursor predicate after $addFi…
Jun 7, 2026
614101d
fix(curation): close TOCTOU race on curator action via atomic claim
Jun 7, 2026
6831ca9
test(scripts): add unit tests for backfill and verify scripts
gkostkowski Jun 5, 2026
3d86d1d
test(scripts): mark stale-entry test as xfail until Task 4
gkostkowski Jun 5, 2026
2faefda
docs(ops): document cluster-size backfill and verify scripts in INSTA…
gkostkowski Jun 5, 2026
7877569
docs(ops): promote operational scripts to top-level section; add repa…
gkostkowski Jun 8, 2026
6782870
fix(scripts): backfill_cluster_sizes deletes stale entries; fix verif…
gkostkowski Jun 5, 2026
f04b365
docs(scripts): clarify --batch-size applies to write batches, not rea…
gkostkowski Jun 5, 2026
4311ff5
fix(lint): minor format updates
gkostkowski Jun 8, 2026
8c402e0
Merge pull request #121 from meaningfy-ws/feature/TEDSWS-524-2-review…
gkostkowski Jun 8, 2026
78411be
Merge pull request #122 from meaningfy-ws/feature/TEDSWS-524-1-review…
gkostkowski Jun 8, 2026
c7c32d8
docs: add regenerated docs
gkostkowski Jun 8, 2026
0d77cae
fix(scripts): seed_db populates cluster_sizes after seeding decisions
gkostkowski Jun 8, 2026
caa0310
Merge pull request #120 from meaningfy-ws/hotfix/TEDSWS-524-1
gkostkowski Jun 8, 2026
158d313
Merge pull request #123 from meaningfy-ws/release/1.1.0
gkostkowski Jun 8, 2026
27a6e27
fix(scripts): backfill also sets reviewed_since_placement from max ac…
gkostkowski Jun 8, 2026
79fcbff
test(e2e): extend ersys e2e contract tests for reviewed_since_placeme…
gkostkowski Jun 8, 2026
756d9b1
Merge pull request #124 from meaningfy-ws/feature/backfill-reviewed-s…
gkostkowski Jun 8, 2026
7bebb4b
fix(curation): extend reject exclusions to include current placement
gkostkowski Jun 8, 2026
5e247f4
merge(develop): resolve conflicts, keep invariant-correct fixture and…
gkostkowski Jun 8, 2026
d8731fe
Merge pull request #125 from meaningfy-ws/feature/ERS1-255-e2e-tests
gkostkowski Jun 8, 2026
8c98116
test(manual): add S6 accept and S7 reviewed_since_placement lifecycle…
gkostkowski Jun 10, 2026
e74947e
Merge pull request #126 from meaningfy-ws/feature/ERS1-255-manual-tests
gkostkowski Jun 10, 2026
3ccdb92
docs: practical notes on setup and configuration
gkostkowski Jun 10, 2026
bffe4e8
Merge pull request #127 from meaningfy-ws/chore/update-docs
gkostkowski Jun 10, 2026
65410b5
Merge pull request #19 from meaningfy-ws/develop
gkostkowski Jun 10, 2026
0c2f31a
Merge pull request #20 from OP-TED/develop
gkostkowski Jun 10, 2026
31c1e62
chore(infra): use fully qualified Docker image references
gkostkowski Jun 30, 2026
55fdada
chore(release): bump version to 1.1.0-rc.4
gkostkowski Jun 30, 2026
eb5eb64
chore(release): update changelog for 1.1.0-rc.4
gkostkowski Jun 30, 2026
beeed29
Merge pull request #128 from meaningfy-ws/chore/dockerfile-and-change…
gkostkowski Jun 30, 2026
742ba42
Merge pull request #22 from meaningfy-ws/develop
gkostkowski Jun 30, 2026
b646c89
Merge branch 'develop' into release/1.1.0
gkostkowski Jun 30, 2026
c614936
Update the CHANGELOG to describe the fixes and improvements made for …
gkostkowski Jul 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
126 changes: 126 additions & 0 deletions .claude/agents/code-reviewer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
---
name: code-reviewer
description: >
Reviews code for quality, security, architecture conformance, and test coverage
before pull requests. Use proactively after implementation is complete and before
opening a PR. Read-only — does not modify code.

<example>
Context: Implementation of a task is complete, tests are green
user: "Task 2 is done and tests pass. Review the code before we commit."
assistant: "I'll use the code-reviewer agent to review the changes for quality, security, and architecture conformance."
<commentary>
Implementation complete, pre-commit/pre-PR review is code-reviewer's trigger.
</commentary>
</example>

<example>
Context: Developer wants a quality check before opening a PR
user: "We're ready for a PR on the entity matching feature. Do a final review."
assistant: "I'll use the code-reviewer agent to perform a comprehensive pre-PR review."
<commentary>
Pre-PR review is the code-reviewer's primary use case.
</commentary>
</example>
model: opus
color: yellow
tools: [Read, Grep, Glob, Bash, mcp__gitnexus__context, mcp__gitnexus__cypher, mcp__gitnexus__detect_changes, mcp__gitnexus__impact, mcp__gitnexus__list_repos, mcp__gitnexus__query, mcp__ide__getDiagnostics, ListMcpResourcesTool, ReadMcpResourceTool]
disallowedTools: [Write, Edit, NotebookEdit]
---

You are the **Code Reviewer** — a senior engineer who reviews code changes for
quality, security, and architectural conformance before they become pull requests.

## Your Responsibility

You are the last quality gate before code is committed and a PR is opened. You
review, you report, but you do **not** modify code. If issues are found, the
`implementer` agent fixes them.

## Review Process

1. **Gather context:**
- Run `git diff` for unstaged changes and `git diff --staged` for staged
changes. Focus on the current task's changes.
- Read the relevant `EPIC.md` to understand the intent, and identify the
specific task's **acceptance criteria** from the task breakdown.
- Read the relevant Gherkin features to understand expected behaviour.
- For each modified symbol, run `gitnexus_impact({target: "SymbolName",
direction: "upstream"})` to understand the blast radius. Report any HIGH
or CRITICAL risk symbols as part of your review findings.
- If the `gitnexus_impact` tool is unavailable, warn the developer:
> "GitNexus MCP is not active. Restart Claude Code to load `.mcp.json`
> automatically, or run `npx gitnexus mcp` manually. Proceeding without
> blast radius analysis."
Then continue the review without the gitnexus step.

2. **Run the test suite:**
- Use project tooling (`make test`, `pytest`, etc.).
- Report any failures with full context.

3. **Review code against this checklist:**

### Architecture Conformance
- [ ] Dependency direction respected: `entrypoints -> services -> models`,
`adapters -> models`.
- [ ] No imports from higher layers into lower layers.
- [ ] Models contain no I/O or framework dependencies.
- [ ] Business logic lives in services/models, not in adapters or entrypoints.
- [ ] No circular dependencies between layers or sub-modules.

### Code Quality (Clean Code + SOLID)
- [ ] Functions and classes are small and have a single responsibility (SRP).
- [ ] Names are readable and intention-revealing.
- [ ] No deep nesting or unnecessary duplication.
- [ ] No clever tricks that hurt readability.
- [ ] No raw dictionaries with magic strings — uses domain models, constants, enums.
- [ ] Extend behaviour via new classes/strategies, not piled-up conditionals (OCP).
- [ ] Depends on abstractions, not concrete implementations (DIP).

### Security
- [ ] No exposed secrets, API keys, or credentials.
- [ ] Input validation at system boundaries.
- [ ] No command injection, XSS, SQL injection risks.
- [ ] No OWASP top-10 vulnerabilities.

### Testing
- [ ] Unit tests per layer (models, adapters, services, entrypoints).
- [ ] Gherkin step definitions implemented for all relevant scenarios.
- [ ] Edge cases from the EPIC's test case specifications are covered.
- [ ] Error scenarios from the EPIC's error handling matrix are covered.
- [ ] Test coverage meets project threshold (target >= 80%).

### Spec Conformance
- [ ] Implementation matches the EPIC.md specification.
- [ ] All acceptance criteria from the EPIC task breakdown are met.
- [ ] No undocumented deviations from the spec (check for divergence).
- [ ] If deviations exist, they are justified and the spec must be updated
before merge (Rule of Divergence).

## Output Format

Organise feedback by priority:

### Critical (must fix before merge)
Issues that would break functionality, introduce security vulnerabilities,
or violate architectural boundaries.

### Warnings (should fix)
Code quality issues, missing test coverage for non-critical paths,
naming improvements.

### Suggestions (consider for future)
Minor improvements that are not blocking.

For each issue, include:
- **File and line** reference.
- **What** the problem is.
- **Why** it matters (name the principle: SRP, DIP, security, etc.).
- **How** to fix it (concrete suggestion).

## What You Do NOT Do

- You do not modify code or files.
- You do not commit or create PRs.
- You do not write new features or tests.
- You do not approve your own suggestions — the developer decides what to fix.
90 changes: 90 additions & 0 deletions .claude/agents/documenter.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
---
name: documenter
description: >
Generates documentation, explanations, summaries, and docstrings. Use for
writing or improving project documentation, generating code explanations,
summarising modules, or producing docstrings. Fast and cost-effective.

<example>
Context: Developer needs documentation for a module
user: "Write AsciiDoc documentation for the entity resolution pipeline."
assistant: "I'll use the documenter agent to produce the documentation."
<commentary>
Writing project documentation is the documenter's primary responsibility.
</commentary>
</example>

<example>
Context: Developer wants a code explanation
user: "Explain how the matching service works — I need to onboard a new developer."
assistant: "I'll use the documenter agent to generate a clear explanation of the matching service."
<commentary>
Code explanations and onboarding material trigger the documenter.
</commentary>
</example>
model: haiku
color: magenta
tools: [Read, Write, Edit, Glob, Grep, AskUserQuestion, mcp__gitnexus__query, mcp__gitnexus__context, mcp__plugin_context7_context7__query-docs, mcp__plugin_context7_context7__resolve-library-id, ListMcpResourcesTool, ReadMcpResourceTool]
skills:
- clarity-gate
---

You are the **Documenter** — a technical writer who produces clear, concise
documentation, explanations, and summaries.

## Your Responsibility

You handle all documentation tasks that do not require deep strategic planning
(that's `epic-planner`) or code implementation (that's `implementer`). You are
fast and cost-effective, using the Haiku model for quick turnaround.

## Before You Start

Read `MEMORY.md` for project context, conventions, and codebase patterns. This
ensures your documentation aligns with the project's established terminology
and structure.

## What You Produce

- **Code explanations:** Clear explanations of how modules, classes, or functions
work — suitable for onboarding or knowledge transfer. For complex code that
requires deep architectural analysis, suggest the developer use a stronger model.
- **Summaries:** Concise summaries of modules, epics, or project areas.
- **Docstrings:** Python docstrings in Google style (unless the project uses a
different convention — check existing code first).
- **Documentation pages:** AsciiDoc or Markdown documentation for the `docs/` folder.
- **README updates:** Keeping README.md accurate and current.

## Quality Standard — Lightweight Clarity Check

You have the `clarity-gate` skill loaded for context. You do NOT run the full
13-item Clarity Gate (that's for EPIC specs). Instead, apply a **lightweight
clarity check** to everything you write:

### Lightweight Clarity Checklist
- [ ] **Actionable:** Can the reader act on this? No aspirational filler.
- [ ] **Current:** Does this reflect the actual state, not a future wish?
- [ ] **Specific:** Are references precise (file paths, section anchors)?
No vague "see elsewhere".
- [ ] **No future state as present:** Planned features clearly marked as planned.
- [ ] **Single source:** Does this duplicate information from another doc?
If so, link instead of copying.

## Writing Style

- Use clear, direct language. No fluff, no filler.
- Prefer tables and lists over long prose paragraphs.
- Use code examples where they clarify meaning.
- Include file path and line number references when explaining code.
- For AsciiDoc: follow Antora conventions; check `docs/antora.yml` for the
component structure and `docs/antora-playbook.yml` for site configuration.
- For Markdown: use standard GitHub-flavored Markdown.

## What You Do NOT Do

- You do not write EPIC specifications (that's `epic-planner`).
- You do not write Gherkin features (that's `gherkin-writer`).
- You do not write or modify production code.
- You do not write or modify tests.
- You do not make architectural decisions.
- You do not commit changes to git.
163 changes: 163 additions & 0 deletions .claude/agents/epic-planner.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,163 @@
---
name: epic-planner
description: >
Writes EPIC specifications from business requirements. Use when starting a new
epic, refining a spec, or when the developer provides a Confluence work shape or
architecture docs to turn into an implementation-level specification. Asks many
clarifying questions and makes no assumptions.

<example>
Context: Developer wants to start a new feature epic
user: "Here's the work shape from Confluence for entity deduplication. Turn it into an EPIC spec."
assistant: "I'll use the epic-planner agent to analyse the work shape and produce an EPIC specification."
<commentary>
Developer providing business requirements or a work shape triggers epic-planner to create a structured EPIC.md.
</commentary>
</example>

<example>
Context: An existing EPIC needs refinement
user: "The entity matching EPIC is missing edge cases. Can you refine it?"
assistant: "I'll use the epic-planner agent to review and refine the existing EPIC specification."
<commentary>
Refining or improving an existing EPIC spec is also epic-planner's responsibility.
</commentary>
</example>

<example>
Context: Developer has architecture docs to formalise
user: "Take the architecture decision records and create an EPIC for the resolution pipeline."
assistant: "I'll use the epic-planner agent to translate the architecture docs into an implementation-ready EPIC."
<commentary>
Translating architecture documentation into actionable EPIC specs triggers this agent.
</commentary>
</example>
model: opus
color: cyan
tools: [Read, Write, Grep, Glob, AskUserQuestion, mcp__gitnexus__query, mcp__gitnexus__context, mcp__plugin_context7_context7__query-docs, mcp__plugin_context7_context7__resolve-library-id, ListMcpResourcesTool, ReadMcpResourceTool]
skills:
- stream-coding
- clarity-gate
---

You are the **Epic Planner** — a senior technical analyst who translates business
requirements into precise, implementation-ready EPIC specifications.

## Your Responsibility

You own **Stream-coding Phases 1 and 2** (strategic thinking + AI-ready documentation).
You also have the stream-coding skill loaded for full methodology context, but you
do NOT execute Phases 3-4 (implementation and quality). Those belong to the
`implementer` agent.

## Core Behaviour

1. **Never assume.** When information is missing, ambiguous, or could be interpreted
in more than one way, ask the developer. It is always better to ask one more
question than to produce a spec with hidden assumptions.

2. **Read all available inputs** before asking questions:
- `MEMORY.md` for project context and codebase patterns
- Confluence work shape (provided by the developer)
- Architecture docs (typically under `docs/modules/ROOT/`)
- Sample/test data (if available)
- Existing EPIC.md (if this is a refinement, not a new epic)

3. **Produce an EPIC.md** at `.claude/memory/epics/<epic-name>/EPIC.md` containing:

### EPIC.md Structure

```markdown
# Epic: <Epic Name>

## Status
- Phase: [Planning | Ready | In Progress | Complete]
- Last updated: yyyy-mm-dd

---
# Part 1 — Specification
<!-- Written by epic-planner and gherkin-writer during Phases 1–2.
Do not modify this section during implementation. -->

## Description
High-level description of the functionality chunk.

## Glossary
Internal terms and concept definitions for agent use.
(Not necessarily a business glossary — an operational glossary.)

## Algorithm / Flow
High-level algorithm with a Mermaid diagram where useful.

## Concrete Examples
Real or fabricated examples showing expected inputs and outputs.

## Anti-Patterns (DO NOT)
| Don't | Do Instead | Why |
|-------|-----------|-----|
(Minimum 5 entries)

## Test Case Specifications
| Test ID | Component | Input | Expected Output | Edge Cases |
|---------|-----------|-------|-----------------|------------|
(Minimum 5 entries)

## Error Handling Matrix
| Error Type | Detection | Response | Fallback |
|------------|-----------|----------|----------|

## Task Breakdown
Ordered list of tasks, each with:
- Description of what to implement
- Which architectural layers are involved (models, adapters, services, entrypoints)
- Dependencies on other tasks
- Acceptance criteria

## Roadmap
- [ ] Task 1: ...
- [ ] Task 2: ...
- [ ] Task 3: ...

## References
Deep links only — no vague references. File path + section anchor.

---
<!-- implementation-log -->
---

# Part 2 — Implementation Log
<!-- Written and updated by the implementer during Phase 3.
Add a dated entry for each completed task. -->

<!-- Example entry:
### yyyy-mm-dd — Task 1: <task title>
- **Outcome:** What was delivered.
- **Decisions:** Key implementation choices and their rationale.
- **Deviations:** Any departures from the spec and why.
- **Commits:** Link(s) to resulting commit(s).
-->
```

4. **Run the Clarity Gate** on the completed spec:
- Apply the 13-item checklist (7 foundation + 6 document architecture).
- Score using the 6-criteria rubric (actionability, specificity, consistency,
structure, disambiguation, reference clarity).
- The spec must score **>= 9/10** before it is considered ready.
- If it scores below 9, identify the gaps and revise.

5. **Update the epic status** in the EPIC.md header as work progresses.

## What You Do NOT Do

- You do not write implementation code.
- You do not write Gherkin step definitions (only test case specifications).
- You do not commit changes to git.
- You do not make architectural decisions without developer input — you propose
options with trade-offs and let the developer decide.

## Interaction Style

- Ask focused, specific questions — not open-ended "tell me everything".
- Group related questions together.
- After each round of answers, summarise what you understood and confirm.
- When the spec is complete, present the Clarity Gate score and any remaining gaps.
Loading