workflow: scrub residual JOURNAL/journal refs missed in the first sweep

A re-grep found 15 live references (excluding docs/specs/ and
docs/plans/, which stay historical) the previous two commits
missed — all in source comments, doctests, bench helpers, and one
agent file.

Per-file:
- crates/ail/src/main.rs: typeclass-coherence diagnostic comment
  pointed at "the JOURNAL queue's wording" — points at
  design/contracts/typeclasses.md alone.
- crates/ailang-prose/src/lib.rs: `//!` header referred to
  docs/JOURNAL.md "Pinned: human-readable prose surface" —
  retargeted to design/contracts/authoring-surface.md.
- crates/ailang-check/src/lib.rs: bugfix tag + "see iter
  method-dispatch-refactor journal" prose collapsed to a clean
  rationale paragraph; the canonical shape is stated inline.
- crates/ailang-surface/tests/prelude_decouple_carve_out_pin.rs:
  "(d) record the rationale in a per-iter journal" →
  "(d) record the rationale in the commit body".
- crates/ailang-surface/tests/prelude_module_hash_pin.rs: header
  collapsed (pd.2/pd.3 milestone narrative dropped — the test's
  purpose is self-evident from its body); both "per-iter journal"
  drift-instructions point at the commit body.
- runtime/rc.c: "bench numbers in JOURNAL 18f.2" →
  "original profiling bench numbers".
- bench/run.sh: two "JOURNAL entry" comments → "commit body".
- bench/architect_sweeps.sh: header rewritten (cross-ref to the
  design-md-consolidation milestone commits, not a JOURNAL entry).
  Sweep-4 extended with two new anti-regrowth phrases
  ("see the per-iter journal", "in a per-iter journal") so journal
  prose can't grow back into design/contracts/ silently.
- skills/audit/agents/ailang-architect.md: "unlike a journal it
  lives on main" → "since it lives on main".
- ail-embed/src/bin/timeshard_runner.rs: "records it in the
  close-out journal" → "prints it to stderr".
- ail-embed/tests/timeshard.rs: two "journal-only friction timing"
  → "stderr-only friction timing".

Verification (after the edit):
- `grep -rin '\bjournal\b'` against live tree returns exactly two
  hits: the Sweep-4 regex itself (intentional — TABU phrases that
  prevent regrowth) and the PHRASES array in design_index_pin.rs
  (intentional — the same regrowth guard at test level). Both are
  load-bearing negative assertions.
- `bash bench/architect_sweeps.sh` exits 0 ("All five sweeps
  clean") — no design/-side regrowth.
- `cargo build --workspace` green; `cargo test --workspace` green.
This commit is contained in:
2026-05-20 11:32:37 +02:00
parent 54f0ced148
commit 99df14c792
11 changed files with 35 additions and 48 deletions
+2 -2
View File
@@ -8,8 +8,8 @@
//! one-ctx-per-thread — a shared-ctx design is `error[E0277]`).
//! Prints, in shard order, `RESULT <idx> <from> <to> <accbits:016x>
//! <n>`, then one `TIMING total_ticks=<Σn> elapsed_ms=<wall>` line
//! (the friction-harvest observation; the test records it in the
//! close-out journal, it is not asserted).
//! (the friction-harvest observation; the test prints it to stderr,
//! it is not asserted).
use std::sync::Arc;
use std::time::Instant;
+2 -2
View File
@@ -13,7 +13,7 @@
//! is host arithmetic, NOT a kernel property — asserting it
//! bit-exact would be WRONG, per the spec).
//! Plus the global leak-Σ (deterministic since dbd76e5) and a
//! journal-only friction timing capture (NO bench gate).
//! stderr-only friction timing capture (NO bench gate).
//!
//! Concrete pin: EURUSD, months 2017-03 / 2017-04 / 2017-05 (all
//! present on /mnt, contiguous, no gaps — recon-verified). data-server
@@ -217,7 +217,7 @@ fn timeshard_boundary_invisibility_and_leak_free() {
"globally leak-free: Σallocs==Σfrees across {seen} stat line(s)"
);
// Friction harvest: journal-only observation, NO assertion (the
// Friction harvest: stderr-only observation, NO assertion (the
// value feeds the P2 batch-crossing decision; it is not a gate).
if let Some(tl) = stdout.lines().find(|l| l.starts_with("TIMING ")) {
eprintln!("m5.3 friction-harvest: {tl} (Σn={sum_n})");
+5 -7
View File
@@ -11,15 +11,13 @@
# Wunschdenken / post-mortem invariant.
#
# Companion to skills/audit/agents/ailang-architect.md "What you check
# / design/ history-anchor regrowth". See JOURNAL 2026-05-10
# ("Milestone close: design-md-consolidation") for the rationale of
# each sweep regex; the regexes here are copied verbatim from JOURNAL
# entries 12487 (Sweep 1), 12619 (Sweep 2), 12718-12720 (Sweep 3),
# and 12840 (Sweep 4).
# / design/ history-anchor regrowth". The rationale of each sweep
# regex (Sweeps 14: history anchors; Sweep 5: honesty / Wunschdenken)
# lives in the design-md-consolidation milestone commits (2026-05-10).
#
# A non-zero exit is advisory, not authoritative: the architect agent
# reviews each match and decides whether it is a legitimate quote
# (e.g. a JOURNAL citation inside a block-quote) or fresh drift.
# (e.g. a block-quote citation of a commit body) or fresh drift.
set -u
INDEX="design/INDEX.md"
@@ -54,7 +52,7 @@ run_sweep "3 (schema SoT)" \
'^\s*(struct |enum |pub (struct|enum|fn))|whenever the two disagree|ast\.rs is the source of truth'
run_sweep "4 (workflow + stale cross-references)" \
'agents/README\.md|ailang-docwriter|Recently lifted|see the JOURNAL queue|later the same day|Sharpened later|closure conversion in JOURNAL'
'agents/README\.md|ailang-docwriter|Recently lifted|see the JOURNAL queue|later the same day|Sharpened later|closure conversion in JOURNAL|see the per-iter journal|in a per-iter journal'
run_sweep "5 (honesty: wunschdenken + non-citation post-mortem)" \
'on the path to|may land in a future|ships in a future iter|[Ww]ill back `Show|[Ww]ill eventually (be|support|back)|[Ii]f/?when [a-z]+ (arrives|lands)|[Aa]n earlier draft of this|previously all diagnostics were|[Ww]hat did change in 20|were retired 20[0-9]{2}-|retired in iter [a-z]|originally listed|\bwas deferred\b|foundation for [a-z]'
+3 -3
View File
@@ -8,7 +8,7 @@
# The bump number minus the gc number is the upper-bound cost of GC.
#
# Output: a table with gc-median, bump-median, overhead %, and max RSS
# for both modes. Designed to be captured verbatim into a JOURNAL entry.
# for both modes. Designed to be captured verbatim into a commit body.
#
# Requirements: bash, /usr/bin/time -v (GNU coreutils), bc, sort, awk,
# a release-mode `ail` binary.
@@ -192,8 +192,8 @@ if [[ -x "$LAT_HARNESS" && -f "$LAT_IMPL_SRC" && -f "$LAT_EXPL_SRC" ]]; then
"$AIL" build --opt=-O2 --alloc=rc "$LAT_IMPL_SRC" -o "$OUTDIR/bench_latency_implicit_rc" >/dev/null
# The harness prints a multi-line block per arm; we let it speak
# for itself. The orchestrator captures the verbatim output into a
# JOURNAL entry like the throughput table above. `--runs 5` runs
# for itself. The orchestrator captures the verbatim output into
# the commit body like the throughput table above. `--runs 5` runs
# each arm five times; the harness drops the slowest run and
# reports median + range per cell, matching the throughput
# table's drop-slowest convention.
+2 -2
View File
@@ -1099,8 +1099,8 @@ fn workspace_error_to_diagnostic(
})),
),
// typeclass-coherence diagnostics emitted from
// `workspace::build_registry`. The codes follow the JOURNAL
// queue's wording and the diagnostic-categories section of
// `workspace::build_registry`. The codes follow the
// diagnostic-categories section of
// `design/contracts/typeclasses.md`.
W::OrphanInstance {
class,
+6 -8
View File
@@ -1699,14 +1699,12 @@ fn check_def(
}
}
/// bugfix-instance-body-unbound-var (2026-05-13): route each
/// `InstanceMethod` body through `check_fn` by wrapping it in a
/// synthetic `FnDef`. The InstanceMethod body is conventionally a
/// `Term::Lam` (the post-canonical-class-form shape; see iter method-dispatch-refactor journal
/// "instance-method body shape ... existing-convention is `Term::Lam`
/// with paramTypes/retType"); we extract its `param_tys` / `ret_ty`
/// / `params` / `body` into an `FnDef` shape and reuse the existing
/// fn-body-check machinery.
/// Route each `InstanceMethod` body through `check_fn` by wrapping
/// it in a synthetic `FnDef`. The InstanceMethod body is by
/// convention a `Term::Lam` carrying its own `paramTypes` / `retType`
/// (the canonical class-form shape); we extract its `param_tys` /
/// `ret_ty` / `params` / `body` into an `FnDef` shape and reuse the
/// existing fn-body-check machinery.
///
/// Class-method substitution: the on-disk Lam's `param_tys` / `ret_ty`
/// reference the class's type parameter directly (e.g. the prelude
+2 -3
View File
@@ -15,9 +15,8 @@
//! effects, `clone`, `reuse-as`, doc strings, type annotations on
//! signatures and lambdas, the `tail` flag) stays visible.
//!
//! See `docs/JOURNAL.md` "Pinned: human-readable prose surface
//! (Family 20 candidate)" for the design pinning, and "Iter 20a" for
//! this iter's spec.
//! See `design/contracts/authoring-surface.md` for the prose-surface
//! invariants this crate must respect.
//!
//! # Public API
//!
@@ -24,6 +24,6 @@ fn prelude_ail_json_does_not_exist_on_disk() {
(b) restore the §C4 (b) entry in carve_out_inventory.rs, \
(c) revert the §C4 (b) status marker in \
docs/specs/2026-05-13-form-a-default-authoring.md, and \
(d) record the rationale in a per-iter journal."
(d) record the rationale in the commit body."
);
}
@@ -1,14 +1,7 @@
//! pd.2/pd.3 (`prelude-decouple` milestone): pin the canonical
//! identity of the parsed prelude as a literal hex hash. Updates
//! intentionally on prelude-content changes (record the why in the
//! per-iter journal); accidental drift trips immediately.
//!
//! pd.2 also carried a `prelude_ail_and_json_parse_to_identical_module`
//! cross-form-identity preflight that compared `parse(prelude.ail)`
//! against `serde_json::from_str(prelude.ail.json)`. The preflight
//! discharged its purpose at pd.2 close (PASSED at hash
//! `3abe0d3fa3c11c99`) and was retired in pd.3 alongside the
//! `prelude.ail.json` file.
//! Pin the canonical identity of the parsed prelude as a literal
//! hex hash. Updates intentionally on prelude-content changes
//! (record the why in the commit body); accidental drift trips
//! immediately.
use ailang_core::workspace::module_hash;
use ailang_surface::parse_prelude;
@@ -17,12 +10,11 @@ use ailang_surface::parse_prelude;
fn prelude_parse_yields_canonical_hash() {
let m = parse_prelude();
let h = module_hash(&m);
// The expected hex is captured at pd.2-iter close (Step 5 of this task).
// It updates intentionally on prelude-content changes; record the why
// in the per-iter journal entry.
// The expected hex updates intentionally on prelude-content
// changes; record the why in the commit body.
assert_eq!(
h, "3abe0d3fa3c11c99", // captured at pd.2 iter close
h, "3abe0d3fa3c11c99",
"prelude module hash drifted; if intentional, capture the new \
hex below + record the why in the per-iter journal."
hex below + record the why in the commit body."
);
}
+2 -2
View File
@@ -89,8 +89,8 @@ static inline ailang_rc_header_t *header_of(void *payload) {
* a relaxed atomic add on the global null-ctx fallback, a plain
* `++` on the per-ctx path — negligible relative to the libc
* malloc/free already on each path,
* and the bench numbers in JOURNAL 18f.2 were taken with the counters
* compiled in but disabled, so the figures are still valid.
* and the original profiling bench numbers were taken with the
* counters compiled in but disabled, so the figures are still valid.
*
* Atomic (relaxed): a multi-threaded host can drive the null-ctx
* fallback path concurrently, so these two counters use
+2 -2
View File
@@ -75,8 +75,8 @@ If `milestone_scope` is empty, return a structural error and stop.
warning channel.
- **Commit-body truthfulness.** Do the iter and audit commit bodies
in the milestone scope match the diff, or are they optimistic? An
over-claiming commit body is its own kind of drift — and unlike a
journal it lives on main, so flagging matters more, not less.
over-claiming commit body is its own kind of drift — and since it
lives on main, flagging matters more, not less.
- **design/ history-anchor regrowth.** Run
`bash bench/architect_sweeps.sh` from the repo root. Exit 0 = clean.
Exit 1 = at least one of the five sweeps matched. Sweeps 1-4 are the