feat(FAR-787): 6 library collection bundles + __default__ resolution - #358
Conversation
farnalabs
commented
Sep 10, 2026
- feat(FAR-761): collection_install + collection_install_entity schema migration
- fix(tests): update reconciliation-chain head assertions to 0206_collection_install_tracking
- fix(FAR-761): address PR-review blockers on collection_install migration
- fix(tests): update schema assertions for collection_install tables (FAR-761)
- fix(tests): split compound boolean assertion in migration 0206 test
- fix(FAR-761): align CollectionInstall ORM model to migration 0206 and secure entity table
- feat(FAR-762): install_service + uninstall + runnability (adapter over materialize_import)
- feat(FAR-764): community execution gate + connector checklist UI
- feat(FAR-765): integration tests + product-map + docs for library collections
- fix(FAR-765): resolve CI failures — bundle format_version, stale schema, product-map docs, test style
- feat(FAR-757): GitHub PR Reviewer bundle seed data (agent + collection)
- feat(FAR-787): 6 library bundles + seed entries for prompt-to-pr, changelog, release-notes, pr-description, triage, license-checker
…ction_install_tracking PR #308 (FAR-761) adds 0206_collection_install_tracking on top of the prior head 0205_library_collection_type, so the chain head is now 0206. The stale reconciliation/guardrail tests still asserted the head was 0205, which broke get_heads() assertions and the migration health check. Update the head pointers (and the chain walk in test_eval_suite_run) to the new head. Content assertions that exercise 0205's DDL are left unchanged.
Apply the new-table ceremony (SET ROLE modulo_migrate + RLS ENABLE/FORCE + rls_org_isolation + GRANTs to modulo_app/modulo_system + ownership assertion), switch org_id -> organisation_id, use ix_<table>_<col> index naming, drop the redundant unique index on the PK, dialect-guard Postgres-only DDL for the SQLite parity path, add the reverse-lookup index on collection_install_entity, and widen collection_version to VARCHAR(50) for full semver. Add ORM models (CollectionInstall, CollectionInstallEntity) and a migration unit test exercising the ceremony/naming/round-trip so the migration is no longer unexercised. Resolves the CHANGES_REQUESTED findings from modulo-reviewbot on PR #308.
…AR-761) The 0206_collection_install_tracking migration adds collection_install and collection_install_entity. Update the stale schema-assertion tests: - test_initial_schema_contains_required_tables: include the two new tables - test_all_resource_tables_are_organisation_scoped: exclude collection_install_entity (intentionally non-org-scoped; access is via the org-scoped parent's install_id) - test_upgrade_covers_exactly_every_metadata_uuid_pk: scope the frozen 0194 coverage contract to pre-0194 tables so the count stops drifting on tables introduced by later migrations that own their own uuid-PK defaults
The architecture test test_no_compound_boolean_assertions flags 'assert "GRANT " in joined and "modulo_app" in joined' because a failure cannot name which condition broke. Split into two separate asserts so CI's test-suite-quality gate passes.
… secure entity table Align the ORM models to migration 0206_collection_install_tracking so the metadata no longer drifts from the migrated schema (the class of bug the PR-review loop kept re-finding): - CollectionInstall: PK is install_id (not the OrgScoped-inherited id), the table carries created_at only (no updated_at), and FK/CHECK/UNIQUE constraint names match the migration exactly. - CollectionInstallEntity FK now targets collection_install.install_id. - Migration 0206: collection_install_entity gets FORCE RLS with a parent-derived rls_org_isolation policy plus DML grants to modulo_app / modulo_system, so the app role can resolve the parent JOIN and cross-org rows stay scoped. Downgrade drops the policy / disables RLS. - Add ORM-vs-migration conformance assertions to the 0206 unit test.
…r materialize_import)
Reconciles the PR branch with main: main already merged FAR-761's collection_install tracking migration as 0207_collection_install_tracking (and FAR-644's 0206_deleted_defaults_signal_check), so the PR branch's stale 0206_collection_install_tracking copy is dropped and its 0207_community_gate migration is renumbered to 0208_community_gate (down_revision = 0207_collection_install_tracking). Library feature files (install.py/uninstall.py/ collection_install.py model/library.py routes) are merged to keep main's canonical logic plus the FAR-764 community gate (community_sourced/agents_granted columns, grant endpoint, grant service). Migration-chain tests updated to the new 0208 head. Co-Authored-By: Branch Fixer Bot <bot@farnalabs.com>
…-> 0209_community_gate Resolve the migration-number collision with main's 0208_notification_indexes_and_constraint (#337) by renumbering FAR-764's 0208_community_gate to 0209_community_gate and re-parenting it onto the real main head (0208_notification_indexes_and_constraint). This yields a single linear chain head (0209_community_gate) and keeps the migration graph consistent. All head-asserting guardrail tests updated to reference 0209_community_gate / the corrected 0207->0208->0209 chain.
…ma, product-map docs, test style
…ngelog, release-notes, pr-description, triage, license-checker
# Conflicts: # backend/tests/unit/core/test_trigger_streak_engine.py # backend/tests/unit/db/test_eval_suite_run.py # backend/tests/unit/db/test_migration_guardrail_kill_switch.py # backend/tests/unit/db/test_migration_guardrail_trust_pr_b.py # backend/tests/unit/db/test_migration_ongoing_trigger.py # backend/tests/unit/db/test_migration_reconcile_staging_schema.py # backend/tests/unit/db/test_migration_sync_feature_flag_catalog.py # backend/tests/unit/db/test_trigger_event_vocabulary.py
Automated merge-conflict fix (Branch Fixer)Root cause: The PR branch and Fix:
Verification (local): Commit: |
farnalabs
left a comment
There was a problem hiding this comment.
CI is failing on head b8ea770 - blocking until green:
Failing checks (run 34526679067):
- Check migration heads: Alembic migration graph has 2 heads (
0209_collection_install_id_entity_columns,0209_community_gate) - expected 1. Create a merge migration. - Test (Backend): multiple unit tests fail with 'expected a single head, got [0209_collection_install_id_entity_columns, 0209_community_gate]' (test_trigger_streak_engine.py, test_eval_suite_run.py, migration guardrail tests) plus library_service filter/count expectations no longer matching.
- Break-glass deploy gate: psycopg DuplicateColumn errors - column "collection_install_id" of relation "schemas" already exists (test_trigger_streak_engine_sql.py setup). Likely both 0209 migrations adding that column without an intervening migration, so replaying heads applies it twice.
- Integration tests (changed): same DuplicateColumn failures on test_library_collection_lifecycle.py setup.
- BDD (full suite): E2E route coverage gate failed - 9 uncovered routes (/library/:id/create-pipeline, /library/collections/new, /library/collections/:id, /pipelines/:id/editor, /composites/:id/editor, /lifecycle-maps/:id/editor, /admin/runners/concurrency, /environment-profiles/new, /environment-profiles/:id/edit).
Root cause looks like a forked migration graph (two 0209 migrations) that a merge migration should reconcile; fix that first and the integration/Break-glass DuplicateColumn failures should clear.
modulo-reviewbot
left a comment
There was a problem hiding this comment.
Blocking findings — CHANGES_REQUESTED
The pipeline review node evaluated the diff at head b8ea770 and returned CHANGES_REQUESTED. The following must be resolved before merge:
- Migration heads conflict: Alembic migration graph has 2 heads (0209_collection_install_id_entity_columns, 0209_community_gate), expected 1 — create a merge migration.
- Unit tests (Backend) fail: "expected a single head, got [0209_collection_install_id_entity_columns, 0209_community_gate]" (test_trigger_streak_engine.py, test_eval_suite_run.py, migration guardrail/reconciliation tests), plus tests/unit/library_service/test_library_service.py filter and community_primitives_count expectations mismatch.
- Break-glass deploy gate: psycopg.errors.DuplicateColumn — column "collection_install_id" of relation "schemas" already exists in test_trigger_streak_engine_sql.py setup; the forked 0209 migrations likely both add the column.
- Integration tests (changed): same DuplicateColumn failures at setup of tests/integration/test_library_collection_lifecycle.py round-trip/install/grant tests.
- BDD (full suite): E2E route coverage gate failed — 9 uncovered routes: /library/:id/create-pipeline, /library/collections/new, /library/collections/:id, /pipelines/:id/editor, /composites/:id/editor, /lifecycle-maps/:id/editor, /admin/runners/concurrency, /environment-profiles/new, /environment-profiles/:id/edit.
Formal decision posted by post-decision node.
…d 0209_collection_install_id_entity_columns The 0210_community_gate.py migration declared revision='0209_community_gate' with down_revision='0208_notification_indexes_and_constraint', colliding with main's 0209_collection_install_id_entity_columns (also a child of 0208). That produced two Alembic heads and broke the migration-heads check. Renumber the revision id to 0210_community_gate and chain it off the real main head 0209_collection_install_id_entity_columns so the graph has a single head.
Automated fix: migration-heads collision (FAR-787 community_gate)The
That made it a second child of FixRenamed the revision id to
Updated the docstring's "Revises:" line to match. Verification
No product/test deletions — the colliding migration was re-parented, not removed. |
…d column Migration 0209 re-adds collection_install_id to schemas/agents/pipelines via non-idempotent op.add_column, but 0207_collection_install_tracking already creates that column (IF NOT EXISTS) on a fresh DB. Running 'alembic upgrade heads' then fails with 'column collection_install_id already exists', breaking the integration-test shared-DB migration step. Add inspect-based existence checks so the column/index are only created when absent (mirrors the fix on main in #355).
Automated fix: 0209 idempotent to resolve DuplicateColumn migration failureFailure: The Root cause: Migration Fix: Reworked Commit: |
… 0210 chain - Replace branch's non-idempotent 0209_collection_install_id_entity_columns with main's idempotent version. Migration 0207 already adds collection_install_id with IF NOT EXISTS, so the non-idempotent add_column raised 'DuplicateColumn: column collection_install_id of relation schemas already exists' on a fresh DB (the BDD pre-deploy migration run). - Fix 0210_community_gate: its revision was wrongly '0209_community_gate' and its down_revision pointed at 0208, creating two 0209 heads off 0208 (the collision that the migration tests assert against). Correct to revision '0210_community_gate' chaining off 0209_collection_install_id_entity_columns, restoring a single linear head (0208 -> 0209 -> 0210) as test_migration_reconcile_staging_schema and test_eval_suite_run expect.
Automated fix: migration collision on deliver/FAR-787CI failed in the BDD pre-deploy migration run with: Root causeThis branch had a migration-graph collision off
Fix (commit 1a14a0e)
Note: origin already carried two near-equivalent fix commits ( |
farnalabs
left a comment
There was a problem hiding this comment.
Changes requested: CI is failing on head commit 7527a34. Failing checks: Test (Backend) (failure), BDD (full suite) (cancelled). Please fix the backend test failures (the BDD full-suite run was cancelled downstream of it) and re-push; the PR will be re-reviewed once CI is green.
modulo-reviewbot
left a comment
There was a problem hiding this comment.
Review decision: CHANGES_REQUESTED
Blocking findings from the pipeline (PR #358, head SHA 7527a34):
- CI failure: "Test (Backend)" failed on commit 7527a34; the "BDD (full suite)" job was cancelled downstream of the backend test failure. A red CI gate blocks merge.
- High-risk surface: changed files include
backend/src/modulo/core/pipeline_engine/executor.pyandbackend/src/modulo/core/pipeline_engine/node_runner.py, which match the high-risk registry globbackend/src/modulo/core/pipeline_engine/**. These changes must be reviewed against the high-risk criteria once CI is green.
The review node did not perform a code review beyond the CI gate. Please fix the failing backend tests, get CI green, and re-request review.
farnalabs
left a comment
There was a problem hiding this comment.
Review feedback (head 8a99e60): CHANGES_REQUESTED — CI red.
Test (Backend) failed at this commit (and BDD (full suite) was cancelled downstream), so the merge gate is blocked. Root cause from the log:
tests/unit/library_service/test_library_service.py::test_filter_modulo_by_type,...test_filter_modulo_multi_type,...test_community_primitives_countexpect the old community slugs (e.g.prd-ingestion-*,incident-readiness), but the PR adds 6 new collection bundles tobackend/src/modulo/core/library_service/_seed_data.py, so the seeded community set no longer matches those hardcoded expectations (AssertionError at lines 151/173/241).
Fix: update tests/unit/library_service/test_library_service.py to expect the expanded seed set (verify the new slugs are the intended ones), then re-run CI and re-request review. Migration-chain fixes (0209 idempotency, 0210 chaining) look reasonable and Check migration heads is green. The other 12 checks pass.
modulo-reviewbot
left a comment
There was a problem hiding this comment.
PR #358 — CHANGES_REQUESTED (formal review from PR Reviewer post-decision node)
Blocking findings (carried from the review node's decision):
backend/src/modulo/core/library_service/_seed_data.py— adding 6 new collection bundles changes the seeded community primitive set, breaking downstream module-count/tag-type test expectations.backend/tests/unit/library_service/test_library_service.py(lines 151/173/241:test_filter_modulo_by_type,test_filter_modulo_multi_type,test_community_primitives_count) — these hardcode the old slugs (prd-ingestion-*,incident-readiness) and now fail in CI; update them to the expanded seed set.
Context: CI is failing at head 8a99e60f — "Test (Backend)" failed and "BDD (full suite)" was cancelled downstream. The migration-chain fixes (0209 idempotency, 0210 chaining) look correct — "Check migration heads" is green.
Note: the policy-router flagged high-risk paths (pipeline_engine changes); this decision is posted as delivered by the pipeline.
The library seed data grew (FAR-787 + FAR-757 bundles), so GET /api/v1/libraries now returns 42 primitives total instead of the stale hard-coded 22. Update the browsing feature assertion in place to the new deterministic count.
farnalabs
left a comment
There was a problem hiding this comment.
CI is failing on head commit e758521 (Test (Backend) check_run concluded with failure on this SHA: https://api.github.com/repos/farnalabs/modulo/commits/e758521b35688d37cf6c83de9124656dc811214e/check-runs). Please fix or re-run the failing backend tests; a full review will follow once CI is green. Mergeability vs main is currently OK.
modulo-reviewbot
left a comment
There was a problem hiding this comment.
Blocking findings on head SHA e758521:
-
CI: Test (Backend) check run concluded 'failure' on head SHA e758521 (failing check: Test (Backend)). Fix or re-run before re-review.
-
HIGH-RISK path: backend/src/modulo/core/pipeline_engine/executor.py and backend/src/modulo/core/pipeline_engine/node_runner.py match glob 'backend/src/modulo/core/pipeline_engine/**' in .github/high-risk-paths.yaml (main). Diff is mixed (non-test production code); no test deletions or skip/xfail additions detected; registry file unchanged; registry read from main succeeded.
…ve set The branch adds new agent, pipeline_template, and library_collection primitives to the Modulo library (_seed_data.py). Update _EXPECTED_MODULO_SLUGS to match the actual library contents (total 39 modulo + 3 community = 42, consistent with the BDD browse-library total), fixing the stale snapshot assertions in test_filter_modulo_by_type, test_filter_modulo_multi_type, and test_community_primitives_count.
Automated fix: library snapshot test out of sync with expanded Modulo libraryRoot cause. The branch adds a batch of new built-in Modulo primitives to
The snapshot test Fix. Updated Verification. Commit. |
farnalabs
left a comment
There was a problem hiding this comment.
Blocking issues detected at head 6be8d25:
- CI failure: check 'Test (Backend)' completed with failure. Please fix the failing backend tests.
- Mergeability: PR has merge conflicts with main - please rebase/merge main and resolve conflicts.
Once CI is green and the PR is mergeable, re-review will be triggered.
modulo-reviewbot
left a comment
There was a problem hiding this comment.
Blocking findings from the review pipeline for PR #358 (head 6be8d25):
- CI: Test (Backend) check failed on head 6be8d25 — fix failing backend tests before merge.
- Mergeability: mergeable=false — PR has merge conflicts with main; rebase/merge origin/main and resolve conflicts.
The pipeline decision is CHANGES_REQUESTED; merge is blocked until these are resolved.
…connector testids in product map Add the two static data-testids shipped by CollectionDetailView.vue to the manifest.yaml elements inventory for /library/collections/:id so test_mapped_route_elements_cover_owning_view_testids passes.
Automated fix: product-map consistency testRoot cause: Fix: Added both Verified: Commit: |
|
Branch Fixer — product-map testid fix (already on branch) CI failure This is now fixed on the branch by commit cc6ce7d (the two testids added as |
# Conflicts: # backend/src/modulo/core/library_service/install.py # backend/src/modulo/db/migrations/versions/0209_collection_install_id_entity_columns.py # backend/tests/unit/api/test_library_collection.py # backend/tests/unit/core/test_trigger_streak_engine.py # backend/tests/unit/db/test_eval_suite_run.py
Automated merge-conflict resolution (Branch Fixer)Commit Conflicts resolved (all kept the PR-branch side, which carries the FAR-787 feature work; main's changes in these regions were comment-only diffs):
Verified: Note: the sandbox's global pre-commit hook invoked |
farnalabs
left a comment
There was a problem hiding this comment.
Review feedback for head 264bc8e (feedback only — the formal decision is posted by the post-decision node).
BLOCKING: Test (Backend) is red on this head — 3 failures in tests/unit/db/test_migration_0209_collection_install_id_entity_columns.py (TestNoAddColumnRegression::test_upgrade_never_adds_collection_install_id_column, TestNoAddColumnRegression::test_upgrade_creates_index_if_not_exists_per_table, TestSqliteParityPath::test_no_role_ceremony_on_sqlite), all with "AttributeError: _Recorder object has no attribute add_column" at 0209_collection_install_id_entity_columns.py:113. The migration now conditionally calls op.add_column, but the test _Recorder double only implements execute() and its module docstring still pins the OLD contract ("0209 must NOT attempt op.add_column for that column"). Code and pinned regression contract now disagree; the pinned contract wins and CI is red. Fix one side coherently: either extend the _Recorder (and inspect-based bind mock) to support add_column/create_index and update the assertions to the new conditional-add contract, or revert the add_column path if 0207 truly always owns the column.
Also worth cleaning up: backend/tests/unit/db/test_migration_0194_uuid_pk_server_defaults.py now defines _POST_0194_TABLES twice (identical frozenset + identical comment block, second shadows the first) — looks like a merge-conflict resolution artifact; dedupe.
The rest of the diff looks coherent: 20 new seed primitives with matching expectation updates (unit _EXPECTED_MODULO_SLUGS, BDD 22→42 count), the 6 new bundle pins resolve (pinned by new TestAllBundlePinsResolve), integration lifecycle suite covers install/uninstall/re-install round-trips, and docs/manifest product-map registration addresses the earlier E2E route-coverage gap.
modulo-reviewbot
left a comment
There was a problem hiding this comment.
Review decision: CHANGES_REQUESTED
Post-decision review for PR #358 (branch deliver/FAR-787, head SHA 264bc8ef9d28544d70333e2f4b19c6b248058e0d).
The pipeline review node flagged blocking findings. CI gate is RED on head — Test (Backend) fails with 3 failures.
Blocking findings
-
Migration 0209 contract/recorder mismatch (CI failing).
backend/src/modulo/db/migrations/versions/0209_collection_install_id_entity_columns.pynow conditionally callsop.add_columnwhencollection_install_idis missing (line 113), but the_Recordertest double inbackend/tests/unit/db/test_migration_0209_collection_install_id_entity_columns.pyonly implementsexecute(), so 3 tests fail on CI withAttributeError: '_Recorder' object has no attribute 'add_column'. The module docstring also still pins the old contract "0209 must NOT attempt op.add_column". Update the test recorder/mocks and assertions to the new conditional-add contract (or revert the add_column path) so code and the pinned regression contract agree. -
Duplicated test fixture (merge artifact).
backend/tests/unit/db/test_migration_0194_uuid_pk_server_defaults.py:_POST_0194_TABLES(and its explanatory comment block) is defined twice identically — the second definition shadows the first; looks like a merge-conflict resolution artifact. Deduplicate.
Non-blocking notes
_seed_data.pyadds 20 new seed primitives (6 library_collection bundles + 10 agents + 7 pipeline templates + connectors); pin-resolution integrity is covered by the newTestAllBundlePinsResolveintests/unit/api/test_library_collection.py. Note someconnector_type_refsentries are dicts ({'connector_type': ...}) while adjacent entries are plain strings ('github') — verify the consumer normalizes both shapes.test_trigger_streak_engine.py/test_eval_suite_run.pycomment/assertion updates are consistent with "Check migration heads" being green.- New DB-backed integration lifecycle suite (
test_library_collection_lifecycle.py) with testcontainers Postgres is appropriate coverage. frontend/src/manifest.yaml+docs/product-mapregister feat-library-collections, resolving the prior E2E route-coverage-gap finding.- Mergeability is OK (
mergeable=true); all other checks green (Lint, Frontend/WCAG, BDD, Integration, migration heads, deploy gate).
Once the migration 0209 recorder/contract issue and the duplicated _POST_0194_TABLES are fixed, this is ready to re-review.
Branch Fixer: Test (Backend) failure on PR #358Root cause. The failing job The migration Fix. Repaired the test in place to match the migration's real behaviour:
All 5 tests in the file pass locally; pre-commit hooks (ruff, ruff-format, Commit: |
farnalabs
left a comment
There was a problem hiding this comment.
Review feedback (pre-decision): (1) CI check 'Test (Backend)' is FAILING on head 7eea8e6 — must be green before merge. (2) PR has merge conflicts with main (mergeable=false, state=dirty) — rebase/merge origin/main and resolve conflicts. Fix both and the PR will be re-reviewed.
modulo-reviewbot
left a comment
There was a problem hiding this comment.
Changes requested
Blocking findings on head 7eea8e6729a3eeab689a825ce7264f6608bbf28b:
- CI failure: The
Test (Backend)check concluded with failure on head7eea8e6729a3eeab689a825ce7264f6608bbf28b. CI must be green before merge. - Merge conflicts: The PR has merge conflicts with
main(mergeable=false, state=dirty). Conflicts must be resolved before merge.
All other checks passed or were skipped by design (BDD full suite, Integration (changed), Lint, Schema freshness, Secret scan, WCAG, migration heads, harness).
Please address the above and re-run CI so the PR can be re-reviewed.
Resolves the test_no_empty_container_literal_equality architecture lint failure on PR #358. rec.added_columns is an attribute, so 'assert rec.added_columns == []' is flagged; 'assert not rec.added_columns' expresses the same intent without the empty-container literal comparison.
Automated fix: empty-container literal comparison in migration 0209 testCI failure: the
Fix (commit Scope: single-line change in the test only — no product code, no migration, no other tests touched. All cross-platform pre-commit hooks (ruff, ruff-format, bandit, gitleaks, etc.) pass on the commit. |
|
Branch Fixer — CI: Fast Validation failure The architecture lint Fix (commit CI was already green on BDD/E2E; I re-triggered |
# Conflicts: # backend/src/modulo/core/library_service/_seed_data.py # backend/tests/bdd/features/library/browse.feature # backend/tests/unit/api/test_library_collection.py # backend/tests/unit/db/test_eval_suite_run.py # backend/tests/unit/library_service/test_library_service.py
Merge-conflict resolution: merged
|
Merge conflict resolved — branch is now mergeableThe Key resolution points:
Backend |
farnalabs
left a comment
There was a problem hiding this comment.
Review feedback (head 14ecc4f, non-blocking)
CI is still pending on this head; earlier blockers (CI failure + merge conflicts) appear resolved via the fix pushes and origin/main merges.
Findings:
- Migration 0209: the column_present=False branch (op.add_column on a prod DB whose 0207 predates the column) and the index_present=True skip branch are not covered by unit tests — consider a test asserting add_column IS called when the column is absent (and runs under SET ROLE), so both idempotency branches stay guarded.
- Downgrade still only drops the index; if 0209 itself added the column (missing-column case), downgrade leaves it behind. Harmless (nullable, comment updated), but the down-migration no longer reverses exactly what upgrade did.
- backend/tests/unit/db/test_eval_suite_run.py: the comment attribution for 0209 was changed from (#352) to (#337); 0209_collection_install_id_entity_columns was introduced by #352 — suggest reverting that comment edit.
- Seed publishing was changed from a pinned last-element to a loop over all library_collection entries — verified all 7 collections (github-pr-reviewer + 6 new) are now published, matching the BDD count 24 → 42 and the updated _EXPECTED_MODULO_SLUGS.
API/contract checks: no frontend or wire-shape changes (backend seed/tests only). Pin resolution across all 6 bundles verified in TestAllBundlePinsResolve.
modulo-reviewbot
left a comment
There was a problem hiding this comment.
Post-decision review — APPROVE
Decision source: policy-router (low-risk) + review node. Low-risk: registry parsed OK, no file matches auth/rls/hitl_manager/audit_logger/connectors/pipeline_engine/workflows globs, no test deletion/skip/xfail additions. Head SHA 14ecc4f1b3fc79389fa989662f2f83d8f9d80a12 is mergeable; the prior CHANGES_REQUESTED (CI failure + merge conflicts) is addressed.
Review node key findings:
- 6 FAR-787 library bundles add 18 seed primitives (FAR-781..786); all
manifest_pins(incl. pr-review-decision, pr-review-agent) resolve to existing slugs. - Library publishing now explicitly loops over all 7
library_collectionentries (was a pinned last-element). - Migration 0209 idempotently adds
collection_install_idvia inspector check;SET ROLEceremony wraps add_column/create_index; index still created. - Seed-count tests updated (24 -> 42), expected-slug lists extended, BDD count matches seed, integrity tests cover bundle existence, pins, prompts, graph, connectors, trust headers.
Non-blocking minor comments: missing positive coverage for column-absent / index-present branches of 0209; downgrade leaves a 0209-added column behind (nullable, harmless); probable #352->#337 mis-attribution in a migration-chain comment.
Verdict: APPROVE
# Conflicts: # backend/tests/unit/db/test_eval_suite_run.py
Branch Fixer: merge-conflict resolutionResolved the merge conflict that was blocking PR #358 ( What changed
Verification
The branch is now MERGEABLE. |
|


