Files
AILang/docs/journals/2026-05-18-iter-docs-honesty-lint.1.md
T
Brummel 7580d434f0 iter docs-honesty-lint.1: canonical docs present-tense-honest + wrap-robust pin + Sweep 5
Strips Wunschdenken (forward intent stated as fact) and non-citation
post-mortem / doc-archaeology from docs/DESIGN.md (14 corrections incl.
1 Step-14 procedural-catch-all site the spec's illustrative regex would
have missed) + docs/PROSE_ROUNDTRIP.md; genuine forward intent (LLM
tool-use / MCP / LSP) relocated to roadmap P3. Codifies the
tense+modality discriminator as a present-tense DESIGN.md meta-
subsection. Guards two ways: wrap-robust enumerated absent/present pin
(crates/ailang-core/tests/docs_honesty_pin.rs, norm() whitespace-
collapse helper — structurally discharges the recurring grep/contains
line-wrap failure family) + wrap-robust advisory Sweep 5 in
architect_sweeps.sh (contiguous-fragment regex) with full sweep-count
lockstep + new ailang-architect.md "DESIGN.md honesty drift" bullet.
KEEPs preserved (Diverge-reserved, regions-rejected, self-labelled
tiebreaker). No language/checker/codegen/runtime change — sole crates/
change is the additive pin; ail check/run/build byte-unchanged.
Workspace 609/0 (delta +4 pin), sentinel trio green, build clean.
2026-05-18 12:30:03 +02:00

6.2 KiB

iter docs-honesty-lint.1 — canonical docs made present-tense-honest, guarded by a wrap-robust pin + Sweep 5

Date: 2026-05-18 Started from: de66eb7ab2 Status: DONE Tasks completed: 6 of 6

Summary

docs/DESIGN.md and docs/PROSE_ROUNDTRIP.md carried Wunschdenken (forward intent stated as fact) and non-citation post-mortem / doc-archaeology narrative. This iter strips both classes, codifies the honesty discriminator as a ### What this document is — and the honesty rule it holds itself to meta-subsection inside DESIGN.md §"Project ecosystem", and guards the invariant two ways: a wrap-robust enumerated absent/present regression pin (crates/ailang-core/tests/docs_honesty_pin.rs, 4 tests) and a wrap-robust advisory Sweep 5 in bench/architect_sweeps.sh with all sweep-count lockstep wording + a new ailang-architect.md "DESIGN.md honesty drift" bullet. Genuine forward intent (LLM tool-use / MCP / LSP) relocated to docs/roadmap.md P3. No language/checker/codegen/ runtime change — the sole crates/ change is the additive pin file; ail check/run/build are byte-unchanged by construction.

Per-task notes

  • iter docs-honesty-lint.1.1: created the wrap-robust RED pin (docs_honesty_pin.rs, norm() whitespace-collapse helper, 4 tests). Verified RED for the right reasons (compiles, 4 fail on the enumerated still-present strings + the absent discriminator).
  • iter docs-honesty-lint.1.2: appended Sweep 5 to architect_sweeps.sh + tail "All four"→"All five" + header "four"→"five sweeps"; added the "DESIGN.md honesty drift" architect bullet and fixed the sibling "four sweeps"→"five / Sweeps 1-4" wording. Sweep 5 confirmed firing on the uncorrected tree (EXIT=1). Concern-1 lockstep shipped whole, no split.
  • iter docs-honesty-lint.1.3: inserted the discriminator meta-subsection. Tree had drifted (a - **Tests**: bullet now follows the Docs bullet, no blank line; closing prose is "When the language grows…"); anchored on the verbatim closing-prose line per the plan's own Step-1 "quote it, do not assume" caveat.
  • iter docs-honesty-lint.1.4: applied the 13 byte-exact corrections (each verbatim "current text" re-confirmed by grep first; lines had drifted +~22 from Task 3). Step-14 catch-all surfaced one genuine extra FIX site (see Concerns); classified + handled per procedure.
  • iter docs-honesty-lint.1.5: stripped the PROSE_ROUNDTRIP tool-use/ MCP Wunschdenken paragraph (present-tense replacement); appended the relocated forward-intent idea to roadmap P3 with spec provenance. Full pin GREEN (4/4).
  • iter docs-honesty-lint.1.6: full verification — pin GREEN isolated; workspace zero failures (609 passed, delta = +4 pin tests only); sentinel trio (design_schema_drift/spec_drift/schema_coverage) green; Sweep 5 reduced to the single self-referential L62 KEEP; build clean; ONLY THE PIN scope confirmation.

Concerns

  • T3: plan Task-1 pin string whether the document asserts something exists, works, or changed that does not omitted the **…** Markdown bold that plan Task-3 body wrapped around asserts … not. Plan self-review item 3 cross-check missed it. Resolved by dropping the incidental bold from the inserted body (the pin is the contract, written first; the emphasis is non-load-bearing). Prose meaning + present-tense framing unchanged. Plan-internal inconsistency, not a tree-drift; flagged for planner calibration.
  • T4: Step-14 catch-all surfaced one genuine extra Sweep-5 FIX site not in Steps 1-13 — DESIGN.md Form-B class/instance prose-projection bullet ("was deferred from milestone 22 entirely; … A future iter ships the full prose projection if/when …"). The Boss's "zero extra hits" pre-verification was against the spec's illustrative regex; the plan's broader Sweep-5 regex correctly catches this soft-wrapped site. Handled exactly per Step-14: rewritten present-tense (kept the load-bearing facts — one-way renderer, no parser by design, placeholder render in crates/ailang-prose/src/lib.rs) + matching absent-string asserts + present-anchor added to the pin. This is the procedural catch-all working as designed.

Catch-all classification (Task 4 Step 14)

  • KEEP: DESIGN.md L62 - **Forward intent** ("planned / will back / on the path to / if-when X arrives") — the discriminator subsection's own enumerated catalogue of forbidden phrasings; asserts nothing false, present-tense rule definition. A self-referential Sweep-5 false-positive (the regex matches the literal "on the path to" inside the rule's own example list).
  • FIX: DESIGN.md L2093 Form-B prose-projection bullet — see Concerns; before→after recorded there; pin pair added.

Known debt

  • (none) — the iter is self-contained; the pin + Sweep 5 are the forward guard against regrowth.

Post-iter sweep output (Task 6 Step 4)

=== Sweep: 1 (history anchors) ===
50:  `docs/journal-archive.md` (archived monolith for pre-2026-05-11 history),
2060:  2026-05-13) — combines two `Str` values into a single owned `Str`.

=== Sweep: 5 (honesty: wunschdenken + non-citation post-mortem) ===
62:- **Forward intent** ("planned / will back / on the path to /

EXIT=1

Sweep-1 residue = the two documented deliberate KEEPs (L50 doc-roles pointer date, L2060 true (iter str-concat, 2026-05-13) provenance). Sweep-5 residue = the single L62 self-referential discriminator- catalogue KEEP. EXIT=1 is expected + architect-adjudicated per plan Task 6 Step 4 (deliberate-KEEP date-anchors remain by design).

Blocked detail

(none — DONE)

Files touched

  • crates/ailang-core/tests/docs_honesty_pin.rs (new — the pin, 4 tests; extended in T4 Step 14 per the mandated catch-all procedure)
  • bench/architect_sweeps.sh (Sweep 5 + header/tail lockstep)
  • skills/audit/agents/ailang-architect.md ("four"→"five" + new "DESIGN.md honesty drift" bullet)
  • docs/DESIGN.md (discriminator subsection + 13 enumerated corrections + 1 catch-all correction)
  • docs/PROSE_ROUNDTRIP.md (tool-use/MCP Wunschdenken stripped)
  • docs/roadmap.md (relocated forward-intent idea, P3)

Stats

bench/orchestrator-stats/2026-05-18-iter-docs-honesty-lint.1.json