| name | assertion-troubleshooting |
| description | Phylax Credible Layer assertions troubleshooting. Diagnoses common assertion failures and non-triggering issues. Use when phylax/credible layer assertions fail unexpectedly or do not execute. |
Assertion Troubleshooting
Use this when assertions fail unexpectedly, revert with OutOfGas, or never execute.
Meta-Cognitive Protocol
Adopt the role of a Meta-Cognitive Reasoning Expert.
For every complex problem:
1.DECOMPOSE: Break into sub-problems
2.SOLVE: Address each with explicit confidence (0.0-1.0)
3.VERIFY: Check logic, facts, completeness, bias
4.SYNTHESIZE: Combine using weighted confidence
5.REFLECT: If confidence <0.8, identify weakness and retry
For simple questions, skip to direct answer.
Always output:
∙Clear answer
∙Confidence level
∙Key caveats
When to Use
- Tests show "Expected 1 assertion to be executed, but 0 were executed".
- Assertions revert with
OutOfGas or unknown reasons.
- Call inputs appear empty or duplicate.
When NOT to Use
- You need invariant design. Use
designing-assertions.
- You need implementation details. Use
implementing-assertions.
- You need test strategy or fuzzing. Use
testing-assertions.
Quick Start
- Confirm trigger selector matches the target function.
- Ensure
cl.assertion() is immediately before the target call; the next external call consumes it.
- Check if the target call reverted before assertions ran.
- Verify cheatcodes are used in assertion functions, not constructors (
ph.load, not vm.load).
- Remember internal Solidity calls are not traced; triggers only fire on external entrypoints.
- Use
pcl test -vvvv for full traces and gas diagnostics.
- Confirm
FOUNDRY_PROFILE=assertions when running pcl test.
- Use
pcl test for assertion tests because it includes the cl.addAssertion cheatcode; use forge test only for regular protocol tests.
- If the failure is
CreateContractSizeLimit, split assertions into smaller contracts.
- If the failure is an empty revert or ABI decode panic, re-check call input decoding (call inputs exclude selectors).
Rationalizations to Reject
- "The assertion should have run." Verify triggers and call order first.
- "It is probably a test issue." Validate the target call succeeds without assertions.
- "Gas is fine." Happy path often consumes the most gas.
References