Repository navigation
[cross-repo] Make generated-workspace governance bindings language-neutral #423
Description
Observed behavior
The generated Governance overlay currently binds organization capabilities to dotnet build, dotnet test, dotnet fsi evidence, .slnx, .fsi, and build.fsx. FS-GG/.github#3008 requires TypeScript, JavaScript, Rust, and Go workspaces to receive the same governance semantics and GitHub/CI structure rather than a weaker language-specific bypass.
Root cause
Capability and enforcement types are substantially generic, but the shipped reference overlay is a composed F# profile. It conflates invariant capability identities with one ecosystem's commands, path map, public-surface representation, toolchain, and evidence adapter.
Acceptance
After FS-GG/.github#3009 accepts the architecture, define a language-neutral generated-workspace governance profile whose stable capability IDs cover build, test, lint, evidence, package, security, public surface, and release while provider bindings supply concrete commands, paths, tools, costs, environments, and evidence formats. Support F#/dotnet, Node/TypeScript, Node/JavaScript, Rust/Cargo, and Go bindings without weakening organization-owned block-on-ship floors. Preserve existing F# overlay compatibility, refuse a declared capability with no executable binding where one is required, keep command-free semantic obligations command-free, and project the selected bindings into the Quint WorkspaceModel and provenance using versioned contracts rather than inferred repository contents.
Verification
Schema, derivation, routing, enforcement, reference-gate-set package, and generated-product fixtures prove that identical capability semantics select the correct ecosystem commands and paths; missing, duplicate, stale, or cross-language bindings fail closed; unrelated changes route selectively; expected JUnit/SARIF/coverage/package evidence is normalized or explicitly typed; and existing F# consumers remain compatible. Publish and independently consume the exact reference-gate-set artifact before FS.GG.Templates adopts it.
Class: hardening
Severity: High
Blocked by: FS-GG/.github#3009
Backlog reason: not-yet-actionable
Paths: src/FS.GG.Governance.Config src/FS.GG.Governance.Gates src/FS.GG.Governance.Inheritance src/FS.GG.Governance.ProductSurfaces src/FS.GG.Governance.Route src/FS.GG.Governance.Scaffold reference-gates tests/FS.GG.Governance.Gates.Tests tests/FS.GG.Governance.ReferenceGateSet.Tests specs
Accepted deterministic orchestration integration — 2026-10-21
The user accepted the comprehensive framework and product workspace orchestration design and requested Coordination-board incorporation. That LEARN issue holds the complete design, source findings, replacement contracts, delivery sequence and integrated acceptance.
Governance integration: provide authoritative semantic capability and acceptance obligations to WorkspaceExecutionContract and the independent deterministic feasibility/acceptance checks for both framework and product work. Agent assessment or learned routing cannot grant authority, remove required evidence or choose a different lifecycle. Maintain command-free semantic floors and actual command/tool/evidence bindings. Coordinate the selected breaking contract with SDD and Coordination; existing promised language-neutral product outcomes remain required.
Source incorporation: the existing accountable owner includes this requirement when preparing the relevant next contract/roadmap delivery and captures its durable ADR/Atlas references. No new implementation owner, worker dispatch, runtime activation, publication, issue closure, project-field change or reservation release is made by this issue amendment. Existing original evidence, operations and remaining acceptance are preserved.
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsBlocked
Activity
EHotwagner commentedon Oct 23, 2026
fdev: publication request for Governance 1.15.0. This covers the source half of the GOV-423-C2 execution join. Nothing has been published, and no tag exists. The publication effect is a separate admission and is yours to grant.
Source (accepted)
282741b1ed9ec555abbde8c7ad8ce472c70786cf.b49bd2ce, and all 15 required and advisory checks passed on that head.b49bd2ce, after one REQUEST_CHANGES round on2f7d2558; the relay is in the PR comments.fsgg-governance verifynow runs admitted commands through the GateExecution held-cwd host and accepts or refusesfsgg.governance-handoff@2.xevidence that Governance observes itself. Previously it always exited 1 after planning.docs/reports/2026-10-23-governance-1.15.0-release-preparation.md.Requested publication
FS.GG.Governance.Cli(toolfsgg-governance)FS.GG.Governance.FSharpSurfaceCommandallrunallRoute and expected run
v1.15.0tag at282741b1. This is the maintainedv*route used for 1.13.0 and 1.14.0.publish.ymlpush,scope=all, packing from the CLI<Version>1.15.0. The 1.14.0 equivalent was run 39829604024.FS.GG.Governance.Cli1.15.0 andFS.GG.Governance.FSharpSurfaceCommand1.15.0 are absent.v1.15.0is absent.Acceptance after publication (not done by a green run)
fsgg-governance verifyin legacy mode and in provider mode.runwrites the declaredfsgg.governance-handoff@2.0.0evidence, plus missing, stale and mismatched variants. The workspace still needs its own Governance.fsggcatalog; this is a documented requirement, see the plan. The runner must be Linux-x64 with glibc 2.40 or later. With an older glibc, held-cwd preparation refuses and every provider run blocks.GOV-423-C2 stays unchecked. Still open after publication:
Plan section:
docs/roadmaps/governance-423-neutral-capability-bindings.md§ "GOV423-C2 provider execution and evidence acceptance join (2026-10-23)", at282741b1.EHotwagner commentedon Oct 23, 2026
fdev: the Atlas capture for the GOV-423-C2 execution join is delivered in FS-GG/.github#4830 (merge
eefb7fe2). It records three findings:governance/neutral-binding-producer-caller-frontier(the new version supersedes9cf90b3a; 1.14.0 stops after planning, and source282741b1connects execution and evidence acceptance),governance/provider-verify-sdd-codec-skew, andgovernance/provider-verify-workspace-catalog. The publication request above is unchanged, and GOV-423-C2 stays open.EHotwagner commentedon Oct 23, 2026
fdev 2026-10-23: GO-WITH-CONDITIONS; the tag is pushed. Annotated
v1.15.0→282741b1(read back asmain). Publish run 39928935417.Independent GO review:
publish.ymlis unchanged since the successful 1.14.0 run.verifycouldn't pass before, and legacyverifyis unaffected.Conditions in force:
EHotwagner commentedon Oct 23, 2026
fdev 2026-10-23: Governance 1.15.0 post-publication acceptance, against the conditions in comment 6361365085.
Publication.
v1.15.0→282741b1ed9ec555abbde8c7ad8ce472c70786cf.Byte comparison, both feeds (condition 4).
bac0b7f0.contentsandpackagesread only.0b0ebefd7224b70c39388512d8cc5288797213b10b7ebc418bf38823a58a1a339eb3eed64cacdd84ba3d82439d8e3b6ffb3c9e035c6e5de00a1520094227879b.signature.p7s7cecc0a89c13e89eb0de364e19e70a2c35cedaad872793a8310290c713a5378e4c9147d66ac9410f7e95d25118243a40359462c2cd181489a991c1d66b5a28c5.signature.p7s282741b1.Cold install.
--tool-pathand HOME/DOTNET_CLI_HOME/NUGET_PACKAGES, with a local-folder-only NuGet config:fsgg-governance verifyoutside a repository exits 3 (legacy);fsgg-fsharp-surfaceanswers with its usage.SDD#928 C3.1-03 / SDD928-C2.3 installed journey (condition 4).
home-fdev-1(glibc 2.44, SDK 10.0.401, runtime 10.0.12). This is the local profile.1df2e74f…) and Governance.Cli 1.15.0 (9eb3eed6…), cold-installed from nuget.org bytes;46ca7ff7, built package-only against nuget.org;--case positive(passed; source identity stable);.fsggcatalog;runwrites the declaredfsgg.governance-handoff@2.0.0evidence.test:testexecuted with exit 0 and accepted; verify.jsonpassRawDigestMismatch "provenance"linux-arm64UnsupportedPlatform--paths AGENTS.md.fsggcatalogeugen. It isgov423-c2-installed-journey.sh, sha2566281b65397e799e9950a151fb3865a79f36851847ec9b0ed9dc2c10df8a8c2b8; no root, isolated homes and tool path, nuget.org bytes only. That run is the one the SDD owner can cite for C3.1-03 and C2.3.Registry reconcile.
.githubmerge hold and will merge only after the hold is released.Still open on GOV-423-C2:
eugen) journey run and its citation by the SDD owner;C2 stays unchecked.
EHotwagner commentedon Oct 23, 2026
fdev 2026-10-23: GOV-423-C2: installed journey on Home, verified. The published Governance 1.15.0 provider mode executes the plan and accepts evidence on a glibc ≥ 2.40 host.
What ran
gov423-c2-installed-journey.sh, sha256caa49283…8565, independently reviewed and admitted.eugenon Home (Main), without root.Evidence I checked myself
MANIFEST.sha256is47833cbf…, and all 9 files in it verify.summary.jsonis0d46aff8…. The copy insideresults.tar(a2b54fa7…) is byte-identical.pass: gatetest:testwas executed with exit 0 and passed under thestandardprofile.passed,sourceIdentityStableandproductEnvironmentQualifiedas true.ccee2c67….runwritesfsgg.governance-handoff@2.0.0)RawDigestMismatch "provenance"linux-arm64UnsupportedPlatform--paths AGENTS.md.fsggcatalogCorrection to 6362372586: that comment called the fdev-container run "the local profile", which was wrong. Both runs used the
standardenforcement profile, asenforcement.profilein verify.json shows. "Local" was only the cooperative execution setting: environment classlocal, with descendants neither contained nor observed.GOV-423-C2: what is now met.
What remains on #423, and who owns it. C2 stays unchecked until the physical items close.
.githubhold to be released (me, after release).requiredPathscoverage: of evidencesources[].EHotwagner commentedon Oct 23, 2026
fdev: registry reconcile delivered. FS-GG/.github#4837 is merged at
d3795ad9, and its tree is identical to the reviewed and rebased head47f93ed0. The 1.15.0 record now appears inregistry/dependencies.yml,registry/CHANGELOG.mdanddocs/registry/compatibility.md. Every acceptance condition from the 1.15.0 GO comment is now met. GOV-423-C2 stays unchecked: the physical blocked-read and uncertain-close cases, whole-worker teardown with a named supplier, and stronger profiles remain, along with C3 and C4.EHotwagner commentedon Oct 24, 2026
fdev (SDD owner role), 2026-10-24: request for Governance review of the SDD-side Verify capture-lifetime join. No Governance change is proposed or required.
Per Programme/root's decision on SDD#928, FS.GG.SDD owns the join and Governance reviews the GateExecution contract use. SDD PR FS-GG/FS.GG.SDD#1132 (Delivery SDD#1131) makes the maintained runner the outer admitted runtime for one
fsgg-governance verifyprovider invocation:FSGG_VERIFY_WORK_SECONDSandFSGG_VERIFY_CLEANUP_SECONDS(whole seconds from host start; cleanup absolute and not before work), and refuses a declaration unless startup allowance + cleanup end fits inside its own work window, so it never signals a host inside the capture window;host-exited-after-settlementas the only settlement; exit 4 with the host's retained report, and a worker ended by the outer runtime, are non-passing.Evidence against published Governance 1.15.0 and SDD 2.5.1 (27/27, 12 Verify cases incl. evidence refusals, a declared deadline and a detached TERM-ignoring descendant) is in the PR. Not exercised and still yours (#423 prerequisite b): an authentic blocked regular-file read and an independently observed uncertain close; the resident-host branch is tested with a stand-in host only. Please say on the PR or here if the host-timing assumptions above (ends measured from host start, absolute cleanup end, exit mapping) differ from your contract.