Tasks: make the notification/escalation mechanism coherent
Phase 3 of 3 (requirements → design → tasks).
Provenance note (paper trail): authored retroactively during PR #83 review (see requirements.md). All tasks below shipped in PR #83's single commit; checkmarks reflect the delivered state, and each task's proof is listed as executed.
Task list
- [x] 1. Author
collaborators.schema.json+ rewritetemplates/collaborators.yaml$defs/collaborator+$defs/notificationChannel(per-user/per-channel enabled,type: slack,via: mcp|cli|api, slackchannel-list)- Depends on: none — Requirements: R1
- Test:
scripts/validate_config.pyvalidates.the-loop/collaborators.yaml+ template against the new schema (run: VALID)
- [x] 2. Rename plugin config →
harness-config.{yaml,schema.json}(repo + template), droppersonas/messaging, addnotifications.events(harness taxonomy → roles), updatex-onboarding- Depends on: 1 — Requirements: R2, R4
- Test:
scripts/validate_config.py(run: VALID both files)
- [x] 3. Migrate this repo's own
personasentry into a real.the-loop/collaborators.yaml(dogfooding; notificationsenabled: falseuntil a channel-list is filled)- Depends on: 1, 2 — Requirements: R1
- Test:
scripts/validate_config.py(run: VALID)
- [x] 4. cli-config: add
collaboratorsvia cross-file$ref+ daemon-sidenotifications.events; extend repo copy + template- Depends on: 1 — Requirements: R3
- Test: ref-store probe — valid collaborator accepted, entry missing
rolesrejected through the$ref(run: passed);scripts/validate_config.py(VALID)
- [x] 5.
scripts/validate_config.py: third schema target + local ref store;hooks/hooks.json+ CI json-sanity list updated- Depends on: 1, 2, 4 — Requirements: R1.5, NFR
- Test:
make validate(run: 6× VALID)
- [x] 6.
scenarios.py: readharness-config.yamlwith pre-rename fallback- Depends on: 2 — Requirements: R4.3
- Test:
cli/tests/test_cli.py::test_load_config_globs_prefers_harness_config_with_config_yaml_fallback(red→green; run: passed)
- [x] 7. Rename sweep through living files only (commands, skills, README, CLAUDE.md, docs site, capability docs, manifest); historical records untouched
- Depends on: 2 — Requirements: R4.1
- Test:
grepaudit — zero straypersonas/messaging/config.yamlrefs in living files (run: clean);markdownlint(run: 0 errors)
- [x] 8. Migration path:
manifest.deprecatedentries +upgrade-the-loop.mdmigration section;collaborators.yaml→managed: true- Depends on: 2, 3 — Requirements: R4.2
- Test: manifest YAML parses; upgrade doc names every moved key (reviewed)
- [x] 9. Paper trail + docs: decision-035 (+ index),
collaboration.mdrewrite,docs/reference/configuration.md,cli/README.mdconfig tables,docs/capabilities/cli.mdhistory- Depends on: 1–8 — Requirements: R1–R4
- Test:
markdownlint(run: 0 errors)
- [x] 10. Full gate:
make check- Depends on: all — Requirements: NFR
- Test: ruff + markdownlint + ruff-format + pyright + validate + pytest (run: 257 passed)