[ticket-075] fix(ticket-075): ignore remediation projections in communication - #90
Conversation
There was a problem hiding this comment.
Deterministic Validator approval for exact head 9979cb280533d098a1191dc29de5626e24c12c88.
Ticket: ticket-075
Correlation ID: todo2code-pr-90-ticket-075
Model: openrouter/z-ai/glm-5.2
Reviewed diff chunks: 4
Advisory LLM verdict: REQUEST_CHANGES
Advisory summary: Reviewed all 4 diff chunk(s). This chunk adds ticket-075 metadata and documentation files describing a bounded fix to prevent generated remediation projection files (*.task.md, *.todo.md) from being misclassified as participant communication. The documentation is consistent and well-structured. No source code changes are visible in this chunk (those appear in later chunks). All test checks in test_results_data are PASS or SKIPPING with no failures. | This chunk refactors the communication extractor to introduce CommunicationCandidate and CommunicationAttribution interfaces and a helper-based flow, and adds ticket-075 governance evidence/metadata. The visible code is an intentional partial chunk of a larger refactor. No security issues, secrets, or dangerous operations are present. Test results show verify PASS and code-review PASS. | This chunk refactors the communication extractor into smaller, well-named helper functions (loadCommunicationCandidate, convertCommunicationCandidate, resolveAttribution, etc.), improving readability and separation of concerns. The structure is reasonable and the logic appears to preserve prior behavior. However, there is a notable change in the candidate-filtering logic via shouldIgnoreCommunicationCandidate that warrants scrutiny: when there is no explicit envelope, no requested ticket, no identity registry, and the path does not look like a ticket, candidates are ignored unless they have an inferred role. This is a behavioral gate that could suppress previously extracted communications if the inference logic differs from the prior inline path. Without the full context of InferredCommunicationIdentity and looksLikeTicket, it is hard to fully verify, but the added complexity is a potential regression risk. No security issues observed. Tests pass per provided results. | Communication extractor additions build records with identity metadata, tighten envelope parsing (malformed detection), validate timestamps against ISO 8601, support JSON list values, and treat generated task/TODO projections as evidence unless explicit front matter opts in. Tests cover the evidence filtering, explicit opt-in ingestion, malformed envelopes, and invalid timestamps. All checks in test_results_data are PASS or SKIPPING.
Advisory findings: LLM verdict was REQUEST_CHANGES
The LLM output above is advisory and was not used as the approval trust root.
Merge was not requested or performed.
Decision record (recomputable)
DECISION D-075-5095
TICKET ticket-075
HEAD_SHA 9979cb280533d098a1191dc29de5626e24c12c88
CORRELATION_ID todo2code-pr-90-ticket-075
ACTOR agent:ifuri-validator-agent[bot]
APPLIED_RULE P-CORE-015
INPUT author_login = "tom-sapletta-com"
INPUT observed_checks = ["koru / code-review=PASS","governance=SKIPPING","Live OpenRouter contract (opt-in)=SKIPPING","verify=PASS","Java adapter (JDK 17 required)=PASS","governance=SKIPPING","Live OpenRouter contract (opt-in)=SKIPPING","verify=PASS","Java adapter (JDK 17 required)=PASS"]
INPUT required_checks = ["verify","Java adapter (JDK 17 required)","koru / code-review"]
INPUT required_checks_source = "env/request"
INPUT reviewer_login = "ifuri-validator-agent[bot]"
VERDICT APPROVE AUTHORITY DETERMINISTIC
REJECTED REQUEST_CHANGES BECAUSE NO_UNSAFE_CHANGE_REASON_FOUND
ADVISORY llm_verdict = "REQUEST_CHANGES" MODEL "openrouter/z-ai/glm-5.2"
ASSERT VERDICT_AUTHORITY != "ADVISORY"
Created by governed goal -a pull-request delivery.