docs: enforce read-only remote workflow
This commit is contained in:
1 parent
2ef74d4799
commit
af440f540d
2 files changed
+73
-56
No files matched your search
@@ -30,11 +30,11 @@ not make it the global next step while another pilot can still progress.
|
|||||||
## Current checkpoint
|
## Current checkpoint
|
||||||
|
|
||||||
- Tranche: autonomous consolidation across repositories, tools, and pilots
|
- Tranche: autonomous consolidation across repositories, tools, and pilots
|
||||||
- State: autonomous implementation exhausted; consolidated gates await the user
|
- State: autonomous implementation exhausted; one activation and external gates await the user
|
||||||
- Branch: `chore/workflow-system`
|
- Branch: `chore/workflow-system`
|
||||||
- Baseline: `nix flake check --no-build --quiet` and a no-link Zenith system
|
- Baseline: `nix flake check --no-build --quiet` and a no-link Zenith system
|
||||||
build passed on 2026-09-05 after the consolidated workstation retirement and
|
build passed on 2026-09-05 after the skill-discovery and durable remote-state
|
||||||
`rclone` preparation; only the expected dirty-tree and unknown `modules`
|
boundary changes; only the expected dirty-tree and unknown `modules`
|
||||||
warnings were emitted. The generated project menu finds 30 live repositories
|
warnings were emitted. The generated project menu finds 30 live repositories
|
||||||
without `.archive` or `.worktrees` entries, and the generated daily-note
|
without `.archive` or `.worktrees` entries, and the generated daily-note
|
||||||
configuration passes an isolated same-day idempotence test. The managed Actual
|
configuration passes an isolated same-day idempotence test. The managed Actual
|
||||||
@@ -49,14 +49,17 @@ not make it the global next step while another pilot can still progress.
|
|||||||
stopped its dependent Walker during activation without bringing Walker back,
|
stopped its dependent Walker during activation without bringing Walker back,
|
||||||
so it has been removed in favor of applying rare menu changes at login. After
|
so it has been removed in favor of applying rare menu changes at login. After
|
||||||
activating that removal and relogging, Walker opens normally and repository
|
activating that removal and relogging, Walker opens normally and repository
|
||||||
selection starts Neovim in Oil at the project root. Four fresh local clones
|
selection starts Neovim in Oil at the project root. Five fresh local clones
|
||||||
pass their flake checks, expose their tracked command catalogs, and remain
|
pass their flake checks, expose their tracked command catalogs, and remain
|
||||||
clean after shell entry. The dashboard contract additionally passes its full
|
clean after shell entry. The dashboard contract additionally passes its full
|
||||||
check and a bounded two-process development smoke test. The dashboard and
|
check and a bounded two-process development smoke test. The dashboard and
|
||||||
traceability PostgreSQL stacks also ran concurrently while both repositories'
|
traceability PostgreSQL stacks also ran concurrently while both repositories'
|
||||||
checks passed; all test processes and containers were then stopped.
|
checks passed; all test processes and containers were then stopped. The
|
||||||
- Next: present one consolidated user batch covering the built activation and
|
retired workstation tools are absent and `rclone` is live. Herdr preserves
|
||||||
the independent empirical, credential, hardware, and approval gates below.
|
its pane across detach and reattach. The data-science contract and a real
|
||||||
|
read-only PR review pilot pass locally.
|
||||||
|
- Next: activate the skill-directory and remote-boundary fix, then continue the
|
||||||
|
independent empirical, credential, hardware, and real-task gates below.
|
||||||
|
|
||||||
## Progress
|
## Progress
|
||||||
|
|
||||||
@@ -64,9 +67,9 @@ not make it the global next step while another pilot can still progress.
|
|||||||
| --- | --- | --- |
|
| --- | --- | --- |
|
||||||
| Bootstrap and repository ownership | Waiting for user | Repository and dashboard reconciliation complete; credential cleanup remains |
|
| Bootstrap and repository ownership | Waiting for user | Repository and dashboard reconciliation complete; credential cleanup remains |
|
||||||
| Declarative workstation foundation | Complete | All-host builds pass with one Nixpkgs pin, `just`, and an explicit Podman Compose provider |
|
| Declarative workstation foundation | Complete | All-host builds pass with one Nixpkgs pin, `just`, and an explicit Podman Compose provider |
|
||||||
| Repository contracts and workbench | Waiting externally | Four clean-checkout contracts and read-only Kubernetes pass; data-science overlaps uncommitted work, while API, database, report, and secret inputs remain externally gated |
|
| Repository contracts and workbench | Waiting externally | Five clean-checkout contracts and read-only Kubernetes pass; API, database, report, S3, and secret inputs remain externally gated |
|
||||||
| Desktop navigation and interaction | Active | Walker project and terminal actions plus stable Actual/WhatsApp launchers work; Outlook and two-output checks remain |
|
| Desktop navigation and interaction | Active | Walker project and terminal actions plus stable Actual/WhatsApp launchers work; Outlook and two-output checks remain |
|
||||||
| Agent workflow | Waiting for user | The `nixos-maintainer` skill validates and matches its live owner; external policy blocks nested Codex evaluation without approval, and Herdr awaits its first live check |
|
| Agent workflow | Waiting for user | Herdr and read-only PR review pass; the corrected skill owner is built and awaits user activation, while a real Monday ticket and Project read credential remain external |
|
||||||
| Notes | Complete | The daily launcher and migrated notebook pass live checks; the approved rollback copy is recoverable from Trash |
|
| Notes | Complete | The daily launcher and migrated notebook pass live checks; the approved rollback copy is recoverable from Trash |
|
||||||
| PIM | Active | Native NixOS Evolution 3.60.2 plus Microsoft 365 integration is live beside Thunderbird; account and daily-use gates await credentials |
|
| PIM | Active | Native NixOS Evolution 3.60.2 plus Microsoft 365 integration is live beside Thunderbird; account and daily-use gates await credentials |
|
||||||
| Transcription | Pending | Requires a real Fossify recording-transfer pilot before implementation moves from Zenith to Orion |
|
| Transcription | Pending | Requires a real Fossify recording-transfer pilot before implementation moves from Zenith to Orion |
|
||||||
@@ -88,12 +91,14 @@ not make it the global next step while another pilot can still progress.
|
|||||||
| NixOS configuration | `chore/workflow-system` | `ca65328` | Remove the unsafe Elephant restart trigger |
|
| NixOS configuration | `chore/workflow-system` | `ca65328` | Remove the unsafe Elephant restart trigger |
|
||||||
| NixOS configuration | `chore/workflow-system` | `d085512` | Advance from Walker to the agent pilot |
|
| NixOS configuration | `chore/workflow-system` | `d085512` | Advance from Walker to the agent pilot |
|
||||||
| NixOS configuration | `chore/workflow-system` | `ee64a7b` | Retire superseded tools and prepare the S3 pilot |
|
| NixOS configuration | `chore/workflow-system` | `ee64a7b` | Retire superseded tools and prepare the S3 pilot |
|
||||||
|
| NixOS configuration | `chore/workflow-system` | `2ef74d4` | Expose the NixOS skill as a supported directory link |
|
||||||
| `yookr-dashboard-new` | `feat/gogv2` | `934605d` | Remove obsolete dashboard converter |
|
| `yookr-dashboard-new` | `feat/gogv2` | `934605d` | Remove obsolete dashboard converter |
|
||||||
| `yookr-dashboard-new` | `feat/gogv2` | `8e6e4bc` | Establish its project contract and native lifecycle |
|
| `yookr-dashboard-new` | `feat/gogv2` | `8e6e4bc` | Establish its project contract and native lifecycle |
|
||||||
| `rules-service` | `chore/workflow-contract` | `555d9cd` | Establish the first common repository contract |
|
| `rules-service` | `chore/workflow-contract` | `555d9cd` | Establish the first common repository contract |
|
||||||
| `yookr-api` | `chore/workflow-contract` | `a76b2b7` | Establish the HTTP and OpenAPI contract |
|
| `yookr-api` | `chore/workflow-contract` | `a76b2b7` | Establish the HTTP and OpenAPI contract |
|
||||||
| `traceability-data-model` | `chore/workflow-contract` | `33cb7ff` | Establish the database and schema contract |
|
| `traceability-data-model` | `chore/workflow-contract` | `33cb7ff` | Establish the database and schema contract |
|
||||||
| `traceability-data-model` | `chore/workflow-contract` | `774e710` | Remove Mathesar and simplify the local stack to PostgreSQL |
|
| `traceability-data-model` | `chore/workflow-contract` | `774e710` | Remove Mathesar and simplify the local stack to PostgreSQL |
|
||||||
|
| `yookr-data-science` | `chore/workflow-contract` | `fa410e1` | Establish its non-mutating project contract |
|
||||||
| `yookr-workbench` | `main` | `badc61c` | Create the workbench and isolate its Garden session |
|
| `yookr-workbench` | `main` | `badc61c` | Create the workbench and isolate its Garden session |
|
||||||
|
|
||||||
## Deferred or externally blocked actions
|
## Deferred or externally blocked actions
|
||||||
@@ -101,14 +106,9 @@ not make it the global next step while another pilot can still progress.
|
|||||||
None of these block work on independent pilots. Surface the exact applicable
|
None of these block work on independent pilots. Surface the exact applicable
|
||||||
step to the user only when it blocks the current task.
|
step to the user only when it blocks the current task.
|
||||||
|
|
||||||
- Activate the consolidated Zenith build with `cd ~/.config/nixos && nh os
|
- Activate the latest Zenith build with `cd ~/.config/nixos && nh os switch`.
|
||||||
switch`. This removes the retired tools and installs `rclone`; only the user
|
This changes `nixos-maintainer` to a supported directory link and installs the
|
||||||
may run it.
|
durable remote-read-only agent instruction; only the user may run it.
|
||||||
- In a separate terminal, enter this repository and run `herdr`, start `codex`,
|
|
||||||
and ask it to read `docs/plans/workflow-system.md` without editing and report
|
|
||||||
the exact next implementation step. Confirm Herdr shows the agent's working
|
|
||||||
and waiting/done states, detach with `Ctrl+B` then `q`, reattach with `herdr`,
|
|
||||||
and confirm the pane survived with its output intact.
|
|
||||||
- Run the bounded Pinta trial using a recent real edit: clipboard/open,
|
- Run the bounded Pinta trial using a recent real edit: clipboard/open,
|
||||||
selection, crop/resize/canvas, text/drawing/shapes, layers/transparency,
|
selection, crop/resize/canvas, text/drawing/shapes, layers/transparency,
|
||||||
basic adjustments, and PNG/JPEG export. Tell the agent whether it fully
|
basic adjustments, and PNG/JPEG export. Tell the agent whether it fully
|
||||||
@@ -132,13 +132,10 @@ step to the user only when it blocks the current task.
|
|||||||
- Make one Fossify recording on the Pixel and let Syncthing transfer it. Do not
|
- Make one Fossify recording on the Pixel and let Syncthing transfer it. Do not
|
||||||
rename or move it manually; the agent must first observe the real write and
|
rename or move it manually; the agent must first observe the real write and
|
||||||
settlement behavior before implementing Orion automation.
|
settlement behavior before implementing Orion automation.
|
||||||
- Reauthenticate the GitHub CLI with `gh auth login -h github.com`; its current
|
- Before inspecting organization Project boards, replace the broad classic
|
||||||
`kirigar` token is invalid. The agent can then complete the read-only PR and
|
GitHub token with a fine-grained token limited to required repository reads
|
||||||
isolated review-worktree gate without more direction.
|
and organization Projects read. The current credential can write and lacks
|
||||||
- Explicitly authorize the five ephemeral, read-only `codex exec` skill-scope
|
Project access; do not widen it with `gh auth refresh`.
|
||||||
checks if sending this private repository to another authenticated Codex
|
|
||||||
session is acceptable. External policy correctly rejected them without that
|
|
||||||
approval; static skill validation already passes.
|
|
||||||
- Rotate the exposed Context7 key and provide `CONTEXT7_API_KEY` through a
|
- Rotate the exposed Context7 key and provide `CONTEXT7_API_KEY` through a
|
||||||
mode-0600 machine-local environment file on each workstation before removing
|
mode-0600 machine-local environment file on each workstation before removing
|
||||||
the static user-config header.
|
the static user-config header.
|
||||||
@@ -150,15 +147,6 @@ step to the user only when it blocks the current task.
|
|||||||
- Move the ignored `yookr-dashboard-new/.env` to its approved machine-local
|
- Move the ignored `yookr-dashboard-new/.env` to its approved machine-local
|
||||||
mode-0600 owner, then update `.envrc`; the non-secret repository contract is
|
mode-0600 owner, then update `.envrc`; the non-secret repository contract is
|
||||||
already complete.
|
already complete.
|
||||||
- Commit or otherwise hand off the extensive dirty `yookr-data-science` work
|
|
||||||
before its flake, live-fetch defaults, local credentials, and missing project
|
|
||||||
contract are changed. Those files overlap the active work directly.
|
|
||||||
- Explicitly approve moving the stale `~/.config/codex` tree to Trash if its old
|
|
||||||
authentication, conversations, databases, and plugins are no longer needed.
|
|
||||||
- Explicitly approve removing the orphaned Podman volume
|
|
||||||
`traceability-data-model_mathesar-secrets` and the old `mathesar_django`
|
|
||||||
database if no Mathesar rollback is wanted. They are disconnected from the
|
|
||||||
repository but preserved because deletion would be irreversible.
|
|
||||||
- Supply one real Yookr S3 task plus a least-privileged remote and authorize one
|
- Supply one real Yookr S3 task plus a least-privileged remote and authorize one
|
||||||
bounded upload. `rclone` is prepared, but no remote or wrapper is guessed.
|
bounded upload. `rclone` is prepared, but no remote or wrapper is guessed.
|
||||||
- Restore access to the locked `yookrdev/constant-store` commit or replace that
|
- Restore access to the locked `yookrdev/constant-store` commit or replace that
|
||||||
@@ -214,9 +202,8 @@ Polaris:
|
|||||||
store-backed `podman-compose` provider through native `containers.conf`.
|
store-backed `podman-compose` provider through native `containers.conf`.
|
||||||
- The resulting flake check and no-link builds for all three hosts pass.
|
- The resulting flake check and no-link builds for all three hosts pass.
|
||||||
- The verified-empty legacy directories `~/work/.data/mongodb`, `~/work/.data`,
|
- The verified-empty legacy directories `~/work/.data/mongodb`, `~/work/.data`,
|
||||||
and `~/work/repos` are removed. The stale `~/.config/codex` tree is preserved
|
and `~/work/repos` are removed. The stale `~/.config/codex` tree was moved to
|
||||||
because it contains old authentication and conversation state; moving that
|
desktop Trash after explicit approval; the active `~/.codex` tree is intact.
|
||||||
recoverably requires explicit user approval.
|
|
||||||
- `rules-service` now has a non-mutating direnv shell, minimal Nix toolchain and
|
- `rules-service` now has a non-mutating direnv shell, minimal Nix toolchain and
|
||||||
formatting check, native Cargo recipes, factual repository instructions,
|
formatting check, native Cargo recipes, factual repository instructions,
|
||||||
one `.http` request collection, explicit test/live deployment paths, and a
|
one `.http` request collection, explicit test/live deployment paths, and a
|
||||||
@@ -239,10 +226,11 @@ Polaris:
|
|||||||
text-ID mode plus a fresh schema in UUID-ID mode. Both the built check and the
|
text-ID mode plus a fresh schema in UUID-ID mode. Both the built check and the
|
||||||
pinned `podman-compose` configuration validation pass.
|
pinned `podman-compose` configuration validation pass.
|
||||||
- Mathesar is removed from `traceability-data-model`; the development stack now
|
- Mathesar is removed from `traceability-data-model`; the development stack now
|
||||||
owns only PostgreSQL plus the explicit schema-reset job. The existing named
|
owns only PostgreSQL plus the explicit schema-reset job. The active named
|
||||||
volume and its historical local role are preserved to avoid stranding data.
|
volume and its historical local role are preserved to avoid stranding data;
|
||||||
`just reset`, `just dev`, the PostGIS fixture query, Compose validation, and
|
the obsolete `mathesar_django` database and orphaned secrets volume were
|
||||||
the flake check pass after the simplification.
|
explicitly approved and deleted. `just reset`, `just dev`, the PostGIS
|
||||||
|
fixture query, Compose validation, and the flake check pass.
|
||||||
- `yookr-dashboard-new` now has the same minimal project contract: a
|
- `yookr-dashboard-new` now has the same minimal project contract: a
|
||||||
non-mutating flake shell, `just dev` over its existing Process Compose graph,
|
non-mutating flake shell, `just dev` over its existing Process Compose graph,
|
||||||
`just check`, factual `AGENTS.md` and README guidance, a flake formatter and
|
`just check`, factual `AGENTS.md` and README guidance, a flake formatter and
|
||||||
@@ -251,15 +239,16 @@ Polaris:
|
|||||||
Vite processes and stopped cleanly. The commit contains only contract files;
|
Vite processes and stopped cleanly. The commit contains only contract files;
|
||||||
the user's existing dashboard source work remains unstaged and untouched.
|
the user's existing dashboard source work remains unstaged and untouched.
|
||||||
- Fresh local clones of `rules-service`, `yookr-api`,
|
- Fresh local clones of `rules-service`, `yookr-api`,
|
||||||
`traceability-data-model`, and `yookr-dashboard-new` all pass `nix flake
|
`traceability-data-model`, `yookr-dashboard-new`, and `yookr-data-science`
|
||||||
check`, expose their tracked `just` catalogs, and remain clean after entering
|
pass their flake and project checks, expose their tracked `just` catalogs,
|
||||||
their development shells. Credential-bearing and externally blocked checks
|
and remain clean after shell entry. Credential-bearing and externally blocked
|
||||||
remain separate gates.
|
checks remain separate gates.
|
||||||
- `yookr-data-science` still lacks a committed project contract, its untracked
|
- `yookr-data-science` now has a non-mutating shell and explicit `just setup`,
|
||||||
flake mutates the checkout during shell entry, and its explicit fetch pipeline
|
`check`, `run`, and `fetch-live` boundaries. Locked local checks and the
|
||||||
still targets live services. Those exact files overlap extensive uncommitted
|
archived notebook use repository-relative paths; live Yookr access remains
|
||||||
user work, so a partial agent edit would be unsafe and misleading; wait for a
|
explicit and was not invoked. Stale path-bound caches were replaced through
|
||||||
commit or deliberate handoff before changing them coherently.
|
the explicit setup command, local credentials are mode 0600, and a fresh
|
||||||
|
clone passes the full contract without shell-created files.
|
||||||
- Gardenctl 2.14.0 and Gardenlogin 0.10.0 are pinned from their official release
|
- Gardenctl 2.14.0 and Gardenlogin 0.10.0 are pinned from their official release
|
||||||
assets; the hashes match the existing binaries byte-for-byte. All three host
|
assets; the hashes match the existing binaries byte-for-byte. All three host
|
||||||
builds pass, the OIDC kubectl plugin is declarative, and Zsh consumes the
|
builds pass, the OIDC kubectl plugin is declarative, and Zsh consumes the
|
||||||
@@ -347,13 +336,32 @@ Polaris:
|
|||||||
- `rclone` is installed as the only preparation for the selected S3 pilot. No
|
- `rclone` is installed as the only preparation for the selected S3 pilot. No
|
||||||
remote, wrapper, or interactive browser is added before a real task and
|
remote, wrapper, or interactive browser is added before a real task and
|
||||||
least-privileged credentials exist.
|
least-privileged credentials exist.
|
||||||
- GitHub PR review is blocked by the invalid `kirigar` CLI token, not repository
|
- GitHub remote state is absolutely read-only; local files, commits, fetches,
|
||||||
state. The agent can complete the read-only review and isolated worktree gate
|
clones, and worktrees remain available. The generated global agent guidance
|
||||||
autonomously after reauthentication.
|
records this boundary. The active `jellespr` credential has broad classic
|
||||||
- The live `nixos-maintainer` skill matches its Nix source and passes static
|
`repo` scope and the sampled repositories report admin access, so the boundary
|
||||||
validation. Five ephemeral read-only behavioral checks were deliberately not
|
is behavioral until it is replaced by a fine-grained read-only token.
|
||||||
run because external policy requires explicit approval before another
|
- The organization exposes 219 open issues and five open pull requests. Recent
|
||||||
authenticated Codex session receives this private repository.
|
dashboard user stories and an existing Project-to-issue-to-cross-repository-PR
|
||||||
|
chain show that the intended ticket workflow already has useful raw material;
|
||||||
|
organization Projects remain unreadable because the token lacks
|
||||||
|
`read:project`. Add no dashboard or wrapper before Monday usage exposes a gap.
|
||||||
|
- The PR gate used `prediction-api#125`: native `gh pr view`, `checks`, and
|
||||||
|
`diff` reads work, while an isolated exact-base reconstruction passes patch,
|
||||||
|
whitespace, and Rust formatting checks and leaves no durable checkout. The PR
|
||||||
|
has no CI, review, linked issue, or concurrency/retry regression test for its
|
||||||
|
deadlock change; private dependency and MySQL requirements prevented a safe
|
||||||
|
full test. Native GitHub and Git tooling suffice without another review UI.
|
||||||
|
- Five authorized ephemeral read-only Codex evaluations respected the no-switch
|
||||||
|
boundary and generally selected the right owners, but exposed that the live
|
||||||
|
`nixos-maintainer` file was absent from the model-visible skill catalog. Home
|
||||||
|
Manager now links the whole skill directory, the shape documented as supported
|
||||||
|
by Codex, rather than linking only `SKILL.md`. The flake and generated Home
|
||||||
|
Manager build pass, and an isolated Codex discovery probe returns
|
||||||
|
`DISCOVERED`; live confirmation awaits user activation.
|
||||||
|
- Herdr reports the agent lifecycle correctly and preserves its pane and output
|
||||||
|
across detach and reattach. Its native defaults suffice; no configuration or
|
||||||
|
wrapper was added.
|
||||||
- In zsh, never use lowercase `path` as a loop or local variable: it is tied to
|
- In zsh, never use lowercase `path` as a loop or local variable: it is tied to
|
||||||
`PATH`. A diagnostic command temporarily hid normal executables by doing so;
|
`PATH`. A diagnostic command temporarily hid normal executables by doing so;
|
||||||
the declarative session environment was correct and needed no patch.
|
the declarative session environment was correct and needed no patch.
|
||||||
|
|||||||
@@ -131,6 +131,15 @@ in
|
|||||||
# Context
|
# Context
|
||||||
|
|
||||||
Every action must justify its context. Minimize tools and skills; prefer targeted queries and bounded output. Ask for readily available large output instead of retrieving it.
|
Every action must justify its context. Minimize tools and skills; prefer targeted queries and bounded output. Ask for readily available large output instead of retrieving it.
|
||||||
|
|
||||||
|
# Remote state
|
||||||
|
|
||||||
|
GitHub and all other repository remotes are strictly read-only. Fetching,
|
||||||
|
cloning, and reading metadata, issues, pull requests, checks, and diffs are
|
||||||
|
allowed. Never push or mutate remote repositories, issues, pull requests,
|
||||||
|
reviews, comments, labels, assignments, projects, workflows, releases,
|
||||||
|
settings, keys, secrets, or variables. Local files and local Git state may
|
||||||
|
be modified as authorized.
|
||||||
'';
|
'';
|
||||||
|
|
||||||
home.file.".codex/skills/nixos-maintainer".source = ./skills/nixos-maintainer;
|
home.file.".codex/skills/nixos-maintainer".source = ./skills/nixos-maintainer;
|
||||||
|
|||||||
Reference in new issue
Block a user