feat(provider): two-tier adapter conformance bar — hermetic Tier-1 suite, live-spike Tier-2 checklist (ADR-0036) #88
No reviewers
Labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Cloonar/coding-lab!88
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "afk/80"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Makes "passes the conformance suite + checklist" the executable definition of done for any
AgentProvideradapter, in the two enforced tiers decided in the 2026-07-09 provider-seam grill. Pins the rules landed by #75, #77, #78, and #79.Tier 1 — hermetic conformance suite (CI, every adapter)
providertest.Conformance(t, p, fx)runs ten obligations against any adapter with no agent CLI, tmux, or network, every check through the product path:provider.CompileScrubPatterns(ADR-0033's boot gate, not a reimplementation).Fixturevectors) must be stripped by its own patterns under both engines: RE2 and the pre-push hook's actualgrep -iBRE — which is what makes the BRE∩RE2 common-dialect rule executable ((foo|bar)compiles as RE2 but means literal parens under BRE) — plus theRegistry.ScrubRegexpsunion the agent-API body sanitizer runs. Optional clean samples guard against over-broad patterns.SeedWorkspaceplus the realinternal/seederrun in production order inside a hermetic linked worktree; emptygit status --porcelainis the executable form of "ExcludeEntries cover every seeded path / no tracked-file writes", with anti-vacuous existence checks and per-file SeededPathPattern coverage..localrule), spawn-argv (argv(prompt) == argv(no prompt) + [prompt]; declared spawn options must round-trip), catalogs, seedmeta-clone (mutation test), auth-flow (kind vocabulary), login-session (tmuxx.LoginSessionName/IsLoginSession, ADR-0034).Adapters register in one table (
internal/provider/conformance_test.go) — a future adapter gets full coverage by adding one entry. claude-code passes all ten in ordinary CI. The suite's own tests run deliberately-broken adapters (trackedAGENTS.mdname, RE2-invalid pattern, prompt not trailing, uncovered seeded file, aliased slices, unknown auth kind, over-broad pattern) and assert each failure message names the obligation and its rule source.Tier 2 — required live spikes (documented, not CI-run)
Held to the ADR-0008 bar and evidenced by a committed compat record at
internal/compat/<providerID>/compat.md(claude-code's existinginternal/compat/compat.mdstays put as the worked example): transcript located by cwd + NEW identity on context clear, reply/dialog/interrupt recipes hazard-checked against the real TUI, context-file discovery verifiably wired, incogni attribution ground truth reconciled against ScrubPatterns.Docs
docs/agents/provider-authoring.md— the ordered author path + the four no-escape-hatch hard requirements; issue #2 (Codex) adopts "Tier 1 green + Tier 2 evidenced" as its definition of done.docs/adr/0036-two-tier-provider-conformance.md— records the bar.CONTEXT.md— glossary entry.Verification
go test ./...— all 31 packages green (includesTestConformance/claude-code, 13 suite self-tests, the neutrality guard, and untouched seeder/agentapi/compat suites).gofmt -lclean,go vet ./...clean (golangci-lint runs in CI).Closes #80
🤖 Generated with Claude Code
https://claude.ai/code/session_011ETaoGp2quNA465CTbUgW1