Skip to content

S2.6.3 — The stateful fake forge: able to lie, and non-enforcing - #329

Merged
dev-pmallapp merged 2 commits into
story/293-s2-6-skill-execution-harnessfrom
task/320-stateful-fake-forge
Sep 8, 2026
Merged

dev-pmallapp merged 2 commits into
story/293-s2-6-skill-execution-harnessfrom
task/320-stateful-fake-forge

Conversation

@dev-pmallapp

Copy link
Copy Markdown
Owner

Build target 4 of docs/design/stories/293.md. Anchors CLAIM-293.6 and NEVER-293.7.

Verdict: PASS for case 8 and case 20. Case 9 is PARTIAL and CLAIM-293.6 is NOT met — half (ii) needs a transcribed skill and a runner, and case 9's own Command column names bun run skill-harness, which does not exist in this tree. It closes at #323.

Evidence: docs/evidence/320-20260908T074833Z.md

Chain at b297932

959 tests / 945 pass / 0 fail / 14 skip / 3389 expect() · lint 0 across 107 files · typecheck clean · skill-lint 4 + 12, 0 errors · claim-lint 116 files, 0 errors, 1 warning (the expected stories/9.md one).

What it ships

  • Five injectable failure modes, including the third state — a 403 with no budget header, which is the common case because gh api --include appears nowhere in this repository.
  • No duplicate check on any identity key. GitHub answers 422 on a duplicate milestone title and the fake deliberately does not, so run 2's silence is the skill's decision and never the double's.
  • The fake imports no launcher — it answers argv from memory, which keeps CLAIM-293.1's "exactly one production module launches a process" true.

Mutation testing — 10 injected, 8 killed

The M9/M9b pair is the argument: with case 8's state-growth assertion weakened to expect(exitCode).toBe(0) and the fake made to enforce the 422, all four of case 8's tests pass. The kill comes from case 9 (ii), a different case anchored to a different claim. NEVER-293.7's own case, written the obvious way, scores the exact defect it exists to detect as a pass.

Findings raised, none fixed here

  1. Case 8 asserted on an exit code cannot detect an enforcing fake.
  2. Exit code and row counts collapse three of the five failure modes — only the classification separates them.
  3. shouldRetryResponse answers retry: false for a transient connection error, which is the one failure references/gh-error-handling.md:120-131 tells you to retry. Needs an issue.
  4. errors.ts:270's two rate-limit reasons differ only in the value they quote.
  5. git clean -fd destroyed this task's uncommitted work — and the handoff recommends it as the safe alternative to rm.
  6. The ## Re-entry column yields 16 keys, not the 4 the plan names; resolved as four key classes over a partition of all 16.

The first-contact bill deferred by #318 and #319 to #320 cannot be paid by a fake, and build targets 1–10 now contain no owner for it.

Refs #320

pmallappa and others added 2 commits September 8, 2026 13:16
Build target 4 of docs/design/stories/293.md, anchoring CLAIM-293.6 and
NEVER-293.7. Five injectable failure modes, and no duplicate check on any
of the four identity keys — GitHub answers 422 on a duplicate milestone
title and the fake deliberately does not, so that run 2's silence is the
skill's decision and never the double's.

The fake imports no launcher: it answers argv from memory, which is what
keeps CLAIM-293.1's "exactly one production module launches a process"
true with a second package in the workspace.

Co-Authored-By: iAI <noreply@iai.dev>
Chain green at b297932: 959 tests / 945 pass / 0 fail / 14 skip /
3389 expect(); lint 0 across 107 files; claim-lint 116/0/1.

Ten mutations injected, eight killed. The M9/M9b pair is the argument:
with case 8's state-growth assertion weakened to an exit code AND the
fake made to enforce the 422, all four of case 8's tests pass — the kill
comes from case 9 (ii), a different case anchored to a different claim.

Case 9 is recorded PARTIAL and CLAIM-293.6 as NOT met. Half (ii) needs a
transcribed skill and a runner, and case 9's own Command column names a
script that does not exist in this tree.

Co-Authored-By: iAI <noreply@iai.dev>
@dev-pmallapp
dev-pmallapp marked this pull request as ready for review September 8, 2026 07:53
@dev-pmallapp
dev-pmallapp merged commit e1c2421 into story/293-s2-6-skill-execution-harness Sep 8, 2026
7 checks passed
@dev-pmallapp
dev-pmallapp deleted the task/320-stateful-fake-forge branch September 8, 2026 07:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants