workflow: delete docs/journals/ and docs/journal-archive.md
Strict application of the "Future-Use, not Verlauf" criterion to the
two remaining journal artefacts:
- `docs/journals/` (110 files): the per-iter and audit journals from
2026-05-11 onward. Pure history; no live reader after the previous
sweep. Entire directory removed.
- `docs/journals/2026-05-19-design-decision-records.md`: the one file
that had live readers (`docs_honesty_pin.rs:108`, `parse.rs:80`,
`duplicate_ctor_pin.rs:8`, three roadmap.md mentions) and was framed
as a "relitigation guard". On re-examination its three asserted
pinned phrases ("Regions were considered and rejected", the
"demands annotations *because*" rationale, the prose-render
placeholder statement) are rationale-prose, not load-bearing
invariants — the test pinned itself, not a system property. Any
Decision that still holds lives in the code, `design/contracts/`,
or `design/models/`. Removed with the rest.
- `docs/journal-archive.md` (pre-2026-05-11 history): content-frozen
long-tail history with no live reader. Removed; if anyone ever
needs the pre-cutoff rationale they can `git log --before=2026-05-11
--grep=<keyword>`.
Live-file consequences:
- `docs_honesty_pin.rs` `design_md_present_tense_anchors_present`:
the three `records.*` assertions and the `read("docs/journals/…")`
are dropped; the contract/model anchor pins remain.
- `duplicate_ctor_pin.rs`: the "why-two-overlays rationale lives in
docs/journals/…" comment is replaced with the rationale inline.
- `parse.rs`: the "form-refinement rationale lives in docs/journals/…"
comment is dropped (the rule body already states the refinement).
- `roadmap.md`: the decision-records mention in the DESIGN.md →
design/ entry's body is dropped; the journal-archive.md `context:`
pointers across ~12 closed entries are either rephrased to point
at the relevant iter/audit (no path), or simplified to a one-line
comment when the iter name alone carries the story.
- `CLAUDE.md` Roles section: the `docs/journal-archive.md` slot is
removed; vocabulary note rephrased.
- `design/INDEX.md`: the Docs bullet drops `journal-archive.md`.
- `skills/README.md` bootstrap-rationale pointer rephrased.
`docs/specs/` and `docs/plans/` (per-milestone specs and per-iteration
plans) are unaffected — they remain the structured-design artefacts
they were before this sweep.
Workspace builds, full test suite green.
This commit is contained in:
@@ -3,11 +3,13 @@
|
||||
//! consumer of the per-module `env.ctor_index` rebuild in
|
||||
//! `check_in_workspace`. Env construction is code-SoT (the
|
||||
//! `env-construction` ledger row in design/INDEX.md is source-link
|
||||
//! only); the why-two-overlays rationale this test rests on as the
|
||||
//! asymmetry-with-mono-side argument lives in
|
||||
//! docs/journals/2026-05-19-design-decision-records.md. If the
|
||||
//! per-module rebuild is ever removed without an equivalent
|
||||
//! replacement path, this test goes red.
|
||||
//! only). The two overlays — typecheck-side rebuild + mono-side
|
||||
//! narrowed — are deliberately asymmetric: the typecheck-side
|
||||
//! `ctor_index` half exists *for this very diagnostic*, while the
|
||||
//! mono-side overlay is narrowed to types-only because the runtime
|
||||
//! ctor lookup is type-driven. If the per-module rebuild is ever
|
||||
//! removed without an equivalent replacement path, this test goes
|
||||
//! red.
|
||||
|
||||
use ailang_check::check_workspace;
|
||||
use ailang_core::ast::{Ctor, Def, Module, TypeDef};
|
||||
|
||||
@@ -91,21 +91,16 @@ fn design_md_has_no_doc_archaeology() {
|
||||
|
||||
#[test]
|
||||
fn design_md_present_tense_anchors_present() {
|
||||
// Each anchor is read from its post-split home (spec Appendix
|
||||
// relocation map). Three honest-reserved rationale anchors
|
||||
// ("Regions were considered and rejected", the "does not infer
|
||||
// everything" bullet, the Form-B prose-placeholder state) sat in
|
||||
// `### What this Decision deliberately does not do` / `### What
|
||||
// this decision does NOT commit to`, which the Appendix routes to
|
||||
// the decision-record journal — so the journal is part of the
|
||||
// canonical anchor corpus, not a contract surface.
|
||||
// Each anchor is read from its post-split home. Phrases that only
|
||||
// ever lived in the (now-removed) decision-records annex are
|
||||
// dropped — anything the design/ ledger truly needs lives in
|
||||
// design/contracts/ or design/models/.
|
||||
let honesty = norm(&read("design/contracts/honesty-rule.md"));
|
||||
let scope = norm(&read("design/contracts/scope-boundaries.md"));
|
||||
let memory = norm(&read("design/contracts/memory-model.md"));
|
||||
let pipeline = norm(&read("design/models/pipeline.md"));
|
||||
let str_abi = norm(&read("design/contracts/str-abi.md"));
|
||||
let prelude_classes = norm(&read("design/contracts/prelude-classes.md"));
|
||||
let records = norm(&read("docs/journals/2026-05-19-design-decision-records.md"));
|
||||
|
||||
// the discriminator meta-subsection -> contracts/honesty-rule.md
|
||||
assert!(honesty.contains("the honesty rule it holds itself to"),
|
||||
@@ -115,8 +110,6 @@ fn design_md_present_tense_anchors_present() {
|
||||
// protected honest-reserved exceptions — over-correction guard
|
||||
assert!(scope.contains("`Diverge` is a reserved effect name with no op and no codegen"),
|
||||
"the gold-form honest-reserved anchor must remain in scope-boundaries.md (do not over-strip)");
|
||||
assert!(records.contains("Regions were considered and rejected"),
|
||||
"the present-tense design-rationale exclusion must remain in the decision-records (do not over-strip)");
|
||||
assert!(memory.contains("a tiebreaker, not a rationale"),
|
||||
"the self-labelled tiebreaker is honest and stays in memory-model.md (do not over-strip)");
|
||||
// corrected present-tense anchors
|
||||
@@ -124,12 +117,8 @@ fn design_md_present_tense_anchors_present() {
|
||||
"models/pipeline.md must describe Boehm present-tense, not as 'on the path to retirement'");
|
||||
assert!(str_abi.contains("type-installed; codegen is reserved and not yet shipped"),
|
||||
"float_to_str must be present-tense honest-reserved in str-abi.md");
|
||||
assert!(records.contains("AILang demands annotations *because* the LLM author can produce them effortlessly"),
|
||||
"the 'does not infer everything' bullet must be present-tense in the decision-records (no doc-archaeology)");
|
||||
assert!(prelude_classes.contains("`io/print_str` is the only built-in direct-output effect-op"),
|
||||
"the print-op set must be stated present-tense in prelude-classes.md (post-split home), not as a retirement narrative");
|
||||
assert!(records.contains("the render in `crates/ailang-prose/src/lib.rs` is a placeholder and informational only"),
|
||||
"the Form-B class/instance prose-projection state must be present-tense in the decision-records");
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
||||
@@ -76,13 +76,11 @@
|
||||
//! ```
|
||||
//!
|
||||
//! Notes on the form (the binding constraints are in
|
||||
//! design/contracts/authoring-surface.md; the form-refinement
|
||||
//! rationale is in docs/journals/2026-05-19-design-decision-records.md):
|
||||
//! design/contracts/authoring-surface.md):
|
||||
//!
|
||||
//! - The `lam` form carries `paramTypes`, a `ret` type, and an
|
||||
//! optional `effects` clause. The early form sketch left
|
||||
//! these out; the AST stores them per-lambda and so the form must
|
||||
//! round-trip them.
|
||||
//! optional `effects` clause. The AST stores them per-lambda and
|
||||
//! so the form must round-trip them.
|
||||
//! - The `import` form admits an optional `as` alias to round-trip
|
||||
//! [`ailang_core::ast::Import::alias`].
|
||||
|
||||
|
||||
Reference in New Issue
Block a user