dogfood · git:20261021.1cf1d1c · 2026-10-21 · sha256 e80fcfd3e8ca6337

dogfood git:20261021.1cf1d1cA

Immutable. This exact content never changes and is served at /api/v1/blob/e80fcfd3e8ca6337.

---
name: dogfood
description: >-
  Explore Agent Layer through real tasks and inventive experiments in disposable
  projects; investigate failures, usability friction, and batch fixes.
  Use for product dogfooding in this repository, excluding skill-content
  evaluation and A/B benchmarks.
---

# Dogfood Agent Layer

Exercise the product through its public interfaces and inspect the resulting
state. Pursue useful real tasks, invent workflows, combine features, and follow
surprises. Look for confusing or missing capabilities as well as errors.
Use the current request to determine discovery, fix, and shipping scope.
Create disposable projects outside existing Git/Agent Layer roots, normally under
`/var/tmp/`; use nested projects only for deliberate discovery cases. Keep the
batch binary, harnesses, and evidence outside every cleanup/deletion target in a
unique retained directory under `.agent-layer/tmp/` or `/var/tmp/`.

When selecting coverage, read open
[GitHub issues](https://github.com/conn-castle/agent-layer/issues) and relevant
`docs/agent-layer/DECISIONS.md` entries. Use [the scenario menu](references/scenarios.md)
for ideas and known fragile boundaries; choose experiments beyond it too.
Consult [the source campaign](references/run-evidence.md) only when tracing a
lesson's provenance; its logs and historical approvals are not execution inputs.

## Candidate and workspace

- Build one fixed source snapshot per discovery batch and copy the binary into
  the retained batch directory so later development builds cannot replace it.
  Record its commit, uncommitted changes, build command, binary path/SHA-256,
  embedded version/commit, platform, and relevant provider versions. Give
  implementation workers separate checkouts.
- Invoke the candidate by absolute path and verify nested launchers and MCP
  servers use it. Follow `docs/DEVELOPMENT.md` for scratch source selection:
  set `AL_DEV_BYPASS_VERSION_DISPATCH=1`, `AL_DEV_EXECUTABLE` to the retained
  candidate, and `AL_DEV_SOURCE_ROOT` to each scratch project's own configuration
  root. Pins and PATH lookup can otherwise select an older release. Leave
  development overrides unset when testing real version dispatch.
- Reconnect owned test MCP servers after rebuilding: a running server retains
  its loaded code. Check the chat's orchestration-server identity separately
  before attributing its failures to the candidate.
- For cases without real-provider inference, use local bare Git remotes, dummy
  secrets, fake providers/local MCP servers, and child-only HOME/XDG/TMPDIR/Git
  configuration. Preserve unrelated files and processes with sentinels. Use
  ordinary disk storage for persistence cases; tmpfs misses fsync/publication
  behavior. `AL_NO_NETWORK=1` controls relevant Agent Layer downloads, not
  arbitrary network access.
- Run authorized native-provider calls separately in disposable projects with
  existing provider homes/sign-ins; do not copy credentials into fixtures.
  Record effective provider/model/effort and overrides. A substituted provider
  covers only that provider.

## Discovery batches

Use at most three concurrent discovery/implementation workers combined when
delegation is available and authorized; otherwise run the lanes sequentially.
Possible lanes, adaptable to the task:

1. Installation, upgrade, update, and recovery.
2. Wizard, configuration, imports, and projections.
3. Dispatch, MCP, and process lifecycle.

Choose a finite batch from real user goals, current risks, and coverage gaps.
For broad campaigns, spread exploration across product surfaces and leave room
to follow unexpected results. Adapt later batches as you learn, covering high-risk
boundaries affected by fixes. Give workers the candidate identity, owned
writable paths, selected cases, limits, and report requirements. Discovery workers
return evidence without production edits.

For directed checks, define the expected outcome; for open exploration, state the
user goal or question and refine checks as you learn. Retain argv, cwd, sanitized
environment differences, exit status, elapsed time, output, and relevant
before/after state in separate logs for each attempt. Redact real credentials,
tokens, and personal data, and omit unrelated file contents before retaining logs
or publishing issue evidence. Verify:

- File bytes, modes, kinds/link targets, parsed config/locks, and transaction
  status as relevant; preservation after success/refusal, repeat convergence,
  and failure recovery. Compare rollback with its documented snapshot scope,
  separately from generated sync projections.
- Actual overlap/interruption boundaries through held locks, commands gated by
  named pipes, product events, or PTY prompts. Bound timing-sensitive attempts;
  record gate misses.
- Dispatch session/handle continuity, invocation selection, answer publication,
  and durable termination. Track owned PID/start identities and descendants;
  check process groups, output EOF, and readers rather than inferring cleanup
  from a returned answer or exited parent.

Classify failures as product defects, harness/setup failures, documented behavior,
external blockers, or unresolved observations against current docs and CLI help.
Correct a broken fixture in a new attempt and preserve the original. Passing
retries do not explain the original failure. Count workflows separately from
assertions, polling commands, and unsuccessful setup attempts.

## Fix and repeat

Collect the batch's findings before grouping fixes. Each defect needs a minimal
public-interface reproduction, expected/actual behavior, affected boundary,
candidate identity, and evidence paths. Group related root causes or overlapping
changes; keep unrelated mechanisms separate. Escalate an unresolved choice to drop
a supported use case or change the intended public contract before that fix;
continue independent work.

For authorized fixes, use `implement` for substantive code changes and the normal
repository workflow for small corrections. Close exposed gaps in the normal CI
path, including native macOS/Linux coverage for platform-specific process behavior.

Recheck reproductions and adjacent preservation/recovery behavior against the
corrected binary. Use `ship-pr` when shipping is in scope; its prerequisites and
merge policy remain owned by that skill.

For discovery-only work, return the batch's findings. For an authorized fix loop,
integrate all implemented fixes from the batch, including both shipped and local
changes, into one tree. Record its identity, build the next candidate, and run
another finite batch over remaining gaps. Stop broad discovery when a batch
covers the chosen goals and affected high-risk boundaries without new material
defects and implemented fixes pass their rechecks. Stop earlier if the user's scope/time/cost
limit is reached or remaining cases are externally blocked; report that coverage
as incomplete. A help-only correction after a clean functional batch needs
targeted checks rather than another broad campaign.

Report candidate identity, workflows passed/failed/blocked, findings and fix/PR
status, unresolved observations, coverage gaps, evidence paths, and owned-process
cleanup. Preserve useful reproductions, search/update or file GitHub issues for
unresolved findings, and include their URLs even for discovery-only runs. Keep
redacted logs in the run directory and durable decision rationale in project memory.
Follow the repository's local issue-tracking instructions if filing fails.
For release-readiness claims, follow `docs/RELEASE.md`;
scratch or substituted-profile probes do not replace its live-checkout gates.