mirror of
https://github.com/sle118/squeezelite-esp32.git
synced 2026-03-18 03:45:57 +03:00
258 lines
10 KiB
Markdown
258 lines
10 KiB
Markdown
# Short-Term Goals (Ephemeral)
|
|
|
|
Use this folder for time-boxed, multi-agent implementation goals.
|
|
|
|
This area is intentionally operational and temporary:
|
|
|
|
- track current work
|
|
- coordinate handoffs
|
|
- capture blockers and next actions
|
|
- archive when complete
|
|
|
|
## Structure
|
|
|
|
- `documentation/short-term/active/`
|
|
- active goal documents (one file per goal)
|
|
- `documentation/short-term/coordination/workstream_board.md`
|
|
- current ownership and status by workstream
|
|
- `documentation/short-term/coordination/handoff_log.md`
|
|
- chronological handoffs across agents/sessions
|
|
- `documentation/short-term/coordination/ad_hoc_ticket_queue.md`
|
|
- optional ticket tracking queue for user-approved ad-hoc requests
|
|
- `documentation/short-term/archive/`
|
|
- closed goals moved out of active rotation
|
|
|
|
## Operating Rules
|
|
|
|
1. Keep one active goal file as the source of truth for scope and acceptance criteria.
|
|
2. Update `workstream_board.md` when status, owner, or blocker changes.
|
|
3. Add a handoff entry before ending a session when work is in progress.
|
|
4. Keep entries concise and actionable; do not duplicate long-term
|
|
architecture docs here.
|
|
5. Treat workstream completion and goal completion separately:
|
|
- workstream `done` requires that workstream acceptance is met
|
|
- goal completion requires every deliverable checklist item in the goal file checked with evidence
|
|
6. Move completed goals to `archive/` only after all deliverable checklist
|
|
items are checked; leave a short completion note in the board.
|
|
7. For docs-maintenance sessions, use
|
|
`documentation/agents/document_gardening.md`.
|
|
8. Use role-based ownership format in workstream boards:
|
|
`<role>:<agent-id>` where role is one of:
|
|
- `arch` (Architecture Agent)
|
|
- `infra` (Infrastructure Agent)
|
|
- `runner` (Runner Agent)
|
|
9. Enforce repository boundaries:
|
|
- `infra` and `runner` operate from dedicated repositories
|
|
- `infra` must never clone product repositories like
|
|
`squeezelite-esp32`
|
|
- `arch` must never execute `runner` or `infra` workstreams by
|
|
editing or running commands in their repositories locally (for
|
|
example `/workspaces/codex-runner-agent`); instead, delegate by
|
|
prompting the remote Codex runtime in that role environment
|
|
10. Handoff entries must include execution metadata:
|
|
- `context`: `arch-local` | `infra-live` | `runner-live`
|
|
- `action_type`: `scaffold` | `delegate` | `execute` | `replan`
|
|
- `operator_required`: `yes` | `no`
|
|
11. Use evidence naming prefixes by role:
|
|
- `arch_*`, `infra_*`, `runner_*`
|
|
12. For remote-role workstreams (`infra`/`runner`):
|
|
- do not move to `in_progress` while owner is `tbd`
|
|
- complete delegation checklist before execution:
|
|
- owner assigned
|
|
- activation state at least `assigned`
|
|
- first handoff line logged in role context
|
|
13. Owner semantics are execution semantics:
|
|
- `<role>:codex` means Codex is installed/authenticated in that role
|
|
environment and the work is executed by that remote Codex runtime.
|
|
- `<role>:agent` means the `arch:codex` control-plane is acting as a
|
|
temporary proxy executor for that role (typically via SSH transport).
|
|
This is allowed only for bootstrap/emergency and must be explicitly
|
|
called out in handoff summaries as `executor=ssh_direct`.
|
|
- avoid ambiguous ownership values like `infra:codex` unless the
|
|
remote Codex runtime is actually active and being prompted there.
|
|
14. Commit hygiene (arch + runner):
|
|
- make small commits that correspond to workstream-sized progress
|
|
- push frequently so progress is traceable by remote commit SHA
|
|
- include commit SHA(s) in handoff summaries when work is executed
|
|
- do not batch unrelated changes; avoid “mega commits”
|
|
- do not commit secrets or generated/build outputs
|
|
|
|
## Ad-hoc Ticket Reflex
|
|
|
|
When user/operator gives an ad-hoc request, agents should proactively
|
|
offer ticket tracking and let the user decide.
|
|
|
|
Required reflex:
|
|
1. Ask: "Track this as a ticket? (yes/no)" before major execution.
|
|
2. If `yes`:
|
|
- create/update entry in
|
|
`documentation/short-term/coordination/ad_hoc_ticket_queue.md`
|
|
- reference ticket id in handoff summaries and relevant workstream
|
|
notes
|
|
3. If `no`:
|
|
- continue execution without ticket creation
|
|
- add one line in handoff summary: `ticket_tracking=declined`
|
|
4. Prefer `yes` recommendation when request affects:
|
|
- cross-session continuity
|
|
- cross-role delegation
|
|
- sequencing/prioritization
|
|
- non-trivial risk or scope
|
|
|
|
## GitLab Credential Home Contract
|
|
|
|
Use this contract for agent-repo bootstrap work targeting
|
|
`git.lecsys.net`.
|
|
|
|
Canonical local secret home:
|
|
- `${XDG_CONFIG_HOME:-$HOME/.config}/codex/credentials/gitlab/git.lecsys.net/`
|
|
|
|
Required files (one per account/role):
|
|
- `codex.env`
|
|
- `arch.env`
|
|
- `infra.env`
|
|
- `runner.env`
|
|
|
|
Required file variables:
|
|
- `GITLAB_HOST=git.lecsys.net`
|
|
- `GITLAB_USER=<account>`
|
|
- `GITLAB_PASSWORD=<bootstrap-only>`
|
|
- `GITLAB_PAT=<preferred for non-interactive git/api>`
|
|
|
|
## Remote Agent Credential + Invocation Contract
|
|
|
|
Remote agents need two things:
|
|
1. credentials stored locally in a non-repo location, and
|
|
2. a documented transport/invocation mechanism.
|
|
|
|
### Credential Storage (Do Not Commit)
|
|
|
|
- SSH transport (example: LXD host access):
|
|
- configure connection variables in `.lxd.env` (see `build-scripts/lxd_remote.sh`)
|
|
- store private keys outside the repo (typically under `~/.ssh/`) and
|
|
point to them via `LXD_SSH_PRIVATE_KEY_PATH`
|
|
- GitLab (agent repos):
|
|
- store role credentials in:
|
|
`${XDG_CONFIG_HOME:-$HOME/.config}/codex/credentials/gitlab/git.lecsys.net/<role>.env`
|
|
(mode `0600`; parent directory mode `0700`)
|
|
- prefer PAT for non-interactive git/API; never embed secrets in
|
|
remotes, scripts, or handoff logs
|
|
- Codex login (remote Codex runtime):
|
|
- authentication state lives on the remote machine under the remote
|
|
user's Codex config/state (do not copy it into repos)
|
|
|
|
### Invocation Mechanism (Prompting Remote Codex)
|
|
|
|
When a workstream owner is `<role>:codex`, delegation means: prompt the
|
|
Codex runtime in that role environment to do the work inside its role
|
|
repository, then report back via commit SHA + evidence paths.
|
|
|
|
Transport is typically SSH, but SSH is not the execution model:
|
|
- `executor=remote_codex`: SSH is only used to reach the remote and run
|
|
`codex exec` (or open an interactive Codex session) on that machine.
|
|
- `executor=ssh_direct`: bootstrap/emergency only (direct commands
|
|
without prompting a remote Codex runtime).
|
|
|
|
Template (non-interactive delegation using a packet read from stdin):
|
|
|
|
```bash
|
|
ssh -i ~/.ssh/<role_key> <role_user>@<role_host> \\
|
|
'cd /path/to/<role-repo> && codex exec --sandbox workspace-write -C . -' \\
|
|
< documentation/short-term/coordination/delegations/<packet>.md
|
|
```
|
|
|
|
Security contract:
|
|
1. Create root directory with mode `0700`.
|
|
2. Create each `*.env` file with mode `0600`.
|
|
3. Do not store secrets in repository files, commit messages, or
|
|
handoff summaries.
|
|
4. Propagate only role-specific credential files to target runtime
|
|
hosts; never copy the entire secret home.
|
|
|
|
Auth mode contract:
|
|
1. Account password is bootstrap-only (initial sign-in/token creation).
|
|
2. PAT is the default for non-interactive API/git operations.
|
|
3. Git remotes use HTTPS hostnames without embedded credentials.
|
|
|
|
Verification flow (record only redacted evidence):
|
|
1. Verify permissions: `stat` on secret root and role file.
|
|
2. Verify auth: `curl --fail -H "PRIVATE-TOKEN: $GITLAB_PAT"
|
|
https://git.lecsys.net/api/v4/user`.
|
|
3. Verify repo reachability: `git ls-remote
|
|
https://git.lecsys.net/<namespace>/<repo>.git`.
|
|
4. Log pass/fail and command context without printing token/password.
|
|
|
|
## Agent Repo Bootstrap Flow (ADHOC-20260212-03)
|
|
|
|
GitLab remotes created/pushed:
|
|
- `http://git.lecsys.net/infra/infra-agent.git`
|
|
- `http://git.lecsys.net/runner/runner-agent.git`
|
|
|
|
Bootstrap checkout commands:
|
|
|
|
```bash
|
|
git clone http://git.lecsys.net/infra/infra-agent.git /workspaces/codex-infra-agent
|
|
git -C /workspaces/codex-infra-agent checkout main
|
|
|
|
git clone http://git.lecsys.net/runner/runner-agent.git /workspaces/codex-runner-agent
|
|
git -C /workspaces/codex-runner-agent checkout main
|
|
```
|
|
|
|
Bootstrap verification:
|
|
|
|
```bash
|
|
git -C /workspaces/codex-infra-agent remote -v
|
|
git -C /workspaces/codex-runner-agent remote -v
|
|
git ls-remote http://git.lecsys.net/infra/infra-agent.git
|
|
git ls-remote http://git.lecsys.net/runner/runner-agent.git
|
|
```
|
|
|
|
Transport note (2026-02-12):
|
|
- `https://git.lecsys.net` was unreachable from this execution
|
|
environment (TCP/443 connect failure), while `http://git.lecsys.net`
|
|
was reachable and used for bootstrap push/clone.
|
|
- After TLS is available, migrate remotes to `https://` and switch to
|
|
PAT-based auth for non-interactive operations.
|
|
|
|
## Goal Adjustment Protocol
|
|
|
|
Apply this protocol for both hard prerequisites and softer strategy
|
|
changes (priority shifts, easier path proposals, intermediate quests).
|
|
|
|
Trigger examples from operator/user input:
|
|
- \"we missed ...\"
|
|
- \"in order to achieve this in an easier way ...\"
|
|
- \"we should prioritize ...\"
|
|
|
|
Required actions:
|
|
1. Add a `replan` handoff entry documenting the requested change.
|
|
2. Freeze affected workstreams (`blocked`) if current sequencing is no
|
|
longer valid.
|
|
3. Add/reshape workstreams in the active goal for:
|
|
- prerequisite fixes, and/or
|
|
- intermediate quest path(s) that improve delivery.
|
|
4. Rewire dependencies/blockers and next actions in the board.
|
|
5. Reconfirm owner assignment and activation state for impacted remote
|
|
roles.
|
|
6. Resume execution only after the new plan is reflected in goal + board
|
|
+ handoff docs.
|
|
|
|
## Goal Template
|
|
|
|
When creating a new short-term goal, start from:
|
|
|
|
- `documentation/short-term/active/GOAL_TEMPLATE.md`
|
|
|
|
## Current Active Goals
|
|
|
|
- `GOAL-001`: LXD Codex orchestration and multi-HUT CI foundation
|
|
- `GOAL-002`: HUT surfacing with first implemented hardware test (`HW-BOOT-001`)
|
|
- `GOAL-003`: agent-driven documentation linting in CI/CD
|
|
|
|
## Agent Pickup Order
|
|
|
|
When asked to continue short-term work, read in this order:
|
|
|
|
1. `documentation/short-term/coordination/workstream_board.md`
|
|
2. relevant file in `documentation/short-term/active/`
|
|
3. `documentation/short-term/coordination/handoff_log.md`
|