Skip to content

TSDD-KNOWLEDGE-01.4/.5 remainder — retained upgrades and any unaccepted supported route #4822

Closed

Description

@EHotwagner

Owner

Programme/root. Child of #4642 (TSDD-KNOWLEDGE-01); transferred, not retired.

Done when

The promised retained upgrades (preserving user content, the 10 MiB boundary and refusals) and every unaccepted supported route are accepted with published artifacts. Route coverage is enumerated in the first comment.

Next action

After acceptance of the two deferred Wizard-bindings positives on #4642, enumerate route coverage in the first comment, against #4708/#4720/#4723/#4773/#4780/#4798.

Activity

  1. EHotwagner commented on Oct 23, 2026

    @EHotwagner
    ContributorAuthor

    Route coverage for TSDD-KNOWLEDGE-01.4/.5 (the remainder of #4642)

    Sources. The route list comes from the SDD plan, .4/.5: console, web, Fable bindings, Python, the applicable fable-game variants and external Rendering, across raw-template, provider and Wizard creation. The acceptance contract is Templates' candidate and installed acceptance. "Typed" means explicit typed-sdd; "default" means the lifecycle is omitted.

    Scope of acceptances. Each acceptance holds only for the tuple it ran on. Most rows ran on Workspace.Template 0.19.0 and SDD 2.2.0. The current tuple is Workspace.Template 0.19.3 and SDD 2.4.0, and none of the earlier rows were re-run on it.

    Creation routes

    Family / variant Raw template Provider (fsgg-sdd scaffold) Wizard
    Console Accepted, typed and default (#4723) Accepted, typed and default (#4723) Accepted: typed in #4720, default in #4723
    Web (server and browser) Accepted, typed and default (#4723) Accepted, typed and default (#4723) Accepted, typed and default (#4723)
    Python Accepted, typed and default (#4723) Accepted, typed and default (#4723) Accepted, typed and default (#4723; the Wizard rows ran on public Wizard 0.21)
    Fable bindings Accepted, typed and default (#4723) Accepted, typed and default (#4723) Accepted, typed and default (#4642 decision: PR #4826, run 39919641656)
    Fable game, PLAYER Accepted, typed and default (#4759) Accepted, typed and default (#4780) Not accepted
    Fable game, COMPLETE Accepted, typed and default (#4766) Accepted, typed and default (#4798) Not accepted
    Fable game, non-SVG (svgFoundation=false) Accepted: legacy typed, plus the omitted default staying Standard (#4769) Accepted, typed and default (#4773) Not accepted
    Rendering app Not accepted: the original UI.Template plus the fs-gg-project-knowledge overlay Not accepted, typed or default Typed accepted (#4708 report), and a fresh-clone capture/recovery in #4723. Default not accepted
    Rendering game Not accepted: overlay Not accepted, typed or default Typed accepted (#4723). Default not accepted

    Cross-cutting refusals.

    Retained upgrades

    Retained route Status
    R1. A nonempty Standard workspace migrated to explicit FSharp, with preview, apply and rollback, preserving authored product, knowledge, guidance and history Accepted, #4723 (SDD 2.2.0; matrix report)
    R2. Retained extraction into the canonical store (.6) Accepted on the SDD plan (.6: installed 2.1.0 and six fixtures). It is not a child of #4642
    R3. An existing knowledge-bearing typed workspace created on an older producer and template (SDD 2.2.0 / Workspace.Template 0.19.0), upgraded in place to the current SDD 2.4.0 / Workspace.Template 0.19.3. It must preserve user content, records and Git history, keep the 10 MiB boundary, and preserve owner bytes through its refusals Not accepted. Selected as the next slice (below)
    R4. A typed workspace created before knowledge existed (producer older than 2.1.0, so no store) adopting knowledge through explicit knowledge initialize plus the overlay, preserving content Not accepted

    Remaining unaccepted routes

    1. The three fable-game variants through the Wizard (PLAYER, COMPLETE, non-SVG), typed and default. The default rows also depend on #4811: public Wizard 0.21.0 records sdd for an omitted fable-game lifecycle. The fix is merged in source (74b852f1), but its publication is pending.
    2. Rendering app and game:
      • the raw overlay route, typed and default, with an authored-workflow refusal;
      • the provider route, typed and default;
      • the Wizard default rows.
    3. The retained upgrades R3 and R4.

    Next slice

    R3: a retained upgrade of a knowledge-bearing typed console workspace from SDD 2.2.0 / Workspace.Template 0.19.0 to SDD 2.4.0 / Workspace.Template 0.19.3.

    Delivery. This follows the #4642 slice: one source PR with tests, one independent fsgg-critic-best review of the exact head, then a merge with --match-head-commit on ACCEPT and green CI. After that, one read-only hosted run on public nuget.org bytes, followed by an independent review of the artifact.

    fdev

  2. EHotwagner commented on Oct 23, 2026

    @EHotwagner
    ContributorAuthor

    Evidence for slice R3: retained knowledge upgrade (see the route coverage)

    Source PR. #4828 merged as 65a71ad2eff64c0b70c97dbbc04e685a2daac2d3 with --match-head-commit a04ea5b2e0f87ac510eb267bdc856c7546068a87. Required CI at that head: 54 passed, 5 skipped, 0 failed. routine-eligibility and parse (which runs the 10 controls) both passed.

    Review history. An independent fsgg-critic-best review accepted each head:

    • cf9fec4a: ACCEPT (record), with 3 non-blocking findings.
    • ca29ec85: ACCEPT (record). This head fixed those findings: refusals must now carry their own diagnostic, the docstring is corrected, and the roadmap states the template-side limit.
    • a04ea5b2: ACCEPT (record). This head is a pure rebase (range-diff reports =).

    The two rebases were needed because main moved twice and routine-eligibility refused each stale event base.

    Hosted run. https://github.com/FS-GG/.github/actions/runs/39926328205

    • Trigger: workflow_dispatch on 65a71ad2.
    • Environment: contents: read, public nuget.org only, isolated HOME, no token in any child.
    • Result: success, 119 commands.
    • Artifact: retained-upgrade-public-acceptance, id 12489632350, sha256:a0e9012e…fb84c.

    Second independent artifact review: ACCEPT. The reviewer:

    • re-downloaded all five archives from nuget.org and found their hashes match;
    • matched all 238 recorded output hashes;
    • found 119/119 process groups absent;
    • found that every non-zero exit is an intended refusal (12 × exit 1, 1 × exit 73);
    • found no credentials in the evidence and no write outside the runner.
    Phase Result (from raw outputs)
    Old tuple SDD.Cli 2.2.0 scaffolded a typed console workspace from the 0.19.0 descriptor (Templates f5fbd06e). The checker showed a 2.2.0 pin. The #4723 probe under 2.2.0 recorded 4 findings and 2 Git versions. The owner then edited product source, CLAUDE.md, AGENTS.md, early-stage guidance and one mirrored skill, added owner files, and committed.
    Upgrade Global and local SDD went 2.2.0 → 2.4.0. The manifest changed only the SDD pin, plus the SDK's rollForward:false. The descriptor came from Templates 24f3c307, and 0.19.3 replaced the 0.19.0 registration. doctor showed the owner's skill edit as drift. upgrade --yes produced noChange. A lost seeded skill was re-seeded alone, with a digest identical to the 2.2.0 seed. Re-applying the overlay refused with exit 73 and changed no bytes. The upgrade commit changed exactly .config/dotnet-tools.json and .fsgg/providers.yml.
    Current producer on the retained store All 11 retrieval outputs are byte-identical under 2.2.0 and 2.4.0. get-version returns the pre-upgrade version. History crosses the upgrade with 3 versions, and the cache-free clone matches it. The 2.4.0 refusals fail for their stated reasons and preserve owner bytes: stale writer "revision conflict"; excluded inputs ×3; restore "would overwrite authored knowledge". The write path refused at 10,486,598 bytes and accepted exactly 10,485,760. The pinned 2.4.0 checker accepted 10,485,760 bytes and refused 10,485,761. In the final tree, only the manifest, the descriptor and the two captured records changed; the other 128 files keep their bytes and modes.

    Hash-matched identities (SHA-256):

    • SDD.Cli 2.2.0: 46b4b172eac65df00db43f813bd3d3fbafac5c6376da62a6d3c08fb05750cf28
    • SDD.Cli 2.4.0: 1df2e74faebd388f90b813ed9d7497f4247f977718469c9247b37111d791921f
    • Workspace.Template 0.19.0: 187c995806bb2f22db67c8a9a67c251f46f339bf6350b8051035935d308b497f
    • Workspace.Template 0.19.3: 9594ec204a26f238a06e016d1cfe1e796a07fda23c16589eceb19366cd4a72a2
    • Coord.Cli 0.94.0: e68a2134242c1e59611a41f98aa5b7d26a545fd6411a0de01af610f4862cc332

    The console descriptors hash to 3911afe2… (0.19.0) and 4f6dba6a… (0.19.3).

    Recorded limits for the acceptance decision

    1. The template side of the upgrade changes identity, not content. SDD's templateRePin is inert by design. The 0.19.3 move consists of copying the drop-in descriptor plus dotnet new install. The console and knowledge-overlay payloads are byte-identical in 0.19.0 and 0.19.3. R3 therefore proves three things on the template side: the pin moves, 0.19.3 becomes the sole registration, and re-applying the overlay is refused. It proves no template content migration.
    2. Doctor is not coherent after the upgrade, by design. It reports isCoherent:false and residualDrift:true, because the owner's one-mirror skill edit is kept and stays visible as drift. An owner edit applied identically to both mirrors is not reported as drift.
    3. Owner-byte preservation is asserted in-run. The artifact does not include the workspace tree. Raw outputs corroborate the claim in part: the upgrade-commit diff, ls-files and the re-seed digest.
    4. Scope. This is one Linux run with dotnet 10.0.402. Coord stays at 0.94.0, so no Coord upgrade is tested. The result is reproducible only while these exact packages stay on nuget.org.
    5. Atlas capture gap. Two reusable findings are not yet captured: that doctor drift is mirror divergence, and that knowledge retrieval is byte-stable from 2.2.0 to 2.4.0. fdev holds the gap until the next natural owning source delivery.

    Acceptance and remaining routes. Acceptance of R3 is fdev's to give and is not claimed here. #4822 stays open for:

    I did not close any issue or change any board field.

    fdev

  3. EHotwagner commented on Oct 23, 2026

    @EHotwagner
    ContributorAuthor

    fdev 2026-10-23: ACCEPTED: slice R3 (retained upgrade, in place: SDD.Cli 2.2.0 / Workspace.Template 0.19.0 → 2.4.0 / 0.19.3).

    Evidence:

    • Source: PR Add read-only hosted qualification of the retained knowledge upgrade R3 (Refs #4822) #4828 (65a71ad2), with an independent ACCEPT on each exact head.
    • Hosted run: read-only run 39926328205 on public nuget.org bytes. A second independent artifact review re-matched all five packages and the 238 output hashes.
    • What it shows:
      • knowledge retrieval is byte-identical across the upgrade;
      • history spans the upgrade;
      • owner edits are preserved;
      • the 10 MiB boundary is exact;
      • all refusals fail for their intended reasons, without touching owner files.

    Ratified limits:

    1. On the template side the upgrade is a pin and registration change, not a content change, because the files are identical in 0.19.0 and 0.19.3.
    2. After the upgrade, doctor reports "not coherent" by design: the owner's edit to one mirrored skill copy is preserved as drift.
    3. The "other 128 files unchanged" claim rests on in-run checks; the artifact doesn't include the workspace.

    Atlas: the two findings (mirrored-skill doctor drift; byte-identical retrieval 2.2.0→2.4.0) are a capture gap owned by fdev, to be captured with the next #4822 source delivery.

    Still open on #4822: R4 (pre-knowledge workspace adopting knowledge); the Wizard fable-game rows (the default rows wait on Wizard 0.22.0, #4811); the Rendering app/game raw-template and provider routes, and the Wizard default rows. Next selected slice: R4 (independent of #4811).

  4. EHotwagner commented on Oct 23, 2026

    @EHotwagner
    ContributorAuthor

    Evidence for slice R4: knowledge adoption by a workspace created before knowledge existed

    Route coverage: #4822 (comment)

    Source PR. #4832 merged as 8eb86bf60fb8123e560d0e8c73089ba615ed8959 with --match-head-commit 25612243bb60b66e8b092ce176f14498683777d4. Required CI at that head: 72 pass, 5 skipped, 0 failing. This includes routine-eligibility, parse (the controls), semantic-skill-quality and declared-closes. The merge preceded the current .github merge hold.

    Independent fsgg-critic-best review. Both commits were accepted:

    • ec775724: ACCEPT (record), with non-blocking findings.
    • 25612243: ACCEPT (record). This commit fixed those findings:
      • The 2.0.3 pin control is now causal; it fails when the pin is mutated.
      • The legacy template registration must come from nuget.org.
      • The checker boundary must leave no residue.
      • The Atlas record was corrected.

    Atlas. The two R3 findings are folded into github/retained-knowledge-upgrade (b83f5334…), together with the R4 route and its limits:

    • Doctor drift means the mirrored skill copies diverge.
    • Retrieval is byte-identical between 2.2.0 and 2.4.0.

    The record says R4 was not hosted-accepted when it was recorded. This closes the R3 capture gap.

    Hosted run. https://github.com/FS-GG/.github/actions/runs/39931369727

    • workflow_dispatch on 8eb86bf6, contents: read, public nuget.org, isolated HOME, no token in any child.
    • Result: success, 95 commands.
    • Artifact retained-adoption-public-acceptance: id 12491637263, sha256:1888812e…fe1d79.

    Second independent artifact review: ACCEPT.

    • All five archives were re-downloaded from nuget.org and their hashes match.
    • All 190 records and 95 output pairs match their recorded hashes.
    • 95/95 process groups were absent, with no timeouts.
    • Every non-zero exit is an intended refusal: 11 × exit 1 and 1 × exit 73.
    • No credentials were found in the evidence, and nothing was written outside the runner.
    Phase Result, from the raw outputs
    Pre-knowledge tuple SDD.Cli 2.0.3 scaffolded a typed console workspace through the 0.13.0 descriptor (Templates 908da309): provider console, lifecycle=typed-sdd, no knowledge or project-knowledge path among its 122 files. The owner made the initial commit, then committed owner edits. 2.0.3 refused knowledge initialize as unknownCommand (exit 1, blocked) and changed no bytes.
    Adoption on 2.4.0 / 0.19.3 0.19.3 replaced the 0.13.0 registration. The overlay refused an owner-authored knowledge workflow (exit 73) without changing bytes. Otherwise it added exactly its two CI files, identical to the package. The checker then refused: "Missing .fsgg/knowledge-guide.md". SDD went 2.0.3 → 2.4.0, both global and pinned. knowledge initialize created the guide, schema and seed (1,045 bytes) and appended the ignore block after the owner's unchanged .gitignore. Running it again changed nothing. The pinned 2.4.0 checker passed. Doctor and upgrade --yes changed nothing. The adoption commit differs from the owner commit in exactly 8 paths, and the cache stays untracked.
    Full typed contract on the adopted store The #4723 probe recorded 4 findings and 2 history versions. The all-shared export, taken after the private capture, restored losslessly; the private record does not leak. The checker accepted 10,485,760 bytes and refused 10,485,761. The write path refused at 10,486,598 bytes and accepted exactly 10,485,760. Stale-writer, excluded-input and restore refusals each carry the producer's own diagnostic. A cache-free clone returns byte-identical search and history. CLAUDE.md and AGENTS.md keep the owner's bytes. 119 of the 122 pre-adoption owner files kept their bytes and modes.

    Hash-matched identities (SHA-256):

    • SDD.Cli 2.0.3: b950bf4fc46a09554a51b6b31f920830c8811bb6580b2724c500b8317bcfa9d7. This equals the insufficient archive bound in Qualify public Wizard knowledge-ready Rendering creation and cache-free retrieval #4708.
    • SDD.Cli 2.4.0: 1df2e74faebd388f90b813ed9d7497f4247f977718469c9247b37111d791921f
    • Workspace.Template 0.13.0: ab72f74a76d59ad4be6f11f367bbdf1b27f8bdedae7a2e3afecbe0e4b3fac10c
    • Workspace.Template 0.19.3: 9594ec204a26f238a06e016d1cfe1e796a07fda23c16589eceb19366cd4a72a2
    • Coord.Cli 0.94.0: e68a2134242c1e59611a41f98aa5b7d26a545fd6411a0de01af610f4862cc332

    Recorded limits for the acceptance decision

    1. The adopted workspace has known gaps, and SDD's behaviour is unchanged. CLAUDE.md/AGENTS.md never get the 2.4.0 knowledge pointer, because writes do not clobber existing files. doctor does not track .fsgg/knowledge-guide.md, because the 2.0.3 provenance omits it; the critic confirmed that deleting the guide leaves doctor reporting nothing missing. Please either accept these as limits or have them filed with SDD.
    2. We did not isolate whether the descriptor copy is needed for adoption.
    3. Some claims are checked inside the adapter, and the artifact cannot prove them. It holds no tree bytes, so the .gitignore append contents, the manifest's rollForward:false, the absence of a cache in the clone, and doctor making no byte changes all rest on in-run checks. The raw outputs back them indirectly.
    4. Scope. Console only, one Linux host (dotnet 10.0.402), Coord at 0.94.0. Reproducible only while these exact packages stay public.

    Still open on #4822:

    Acceptance of R4 is fdev's and is not claimed here. I closed no issue and changed no board field.

    fdev

  5. EHotwagner commented on Oct 23, 2026

    @EHotwagner
    ContributorAuthor

    fdev 2026-10-23: ACCEPTED: slice R4 (pre-knowledge workspace adopts knowledge: SDD.Cli 2.0.3 → 2.4.0 / Workspace.Template 0.19.3).

    • Source: PR Add read-only hosted qualification of the retained knowledge adoption R4 (Refs #4822) #4832 (8eb86bf6), with independent ACCEPT on both heads.
    • Hosted run: read-only run 39931369727, whose artifact a second independent review accepted (5 packages and all 95 outputs matched).
    • What it shows: 2.0.3 refusals without touching bytes; idempotent initialization; exactly 8 adoption paths; the 10 MiB boundary exact; owner files preserved (119/122, with the 3 changes intended).
    • Atlas: github/retained-knowledge-upgrade closes the R3 capture gap.

    Known limits, filed with SDD as FS-GG/FS.GG.SDD#1123:

    • adopted workspaces get no knowledge pointer in CLAUDE.md/AGENTS.md;
    • doctor misses a deleted knowledge guide.

    Also recorded: provider-descriptor copying for adoption is untested; coverage is console-only on one Linux host.

    Still open on #4822: the Wizard fable-game rows (the default rows need Wizard 0.22.0, #4811), and Rendering app/game (raw template route, provider route typed and default, Wizard default rows). Next selected slice: the Rendering app/game raw-template and provider routes, which don't depend on #4811.

  6. EHotwagner commented on Oct 23, 2026

    @EHotwagner
    ContributorAuthor

    Evidence for the Rendering raw and provider knowledge routes

    This slice covers 8 rows: raw and provider creation, for the app and game profiles, with the lifecycle either explicit (typed-sdd) or omitted. Route coverage is tracked in #4822 (comment).

    Source PR. #4836 merged as 3d45db23fec76d877c49b9c4f3ac24308b6d0693 with --match-head-commit 47913274c8bb21b753780df8a6d8f4eab55aa907, after the merge hold was released. Required CI at that head: 54 passed, 5 skipped, 0 failed, including routine-eligibility, change-completeness and parse.

    Code review (independent fsgg-critic-best):

    • 429e03a7: REJECT (record). Blocking finding: nothing checked which lifecycle a raw row's product actually received.
    • 0b9f0801: ACCEPT (record). This head fixed the blocker by reading the lifecycle from the created product's lifecycle-scaffolding-pending.md heading. It also fixed four non-blocking findings:
      • the raw checker's pre-initialization refusal must be for the missing guide;
      • only the provider scaffold installs UI.Template;
      • omitted rows also run the overlay with --lifecycle sdd;
      • a raw row repeats the owner-workflow collision.
    • 47913274: ACCEPT (record). This head added a control for the --lifecycle sdd overlay call.

    Hosted run. https://github.com/FS-GG/.github/actions/runs/39942183045

    • Trigger: workflow_dispatch on 3d45db23.
    • Permissions and inputs: contents: read, public nuget.org only, isolated HOME, no token in any child.
    • Result: success, 274 commands.
    • Artifact: rendering-routes-public-acceptance, id 12495999840, sha256:da0cdcc0…dbe93f.

    Independent artifact review: ACCEPT.

    • All four archives, re-downloaded from nuget.org, match their pinned hashes.
    • All 548 stream hashes match.
    • 274 of 274 process groups were observed absent, with no timeouts.
    • All 28 non-zero exits are intended refusals with the expected diagnostics.
    • No credentials in the evidence, and no writes outside the runner.
    Rows Result (from raw outputs)
    Provider typed: app, game fsgg-sdd scaffold --provider rendering (descriptor at Templates 24f3c307) records typed-sdd, the profile and producer 2.4.0. It creates the knowledge store and guide but no knowledge CI: the original Rendering payload has none. The caller adds the fs-gg-project-knowledge overlay without --force, and it adds exactly the two CI files, byte-equal to the package payload. With an owner-authored knowledge workflow present, the overlay refuses (exit 73) and changes nothing.
    Raw typed: app, game dotnet new fs-gg-ui --lifecycle typed-sdd creates no .fsgg/ or .config/. The template's own notice confirms the typed lane. The caller adds the overlay and a local manifest that pins only SDD 2.4.0. The checker refuses with "Missing .fsgg/knowledge-guide.md". knowledge initialize reports growth of 1,045 bytes; a second run reports 0. The collision refusal is repeated on the game row (exit 73).
    All 4 typed rows Initial commit: no background commit happens. The normal initial commit tracks the canonical files, the CI files (byte-equal to the package) and the pin; the cache stays untracked. Knowledge contract: the #4723 probe passes. The shared export is taken after the private capture; it holds 5 IDs and restores losslessly. Stale-writer, excluded-input and restore refusals are present. The checker accepts 10,485,760 bytes, refuses 10,485,761, and leaves no residue. Product files: bytes and modes are preserved outside the declared knowledge paths (280, 319, 161 and 173 product files).
    Omitted: provider and raw, app and game All four get the sdd lane: the provider rows from the descriptor default, the raw rows from the product's own sdd-lane heading and template notice. None has a knowledge store or knowledge CI. The overlay, run without a lifecycle and again with --lifecycle sdd, emits nothing. The provider rows keep the capture guide that SDD init seeds for every lifecycle.

    Hash-matched identities (SHA-256):

    • SDD.Cli 2.4.0: 1df2e74faebd388f90b813ed9d7497f4247f977718469c9247b37111d791921f
    • UI.Template 0.32.3: 747f33eb0242783f67b2462d8ca137b14f36bb4133bd0a3d4ca98ca8ad93dfe6. The provider scaffold installed it; its packed defaults are lifecycle sdd and profile app.
    • Workspace.Template 0.19.3: 9594ec204a26f238a06e016d1cfe1e796a07fda23c16589eceb19366cd4a72a2
    • Coord.Cli 0.94.0: e68a2134242c1e59611a41f98aa5b7d26a545fd6411a0de01af610f4862cc332
    • Rendering descriptor at 24f3c307: ff49732aa5baa4e1b507784c3135ea092b0973c4c4cb3a75197dae0a7a417fc2

    Recorded limits for the acceptance decision

    1. The provider route needs a caller step for knowledge CI. fsgg-sdd scaffold --provider rendering --param lifecycle=typed-sdd alone yields a store but no knowledge CI. The caller (or the Wizard) must add the overlay. This matches the Templates contract, but it is a step direct provider users can miss.
    2. Raw typed rows are standalone knowledge-ready, not Typed SDD workspaces. The product still carries lifecycle-scaffolding-pending.md.
    3. Some claims are checked only inside the adapter, not in the journal. These are the lane heading, the byte snapshots and the child environment. Each has indirect support from the raw outputs, such as the template notices, producedPaths and the refusals.
    4. No retry is built in. One local development run hit a transient 180-second dotnet tool restore hang, which the time budget refused; the hosted run had no such hang.
    5. Coverage limits: one Linux host (dotnet 10.0.402); Coord stays at 0.94.0.
    6. Atlas gap. These route findings are not yet captured in Atlas, because their acceptance is pending. fdev holds the gap until acceptance.

    Remaining on #4822:

    • The Wizard fable-game rows: PLAYER, COMPLETE and non-SVG, each typed and default.
    • The Rendering Wizard default rows (app, game).

    With Wizard 0.22.0 now published, the default rows can be run as the next slice.

    Acceptance of this slice is fdev's to give and is not claimed here. I have not closed any issue or changed any board field.

    fdev

  7. EHotwagner commented on Oct 23, 2026

    @EHotwagner
    ContributorAuthor

    fdev 2026-10-23: ACCEPTED: the Rendering raw and provider routes slice (8 rows: provider and raw × app/game × typed/omitted).

    Ratified limits:

    • Provider-only typed Rendering creation gives a knowledge store but no knowledge CI. The overlay is separate, per the Templates contract. This is a usability gap for direct provider users, filed as a Templates follow-up below.
    • Raw typed products are ready for knowledge but aren't Typed SDD workspaces.
    • The adapter has no retry on a hung dotnet tool restore; a hosted re-run may be needed.

    Atlas: capture the route findings now that they're accepted.

    Next selected slice: the Wizard default rows, now that Wizard 0.22.0 is published (omitted lifecycle gives typed-sdd for current templates). That covers the Rendering Wizard default (app, game) and the fable-game PLAYER, COMPLETE and non-SVG rows, typed and default.

  8. EHotwagner commented on Oct 23, 2026

    @EHotwagner
    ContributorAuthor

    Evidence for the published Wizard 0.22.0 knowledge rows, plus the Atlas capture

    Atlas capture of the accepted route findings

    #4840 merged as 41416776f3e13c7f59c418c219cdf7e979e4d951, with --match-head-commit 4a16c17e. An independent fsgg-critic-best review of that exact head returned ACCEPT (record). Required CI: 53 passed, 2 skipped, 0 failed.

    • New record github/rendering-knowledge-routes (c93cd4cb…). It holds the accepted Rendering raw and provider route findings, including the provider-only no-CI gap.
    • github/retained-knowledge-upgrade superseded (b83f5334 → 48262b98…). R4 is now marked accepted, with the FS.GG.SDD#1123 limits cited.

    The Atlas gate passes: 375 records, 710 citations verified. One cosmetic nit is carried forward: the rendering record does not name the Templates follow-up number (FS.GG.Templates#761).

    Wizard 0.22.0 rows (selected in #4822 (comment))

    Source PR. #4841 merged as 1e8299ae8df1d5dfcb4ec95608398c490d1c8d7d, with --match-head-commit 1a4a80b4341f828b2de2f9f700cab339f9f2965f. Required CI at that head: 54 passed, 5 skipped, 0 failed.

    Independent code review (fsgg-critic-best):

    • 317e5250: ACCEPT (record), with non-blocking findings.
    • 1a4a80b4: ACCEPT (record). This head rebased onto main and fixed those findings:
      • The Rendering-default wording now says these rows use the Wizard's own sdd default.
      • The non-SVG refusal must be the parser's own refusal (unknown argument: --svg-foundation).
      • The descriptors the Wizard fetches at runtime must match pinned hashes.

    Hosted run. https://github.com/FS-GG/.github/actions/runs/39948229198

    • Trigger: workflow_dispatch on 1e8299ae.
    • Settings: contents: read, public nuget.org, isolated HOME, no token in any child, Wizard unpinned (no --pinned, no --ref).
    • Result: success, 248 commands.
    • Artifact: wizard-default-rows-public-acceptance, id 12498977652, sha256:2a2d4168…7f24.

    Second, independent artifact review: ACCEPT.

    • All five archives, re-downloaded from nuget.org, match their pinned hashes.
    • All 496 stream hashes match.
    • All 248 process groups are gone, and nothing timed out.
    • All 25 non-zero exits are intended refusals: six per fable row, plus the non-SVG control.
    • No credentials appear, and nothing was written outside the runner.
    Row Result from the raw outputs
    Rendering Wizard default, app and game The Wizard log shows lifecycle sdd, the Wizard's own Rendering default. The fable default rows log lifecycle selected from published provider instead. The scaffold records lifecycle=sdd and the profile. The product has the sdd-lane heading, no canonical store and no knowledge CI; the capture guide is seeded. The descriptor matches ff49732a….
    fable-game PLAYER, explicit typed-sdd and omitted Both record lifecycle=typed-sdd and bundle player; the omitted row resolves to the descriptor default typed-sdd.
    fable-game COMPLETE, explicit typed-sdd and omitted Both record lifecycle=typed-sdd and bundle complete.
    All four fable rows Exact pins: Fable 5.18.0, Fantomas 8.0.5, Coord 0.94.0, SDD 2.4.0. Store and guide are present, and the owner CI is byte-identical to the 0.19.3 fs-gg-fable-game payload. The descriptor matches 6b3d8f2d…. There is no background commit, and the normal initial commit tracks the canonical files, CI and pins. The #4723 probe passes, and the ALL-shared export after private capture has 5 ids and is lossless. The checker accepts 10,485,760 bytes, refuses 10,485,761, and leaves no residue. Product bytes are preserved: 258 unchanged files for PLAYER, 325 for COMPLETE. The explicit and omitted rows have identical committed blobs.
    Non-SVG control --template fable-game --svg-foundation false exits 2 with error: unknown argument: --svg-foundation. No target is created.
    Readback fsgg-sdd --version reports 2.4.0. The tool list shows Wizard 0.22.0 and sdd.cli 2.4.0.

    Hash-matched identities (SHA-256):

    • Wizard 0.22.0: caa91285e5370edc7a8a14a5a46f6cfef236d1db95f1e186357e6591b9ec7bd5 (signed, source 6e6fb9b9)
    • SDD.Cli 2.4.0: 1df2e74faebd388f90b813ed9d7497f4247f977718469c9247b37111d791921f
    • Workspace.Template 0.19.3: 9594ec204a26f238a06e016d1cfe1e796a07fda23c16589eceb19366cd4a72a2
    • UI.Template 0.32.3: 747f33eb0242783f67b2462d8ca137b14f36bb4133bd0a3d4ca98ca8ad93dfe6
    • Coord.Cli 0.94.0: e68a2134242c1e59611a41f98aa5b7d26a545fd6411a0de01af610f4862cc332

    Complementary Templates evidence (not duplicated here). FS.GG.Templates#760 (merged a3b5476b) flipped the fable-reference-public verifier to Wizard 0.22.0. Its full run, https://github.com/FS-GG/FS.GG.Templates/actions/runs/39946080162 (workflow_dispatch on a3b5476b), succeeded. It covers pinned (--ref tag) Wizard COMPLETE omitted/typed/none and the PLAYER public default, with receiver checks and a product build. Those results belong to the Templates owner, and I did not review them. The rows above add the unpinned public path and the full knowledge contract, and build no product.

    For the acceptance decision

    1. Substitution to ratify: the selected non-SVG rows (typed and default) are replaced by the refusal control. Wizard 0.22.0 has no option that reaches svgFoundation; the Wizard source at 6e6fb9b9 has no svg option and no general parameter passthrough. Non-SVG readiness stays covered by the provider route ([TSDD-KNOWLEDGE-01.4/.5] Qualify published Fable-game non-SVG provider automatic typed knowledge #4773) and the raw route ([TSDD-KNOWLEDGE-01.4/.5] Qualify RAW legacy non-SVG Fable typed knowledge and omitted Standard preservation #4769). Please ratify this, or name a different expectation.
    2. Rendering default rows take the Wizard's own sdd default, which also equals the Rendering descriptor default. The rows show the runtime difference through the log line, but cannot otherwise tell the two sources apart.
    3. Unpinned path: the SDD self-update ran as a no-op, because 2.4.0 was preinstalled and is the newest version. The upgrade branch itself was not exercised. Any later coherent-set publish or Templates descriptor change will fail this run closed.
    4. Descriptor proof: the fetched-descriptor claim rests on the product's .fsgg/providers.yml hash. Templates main history corroborates it: the bytes have been unchanged since 7be0bcf and are still current.
    5. Cosmetic: the inherited helper names the fable initial commit "Initial Rendering product…" and writes .fsgg/cache/rendering.json.
    6. Atlas: capturing these Wizard findings is held until acceptance. fdev holds the gap.

    Remaining on #4822 after this slice: none of the enumerated creation routes is left unexercised, provided the non-SVG substitution is ratified. Whether #4822's Done-when is met is fdev's call. I closed no issue and changed no board field.

    fdev

  9. EHotwagner commented on Oct 23, 2026

    @EHotwagner
    ContributorAuthor

    fdev 2026-10-23: ACCEPTED: the Wizard 0.22.0 rows slice.

    • Source: PR Add read-only hosted qualification of the published Wizard 0.22.0 knowledge rows (Refs #4822) #4841 (1e8299ae), with independent ACCEPT ×2.
    • Hosted run: read-only, unpinned Wizard, run 39948229198. The artifact review re-matched 5 packages and 496 outputs; all 25 non-zero exits were intended.
    • Rows:
      • Rendering default: app and game get sdd, with no store and no knowledge CI, by the Wizard's and the descriptor's default;
      • fable-game PLAYER and COMPLETE: typed and default resolve to typed-sdd, with full knowledge checks passing.
    • Complementary: Templates run 39946080162 (with product builds) is cited.

    Non-SVG substitution: RATIFIED. Wizard 0.22.0 has no option that reaches the non-SVG setting (--svg-foundation false is rejected with exit 2, creating nothing), so a refusal control is the correct Wizard row. Non-SVG knowledge readiness stays covered by the accepted provider (#4773) and raw (#4769) routes.

    Limits recorded:

    • the SDD self-update had nothing to do (2.4.0 is newest);
    • the unpinned run is sensitive to future publishes, and is accepted now;
    • the initial-commit wording is cosmetic.

    Atlas: capture the Wizard findings now; also add the Templates#761 cross-reference to github/rendering-knowledge-routes.

    Every enumerated creation route on #4822 has now been run. An independent closure review against the Done-when follows.

  10. EHotwagner commented on Oct 23, 2026

    @EHotwagner
    ContributorAuthor

    fdev 2026-10-23: ACCEPTED: #4822 complete (CLOSE-WITH-GAPS), after an independent closure review. This is the final route mapping; it supersedes the "Not accepted" rows in the first comment (6360179306).

    Route or obligation Accepted by
    R1 FSharp migration, R2 extraction #4723, SDD .6
    R3 retained upgrade 2.2.0/0.19.0 → 2.4.0/0.19.3 run 39926328205 (6361110292)
    R4 pre-knowledge 2.0.3 workspace adopts knowledge run 39931369727 (6361970692)
    Rendering app/game raw + provider, typed and default run 39942183045 (6363476352)
    Rendering Wizard default; fable-game PLAYER and COMPLETE Wizard, typed and default run 39948229198 (6364370377)
    fable-game non-SVG via Wizard refusal control (the Wizard has no reaching option; ratified); non-SVG is covered by #4769 raw and #4773 provider
    Console, web, Python and bindings on all routes; fable raw + provider; Rendering Wizard typed #4720, #4723, #4708, #4759, #4766, #4769, #4773, #4780, #4798; run 39919641656
    10 MiB boundary and refusals every typed row above

    Gaps:

    • Atlas: capture of the Wizard 0.22.0 findings plus the Templates#761 cross-reference, owned by fdev and in progress.
    • Scope note: earlier rows ran on 0.19.0/2.2.0. A re-run isn't required by the Done-when; R3 shows retrieval is byte-identical and the template payloads are identical.
    • Follow-ups: SDD#1123 (adopted-workspace knowledge pointer; doctor) and Templates#761 (provider-only typed Rendering has no knowledge CI).
  11. EHotwagner commented on Oct 30, 2026

    @EHotwagner
    ContributorAuthor

    [board-drift-ack] d:Track,Work level — Root/fdev: no Status change is owed. This card is a bare, unenrolled membership. Its Track and Work level are set by the batched enrollment (#4941), which waits on #4980 and the coordination release.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions