chore(sync): develop → main — GT-654 and GT-655 closed - #434
Merged
Conversation
…bound (#433) * feat(core): every surface answers /health in one shape, and three orphan operations get bound GT-654. The three services of one product answered /health in three shapes, and the verdict literal differed in case as well. The row was registered as a decision — and measuring it collapsed the decision: NOTHING reads the body. Helm probes use httpGet, the Dockerfiles use `curl -f`, k6 checks `r.status === 200`, RoboSoft checks `hr.ok`. The caution the row carried, "the probes are configured against a shape", was wrong. All three now emit the ADR-0073 envelope with `OK`. mcp routes its three probes through `success()` from `common/envelopes` — the helper every tool result on that surface already used, with only health outside it. agent-runtime builds the envelope in its controller. core-api was already enveloped by its global interceptor. Guard 62 keeps a fourth shape from landing, with 8 unit tests, watched failing on a bare object, a missing schemaVersion, and a lowercase verdict inside an otherwise correct envelope. Its first version scanned raw text and flagged the handler's own header, which documents the shape it replaced — the second time this wave a guard fired on its own documentation, so comments are stripped and a test pins it. GT-655. `pattern-list`, `pattern-get` and `pattern-list-by-topology` are declared on all three surfaces and were invoked by nothing; they now carry bindings. Executed operations 48 -> 51, surface invocations 66 -> 75, and `uncoveredTriangleOps` drops from four entries to one. Binding them reported two divergences and BOTH were the instrument: the first run had `pattern-get` failing on all three surfaces with three different error codes and `pattern-list-by-topology` disagreeing with MCP. Both were defects in the bindings just written — `cqrs` is not a pattern id (they are `PAT-0001`…) and the MCP tool takes `topology`, not `topologyId`. Corrected against the real catalog and the real tool schema, the suite reports zero findings. Fourth time in this wave that a reported divergence belonged to the measuring instrument. `satellite-create` stays unbound ON PURPOSE, with the reason where the next reader looks: it provisions a live GitHub repository and writes the local registry, so binding it as-is would have CI create real repositories on every run — a test that damages the world it measures. `uncoveredTriangleOps` keeps listing it rather than the exemption being silent. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * docs(gaps): close GT-654 and GT-655 with their evidence Closure records stamped with the commit that carries the change, plus the derived chain regenerated: maturity reconciled, executive summary at a fixed point, and the E2E scenario board re-rendered — it now shows one uncovered operation instead of four, and zero findings. Both rows carry what the wave taught rather than only what it did: GT-654 records that the caution it was registered with was wrong. Measuring who reads /health turned an open decision into a forced one — nothing reads the body, so unifying on the envelope broke no consumer. GT-655 records that binding three orphan operations produced two divergences that were both defects in the bindings themselves, and that `satellite-create` stays exempt with its reason in `bindings.ts` rather than silently absent. Board 637 -> 639 done, 6 -> 4 pending, both languages. Guards: 08 (653 gaps, 629/629 sections, 621 closure records), 42 (75 classified), 43 (51/51 red on the empty fixture), 46 fixed point, governance 17/17. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> * fix(gaps): CI found a consumer this survey had missed, and an evidence path that cannot resolve Two failures, both mine, both the kind a local green cannot show. The claim "nothing reads the /health body" was checked against the Helm probes, the Dockerfiles, k6 and RoboSoft — and missed `src/sdk/cli/examples/mcp-test.js`, which asserted a bare `body.status === 'ok'`. CI failed with exactly that: `/health: body.status was undefined`. The decision stands, because a test asserting a shape is what gets updated when the shape changes deliberately, and it now asserts `data.status === 'OK'` plus `success === true`. What does not stand is the strength of the claim, so the catalog now says "almost nothing" and names both consumers, including the one this survey missed. GT-655's closure listed `src/tests/exploration/.out/coverage.json` as evidence. That path is GITIGNORED — it exists on this laptop and in no clean checkout, so `08-validate-tracking` failed on a fresh runner while passing here. Evidence is now the tracked `bindings.ts` and the parity matrix; the coverage numbers stay checkable because the validationCommand regenerates the file and then asserts 51 executed and one uncovered. That is the second time this session a local green came from gitignored state, and it is written in this repository's own feedback that it would. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
📊 Bilingual Coverage ImpactPR Changes
Repository Coverage
✅ Good: All EN changes have ES counterparts. Generated by GitHub Actions |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Brings #433 to
main.GT-654 — the three surfaces now answer
/healthin the ADR-0073 envelope withOK. The row was registered as a decision, and measuring who reads the body collapsed it: the Helm probes usehttpGet, the Dockerfilescurl -f, k6 checksr.status, RoboSoft checkshr.ok. Guard 62 keeps a fourth shape from landing.GT-655 —
pattern-list,pattern-getandpattern-list-by-topologyare bound and invoked on all three surfaces (executed 48 → 51, invocations 66 → 75).satellite-createstays exempt with its reason inbindings.ts: it provisions a live GitHub repository, so binding it would have CI create real repos on every run.Two corrections CI forced, both recorded in the catalog rather than quietly fixed: the "nothing reads the body" claim missed
examples/mcp-test.js, and GT-655's closure listed a gitignored evidence path that cannot resolve on a clean checkout.Board 637 → 639 done, 6 → 4 pending.
🤖 Generated with Claude Code