Context
Issue #31 defines the live e2e contract for orfe in orfe-e2e.
This story should validate the simplest real OpenCode-integrated path for orfe:
the OpenCode custom tool loads
context.agent is available
the wrapper passes caller identity into orfe
repo config maps that caller name to the correct GitHub App identity
orfe performs real GitHub issue create/update operations in the orfe-e2e repository
This story should use orfe-e2e-author , not a production persona.
Desired outcome
Add a live e2e test that proves the following story:
As orfe-e2e-author, I can invoke orfe through OpenCode to create a new issue in the orfe-e2e repository and then update that same issue, and the resulting GitHub artifact reflects the expected final state and GitHub actor identity.
Dependencies
Preconditions
The story must assume and require:
a dedicated orfe-e2e repository exists
orfe-e2e orfe config exists and points at that repository
orfe-e2e orfe config defines the orfe-e2e-author caller name mapped to the 0RF3-4U7H0R-BOT GitHub App identity
a low-cost or free OpenCode model is configured for orfe-e2e-author
0RF3-4U7H0R-BOT is installed and authorized for the orfe-e2e repository
the e2e run uses a unique run identifier
the test does not depend on artifacts created by prior runs
Agent model for this story
This story should use the orfe-e2e-author synthetic e2e agent defined only for orfe-e2e use.
The test must not depend on the production Zoran persona definition.
What matters here is:
OpenCode passes orfe-e2e-author through context.agent
orfe-e2e config maps that caller name to the 0RF3-4U7H0R-BOT GitHub App identity
orfe executes under the correct dedicated e2e GitHub App identity
Commands under test
The story should exercise these orfe commands through the real OpenCode-integrated path:
orfe issue create
orfe issue update
The story must run through OpenCode, not by calling the orfe core directly.
Suggested test flow
Generate a unique run id for the test.
Invoke OpenCode with orfe-e2e-author.
Through that agent, call orfe issue create with a title/body containing the run id.
Capture the structured output from the command.
Through the same agent, call orfe issue update on the created issue with updated title/body content.
Capture the structured output from the update command.
Verify the resulting issue on GitHub matches the expected final state.
Verify the visible GitHub actor identity is 0RF3-4U7H0R-BOT.
Apply the agreed cleanup/isolation policy from Define the live e2e test contract for orfe in orfe-e2e #31 .
Required assertions
The test should explicitly assert all of the following:
OpenCode/runtime assertions
the test runs through OpenCode, not a direct core-only path
the orfe custom tool loads successfully
orfe-e2e-author is the caller name used at runtime
the configured caller-name → GitHub App identity mapping is exercised successfully
CLI / tool output assertions
orfe issue create exits successfully
orfe issue update exits successfully
both commands emit valid structured JSON
returned JSON includes the expected issue_number and url
GitHub artifact assertions
the created issue exists in the orfe-e2e repository
the created issue title matches the expected initial title
the created issue body matches the expected initial body
after update, the issue title/body matches the expected updated value(s)
the updated issue is still the same issue number created earlier
Actor identity assertions
the visible GitHub actor for the issue mutations is 0RF3-4U7H0R-BOT where GitHub exposes it
the story should fail if the artifact appears to have been created or updated by the wrong bot identity
Isolation assertions
the test-created issue is uniquely identifiable by run id
the run does not require prior manual cleanup to pass
Output / evidence requirements
The test should record enough evidence to debug failures, including:
run id
synthetic caller name used for the run
mapped GitHub App identity
issue number
created URL
updated URL
final observed issue title/body
observed actor identity fields used for validation
Cleanup / isolation
Follow the policy defined in #31 .
If the chosen policy is retention instead of deletion, the issue must:
remain clearly tagged by run id
be distinguishable from human-created orfe-e2e artifacts
Acceptance criteria
Non-goals
project status validation
workflow comment validation
PR creation or review behavior
testing production persona definitions
testing broader multi-agent orchestration behavior
Context
Issue #31 defines the live e2e contract for
orfeinorfe-e2e.This story should validate the simplest real OpenCode-integrated path for
orfe:context.agentis availableorfeorfeperforms real GitHub issue create/update operations in theorfe-e2erepositoryThis story should use
orfe-e2e-author, not a production persona.Desired outcome
Add a live e2e test that proves the following story:
Dependencies
orfeinorfe-e2e#31orfe issue create#21 (orfe issue create)orfe issue update#18 (orfe issue update)orfedesign/spec from Design theorfecustom tool and CLI contract #13Preconditions
The story must assume and require:
orfe-e2erepository existsorfe-e2eorfeconfig exists and points at that repositoryorfe-e2eorfeconfig defines theorfe-e2e-authorcaller name mapped to the0RF3-4U7H0R-BOTGitHub App identityorfe-e2e-author0RF3-4U7H0R-BOTis installed and authorized for theorfe-e2erepositoryAgent model for this story
This story should use the
orfe-e2e-authorsynthetic e2e agent defined only fororfe-e2euse.The test must not depend on the production
Zoranpersona definition.What matters here is:
orfe-e2e-authorthroughcontext.agentorfe-e2econfig maps that caller name to the0RF3-4U7H0R-BOTGitHub App identityorfeexecutes under the correct dedicated e2e GitHub App identityCommands under test
The story should exercise these
orfecommands through the real OpenCode-integrated path:orfe issue createorfe issue updateThe story must run through OpenCode, not by calling the
orfecore directly.Suggested test flow
orfe-e2e-author.orfe issue createwith a title/body containing the run id.orfe issue updateon the created issue with updated title/body content.0RF3-4U7H0R-BOT.orfeinorfe-e2e#31.Required assertions
The test should explicitly assert all of the following:
OpenCode/runtime assertions
orfecustom tool loads successfullyorfe-e2e-authoris the caller name used at runtimeCLI / tool output assertions
orfe issue createexits successfullyorfe issue updateexits successfullyissue_numberandurlGitHub artifact assertions
orfe-e2erepositoryActor identity assertions
0RF3-4U7H0R-BOTwhere GitHub exposes itIsolation assertions
Output / evidence requirements
The test should record enough evidence to debug failures, including:
Cleanup / isolation
Follow the policy defined in #31.
If the chosen policy is retention instead of deletion, the issue must:
orfe-e2eartifactsAcceptance criteria
orfe-e2e-authorcreate/update storyorfe-e2e-author, not a production personacontext.agentorfe-e2e-authororfe issue createorfe issue updateorfe-e2erepository0RF3-4U7H0R-BOTactor identity where relevantorfe-e2eisolation policy from Define the live e2e test contract fororfeinorfe-e2e#31Non-goals