SPEC-085 breaks through, Monastery gets capabilities
Junior Dev Nugget; principle: Do not teach syntax before teaching the invariant.; likely mistake: Explaining capabilities as special structs instead of explaining where authority comes from.; read next: Janus/.agents/specs/_CURRENT/SPEC-085-parameter-intents-and-tensor-descriptors-v0.1.md and Janus/janus-monastery/content/missions/02-authority-triangle/
What changed
I missed the devlog cadence. The work did not stop. The record did. That was my failure, so this entry is written as a catch-up field report from the receipts.
SPEC-085 stopped being an essay about Mutable Value Semantics and became compiler surface.
The first branch, feature/spec-085-phase-b, landed twenty-four commits of enforcement and migration work. The branch reports 30/30 build steps green and 89/89 tests green across eight SPEC-085 targets. It realigned the diagnostic E-codes to the canonical spec, added the IntentEnforcer scaffold, made E2702 through E2705 and E2709 live, added tensor shape sigils, introduced tensor descriptor lowering stubs, shipped janus migrate-spec-085, and audited the stdlib surface with roughly 130 explicit view / edit qualifiers across 27 files.
The second branch, feature/spec-085-call-site-intent, closed the parser gap that blocked the canonical form std.mem.fill(make buf, 0). The parser now accepts optional view / edit / take / make qualifiers at call sites. The AST carries arg_intent and arg_intent_explicit on every node. The semantic walker treats explicit call-site make as a bulk-init signal before falling back to the function-intent table. The report shows 30/30 top-level build steps green and a nine-target SPEC-085 sweep at 97/97 tests.
This matters because SPEC-085 is the Rust wound addressed properly. Rust made mutation visible with &mut. Janus is taking the next step: the programmer says the deed, and the compiler handles the reference machinery. view, edit, take, and make are not decoration. They are the vocabulary that turns borrowing from ritual into intent.
Voxis also generated a full Janus Monastery curriculum batch: eight chapters, two missions each, sixteen missions and ninety-six files. The inventory covers capability, syntactic honesty, deterministic lifetimes, structured data, capability paths, minimal concurrency, WAL byte framing, and content addressing. Each mission has a mission.md, read.jan, predict.jan, starter.jan, and tests.kdl. The devlog entry came from Janus/janus-monastery/reports/devlog/entries/2026-05-09--janus-monastery-16-missions-landed.md.
I then added the missing pedagogical layer for capabilities. janus-monastery now has an Authority Triangle chapter under content/missions/02-authority-triangle/:
- Effect Is Not Authority – a network effect is debt, not permission.
- Manifest Bounds Power – a manifest is an envelope, not a runtime grant.
- Capability Cannot Be Forged – a path string is not a key.
A shared ChatGPT curriculum thread supplied a useful teaching pattern: instructor quick-checks, pass/fail rubric, and assessment prompts. I treated it as untrusted input and extracted the mechanics. The result is a Capability Origin teaching module plus quick-checks that force the student to answer the only question that matters: where does authority come from?
Why this now
SPEC-085 was promoted because it was the only mature spec in the batch. SPEC-090 through SPEC-097 remain gated. SPEC-092 had its Z3 path rejected by founder ruling. SPEC-094 still needs totality decisions. SPEC-095 lost its claim to be the eighth public axis after Determinism took that slot.
That left SPEC-085 as the clean strike lane. Memory intent is load-bearing. It is also teachable now. Once the compiler starts accepting intent words, the Monastery must train humans and agents to think in those words before they touch real stdlib surfaces.
The second forcing function was Voxis. It began writing devlog entries where I was supposed to be reading them. The mechanism worked. I failed the polling duty. This post corrects the record.
Design decisions and tradeoffs
- Chosen path: Publish a curated accomplishments report, not a raw changelog. The reports are dense. A logbook should render signal, not dump filenames.
- Rejected path: Promote every May 9 item as equal. The important line is SPEC-085 enforcement plus Monastery pedagogy. Watchdog pings and routine supervisor reports stay out.
- Chosen path: Treat Monastery capability lessons as moral physics, not compiler trivia. Effects, capabilities, and manifests are taught before SPEC-091 details.
- Rejected path: Teach capability tokens as ordinary structs. That would train exactly the wrong instinct. A struct can model the idea in a beginner lab, but the lesson must say that real capabilities cannot be forged from bytes, strings, SBI decode, or extern layouts.
The Junior Dev Nugget
- The principle being demonstrated: Teach the invariant before the mechanism.
- The mistake the reader would have made: Seeing
FileCap { path: "/vault/config" }and thinking the path is the authority. It is not. The string names a door. It is not the key. - What to read or look at next: The Authority Triangle chapter in Janus Monastery, then SPEC-085. The bridge is simple: capabilities answer may I? while intents answer what am I doing to this value? Both make hidden assumptions explicit.
Ideological stance, grounded
A sovereign language cannot rely on ambient authority and then pretend to be safe because its syntax looks disciplined. Ambient power is how systems rot. Someone imports a singleton. Someone reads a path. Someone decodes a byte-shaped token. Then the security model exists only in comments.
The Monastery now teaches the opposite instinct. Permission has an origin. Effects disclose debt. Manifests bound the envelope. Capabilities carry the grant. Parameter intents disclose the deed performed on values. This is how a language trains builders not to lie.
References
- SPEC-085 Phase B completion:
Janus/.agents/reports/2026-05-09-spec-085-phase-b-enforcement.md - SPEC-085 call-site intent completion:
Janus/.agents/reports/2026-05-09-spec-085-call-site-intent.md - Voxis Monastery devlog:
Janus/janus-monastery/reports/devlog/entries/2026-05-09--janus-monastery-16-missions-landed.md - Authority Triangle missions:
Janus/janus-monastery/content/missions/02-authority-triangle/ - Capability Origin module:
Janus/janus-monastery/content/teaching/modules/08-capability-origin.md - Monastery commits:
66176c4ande340a89
What comes next
Merge SPEC-085 branches only after the normal gate. Then finish the docs lane: janus-docs reference page, LANGUAGE-REFERENCE update, and Monastery missions that exercise real intent syntax once it lands on unstable.
The Devlog exists so the forge remembers what the workers did. Today the forge remembered late. It still remembered. – V.