doctor: enforce direnv and federate Ting OpenSpec context #89

Closed
opened 2026-08-26 01:39:24 +00:00 by agent.odin · 0 comments
Owner

Proposal

Why

The doctor currently enters nested nix develop shells and has no durable project declaration for its own wiki OpenSpec store. That conceals the actual checkout environment and leaves the engineering contract optional.

Scope

  • Make the direnv-loaded default flake shell a doctor prerequisite and create a missing tracked .envrc.
  • Remove nested nix develop wrapping; provide nu and gum through the default devShell.
  • Reconcile openspec/config.yaml with store: wiki for the project’s own planning root, and keep ting-governance as a separate shared governance reference.
  • Reconcile the canonical origin remote and retire legacy forge, jo, and sr names.
  • Declare Ting governance in AGENTS.md; Jostoph remains intentionally unwired as the canonical doctor reference.

Design

The doctor manages the declaration, not user consent: it creates .envrc but leaves direnv allow as the visible acknowledgement. The project wiki is the OpenSpec store. Ting governance is read-only referenced context, never the project store.

Specification Delta

Requirement: doctor runs inside the declared development environment

  • GIVEN a checkout missing .envrc
  • WHEN an operator runs the doctor
  • THEN it creates use flake, requires a subsequently active direnv environment, and runs recipes without nesting nix develop.

Requirement: the project wiki is the OpenSpec store

  • GIVEN a Ting-governed project
  • WHEN the doctor runs
  • THEN openspec/config.yaml sets store: wiki and retains ting-governance only in references: with its remote.

Tasks

  • Add direnv law and default-shell prerequisites.
  • Add the wiki store and Ting-governance reference reconciler and initial config.
  • Update development dependencies, instructions, and the Ting governance declaration.
  • Verify direnv activation, doctor idempotence, and nix flake check --no-build.

Provenance

Freeholder-directed, 2026-08-26.

## Proposal ### Why The doctor currently enters nested `nix develop` shells and has no durable project declaration for its own wiki OpenSpec store. That conceals the actual checkout environment and leaves the engineering contract optional. ### Scope - Make the direnv-loaded default flake shell a doctor prerequisite and create a missing tracked `.envrc`. - Remove nested `nix develop` wrapping; provide `nu` and `gum` through the default devShell. - Reconcile `openspec/config.yaml` with `store: wiki` for the project’s own planning root, and keep `ting-governance` as a separate shared governance reference. - Reconcile the canonical `origin` remote and retire legacy `forge`, `jo`, and `sr` names. - Declare Ting governance in `AGENTS.md`; Jostoph remains intentionally unwired as the canonical doctor reference. ## Design The doctor manages the declaration, not user consent: it creates `.envrc` but leaves `direnv allow` as the visible acknowledgement. The project wiki is the OpenSpec store. Ting governance is read-only referenced context, never the project store. ## Specification Delta ### Requirement: doctor runs inside the declared development environment - GIVEN a checkout missing `.envrc` - WHEN an operator runs the doctor - THEN it creates `use flake`, requires a subsequently active direnv environment, and runs recipes without nesting `nix develop`. ### Requirement: the project wiki is the OpenSpec store - GIVEN a Ting-governed project - WHEN the doctor runs - THEN `openspec/config.yaml` sets `store: wiki` and retains `ting-governance` only in `references:` with its remote. ## Tasks - [x] Add direnv law and default-shell prerequisites. - [x] Add the wiki store and Ting-governance reference reconciler and initial config. - [x] Update development dependencies, instructions, and the Ting governance declaration. - [x] Verify direnv activation, doctor idempotence, and `nix flake check --no-build`. ## Provenance Freeholder-directed, 2026-08-26.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Ting/Jostoph#89
No description provided.