A teammate’s pull request adds copyService for the search split: it copies a service’s rules with copyRules and its inhibitions with them. Checkout mutes its latency pages while its own error rule fires, and while the infrastructure team’s datacenter rule (infra/dc-down) fires. You are reviewing the pull request.
An inhibition that points at a rule that does not exist mutes nothing: search pages through every datacenter outage. An inhibition that points at the wrong service mutes the wrong pages, silently. If copying changes the source, checkout’s own pages go wrong the moment search is created.
Reproduce
Copy checkout to search. Search’s latency should be muted while search/errors or infra/dc-down fires; checkout’s own links should be unchanged. Run the sample and compare.
Acceptance criteria
- An inhibition between two rules of the copied service points at their copies.
- An inhibition that names a rule outside the service still names that same rule.
- Copying a service leaves the source service exactly as it was, links included, however many times it is copied.
- Everything earlier levels required still holds for the copied rules.
Notes
- Cases print a service’s links as name: mute while firing, …, and its rules as describe prints them, joined by “ | ”.
- Keep copyService’s name and signature, and Service and Inhibition’s fields; the checker builds checkout with checkoutService.
- Rust: the pull request’s copy of the list is already its own (clone is the only way to get one from a borrowed service), so only the relinking needs a fix there.