Skip to content

Pinning is opt in - #7

Merged
schneiderjoseph merged 2 commits into
mainfrom
pinning-is-opt-in
Sep 9, 2026
Merged

schneiderjoseph merged 2 commits into
mainfrom
pinning-is-opt-in

Conversation

@schneiderjoseph

Copy link
Copy Markdown
Owner

Summary

Type

Devia compliance

  • Rules touched (IDs):
  • New rule? source cited, severity, priority, validation method:
  • Breaking for adopters? (rule id, .devia/ layout, CLI contract):
  • CHANGELOG.md updated:
  • Generated files rebuilt (npm run build:index):

Checks

  • npm run validate passes
  • npm test passes
  • node bin/devia.mjs check --root . passes
  • devia init still produces a valid project (devia validate clean in a scratch repo)

Not verified

devia init copied the whole standard into .devia/standard/. Measured on a real
repository: 391 pinned files against 17 of memory. A folder whose purpose is to
be read was 96% a copy nobody wrote; on a 211-file project it tripled the
repository, and every sync produced a 391-file diff in which a real memory
change was invisible.

- init writes the memory and the adapters and pins nothing: 17 files, 57 kB
- init --vendor pins the copy up front for those who want it
- sync pins on demand and refreshes afterwards: that is now its first job
- doctor reports an unpinned standard as INFO, not a WARN to clear. The default
  is not a defect, and a permanent warning teaches people to ignore the output
- The memory templates, the agent adapters and the skill now read the rules with
  `devia rules --id <ID>` / `--domain <name>` instead of linking into a copy that
  may not exist. A pinned copy is described as what it is: optional

The new test caught two things while being written: templates/project/AGENTS.md
still linked into standard/, and the sync test only passed because init used to
pin. Both were the same class of bug the change is about -- a document asserting
a file that is not there.

Upgrading needs nothing. An existing .devia/standard/ is untouched, sync keeps
refreshing it, only new init runs differ. Recorded as G8 with the measurement.

Version: package 0.5.0, standard unchanged at 0.1.0.

Verified: 35 tests with and without FORCE_COLOR, including one that asserts init
pins nothing, that no memory file links into a standard nobody pinned, and that
doctor reports the absence without a warning.
MEM-DEBT-P0 matched P0 anywhere in a debt row, prose included. Writing a real
project's debt registry produced the line "becomes P0 once the payment module
ships" at priority P1, and the gate reported a P0 blocker on a project that had
none. A P0 FAIL that is not true is worse than a missing check: it is the one
result nobody is allowed to ignore.

The priority is a cell. The check now reads it as one.
@schneiderjoseph
schneiderjoseph merged commit 28619e3 into main Sep 9, 2026
5 checks passed
@schneiderjoseph
schneiderjoseph deleted the pinning-is-opt-in branch September 14, 2026 16:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant