Tasks: one Slack surface, two identity allow-lists
Phase 3 of 3. Small, verifiable tasks; each
_Test:_names a row oftesting-plan.md.
Task list
[x] 1. Retire the collaborator notification shape in the schema
.the-loop/collaborators.schema.json: drop$defs/notificationChannelandcollaborator.notifications; rewrite the file description, thecollaboratordescription and therolesdescription so none of them describes delivery.- Depends on: none
- Requirements: R1.1, R1.3
- Test:
T1
[x] 2. Retire the CLI config's collaborators/notifications blocks in the schema
.the-loop/cli-config.schema.json: drop both top-level properties.- Depends on: none
- Requirements: R2.1
- Test:
T2, T5
[x] 3. Name the replacement when a retired key is refused
cli/the_loop/configschema.py:RETIREDtable + the normalise-and-look-up in_check_object's unknown-key branch.- Security-relevant (abuse case A2): the message is the mitigation for silent drop.
- Depends on: 1, 2
- Requirements: R1.2, R2.2
- Test:
T1, T2
[x] 4. The fifth retirement in the migration ledger
cli/the_loop/migrations.py:CURRENT_CONFIG_VERSION→0.6.0; site constant,needs_migrationprobe,assert_currentrefusal,migrate_cli_configremoval + note.- Security-relevant (abuse cases A1, A3): the probe is by key, not by version, and the removal touches only the two named top-level keys.
- Depends on: 2
- Requirements: R2.2, R3.1, R3.2, R3.3, R3.4
- Test:
T3, T4
[x] 5. Copy the schemas into the package
cli/the_loop/schemas/{cli-config,collaborators}.schema.json: byte-identical.- Depends on: 1, 2
- Requirements: NFR1
- Test:
T8
[x] 6. Clean the shipped templates and this repo's own configs
skills/the-loop/templates/{cli-config,collaborators}.yaml,.the-loop/cli-config.yaml(version0.6.0),.the-loop/collaborators.yaml— commented examples included.- Depends on: 1, 2
- Requirements: R4.1
- Test:
T9
[x] 7. Tests
cli/tests/test_configschema.py,cli/tests/test_migrations.py,cli/tests/test_core_config.py: the refusals, the round trip, the allow-list assertions, and the two re-pointed$refassertions.- Depends on: 3, 4
- Requirements: every R
- Test:
T1–T5
[x] 8. Docs: stop promising per-collaborator delivery
skills/the-loop/reference/collaboration.md,docs/config/cli/observability-options.md,docs/config/cli/index.md,docs/config/harness-config.md,commands/upgrade-the-loop.md.- Depends on: 2
- Requirements: R4.2, R4.4
- Test:
T8, T10
[x] 9. Capability doc + history row
docs/capabilities/channels.md.- Depends on: 8
- Requirements: R4.3
- Test:
T10
[x] 10. Verify
- Full
pytest,ruff,pyright,scripts/validate_config.py, markdownlint; record inevidence/verification.mdand completetesting-plan.md. - Depends on: 1–9
- Requirements: NFR1, NFR2
- Test:
T6, T7, T8, T9, T11
- Full