-
-
Notifications
You must be signed in to change notification settings - Fork 39
Spec kit and modern building #500
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: release/9.3
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR establishes a comprehensive "Spec Kit" framework for AI-assisted development workflows by adding constitution documents, coding guidelines, VS Code integration, PowerShell scripts, and prompt templates for the Specify methodology.
Key Changes:
- Introduces a project constitution defining core development principles
- Adds VS Code settings for AI chat prompt integration and terminal auto-approval
- Implements complete PowerShell scripting infrastructure for feature workflows
- Creates comprehensive prompt templates for AI-driven specification and planning
Reviewed Changes
Copilot reviewed 20 out of 20 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| .vscode/settings.json | Configures VS Code chat tools integration and terminal auto-approval for Specify scripts |
| .specify/templates/*.md | Template files for tasks, specs, plans, checklists, and agent files |
| .specify/scripts/powershell/*.ps1 | PowerShell implementation of feature management, planning, and agent context scripts |
| .specify/memory/constitution.md | Project constitution defining FieldWorks development principles and governance |
| .github/prompts/speckit.*.prompt.md | AI prompt templates for specify, plan, tasks, implement, constitution, clarify, checklist, and analyze commands |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
Agent analysis is currently a stub and does not execute prompts. |
This comment has been minimized.
This comment has been minimized.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
Copilot reviewed 109 out of 109 changed files in this pull request and generated no new comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
jasonleenaylor
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@jasonleenaylor reviewed 6 of 93 files at r2.
Reviewable status: 6 of 109 files reviewed, all discussions resolved
Src/Common/FieldWorks/COPILOT.md line 1 at r2 (raw file):
# Common/FieldWorks
So many problems.
Src/Cellar/COPILOT.md line 4 at r2 (raw file):
## Purpose Core data model and persistence layer (also known as LCM - FieldWorks Language and Culture Model). This is the foundational data model for FieldWorks, handling XML serialization and data object management.
This is not accurate in the least.
Src/Common/COPILOT.md line 23 at r2 (raw file):
## Technology Stack - Mix of C# and C++/CLI
ViewsInterfaces is a C# library consuming the C++ through COM, I don't know if this is accurately describing the contents
Src/Common/Controls/COPILOT.md line 23 at r2 (raw file):
## Build Information - Part of Common solution
Don't think this is real
.github/prompts/speckit.checklist.prompt.md line 1 at r1 (raw file):
---
This file is going to need a lot of work, it seems very web-app oriented at the moment.
294fdd4 to
999792a
Compare
|
@jasonleenaylor - things should be ready for your review. Please look specifically at:
Those are the most fundamental files - everything else is built off of those. If they are good, then we can refine the others as we go along. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
Copilot reviewed 121 out of 121 changed files in this pull request and generated no new comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
@jasonleenaylor - also added link checking and a few FIXME's throughout. Please review and update the guidance. |
This comment has been minimized.
This comment has been minimized.
|
The AI is going to be perpetually confused trying to parse our source for understanding what 'FieldWorks applications are' There will be plenty of classes intended for reuse that have a single reuse and stale comments referring to past architecture. It may be more useful to note which projects produce an exectuable and which produce a library. Also until we get there the AI suggested build commands have 0 chance of working. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
Copilot reviewed 123 out of 123 changed files in this pull request and generated no new comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
jasonleenaylor
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@jasonleenaylor reviewed 1 of 93 files at r2, 14 of 64 files at r5.
Reviewable status: 15 of 123 files reviewed, all discussions resolved
Src/Common/RootSite/COPILOT.md line 199 at r5 (raw file):
- **XML data/config**: RootSiteDataProviderCacheModel.xml - **Source file count**: 31 files - **Data file count**: 7 files
Not bad, this would be ok.
Src/Common/UIAdapterInterfaces/COPILOT.md line 34 at r5 (raw file):
## Dependencies - Depends on: Minimal (interface definitions) - Used by: XCore, UI adapter implementations
🤣 Used by unspecified projects that use it.
Src/FdoUi/COPILOT.md line 32 at r5 (raw file):
## Technology Stack - C# .NET WinForms/WPF
WPF is hallucinated here
Src/FdoUi/COPILOT.md line 157 at r5 (raw file):
- **Key C# files**: AssemblyInfo.cs, BulkPosEditor.cs, FdoUiCore.cs, InflectionClassEditor.cs, InflectionFeatureEditor.cs, LexPronunciationUi.cs, PartOfSpeechUi.cs, PhonologicalFeatureEditor.cs, TypeAheadSupportVc.cs, WfiWordformUi.cs - **Source file count**: 31 files - **Data file count**: 10 files
C
Src/Common/FwUtils/COPILOT.md line 193 at r5 (raw file):
- **XML data/config**: strings-en.xml, strings-en.xml - **Source file count**: 126 files - **Data file count**: 6 files
This one it got right. Which is key, if it didn't this would be a lost cause. 😄
Src/DbExtend/COPILOT.md line 48 at r5 (raw file):
- **Key C++ files**: xp_IsMatch.cpp - **Source file count**: 1 files - **Data file count**: 0 files
I didn't even know this folder existed...curious what would happen if I deleted it.
Src/FwResources/COPILOT.md line 75 at r5 (raw file):
- **Key C# files**: AssemblyInfo.cs, FwFileExtensions.cs, FwStrings.Designer.cs, FwTMStrings.Designer.cs, HelpTopicPaths.Designer.cs, Images.Designer.cs, ResourceHelper.cs, ResourceHelperImpl.Designer.cs, SearchingAnimation.cs, ToolBarSystemStrings.Designer.cs - **Source file count**: 12 files - **Data file count**: 7 files
This reminds me that we will need to include somewhere in the agent instructions the localization strategy which we use for strings in dialog and in code. This is a good
Src/Common/SimpleRootSite/COPILOT.md line 231 at r5 (raw file):
- **XML data/config**: SimpleRootSiteDataProviderCacheModel.xml, TextCacheModel.xml - **Source file count**: 43 files - **Data file count**: 6 files
Adequate
Src/FwParatextLexiconPlugin/COPILOT.md line 24 at r5 (raw file):
- C# .NET - Paratext plugin API - Lexicon data integration
Interesting 'Technology' this one.
Src/FwParatextLexiconPlugin/COPILOT.md line 27 at r5 (raw file):
## Dependencies - Depends on: Cellar (data model), FdoUi (UI components), Paratext SDK
This should probably be LCM almost anywhere it refers to data model.
Src/DocConvert/COPILOT.md line 45 at r5 (raw file):
- **Source file count**: 0 files - **Data file count**: 0 files
Very interesting interpretation of a folder that contains an icon (which is probably obsolete).
Src/FwCoreDlgs/COPILOT.md line 196 at r5 (raw file):
- **XML data/config**: custompua.xml, xtst.xml - **Source file count**: 166 files - **Data file count**: 67 files
Curious if we are also getting COPILOT.md in the subfolders, it seems like the DlgControls should be acknowledged as a sub-project of sorts. Technically it is a separate library that is just organized under this folder due to the close relationship.
Src/DebugProcs/COPILOT.md line 25 at r5 (raw file):
## Dependencies - Depends on: Kernel, Generic (core infrastructure) - Used by: All components during development and debugging
Should have specified 'unmanaged components' probably.
Src/DebugProcs/COPILOT.md line 49 at r5 (raw file):
- **Key headers**: DebugProcs.h - **Source file count**: 2 files - **Data file count**: 0 files
A -
Src/Common/ViewsInterfaces/COPILOT.md line 121 at r5 (raw file):
- **Key C# files**: AssemblyInfo.cs, AssemblyInfo.cs, ComUtils.cs, ComWrapper.cs, DispPropOverrideFactory.cs, ExtraComInterfacesTests.cs, IPicture.cs, Rect.cs, VwGraphicsTests.cs, VwPropertyStoreManaged.cs - **Source file count**: 10 files - **Data file count**: 0 files
Ok, this is much better. Quite accurate, A- for unhelpful generalities in some descriptions
Src/Common/ScriptureUtils/COPILOT.md line 44 at r5 (raw file):
## Dependencies - Depends on: Paratext SDK, Common/FwUtils
🤣 what a generous description of the ParatextData assembly.
Src/Common/ScriptureUtils/COPILOT.md line 170 at r5 (raw file):
- **Key C# files**: AssemblyInfo.cs, PT7ScrTextWrapper.cs, Paratext7Provider.cs, ParatextHelper.cs, ParatextHelperTests.cs, ScrReferencePositionComparer.cs, ScrReferencePositionComparerTests.cs, ScriptureProvider.cs, ScriptureReferenceComparer.cs, ScriptureReferenceComparerTests.cs - **Source file count**: 10 files - **Data file count**: 0 files
B+
c1f3053 to
812670a
Compare
This comment has been minimized.
This comment has been minimized.
35ffac5 to
feea4e2
Compare
Add local mulit-agent capability We can't close VSCode windows. Just resuse the folders and code-workspace files.
3f70ea5 to
1577ec3
Compare
Docker image build fieldworks Don't allow forceable resetting of git-worktrees
- Verified 0 redundant `PlatformTarget` entries; x64 inheritance is active. - Documented `FwBuildTasks` as the single `AnyCPU` exception. - Updated specs and validatedfeat(convergence): finalize PlatformTarget cleanup (006) - Verified 0 redundant `PlatformTarget` entries; x64 inheritance is active. - Documented `FwBuildTasks` as the single `AnyCPU` exception. - Updated specs and validated
- Enforce the `<ProjectName>Tests/**` exclusion pattern across SDK-style projects to prevent CS0436 type conflicts and mixed-code issues. - Rename `ConverterTest.cs` to `ConverterTester.cs` in `FwCoreDlgs` (and update references in `AddCnvtrDlg.cs`) to resolve a naming conflict where production code was incorrectly identified as a test. - Update project files (e.g., `FwUtils`, `FwParatextLexiconPlugin`, `Paratext8Plugin`) to align with the standard exclusion pattern. - Add `scripts/test_exclusions/` tooling (`repo_scanner.py`, `validator.py`) to audit and validate compliance. - Update `managed.instructions.md` and specs to document the new standard.
This commit introduces comprehensive support for Registration-Free COM (RegFree COM)
to enable side-by-side deployment and eliminate global registry dependencies for
FieldWorks applications.
Key Changes:
1. Build System Enhancements (FwBuildTasks):
- Extended `RegFree` task to support managed assemblies (`ProcessManagedAssembly`).
- Implemented `System.Reflection.Metadata` based inspection to read `[ComVisible]`
types and `[Guid]` attributes without locking files or loading assemblies,
resolving 32-bit/64-bit execution context mismatches.
- Added generation of `<clrClass>` elements in application manifests for
managed COM components (e.g., DotNetZip).
2. Project Integration:
- Updated `LCMBrowser` and `UnicodeCharEditor` build targets to reliably generate
manifests.
- Fixed MSBuild hooks by switching from overriding `AfterBuild` to using
`AfterTargets="Build"` to ensure the `RegFree` task executes correctly.
3. Tooling & Scripts:
- Added `scripts/regfree/` suite for auditing and manifest generation:
- `audit_com_usage.py`: Scans codebase for COM instantiation patterns.
- `extract_clsids.py` & `extract_com_guids.py`: Harvests CLSIDs/IIDs from source.
- `generate_app_manifests.py`: Automates manifest creation for apps.
- Added `run-in-vm.ps1` for isolated testing.
4. Documentation & Specs:
- Added `specs/003-convergence-regfree-com-coverage/` containing the implementation
plan, audit summaries, and task tracking.
5. Component Updates:
- Refactored managed wrappers (`ManagedLgIcuCollator`, `ManagedVfeat: Implement Registration-Free COM support and tooling
This commit introduces comprehensive support for Registration-Free COM (RegFree COM)
to enable side-by-side deployment and eliminate global registry dependencies for
FieldWorks applications.
Key Changes:
1. Build System Enhancements (FwBuildTasks):
- Extended `RegFree` task to support managed assemblies (`ProcessManagedAssembly`).
- Implemented `System.Reflection.Metadata` based inspection to read `[ComVisible]`
types and `[Guid]` attributes without locking files or loading assemblies,
resolving 32-bit/64-bit execution context mismatches.
- Added generation of `<clrClass>` elements in application manifests for
managed COM components (e.g., DotNetZip).
2. Project Integration:
- Updated `LCMBrowser` and `UnicodeCharEditor` build targets to reliably generate
manifests.
- Fixed MSBuild hooks by switching from overriding `AfterBuild` to using
`AfterTargets="Build"` to ensure the `RegFree` task executes correctly.
3. Tooling & Scripts:
- Added `scripts/regfree/` suite for auditing and manifest generation:
- `audit_com_usage.py`: Scans codebase for COM instantiation patterns.
- `extract_clsids.py` & `extract_com_guids.py`: Harvests CLSIDs/IIDs from source.
- `generate_app_manifests.py`: Automates manifest creation for apps.
- Added `run-in-vm.ps1` for isolated testing.
4. Documentation & Specs:
- Added `specs/003-convergence-regfree-com-coverage/` containing the implementation
plan, audit summaries, and task tracking.
5. Component Updates:
- Refactored managed wrappers (`ManagedLgIcuCollator`, `ManagedVwDrawRootBuffered`,`ManagedVwWindow`) to align with the new RegFree architecture.
This change standardizes assembly metadata across all 101 managed projects by enforcing the CommonAssemblyInfoTemplate policy and restoring custom attributes lost during previous migrations. Key changes: - Added `scripts/GenerateAssemblyInfo/` automation suite: - `audit_generate_assembly_info.py`: Inventories project state (Template-only vs. Custom). - `convert_generate_assembly_info.py`: Links `Src/CommonAssemblyInfo.cs`, sets `<GenerateAssemblyInfo>false`, and restores missing `AssemblyInfo.cs` files from git history. - `validate_generate_assembly_info.py`: Enforces structural compliance and invokes MSBuild/Reflection checks. - `reflect_attributes.ps1`: Verifies assembly attributes (Company, Product, Copyright) in build output. - Updated `Directory.Build.props` to document the new AssemblyInfo policy and disable determinism for wildcard versioning. - Updated `.github/instructions/managed.instructions.md` with developer guidelines for the template. - Finalized `specs/002-convergence-generate-assembly-Implement GenerateAssemblyInfo template reintegration (Spec 002) This change standardizes assembly metadata across all 101 managed projects by enforcing the CommonAssemblyInfoTemplate policy and restoring custom attributes lost during previous migrations. Key changes: - Added `scripts/GenerateAssemblyInfo/` automation suite: - `audit_generate_assembly_info.py`: Inventories project state (Template-only vs. Custom). - `convert_generate_assembly_info.py`: Links `Src/CommonAssemblyInfo.cs`, sets `<GenerateAssemblyInfo>false`, and restores missing `AssemblyInfo.cs` files from git history. - `validate_generate_assembly_info.py`: Enforces structural compliance and invokes MSBuild/Reflection checks. - `reflect_attributes.ps1`: Verifies assembly attributes (Company, Product, Copyright) in build output. - Updated `Directory.Build.props` to document the new AssemblyInfo policy and disable determinism for wildcard versioning. - Updated `.github/instructions/managed.instructions.md` with developer guidelines for the template. - Finalized `specs/002-convergence-generate-assembly-
Will open up, but many UI controls broken.
Spec kit and AI docs: update instructions, tasks, and add CI doc lint
Refine AI onboarding and workflows:
Spec kit improvements:
Inner-loop productivity:
CI hardening for docs and future agent flows:
Src/ and ensure folders are referenced in .github/src-catalog.md.
This change is