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
- Keep one active goal file as the source of truth for scope and acceptance criteria.
- Update
workstream_board.mdwhen status, owner, or blocker changes. - Add a handoff entry before ending a session when work is in progress.
- Keep entries concise and actionable; do not duplicate long-term architecture docs here.
- Treat workstream completion and goal completion separately:
- workstream
donerequires that workstream acceptance is met - goal completion requires every deliverable checklist item in the goal file checked with evidence
- workstream
- Move completed goals to
archive/only after all deliverable checklist items are checked; leave a short completion note in the board. - For docs-maintenance sessions, use
documentation/agents/document_gardening.md. - 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)
- Enforce repository boundaries:
infraandrunneroperate from dedicated repositoriesinframust never clone product repositories likesqueezelite-esp32archmust never executerunnerorinfraworkstreams 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
- Handoff entries must include execution metadata:
context:arch-local|infra-live|runner-liveaction_type:scaffold|delegate|execute|replanoperator_required:yes|no
- Use evidence naming prefixes by role:
arch_*,infra_*,runner_*
- For remote-role workstreams (
infra/runner):
- do not move to
in_progresswhile owner istbd - complete delegation checklist before execution:
- owner assigned
- activation state at least
assigned - first handoff line logged in role context
- Owner semantics are execution semantics:
<role>:codexmeans Codex is installed/authenticated in that role environment and the work is executed by that remote Codex runtime.<role>:agentmeans thearch:codexcontrol-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 asexecutor=ssh_direct.- avoid ambiguous ownership values like
infra:codexunless the remote Codex runtime is actually active and being prompted there.
- 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:
- Ask: "Track this as a ticket? (yes/no)" before major execution.
- 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
- create/update entry in
- If
no:- continue execution without ticket creation
- add one line in handoff summary:
ticket_tracking=declined
- Prefer
yesrecommendation 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.envarch.envinfra.envrunner.env
Required file variables:
GITLAB_HOST=git.lecsys.netGITLAB_USER=<account>GITLAB_PASSWORD=<bootstrap-only>GITLAB_PAT=<preferred for non-interactive git/api>
Remote Agent Credential + Invocation Contract
Remote agents need two things:
- credentials stored locally in a non-repo location, and
- a documented transport/invocation mechanism.
Credential Storage (Do Not Commit)
- SSH transport (example: LXD host access):
- configure connection variables in
.lxd.env(seebuild-scripts/lxd_remote.sh) - store private keys outside the repo (typically under
~/.ssh/) and point to them viaLXD_SSH_PRIVATE_KEY_PATH
- configure connection variables in
- GitLab (agent repos):
- store role credentials in:
${XDG_CONFIG_HOME:-$HOME/.config}/codex/credentials/gitlab/git.lecsys.net/<role>.env(mode0600; parent directory mode0700) - prefer PAT for non-interactive git/API; never embed secrets in remotes, scripts, or handoff logs
- store role credentials in:
- 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 runcodex 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):
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:
- Create root directory with mode
0700. - Create each
*.envfile with mode0600. - Do not store secrets in repository files, commit messages, or handoff summaries.
- Propagate only role-specific credential files to target runtime hosts; never copy the entire secret home.
Auth mode contract:
- Account password is bootstrap-only (initial sign-in/token creation).
- PAT is the default for non-interactive API/git operations.
- Git remotes use HTTPS hostnames without embedded credentials.
Verification flow (record only redacted evidence):
- Verify permissions:
staton secret root and role file. - Verify auth:
curl --fail -H "PRIVATE-TOKEN: $GITLAB_PAT" https://git.lecsys.net/api/v4/user. - Verify repo reachability:
git ls-remote https://git.lecsys.net/<namespace>/<repo>.git. - 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.githttp://git.lecsys.net/runner/runner-agent.git
Bootstrap checkout commands:
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:
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.netwas unreachable from this execution environment (TCP/443 connect failure), whilehttp://git.lecsys.netwas 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:
- Add a
replanhandoff entry documenting the requested change. - Freeze affected workstreams (
blocked) if current sequencing is no longer valid. - Add/reshape workstreams in the active goal for:
- prerequisite fixes, and/or
- intermediate quest path(s) that improve delivery.
- Rewire dependencies/blockers and next actions in the board.
- Reconfirm owner assignment and activation state for impacted remote roles.
- 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 foundationGOAL-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:
documentation/short-term/coordination/workstream_board.md- relevant file in
documentation/short-term/active/ documentation/short-term/coordination/handoff_log.md