agentview welcomes focused pull requests with matching tests and documentation. Use GitHub issues for reproducible bugs and scoped proposals.
Read the product specification, architecture, and especially the control/ownership model. Discovery does not imply authority. A new adapter or action must fail closed when identity, ownership, provider state, or protocol support is uncertain.
Never use existing personal sessions or long-running containers as mutation
targets. In particular, preserve the protected webqwen-sbx-* and
at-codex-* environments named in the product specification. Active probes
must use explicit disposable targets, dedicated state, and the minimum network
or credential access required by the test.
The minimum supported Rust version is 1.75.0:
rustup toolchain install 1.75.0 --profile minimal
cargo +1.75.0 test --locked
cargo +1.75.0 build --release --lockedKeep Cargo.lock committed and use --locked in validation and install
commands. Do not update dependencies incidentally. The implementation uses
provider argv arrays and bounded subprocesses; do not introduce shell
interpolation for session, prompt, path, or container values.
- Keep provider parsing in adapters and the normalized model provider-neutral.
- Advertise a capability only after the exact action is supported and its ownership proof is current.
- Preserve unknown provider states/fields for compatibility and keep failures in one adapter from hiding healthy sessions in another.
- Require an exact target and explicit confirmation for destructive actions.
- Never persist structured answers, credentials, or raw secrets in fixtures, diagnostics, screenshots, or commits.
- Update operator documentation and the changelog when behavior or safety boundaries change.
- Make coherent commits with tests and documentation that describe the same state. Do not mark a path verified merely because code was added.
At minimum run:
cargo +1.75.0 test --locked
cargo +1.75.0 build --release --locked
cargo test --locked
cargo build --release --lockedCI repeats the locked test/build on Rust 1.75.0 and stable. For TUI changes, also follow the real-TTY validation guide: exercise the synthetic all-state fixture in a real PTY at wide, ordinary, and narrow sizes, run the relevant fresh-container probe, verify terminal restoration, and record what was and was not authenticated. Review actual screenshots for color and border fidelity; Ratatui text assertions are necessary but not sufficient.
For provider-control changes, add deterministic success, refusal, wrong-target, stale-state, malformed-response, timeout, and reconnect coverage. Prefer an injected runner or disposable mock server. A real authenticated lifecycle is a separate opt-in gate and requires dedicated test identity/state.
Use relative Markdown links inside the repository and run the link checker described in docs/testing.md. Keep observations, inferences, and implementation claims distinct in exploration notes. Reviewers should be able to answer:
- What exact provider/runtime identity is acted on?
- Where did authority come from, and when is it revalidated?
- What confirmation or user input is required?
- What happens on timeout, reconnect, malformed data, or partial failure?
- Which deterministic, real-PTY, disposable-runtime, or credentialed test supports each claim?
Report potential vulnerabilities through SECURITY.md, not in a general change discussion.