Session C2: one home per kind of fact (F-450) and the scope relay (F-452) — plugin 0.41.0 - #21
Merged
Merged
Conversation
…452) — plugin 0.41.0 FH-1: per-CLI facts ship in doc-lib CLI_PIN_FACTS (keyed by catalog id, version-stamped, self-retiring; check-stale-facts pins the stamp, test/domain-candidates holds every id to the bundled catalog). domain-candidates diff buckets the four re rules sublists as notEnumerableBare with inert tenant records; manifest report derives domains.<d>.scope and pinFacts (T-2 v4, additive, conformance-pinned) from each stamp's recorded listCommand — nothing stamped per tenant, no backfill. index-scope-notes restructured into one subsection per limited command; check-doc-drift check 23 holds table and canon both ways. CONVENTIONS.md is workspace-wide by default with a <slug>/CONVENTIONS.md override (readAliasConvention reads the tenant file first and names its home; precedence tenant file > adopted pack > workspace file at every prose site). A blank date string is not a date: one isBlankDate/isDateless predicate across upsert, newerThan, baseline and report (the connectors-chains disagreement's cause), all-blank lists warn with the redate remedy. RP-4: the setup Phase 4 relay names each scope-limited domain from scope with its limit before the totals question; setup/refresh/upsert-batch stop listing the commands by hand. Review round (medium): 8 confirmed findings fixed. Bus: F-450, F-452 FIXED; live arms in dev/VALIDATION.md.
BradleyDB
added a commit
that referenced
this pull request
Sep 15, 2026
…— F-450, F-452 FIXED on the branch @ hb-20260915-04 [skip ci]
…TION § F-450 / F-452 CLEARED
BradleyDB
added a commit
that referenced
this pull request
Sep 15, 2026
…@ hb-20260915-04 on round-c2-fact-homes [skip ci]
BradleyDB
added a commit
that referenced
this pull request
Sep 15, 2026
…5-04, VALIDATION cleared, PR green, unmerged [skip ci]
BradleyDB
added a commit
that referenced
this pull request
Sep 15, 2026
…tches quoted green [skip ci]
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Session C2 of the September rounds: FH-1 (bus F-450, three instances) and RP-4 (F-452).
Plugin 0.41.0.
CLI_PIN_FACTS, keyed by catalogcommand id, stamped for the pin and self-retiring (applied only while the workspace
catalog is at that version;
check-stale-factspins the stamp;test/domain-candidatesholds every id to the bundled catalog and reds a dead entry).
domain-candidates.mjs diff: the fourre rulessublists the CLI refuses to runbare land in a
notEnumerableBarebucket with the flag each needs — never undecided,never gating; a tenant exclusion/block against one is reported inert (
tenantRecord)and not counted;
pinFactsin the output.manifest.mjs report:domains.<domain>.scope({ key, path, limit }| null) derivedfrom each stamp's recorded
listCommand, plus top-levelpinFacts— T-2 v4, additive,conformance-pinned. Nothing recorded per tenant, no backfill.
setup/references/index-scope-notes.mdrestructured into one###subsection perlimited command (headed by the canonical path
scope.pathnames);check-doc-driftcheck 23 holds the table and the subsections to each other both ways (fence-aware,
reader-gated; rig mutants 23a–g).
readAliasConventionreads<slug>/CONVENTIONS.mdwhen it exists (the home whatever itsays), else the workspace file; every result carries
home/path, the deps reportheader and the exact-only caveat name the file read. Precedence tenant file > adopted
pack > workspace file, stated once in the operating model, followed by the template
banner and the audit / change-request / deprecate / deps-report / email-report prose.
one
isBlankDate/isDatelesspredicate for the upsert row loop,newerThan, thebaseline branch and report; an all-blank full list warns once with the redate remedy
and names a frozen count; stored blanks are cleared on the next upsert
(
blankDatesCleared).scopewith itslimit and the fact that the remainder can be added later, before the totals question;
setup/refresh/upsert-batch stop listing the limited commands from memory.
Bus: F-450 and F-452 FIXED with Fix / Judge lines; the live arms are banked in
dev/VALIDATION.md(no tenant read for the scope arm).Why
F-450: three facts stored at the scope of whatever observed them — a per-CLI fact per
tenant (both tenants re-derived the identical six exclusions by live-failing each list
three times;
connectors-chainsrecorded a date field on one tenant and none on theother at the same pin), a per-tenant fact per workspace (a "Tenant-specific" file every
tenant read). F-452: the one question Phase 4 asks the user was unanswerable while a
CLI-reachable subset read as a tenant total. Measured, read-only, over both real
manifests: 4
notEnumerableBareeach (all inert), scope on the two journey domains ofeach, gate green, both files byte-identical.
Review notes
Start with
doc-lib.mjsCLI_PIN_FACTS(the one home), thendomain-candidates.mjs'scandidate loop and
manifest.mjs's report scope block / upsert blank rule, thenjo-report-deps.mjsreadAliasConvention. Review round (medium, 8 finders + 5file-batched verifiers): 14 candidates verified, 8 confirmed and fixed (all in this PR),
2 refuted. Full battery,
npm run typecheck, bothclaude plugin validateruns, and thefive derived generators are green locally.
.claude-plugin/plugin.jsonwith a CHANGELOG entry(0.41.0).
hooks/gs-admin-guard.mjsorask-rules generation.
five skills agree on the CONVENTIONS precedence; setup / refresh / notes agree on
the scope rule) — the changed skills are walked in the tester round.
Session / verdict: C2-V, per dev/VALIDATION.md § F-450 / F-452.
sha256 identical before and after).