Skip to content

Conversation

@johnml1135
Copy link
Contributor

@johnml1135 johnml1135 commented Oct 28, 2025

Spec kit and AI docs: update instructions, tasks, and add CI doc lint

Refine AI onboarding and workflows:

  • Update copilot-instructions.md with agentic workflow links and clearer pointers to src-catalog and per-folder guidance (COPILOT.md).
  • Tune native and installer instructions for mixed C++/CLI, WiX, and build nuances (interop, versioning, upgrade behavior, build gotchas).

Spec kit improvements:

  • Refresh spec.md and plan.md to align with the
  • feature-spec and bugfix agent workflows and FieldWorks conventions.

Inner-loop productivity:

  • Extend tasks.json with quick checks for whitespace and commit message linting to mirror CI and shorten feedback loops.

CI hardening for docs and future agent flows:

  • Add lint-docs.yml to verify COPILOT.md presence per
    Src/ and ensure folders are referenced in .github/src-catalog.md.
  • Add agent-analysis-stub.yml (disabled-by-default) to document how we will run prompts/test-failure analysis in CI later.

This change is Reviewable

Copilot AI review requested due to automatic review settings October 28, 2025 16:48
Copy link

Copilot AI left a 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.

@github-actions
Copy link

Agent analysis is currently a stub and does not execute prompts.
Intended workflow: run .github/prompts/test-failure-debug.prompt.md in analysis-only mode and post findings.
See .github/option3-plan.md for enablement steps.

@github-actions

This comment has been minimized.

@johnml1135 johnml1135 changed the title Spec kit Spec kit and AI docs: update instructions, tasks, and add CI doc lint Oct 29, 2025
Copy link

Copilot AI left a 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.

Copy link
Contributor

@jasonleenaylor jasonleenaylor left a 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.

@johnml1135 johnml1135 force-pushed the spec-kit branch 2 times, most recently from 294fdd4 to 999792a Compare October 29, 2025 23:40
@johnml1135
Copy link
Contributor Author

@jasonleenaylor - things should be ready for your review. Please look specifically at:

  • The Constistution.md file
  • The src-catalog.md
  • copilot-instructions.md

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.

@johnml1135 johnml1135 requested a review from Copilot October 30, 2025 00:06
Copy link

Copilot AI left a 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.

@johnml1135
Copy link
Contributor Author

@jasonleenaylor - also added link checking and a few FIXME's throughout. Please review and update the guidance.

@github-actions

This comment has been minimized.

@jasonleenaylor
Copy link
Contributor

Src/Common/Framework/COPILOT.md line 46 at r5 (raw file):

## Dependencies
- Depends on: Common/FwUtils, Common/ViewsInterfaces
- Used by: All FieldWorks applications (xWorks, LexText)

The AI is going to be perpetually confused trying to parse our source for understanding what 'FieldWorks applications are'
Because of the history of the project (built to be a bazaar with many individual applications, and then refactored to be essentially monolithic, with 2 applications FieldWorks Language Explorer, and Translation Editor (TE), and then 7 years later having TE removed completely from the source.')

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.
I'm wondering if getting ourselves to the SDK style projects before doing this kind of analysis would be better.

Also until we get there the AI suggested build commands have 0 chance of working.

@johnml1135 johnml1135 requested a review from Copilot October 30, 2025 16:59
Copy link

Copilot AI left a 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.

Copy link
Contributor

@jasonleenaylor jasonleenaylor left a 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+

@johnml1135 johnml1135 force-pushed the spec-kit branch 2 times, most recently from c1f3053 to 812670a Compare October 30, 2025 17:59
@github-actions

This comment has been minimized.

@johnml1135 johnml1135 changed the title Spec kit and AI docs: update instructions, tasks, and add CI doc lint Spec kit and modern building Nov 12, 2025
Add local mulit-agent capability
We can't close VSCode windows.  Just resuse the folders and code-workspace files.
@johnml1135 johnml1135 force-pushed the spec-kit branch 3 times, most recently from 3f70ea5 to 1577ec3 Compare November 17, 2025 20:47
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.
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.

3 participants