fix: address Copilot review round 3 on #2248
Two live findings. The review ran against 4fa00d1c — the commit before the
round-2 fixes — so its other three were re-reports of already-fixed issues,
verified present at HEAD rather than re-fixed.
**The TUI printed "Conformance: conforms" directly above "Verification
FAILED".** Self-contradictory in the one place a reader looks for a verdict:
the static checks pass on a skill whose advertised digest is well-formed,
while its bytes do not hash to it. The heading is now "Listing checks", which
names what the section covers — the checks against the entry the listing
returned, which say nothing about the bytes served. Same problem, and the
same resolution, as the web screen's "No structural issues".
**The test-server guide claimed every result carries the full modern
envelope**, which the new directory handler made untrue: `readDirectoryPage`
deliberately emits `resultType` alone, because SEP-2640 states the caching
attributes for a modern `skills/list` and says nothing of the kind here, and
its one worked example carries `resultType` only. The claim is narrowed to
the two `skills/*` results and the exception is documented as the deliberate
choice it is.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ND46Ci64DC3tzBy9aG81Nc
Signed-off-by: cliffhall <cliff@futurescale.com>
This commit is contained in:
parent
033600e4ca
commit
6b83727332
2 changed files with 50 additions and 9 deletions
|
|
@ -141,6 +141,28 @@ describe("SkillsTab (#2248)", () => {
|
|||
expect(frame).toContain("! gen");
|
||||
});
|
||||
|
||||
it("does not claim the listing conforms while verification is failing", async () => {
|
||||
// The two verdicts sat in one pane and contradicted each other: the static
|
||||
// checks pass on `clean` (its advertised digest is well-formed), while the
|
||||
// bytes do not hash to it. The heading now names what it actually covers.
|
||||
const { lastFrame, stdin } = render(
|
||||
<SkillsTab
|
||||
skills={[clean]}
|
||||
pageCount={1}
|
||||
inspectorClient={mockClient()}
|
||||
width={140}
|
||||
height={30}
|
||||
focusedPane="list"
|
||||
/>,
|
||||
);
|
||||
stdin.write(ENTER);
|
||||
await tick();
|
||||
const frame = lastFrame() ?? "";
|
||||
expect(frame).toContain("Verification FAILED");
|
||||
expect(frame).toContain("Listing checks: no structural issues");
|
||||
expect(frame).not.toContain("conforms");
|
||||
});
|
||||
|
||||
it("shows the selected skill's URI, description, findings and manifest", () => {
|
||||
const { lastFrame } = render(
|
||||
<SkillsTab
|
||||
|
|
@ -154,7 +176,8 @@ describe("SkillsTab (#2248)", () => {
|
|||
const frame = lastFrame() ?? "";
|
||||
expect(frame).toContain("skill://clean/SKILL.md");
|
||||
expect(frame).toContain("A clean skill");
|
||||
expect(frame).toContain("Conformance: conforms");
|
||||
// Named for what it covers: the static checks against the listing.
|
||||
expect(frame).toContain("Listing checks: no structural issues");
|
||||
expect(frame).toContain("Manifest (1)");
|
||||
expect(frame).toContain("SKILL.md");
|
||||
expect(frame).toContain("(51 B)");
|
||||
|
|
|
|||
|
|
@ -357,9 +357,17 @@ export function SkillsTab({
|
|||
</Box>
|
||||
)}
|
||||
|
||||
{/* Named for the checks it actually covers. An unqualified
|
||||
"conforms" sat directly above "Verification FAILED" in the
|
||||
same pane and flatly contradicted it — these are the static
|
||||
checks against the LISTING, and passing them says nothing
|
||||
about the bytes the server serves (Copilot). Same wording
|
||||
problem, and the same fix, as the web screen's "No structural
|
||||
issues". */}
|
||||
<Box marginTop={1} flexShrink={0}>
|
||||
<Text bold>
|
||||
Conformance{issues.length === 0 ? ": conforms" : ":"}
|
||||
Listing checks
|
||||
{issues.length === 0 ? ": no structural issues" : ":"}
|
||||
</Text>
|
||||
</Box>
|
||||
{issues.map((issue, idx) => (
|
||||
|
|
|
|||
Loading…
Reference in a new issue