Skip to content

docs: coverage-gap stage 0 — fixed-array model + gen2 currency in CLAUDE.md/skills#3097

Merged
borisbat merged 3 commits into
masterfrom
bbatkin/coverage-gap-stage0
Jun 11, 2026
Merged

docs: coverage-gap stage 0 — fixed-array model + gen2 currency in CLAUDE.md/skills#3097
borisbat merged 3 commits into
masterfrom
bbatkin/coverage-gap-stage0

Conversation

@borisbat

@borisbat borisbat commented Jun 11, 2026

Copy link
Copy Markdown
Collaborator

Stage 0 of the local-vs-CI coverage-gap plan; the plan itself lands as COVERAGE_GAP.md (stages 0–4, evidence base = the #3095 babysitting session where every CI red was an oracle mismatch, never a wrong change).

Meta-rule sharpened (CLAUDE.md): syntax/factual corrections to CLAUDE.md/skills are now fix-in-place, always — verified against ds2_parser.ypp (grammar truth) or a probe-compile before writing. Propose-first narrowed to restructuring, removals, and new skill files. Factual drift becomes self-healing; structural changes still get review.

Fixed-array doc sweep:

  • CLAUDE.md gains "Fixed arrays (structural since 0.6.3)": chain model, one-peel rule, generic binding (auto(TT) whole-bind / auto(TT)[] peel + const inheritance / one-level -[]), safe_addr element decay, runtime-TypeInfo-stays-flattened, and the both-worlds isArray() note for external modules.
  • skills/das_macros.md gains the macro-author view: fixedDim sentinels, qualifiers on the chain head, make_fixed_array_type, typemacro payloads in typeMacroExpr (dimExpr is gone), the leaf-walk recipe.
  • skills/linq.md examples migrated off the deleted typeDecl.dim field.
    (Other skills audited: zero stale references found.)

Gen2 currency review: every syntax claim in CLAUDE.md's gen2 section plus the syntax-adjacent skills was extracted and verified against the grammar; suspicious ones probe-compiled — all existing claims held up. The review instead found four shipped-but-undocumented features, all probe-verified and now documented: function/method single-expression arrow bodies (def add(a, b : int) : int => a + b, return type inferable, works on class methods), call-site block arrow shorthand (arr |> sort() $(a, b) => a < b), and piped default-argument padding.

SDK head sync (install/CLAUDE.md): the language block is regenerated from the main head with the documented SDK adaptations (per skills/install_instructions.md). The SDK head had drifted badly, including two factual errors — lambdas listed as non-copyable, and the outdated macro-var default<$t(st)> guidance. Newly carried over: fixed arrays, OR types, panic-is-fatal, require resolution, table<T> sets, iterator variance, the full idiomatic-forms table, comment hygiene, and the new arrow syntax. Verified via scratch cmake --install: installed CLAUDE.md byte-equal, skills/ matches install/skills.list, no repo-internal path leakage.

Docs-only PR — no .das/C++ changes; no doc/source RST touched.

🤖 Generated with Claude Code

…UDE.md/skills

Plan lives in COVERAGE_GAP.md (stages 0-4; evidence base = the PR #3095
babysitting session, where every CI failure was a local-vs-CI oracle
mismatch).

Stage 0 (this PR):
- CLAUDE.md: syntax/factual corrections are now fix-in-place ALWAYS
  (verified against ds2_parser.ypp + probe-compile); propose-first
  narrowed to restructuring/removals/new skills.
- CLAUDE.md: new "Fixed arrays (structural since 0.6.3)" section —
  chain model, one-peel rule, generic binding (whole-bind vs []-peel,
  one-level -[]), safe_addr element decay, TypeInfo-stays-flattened,
  the both-worlds isArray() note for externals.
- skills/das_macros.md: macro-author view — fixedDim sentinels,
  qualifiers on the chain head, make_fixed_array_type, typemacro
  payloads in typeMacroExpr (dimExpr is gone), leaf-walk recipe.
- skills/linq.das examples: typeDecl.dim (deleted field) -> argTypes.
- Gen2 currency review: every syntax claim in CLAUDE.md's gen2 section
  + das_formatting/regex/strings/daslib_modules skills verified against
  the grammar; suspicious ones probe-compiled (all held up). Four
  shipped-but-undocumented features added: function/method arrow bodies
  (def f(...) : T => expr), call-site block arrow shorthand
  ($(a, b) => a < b), piped default-argument padding.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings June 11, 2026 10:14

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Docs-only PR that establishes “coverage-gap Stage 0” guidance and updates internal documentation (CLAUDE.md + skills) to match the post-#3095 fixed-array AST model and newly verified gen2 syntax conveniences.

Changes:

  • Add COVERAGE_GAP.md outlining a staged plan to mirror CI gates locally (Stages 0–4).
  • Update CLAUDE.md with a stricter “fix-in-place” rule for factual/syntax doc drift, plus new fixed-array and gen2 arrow-shorthand documentation.
  • Refresh skills docs (skills/das_macros.md, skills/linq.md) to remove references to deleted TypeDecl.dim/dimExpr and document the tFixedArray structural model.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

File Description
skills/linq.md Updates examples to use typeDecl.argTypes instead of deleted typeDecl.dim.
skills/das_macros.md Documents tFixedArray structural representation, sentinels, qualifier hoisting, and typeMacroExpr.
COVERAGE_GAP.md Introduces the staged “local-vs-CI coverage gap” plan (Stages 0–4).
CLAUDE.md Tightens doc-update rules and documents fixed arrays + additional gen2 arrow-body/shorthand forms.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread COVERAGE_GAP.md
borisbat and others added 2 commits June 11, 2026 03:23
The two heads carry near-identical gen2 content by design
(skills/install_instructions.md), but the SDK head had fallen behind —
including two factual errors: lambdas listed as non-copyable (they are
copyable since the lambda rework) and the outdated macro-var
default<$t(st)> guidance (field defaults do not exempt; the
safeWhenUninitialized fallback was missing).

Regenerated the language block from the main head with the documented
SDK adaptations: gc_migration pointer -> das_macros (gc_migration
doesn't ship), repo paths genericized (tutorials/dasHV example,
dastest/detect-dupe pointers, API_REWORK.md mention), print-vs-to_log
phrased for SDK users. Newly carried over: fixed-array structural
model, OR types, lambdas-are-copyable, panic-is-fatal, require path
resolution, table<T> set type, iterator variance + mangling pitfall,
is_unsafe_when_uninitialized, options module-locality, the full
idiomatic-forms table (STYLE/PERF rows), minimize-unsafe, comment
hygiene, and the new arrow-body / block-arrow / piped-padding syntax.

Verified per skills/install_instructions.md: scratch cmake --install,
installed CLAUDE.md byte-equal, skills/ matches install/skills.list,
no repo-internal path leakage.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
All four are user-facing: strings and glob are core-language guidance,
sql ships because dasSQLITE (module + tutorials/sql) ships, and
gc_migration exists precisely for external/archived code on older
daslang. Repo-only references genericized in the three that had them
(glob test link, sql tests/design-notes links, gc_migration
bin/Release paths). Install head: four table rows + the gc_migration
pointer restored to match the main head now that the skill ships.

aot_hash_desync_debugging and external_module_debugging stay repo-only
for now — too repo-entangled, candidates after a cleanup pass.

Verified: reconfigure + scratch cmake --install; skills/ matches
install/skills.list; installed CLAUDE.md byte-equal.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@borisbat borisbat merged commit 95d6c5d into master Jun 11, 2026
30 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants