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]`). //! one-ctx-per-thread — a shared-ctx design is `error[E0277]`).
//! Prints, in shard order, `RESULT <idx> <from> <to> <accbits:016x> //! Prints, in shard order, `RESULT <idx> <from> <to> <accbits:016x>
//! <n>`, then one `TIMING total_ticks=<Σn> elapsed_ms=<wall>` line //! <n>`, then one `TIMING total_ticks=<Σn> elapsed_ms=<wall>` line
//! (the friction-harvest observation; the test records it in the //! (the friction-harvest observation; the test prints it to stderr,
//! close-out journal, it is not asserted). //! it is not asserted).
use std::sync::Arc; use std::sync::Arc;
use std::time::Instant; use std::time::Instant;
+2 -2
View File
@@ -13,7 +13,7 @@
//! is host arithmetic, NOT a kernel property — asserting it //! is host arithmetic, NOT a kernel property — asserting it
//! bit-exact would be WRONG, per the spec). //! bit-exact would be WRONG, per the spec).
//! Plus the global leak-Σ (deterministic since dbd76e5) and a //! 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 //! Concrete pin: EURUSD, months 2017-03 / 2017-04 / 2017-05 (all
//! present on /mnt, contiguous, no gaps — recon-verified). data-server //! 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)" "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). // value feeds the P2 batch-crossing decision; it is not a gate).
if let Some(tl) = stdout.lines().find(|l| l.starts_with("TIMING ")) { if let Some(tl) = stdout.lines().find(|l| l.starts_with("TIMING ")) {
eprintln!("m5.3 friction-harvest: {tl} (Σn={sum_n})"); eprintln!("m5.3 friction-harvest: {tl} (Σn={sum_n})");
+5 -7
View File
@@ -11,15 +11,13 @@
# Wunschdenken / post-mortem invariant. # Wunschdenken / post-mortem invariant.
# #
# Companion to skills/audit/agents/ailang-architect.md "What you check # Companion to skills/audit/agents/ailang-architect.md "What you check
# / design/ history-anchor regrowth". See JOURNAL 2026-05-10 # / design/ history-anchor regrowth". The rationale of each sweep
# ("Milestone close: design-md-consolidation") for the rationale of # regex (Sweeps 14: history anchors; Sweep 5: honesty / Wunschdenken)
# each sweep regex; the regexes here are copied verbatim from JOURNAL # lives in the design-md-consolidation milestone commits (2026-05-10).
# entries 12487 (Sweep 1), 12619 (Sweep 2), 12718-12720 (Sweep 3),
# and 12840 (Sweep 4).
# #
# A non-zero exit is advisory, not authoritative: the architect agent # A non-zero exit is advisory, not authoritative: the architect agent
# reviews each match and decides whether it is a legitimate quote # 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 set -u
INDEX="design/INDEX.md" 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' '^\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)" \ 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)" \ 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]' '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. # 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 # 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, # Requirements: bash, /usr/bin/time -v (GNU coreutils), bc, sort, awk,
# a release-mode `ail` binary. # 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 "$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 # The harness prints a multi-line block per arm; we let it speak
# for itself. The orchestrator captures the verbatim output into a # for itself. The orchestrator captures the verbatim output into
# JOURNAL entry like the throughput table above. `--runs 5` runs # the commit body like the throughput table above. `--runs 5` runs
# each arm five times; the harness drops the slowest run and # each arm five times; the harness drops the slowest run and
# reports median + range per cell, matching the throughput # reports median + range per cell, matching the throughput
# table's drop-slowest convention. # table's drop-slowest convention.
+2 -2
View File
@@ -1099,8 +1099,8 @@ fn workspace_error_to_diagnostic(
})), })),
), ),
// typeclass-coherence diagnostics emitted from // typeclass-coherence diagnostics emitted from
// `workspace::build_registry`. The codes follow the JOURNAL // `workspace::build_registry`. The codes follow the
// queue's wording and the diagnostic-categories section of // diagnostic-categories section of
// `design/contracts/typeclasses.md`. // `design/contracts/typeclasses.md`.
W::OrphanInstance { W::OrphanInstance {
class, class,
+6 -8
View File
@@ -1699,14 +1699,12 @@ fn check_def(
} }
} }
/// bugfix-instance-body-unbound-var (2026-05-13): route each /// Route each `InstanceMethod` body through `check_fn` by wrapping
/// `InstanceMethod` body through `check_fn` by wrapping it in a /// it in a synthetic `FnDef`. The InstanceMethod body is by
/// synthetic `FnDef`. The InstanceMethod body is conventionally a /// convention a `Term::Lam` carrying its own `paramTypes` / `retType`
/// `Term::Lam` (the post-canonical-class-form shape; see iter method-dispatch-refactor journal /// (the canonical class-form shape); we extract its `param_tys` /
/// "instance-method body shape ... existing-convention is `Term::Lam` /// `ret_ty` / `params` / `body` into an `FnDef` shape and reuse the
/// with paramTypes/retType"); we extract its `param_tys` / `ret_ty` /// existing fn-body-check machinery.
/// / `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` /// Class-method substitution: the on-disk Lam's `param_tys` / `ret_ty`
/// reference the class's type parameter directly (e.g. the prelude /// 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 //! effects, `clone`, `reuse-as`, doc strings, type annotations on
//! signatures and lambdas, the `tail` flag) stays visible. //! signatures and lambdas, the `tail` flag) stays visible.
//! //!
//! See `docs/JOURNAL.md` "Pinned: human-readable prose surface //! See `design/contracts/authoring-surface.md` for the prose-surface
//! (Family 20 candidate)" for the design pinning, and "Iter 20a" for //! invariants this crate must respect.
//! this iter's spec.
//! //!
//! # Public API //! # 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, \ (b) restore the §C4 (b) entry in carve_out_inventory.rs, \
(c) revert the §C4 (b) status marker in \ (c) revert the §C4 (b) status marker in \
docs/specs/2026-05-13-form-a-default-authoring.md, and \ 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 //! Pin the canonical identity of the parsed prelude as a literal
//! identity of the parsed prelude as a literal hex hash. Updates //! hex hash. Updates intentionally on prelude-content changes
//! intentionally on prelude-content changes (record the why in the //! (record the why in the commit body); accidental drift trips
//! per-iter journal); accidental drift trips immediately. //! 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.
use ailang_core::workspace::module_hash; use ailang_core::workspace::module_hash;
use ailang_surface::parse_prelude; use ailang_surface::parse_prelude;
@@ -17,12 +10,11 @@ use ailang_surface::parse_prelude;
fn prelude_parse_yields_canonical_hash() { fn prelude_parse_yields_canonical_hash() {
let m = parse_prelude(); let m = parse_prelude();
let h = module_hash(&m); let h = module_hash(&m);
// The expected hex is captured at pd.2-iter close (Step 5 of this task). // The expected hex updates intentionally on prelude-content
// It updates intentionally on prelude-content changes; record the why // changes; record the why in the commit body.
// in the per-iter journal entry.
assert_eq!( assert_eq!(
h, "3abe0d3fa3c11c99", // captured at pd.2 iter close h, "3abe0d3fa3c11c99",
"prelude module hash drifted; if intentional, capture the new \ "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 * a relaxed atomic add on the global null-ctx fallback, a plain
* `++` on the per-ctx path — negligible relative to the libc * `++` on the per-ctx path — negligible relative to the libc
* malloc/free already on each path, * malloc/free already on each path,
* and the bench numbers in JOURNAL 18f.2 were taken with the counters * and the original profiling bench numbers were taken with the
* compiled in but disabled, so the figures are still valid. * counters compiled in but disabled, so the figures are still valid.
* *
* Atomic (relaxed): a multi-threaded host can drive the null-ctx * Atomic (relaxed): a multi-threaded host can drive the null-ctx
* fallback path concurrently, so these two counters use * 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. warning channel.
- **Commit-body truthfulness.** Do the iter and audit commit bodies - **Commit-body truthfulness.** Do the iter and audit commit bodies
in the milestone scope match the diff, or are they optimistic? An 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 over-claiming commit body is its own kind of drift — and since it
journal it lives on main, so flagging matters more, not less. lives on main, flagging matters more, not less.
- **design/ history-anchor regrowth.** Run - **design/ history-anchor regrowth.** Run
`bash bench/architect_sweeps.sh` from the repo root. Exit 0 = clean. `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 Exit 1 = at least one of the five sweeps matched. Sweeps 1-4 are the