232 lines
15 KiB
Markdown
232 lines
15 KiB
Markdown
# Constellation: working state
|
||
|
||
Read [the design](constellation.md) and this file to resume. Keep this file short:
|
||
replace superseded state rather than appending a chronological log.
|
||
|
||
## Working agreement
|
||
|
||
- Explore the philosophy through concrete use, discuss meaningful choices, then
|
||
implement a small coherent change. Curiosity and alternative designs are welcome;
|
||
an idea need not prove a defect before we explore it.
|
||
- Write succinctly without losing important details. Distinguish accepted choices,
|
||
proposals and observations. Ask when intent would change the design; resolve
|
||
routine implementation details autonomously. Infer opportunities from the user's
|
||
philosophy and actual use; contribute design ideas beyond literal backlog items.
|
||
Continue to the next natural step when the user could only usefully say "continue";
|
||
pause for material choices or missing authority, not routine progress.
|
||
- Minimize input stops: plan a coherent batch of autonomous work and gather the
|
||
material inputs needed for the next batch together. Avoid serial question/action
|
||
loops. When pausing, state exactly what input is needed and what it will decide;
|
||
otherwise continue with the next logical step rather than ending with an offer.
|
||
- The main agent owns alignment, design and integration and may do small work.
|
||
Use subagents for bounded independent investigations or implementation with clear
|
||
ownership. Begin with at most two workers; avoid overlapping writes, duplicate
|
||
investigations and mandatory delegation of trivial tasks.
|
||
- Give workers the question, relevant paths, constraints and expected result.
|
||
Prefer a compact brief and fresh context when sufficient; retain relevant prior
|
||
context for follow-ups. Return conclusions, uncertainty and evidence pointers,
|
||
not raw logs. Astra/Sol orchestration is a candidate to learn from, not a fixed rule.
|
||
- Read only what can affect the current decision. Use quiet commands and bounded
|
||
output; keep large logs in `/tmp` and inspect relevant failures. Do not repeatedly
|
||
check settled facts. Consult current documentation for consequential or unfamiliar
|
||
interfaces when needed for the task.
|
||
- No tests unless explicitly requested. Keep other verification proportional;
|
||
report only what was actually checked. Avoid turning small changes into campaigns.
|
||
- Keep durable decisions in the design and current questions/next steps here.
|
||
Add an area-specific document only when an active topic outgrows this arrangement.
|
||
No separate backlog, scratchpad, audit ledger or agent-role files for now.
|
||
|
||
## Boundaries
|
||
|
||
Repository remotes are read-only. Only the user activates system generations.
|
||
Agents must not have write access to live company systems; test writes require
|
||
task-specific authority and care. Do not read secret values for layout discovery.
|
||
Current exploration does not authorize relocating credentials, synchronizing
|
||
company content or deleting existing material. Existing local changes are preserved.
|
||
|
||
## Git baseline — 2026-09-09
|
||
|
||
The accumulated NixOS changes are recorded in focused local commits on
|
||
`chore/workflow-system`: AI tooling/inputs, editor ergonomics, query persistence
|
||
and target context, workspace navigation, Notes, SharePoint, Zellij and TeamViewer.
|
||
The original long handoff and archived plans are preserved in commit `4e3a3ac`;
|
||
use Git history for chronology. `nvim.log` is retained locally and ignored.
|
||
Workbench changes are committed on its local `main`: `eb8da6a` organizes HTTP/SQL
|
||
material and `063157c` archives helpers and documents native tools. The ordinary
|
||
company-root files are outside either repository and remain user-owned.
|
||
This cleanup preserves implementation behavior; a commit does not establish runtime
|
||
acceptance. Keep subsequent implementation and its documentation in the same
|
||
coherent commit before starting unrelated work.
|
||
|
||
## Implemented state
|
||
|
||
- **Places:** `~/yookr` has ordinary `.envrc` and `AGENTS.md` files; its environment
|
||
loads workbench tools only. Workbench is at `~/yookr/workbench`, company projects
|
||
at `~/yookr/projects`, and personal groups at `~/projects/{own,ext,forks}`.
|
||
Direct moves retained archives/worktrees; all three linked dashboard worktrees
|
||
were repaired. Nix owns tools/integration, not these workspace files.
|
||
- **Navigation:** Walker enters Yookr or a repository; Git identity follows the
|
||
company root; XDG projects points to `~/projects`. Notes has a desktop entry
|
||
opening `~/sync/notes` without creating a daily note. Existing note commands,
|
||
project search and Niri daily-note behavior remain.
|
||
- **Synchronization:** Bruno collections were previously moved to Trash on Zenith
|
||
and their shared Syncthing entry removed. Other devices' files were untouched.
|
||
Syncthing was subsequently observed running. Notes and credentials remain in place.
|
||
- **API/database work:** workbench `http/` groups requests by service with shared
|
||
authentication; `databases/` groups reusable queries by database. Private HTTP
|
||
environment files are ignored at any depth. Dadbod working queries persist under
|
||
`stdpath('data')/db_ui/working`; write them there without promoting them into Git.
|
||
Saved-query storage also contains connection state and must stay outside Git.
|
||
Lualine uses native Kulala environment and Dadbod connection/timing components.
|
||
These indicators are not access controls.
|
||
- **Editor ergonomics:** word-boundary wrapping, count-aware displayed-line `j/k`
|
||
in ordinary normal/visual buffers, and Blink Escape cancellation. The existing
|
||
`tests/neovim-ergonomics.lua` is retained; earlier smoke-check evidence is in the
|
||
archived plan, with interactive preview restoration/visual behavior unproven.
|
||
- **Agents:** Herdr is selected; agent-deck and tmux remain installed alongside it.
|
||
Codex has agent-deck notifications and hooks enabled. Shared Context7/NixOS skills
|
||
live under `.agents/skills`; a Nix-managed marketplace exposes Ponytail.
|
||
Zellij is also declared on workstations. Detailed project workflow remains open.
|
||
- **SharePoint:** Zenith declares an hourly service syncing `company-sharepoint:`
|
||
into `~/.local/share/yookr-reference/sharepoint/Algemeen` and
|
||
`company-sharepoint-projecten:` into `Projecten`. Each invocation has
|
||
`--max-delete 100`; new files use `UMask=0077`. The latest implementation only
|
||
checks for `rclone.conf`; the old environment-file gate is gone. Archived setup
|
||
instructions describe an earlier version. Consent, remote configuration and
|
||
synchronization state were not inspected during this cleanup.
|
||
- **Remote support:** Zenith enables TeamViewer. Temporary Xorg/Xfce settings are
|
||
comments only. The purpose beyond remote support and runtime acceptance were
|
||
not recorded; preserve the change without calling it a settled design.
|
||
- **Inputs:** accumulated lock updates are retained, including an older Elephant
|
||
revision (`376ee71c` replacing `23f37238`). No rollback rationale was recorded.
|
||
|
||
## Activation and verification
|
||
|
||
Earlier handoffs report user activation of the relocated XDG/Git/Walker paths and
|
||
Dadbod working-query persistence. Notes and the newer target statusline were last
|
||
recorded as pending activation. Only Zenith's filesystem was relocated; other hosts
|
||
need their own migration before adopting the shared paths. Reopen shells or
|
||
recreate path-dependent development environments as needed; no compatibility links
|
||
or cache rewrites were introduced.
|
||
|
||
For this cleanup, `nix flake check --no-build --quiet` and diff whitespace checking
|
||
passed in both NixOS and workbench. NixOS emitted the expected dirty-tree and unknown
|
||
`modules` warnings; workbench emitted only the dirty-tree warning.
|
||
No builds, tests, activation, credential reads or company-service calls were
|
||
performed. Active-generation differences were not checked; earlier activation
|
||
reports are not a fresh comparison with this baseline.
|
||
|
||
## Open choices and next discussion
|
||
|
||
Dictation: plain local transcription is selected; rambling cleanup is deferred.
|
||
The shared Niri module installs Handy and starts it hidden with the desktop.
|
||
Super+D toggles recording; Super+Shift+D cancels. Commands were verified against
|
||
the pinned Handy 0.9.1 source. No microphone recording or model download was run.
|
||
After user activation, launch Handy from Walker, download/select Parakeet V3,
|
||
keep automatic language detection and disable push-to-talk for toggle operation.
|
||
In Advanced, choose paste method None and clipboard handling Copy to Clipboard.
|
||
Keep post-processing disabled. Settings/models remain writable app-owned state.
|
||
Start Handy manually for the current session; desktop autostart applies on login.
|
||
Try an English and a Dutch recording, paste into Codex with Ctrl+Shift+V, then
|
||
submit manually. User feedback needed: recognition accuracy, delay and shortcut
|
||
delivery. Automatic paste can follow if wanted after checking Niri compatibility.
|
||
Verification: formatting, flake evaluation, Zenith and Polaris no-link system
|
||
builds, and whitespace checks passed. No system activation or interactive
|
||
dictation was performed; recognition quality and latency remain unmeasured.
|
||
First-use diagnosis: Handy was set to Nemotron, Direct Input, Don't Modify
|
||
Clipboard and push-to-talk. One recording transcribed but output used X11 input
|
||
simulation; other recordings returned zero usable samples. Default digital mic
|
||
is unmuted. Set None + Copy to Clipboard and retry a full sentence; microphone
|
||
selection/voice detection needs further checking if History stays empty.
|
||
Niri Super+D invokes a forced toggle, independent of Handy's push-to-talk setting;
|
||
Handy's Ctrl+Space global binding is not the Niri binding. Keep the user's minimal
|
||
overlay. Noctalia's native microphone filter suppresses all microphone activity
|
||
popups/indicators, while camera and screen-sharing indications remain enabled.
|
||
The Noctalia change passed formatting, flake evaluation and both workstation
|
||
builds; user activation and the clipboard retry remain pending.
|
||
|
||
The focus is the broader environment, not further API/database polish. Candidate
|
||
areas remain places/ownership, navigation/interaction, human/agent collaboration,
|
||
and system operation/maintenance; these are discussion areas, not a work queue.
|
||
|
||
Current choice: keep Herdr and configure its keys. The user likes its structure,
|
||
spaces and overview; keyboard interaction is the issue. Agent evaluation is
|
||
explicitly deferred. Do not resume replacement-tool comparisons or ask for an
|
||
evaluation task/budget as a prerequisite for this work.
|
||
|
||
Read-only inspection found existing Niri overview, workspace movement and tabbed
|
||
columns; Kitty has no declared project/session organization. Installed versions:
|
||
Kitty 0.48.2, Niri 26.04, tmux 3.7c, Zellij 0.45.1 and Herdr 0.9.0.
|
||
Herdr's installed default config confirms remappable navigation and agent jumps.
|
||
Current [Herdr keyboard docs](https://herdr.dev/docs/keyboard/) describe direct
|
||
chords; [Kitty sessions](https://sw.kovidgoyal.net/kitty/sessions/) supply native
|
||
session creation/switching. Session layouts and window overviews do not themselves
|
||
provide authoritative agent attention states. tmux detach keeps processes alive;
|
||
Zellij resurrection recreates layouts/commands, not process memory. None of these
|
||
capabilities was exercised interactively; no sessions were inspected or changed.
|
||
|
||
Proposed workflow, awaiting discussion: organize human-visible work by project/task;
|
||
one lead conversation owns each coherent change. Use bounded subagents when work
|
||
is independent, with explicit ownership and evidence returned to the lead. Separate
|
||
worktrees for independent writing efforts, one integration owner. Keep enduring
|
||
repository rules in AGENTS.md, current goals/acceptance in task prompts, and durable
|
||
decisions/current state in existing project docs. No fixed agent team is selected.
|
||
|
||
Herdr configuration is now declared in `modules/capabilities/ai.nix`, including
|
||
the existing Kanagawa theme, workspace-sorted agent panel and disabled toasts.
|
||
Home Manager owns `~/.config/herdr/config.toml` after activation; maintain these
|
||
preferences in Nix. Its configured `.bak` mechanism preserves the previous regular
|
||
file. Direct Ctrl+Alt bindings supplement the existing Ctrl+B prefix shortcuts:
|
||
|
||
| Ctrl+Alt + | Action |
|
||
| --- | --- |
|
||
| H / J / K / L | Focus pane left / down / up / right |
|
||
| U / I | Next / previous workspace |
|
||
| O / G | Workspace picker / goto picker |
|
||
| 1–9 | Focus agent |
|
||
| [ / ] | Previous / next tab |
|
||
| Enter | New tab |
|
||
| V / Minus | Split right / down |
|
||
| F | Zoom pane |
|
||
| Q | Detach, leaving the session running |
|
||
|
||
Inside workspace navigation, U/I moves down/up and H/J/K/L retains pane navigation.
|
||
Niri and Kitty bindings are unchanged. Syntax and action names were checked against
|
||
the installed Herdr 0.9.0 default config and current upstream documentation.
|
||
Interactive delivery through Kitty remains for user acceptance after activation.
|
||
Reload Herdr with its existing Ctrl+B then Shift+R binding after activating Nix.
|
||
Verification: repository formatting, rendered TOML parsing, flake evaluation,
|
||
Zenith no-link system build and whitespace checking passed. No tests or live Herdr
|
||
session changes performed by the agent. The user's activation installed the Herdr
|
||
config and preserved `config.toml.bak`, but Home Manager later timed out (below).
|
||
After retrying activation, reload Herdr and gather combined feedback on
|
||
pane/workspace movement, the pickers and agent jumps.
|
||
|
||
Activation fix (2026-09-09): Home Manager's service switch stopped and restarted
|
||
the running SharePoint oneshot, then waited until Home Manager's five-minute start
|
||
timeout. Service-state inspection identified SharePoint as the sole pending user
|
||
job; its oneshot start timeout is unlimited. This was not a Herdr file collision.
|
||
Set `Unit.X-SwitchMethod = "keep-old"` in `sharepoint-reference.nix` so activation
|
||
leaves an in-flight sync running; subsequent timer runs use the updated unit.
|
||
Verified against pinned Home Manager/sd-switch source. Formatting, flake evaluation,
|
||
Zenith build and whitespace checks passed; the focused sd-switch dry run reported
|
||
`Keep active sharepoint-reference-sync.service`, with no restart planned. No live
|
||
units were changed and no company content or credentials were read. The user must
|
||
retry activation to verify the full switch; sync health/content completeness were
|
||
not investigated.
|
||
|
||
Mail search remains unresolved. The workbench's custom mail reader, inventory
|
||
pilot, justfile and old README are archived; native Garden/kubectl/K9s now own the
|
||
documented operations. No replacement mail helper or semantic index is selected;
|
||
raw mailbox grep is not assumed sufficient. No new ingestion is authorized.
|
||
|
||
Human credential delivery remains both test/live via environment variables with
|
||
ordinary editor startup. Workbench `.envrc` supplies aggregate credentials; agents
|
||
must not source it. Separate read-only agent credentials and access isolation are
|
||
explicitly deferred, not prerequisites for unrelated work. Do not resume the
|
||
rejected per-connection launchers or per-selection decryption proposal.
|
||
|
||
Notes placement and further company material organization remain open. Work is
|
||
mostly project-based and notes mostly meetings; do not impose investigation
|
||
folders, outer project containers or company-wide editor search without a need.
|