Commit Graph

15 Commits

Author SHA1 Message Date
Brummel 78e8338a8d iter eob.1: effect-op args walk as Borrow; heap-Str RC discipline closes
Language rule: Term::Do.args[*] are walked in Position::Borrow by
the uniqueness + linearity passes, symmetric to Term::Ctor.args[*]
being walked in Position::Consume. The kind itself carries the
ownership default — no per-op field on EffectOpSig. Three
analyser sites flip in lockstep: uniqueness.rs:289, linearity.rs:506,
and the shared doc-comment at linearity.rs:42.

Heap-Str-specific consequences (closing hs.4's leak):
- int_to_str / float_to_str ret_mode: Implicit → Own at four lockstep
  sites (builtins.rs:200,210 + synth.rs:172,179). The codegen
  trackability gate (drop.rs:464-475, iter 18g.2) now fires on these
  callees, so the let-binder receives a scope-close drop.
- drop_symbol_for_binder's App arm gets a Type::Con{name:"Str"} →
  "ailang_rc_dec" carve-out, symmetric to field_drop_call's existing
  Str arm. Without it, the new Own-trackable App binder would emit
  drop_<m>_Str (undefined).

Tests: the two pre-existing RED tests at e2e.rs (commit 592d87b)
flip to GREEN unchanged with predicted numbers (allocs=1,frees=1,
live=0 and allocs=2,frees=2,live=0). Two new positive tests pin
the rule's coverage: primitive-Int arg through io/print_int produces
zero RC traffic; heap-Str through 2× io/print_str in sequence
typechecks (no use-after-consume) and balances allocs=1,frees=1,
live=0.

DESIGN.md §Decision 10 gets the arg-position-policy table for both
AST node kinds (Ctor=Consume, Do=Borrow) plus a linking paragraph
explaining how Do=Borrow cooperates with ret_mode==Own.

heap-str-abi milestone closes here: WhatsNew entry shipped (Strings
produced at runtime now release cleanly), roadmap P1 entry checked
off, Post-22-Prelude depends-on line removed.

Workspace cargo test + cross_lang.py + compile_check.py all green.
check.py noisy latency cluster + bench_list_sum.bump_s ±12% — same
precedent as the previous two audits, not coupled to this milestone.
2026-05-12 21:29:05 +02:00
Brummel 17b370bbb3 WhatsNew: cross-model authoring test — second subject added 2026-05-12 13:29:34 +02:00
Brummel 8689f7a238 WhatsNew: cross-model authoring test landed — first data point
Mirrors verbatim the done-state notification sent at milestone
close. Single-subject scope; multi-subject expansion queued.
2026-05-12 12:22:08 +02:00
Brummel d1e514f2e7 WhatsNew: roundtrip-invariant milestone closed 2026-05-12 09:47:25 +02:00
Brummel b6046bb6eb WhatsNew: rt.1 — roundtrip safety net landed 2026-05-12 09:32:11 +02:00
Brummel edccc087a4 WhatsNew: audit-23 — milestone closed, regression ratified 2026-05-12 00:57:36 +02:00
Brummel 3fed372d77 WhatsNew: iter 23.5 — Eq/Ord prelude milestone closed 2026-05-12 00:39:59 +02:00
Brummel bff647eaa7 WhatsNew: iter 23.4 — eq/ord prelude work back on track 2026-05-12 00:00:46 +02:00
Brummel fc4df2bc7c WhatsNew: 2026-05-11 spec grounding-check 2026-05-11 19:51:19 +02:00
Brummel 5c3bd9ab24 or.2: orchestrator-agent design correction — no nested subagent dispatch
Claude Code categorically forbids subagents from spawning other
subagents (code.claude.com/docs/en/sub-agents and the Agent SDK
subagents page). The `or.1` architecture (and `pr.1` that ran on
top of it) presumed a named-exception for `ailang-implement-
orchestrator` to dispatch implementer / spec-reviewer / quality-
reviewer / tester per task. That exception never existed at the
platform level; the `Agent` tool was silently dropped from the
orchestrator-agent's tool set at dispatch time.

Architecture revised, doc-only:

- Per-task phases (implementer → spec-compliance check → quality
  check) now run as sequential role-switches in the orchestrator-
  agent's own context, not as nested subagents.
- The four role-files (implementer / spec-reviewer / quality-
  reviewer / tester) become phase reference files the
  orchestrator-agent consults at role-switch boundaries.
- Boss-context offload preserved; fresh-per-phase context given
  up (the property that drove or.1's nested-dispatch design is
  not buildable in Claude Code).

Files touched:
- skills/implement/agents/ailang-implement-orchestrator.md
  (frontmatter, Iron Law, Phase 2/3 rewrite, rationalisations,
  red flags)
- skills/implement/SKILL.md (frontmatter, Iron Law, sub-status
  vocabulary note, cross-references)
- skills/README.md (Conventions: no more named exception; agent
  roster: role-files recast as phase references)
- docs/journals/INDEX.md (or.2 entry appended)
- docs/journals/2026-05-11-iter-or.2.md (new — full rationale)
- docs/roadmap.md (P1 tool-wiring item removed; resolved as
  categorically-not-fixable)
- docs/WhatsNew.md (user-facing correction entry appended)

No code changes; no bench impact; CLAUDE.md untouched (no stale
references to fix there).
2026-05-11 13:01:38 +02:00
Brummel bd801b979c whatsnew: 2026-05-11 plan-writing offload + first-run debrief 2026-05-11 12:45:15 +02:00
Brummel 5f4a75eb60 whatsnew: 2026-05-11 implement cycle no longer eats your context 2026-05-11 12:04:04 +02:00
Brummel c252b1aa28 iter or.1.tidy: audit-driven sweep of stale JOURNAL.md references in live docs 2026-05-11 12:03:01 +02:00
Brummel f482a6317f process: switch WhatsNew.md and Notify text to English
Reversal of the language decision from 6d94fa5. Texts that get
committed to the repo permanently should follow the same English-
only rule as everything else; the Notify push stays 1:1 with the
WhatsNew entry, so both are English now.

The "only file intentionally not in English" carve-out in CLAUDE.md
is removed.
2026-05-11 09:06:47 +02:00
Brummel 6d94fa5826 process: user-facing WhatsNew.md changelog + done-state notify protocol
Done-state notifications now produce two synchronised outputs sharing
one text: an entry appended to docs/WhatsNew.md and the same string
sent via notify.sh. The text is written in German for the user-as-
reader who did not watch the session — no technical internals, no
iteration codes, lead with the change-in-the-project.

WhatsNew.md is the only file in the repo intentionally not in English;
the exception is documented in CLAUDE.md (Roles of docs/...) so a
future reader does not "correct" it back. Bounce-back notifications
stay Notify-only.
2026-05-11 09:01:04 +02:00