Commit Graph

163 Commits

Author SHA1 Message Date
Lasha Efremidze 0ad5fbc4cd step 2 2026-03-11 15:02:37 -07:00
Lasha Efremidze 62df45aae1 step 1 2026-03-11 14:18:40 -07:00
Lasha Efremidze fd2f96af30 Improve README: Add examples, reorganize installation, enhance discoverability (#17) v0.4.2 2026-03-09 15:06:56 -07:00
Lasha Efremidze 82b449d733 Update README.md 2026-03-09 15:06:10 -07:00
Lasha Efremidze 310b4ee082 Update README.md 2026-03-09 15:05:42 -07:00
Lasha Efremidze e5e05a0e17 Update README.md 2026-03-09 15:05:37 -07:00
Lasha Efremidze a876c4d735 Update README.md 2026-03-09 15:05:15 -07:00
Lasha Efremidze 62e62af196 Update README.md 2026-03-09 14:59:26 -07:00
Lasha Efremidze c215d75110 Update README.md 2026-03-09 14:53:25 -07:00
Lasha Efremidze d81bdbc992 Merge branch 'main' into copilot/improve-readme-documentation 2026-03-09 12:20:34 -07:00
Lasha Efremidze e23c80d730 Update README.md 2026-03-09 12:18:54 -07:00
Lasha Efremidze fa67171d7a Update README.md 2026-03-09 12:15:20 -07:00
Lasha Efremidze e58e20020c Merge branch 'main' into copilot/improve-readme-documentation 2026-03-09 11:55:53 -07:00
Lasha Efremidze c3be5e1491 Fix duplicate MVP entry in supported architectures 2026-03-05 21:05:18 -08:00
Lasha Efremidze 5535909577 Add MVP and Coordinator architecture playbooks (#22) 2026-03-05 21:03:16 -08:00
Lasha Efremidze 32bf814789 Fix coordinator benchmark case to satisfy semantic quality contract (#24) 2026-03-05 21:02:42 -08:00
Lasha Efremidze f4971d93ba Fix misleading test name and non-deterministic stub in coordinator benchmark
- Rename test_pop_cancellation_onEmptyPath_doesNotCrash to test_pop_onEmptyPath_doesNotCrash
  to accurately reflect empty-path guard behaviour (no actual cancellation involved)
- Rename test_addChild_retainsChildCoordinatorUntilRemoved to
  test_cancelChildFlow_removesChildCoordinator, which genuinely exercises
  sub-flow cancellation and satisfies the contract cancellation-pattern requirement
- Fix StubUserRepository to return a fixed UUID literal instead of UUID() per call,
  making the stub deterministic as stated in the section description

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-05 21:01:43 -08:00
Lasha Efremidze d74235b375 Align coordinator benchmark with playbook best practices
- Inject UserRepository via init (StubUserRepository for deterministic tests)
- Add DeepLinkHandler with failure test for unknown URL scheme
- Add child coordinator lifecycle test (addChild retains, removeChild cleans up)
- Replace MockCoordinatorDelegate with closure-based navigation matching playbook style
- Update manifest assertion from AppCoordinator\(\) to AppCoordinator\( to allow
  dependency-injected constructors

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-05 20:54:34 -08:00
Lasha Efremidze e9a3e9b4bd Fix coordinator benchmark case to satisfy semantic quality contract
Add MockCoordinatorDelegate stub, delegate wiring, and test names covering
success, failure, and cancellation paths so the case passes all required_any_groups
and required_patterns checks in the testing-quality contract.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-05 20:40:18 -08:00
copilot-swe-agent[bot] dbe2f61150 Add MVP and Coordinator architecture playbooks
Co-authored-by: efremidze <2286277+efremidze@users.noreply.github.com>
2026-03-05 20:45:07 +00:00
copilot-swe-agent[bot] 0ed4d80994 Initial plan 2026-03-05 20:35:19 +00:00
Lasha Efremidze 12b87d44ca Fix correctness issues in architecture reference playbooks (#21) 2026-03-05 00:54:05 -08:00
Lasha Efremidze 2fbd8479c5 Fix correctness issues in architecture reference playbooks
- mvvm.md: add State(wrappedValue:) and StateObject(wrappedValue:)
  initializer patterns to @Observable and ObservableObject view
  examples so ViewModels can be injected from the assembly layer
- viper.md: remove duplicate ProfilePresenter body from Concurrency
  section; replace with a reference to the Wiring Pattern section
- reactive.md: make SearchPresenter generic over S: Scheduler so the
  UIKit example is testable, consistent with SearchViewModel
- tca.md: remove redundant $0.continuousClock = clock from the
  cancellation test (numberFact.fetch captures clock directly)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-05 00:46:37 -08:00
Lasha Efremidze 3c8b22cbc2 Reorganize Folders (#20) 2026-02-26 00:47:45 -08:00
Lasha Efremidze 3a998f6407 Relocate evals and scripts into tooling/
Move the evals/ and scripts/ trees into tooling/ (tooling/evals, tooling/scripts) and update all references accordingly. Adjusted CI workflow, docs (AGENTS.md, CONTRIBUTING.md, evals README), manifests and runner scripts to use the new paths, updated .gitignore, and fixed script path resolution (parents index and ROOT_DIR adjustments) so tooling runs and validations continue to work from their new location.
2026-02-26 00:46:38 -08:00
Lasha Efremidze 07e2c2ef52 reorganized folders 2026-02-25 11:00:39 -08:00
Lasha Efremidze fd150c2ed2 Added Release Workflow (#19) v0.4.1 2026-02-25 00:02:52 -08:00
Lasha Efremidze 29aeaabe70 Update release.yml 2026-02-25 00:01:53 -08:00
Lasha Efremidze 776db468c1 Update release.yml 2026-02-25 00:00:53 -08:00
Lasha Efremidze 36e4fc5667 Update release.yml 2026-02-24 23:52:34 -08:00
Lasha Efremidze 44580a7c29 Update release.yml 2026-02-24 23:00:43 -08:00
Lasha Efremidze b5cb77015f Create release.yml 2026-02-24 22:59:02 -08:00
Lasha Efremidze c8a7d4cca0 Improve/coverage (#18) 2026-02-24 22:45:10 -08:00
Lasha Efremidze b1ed9a3fce Improve tests and validation scripts
Refactor and enhance testing examples and validation tooling:

- CONTRIBUTING.md: fix checklist indentation for readability.
- quality/benchmarks/cases/*: replace placeholder asserts with real async XCTest checks (mvvm stale-overwrite and async cases), add helper functions and TestError, and ensure stale-request ordering is tested correctly.
- scripts/run-testing-benchmark-suite.py: add a 30s COMMAND_TIMEOUT, handle subprocess.TimeoutExpired, and treat unsupported assertion scopes as failures instead of raising.
- scripts/validate-benchmark-coverage.py: validate that architecture assertions are objects and skip malformed entries.
- scripts/validate-testing-quality.py: validate requirement scopes ('section' or 'file') and catch invalid regex errors with clear messages.
- swift-architecture-skill/references/mvi.md: correct unit test expected counter value from 3 to 0.

These changes improve test quality, make validation tools more robust, and provide clearer error reporting.
2026-02-24 22:44:25 -08:00
Lasha Efremidze 458fab0b0d Update run-realworld-corpus-eval.py 2026-02-24 22:41:48 -08:00
Lasha Efremidze 2e8f293747 Improve test determinism and tooling validation
Make benchmark & corpus tests deterministic and add stricter validation across tooling and CI. Key changes:

- CI: install Python 3.11 in validate-skill workflow.
- Tests: replace nondeterministic sleeps with Task.yield/explicit scheduling, use subjects and collectors, add small TestError enums and helpers, adapt TCA tests to use deterministic stubs and assertions.
- Manifests/corpus: tighten regexes, add semantic description for an intentionally-broken case, and pin upstream SOURCE URLs to specific commits.
- Scripts: use sys.executable for subprocess calls, validate assertion scopes, compile/validate heading regex, better JSON error messages, surface unknown README entries, and improve behavior for architecture assertion format checks.
- Shell validation: detect unclosed Swift fences by parsing filtered blocks and reporting swiftc parse errors.
- Docs: minor CONTRIBUTING guidance and reference updates for clean-architecture and MVI examples.

Overall this commit improves test reliability and hardens validation scripts used by CI and local tooling.
2026-02-24 21:48:01 -08:00
Lasha Efremidze 52862d69fe Update .gitignore 2026-02-24 20:59:55 -08:00
Lasha Efremidze f9bf8f3c01 Update run-realworld-corpus-eval.py 2026-02-24 20:58:41 -08:00
Lasha Efremidze 9459591faf Update mvvm.md 2026-02-23 17:05:30 -08:00
Lasha Efremidze 402ac1f2be Update viper.md 2026-02-23 17:05:24 -08:00
Lasha Efremidze 210ce44a10 Update viper.md 2026-02-23 16:57:06 -08:00
Lasha Efremidze a1a6b336a1 Update mvi.md 2026-02-23 16:52:34 -08:00
Lasha Efremidze 68ddc5d70a Update mvvm.md 2026-02-23 16:47:27 -08:00
Lasha Efremidze 9e48c73130 Add benchmark/corpus cases and validation scripts
Add many benchmark and real-world corpus cases, update manifest assertions, and introduce validation tooling and CI steps. New files add architecture-focused benchmark cases (clean, mvi, reactive, viper, tca/mvvm adjustments) under quality/benchmarks/cases and several real-world corpus examples under quality/corpus/cases. Added scripts/validate-benchmark-coverage.py to ensure each architecture has positive/negative cases and scripts/run-realworld-corpus-eval.py to invoke the existing runner with a corpus manifest; run-testing-benchmark-suite.py was enhanced to extract Swift code blocks and make architecture assertion evaluation more robust (scoped matching and regex error handling). Updated quality/benchmarks/manifest.json to include new cases, improved regexes (TCA cancellable pattern and MVVM stale-assert), and set architecture fields; docs (AGENTS.md, CONTRIBUTING.md, SOURCES.md) and CI (.github/workflows/validate-skill.yml) were updated to surface and run the new validations.
2026-02-23 16:17:23 -08:00
Lasha Efremidze 755bd11fe8 Create manifest.json 2026-02-23 16:14:22 -08:00
Lasha Efremidze 9d4e411659 Create SOURCES.md 2026-02-23 16:14:04 -08:00
Lasha Efremidze f845872bf0 Update README.md 2026-02-23 16:13:52 -08:00
Lasha Efremidze 0ecea42b46 Add architecture benchmark cases and evaluation
Add architecture-focused benchmark fixtures and update tooling to evaluate architecture assertions.

- Add new benchmark cases for MVVM and TCA: mvvm-stale-overwrite-good, mvvm-missing-stale-overwrite-should-fail-architecture, tca-cancel-id-good, and tca-missing-cancel-id-should-fail-architecture.
- Update quality/benchmarks/manifest.json to register the new cases and include architecture_assertions (regex-based checks, with dotall/ignore-case flags where needed).
- Update README.md and SOURCES.md to mention architecture-specific fixtures.
- Enhance scripts/run-testing-benchmark-suite.py: import re, add evaluate_architecture_assertions to run regex checks against case content, extend evaluate_case return values, and adjust main() to consider expect_architecture when computing pass/fail and printing architecture failure output.

These changes enable the benchmark suite to validate not only syntax/semantic expectations but also pattern-level architecture guarantees (e.g., TCA cancel IDs and MVVM stale-overwrite protections).
2026-02-23 15:27:05 -08:00
Lasha Efremidze df1bfb4de0 Add architecture validator and cancellation checks
Add a new architecture consistency validator script and CI job (scripts/validate-architecture-consistency.py + workflow entry) to verify references in swift-architecture-skill. Update docs (AGENTS.md, CONTRIBUTING.md, README.md) to surface the new validation step. Tighten the testing-quality contract to require at least one cancellation/stale-response focused test. Update reference materials: add cancellation-focused async test and blocking stub in clean-architecture, rename a reactive test for clarity, and refactor viper stubs/tests to use an async closure-based interactor plus an extra cancellation behavior test and guidance about using a cancellation-aware presenter.
2026-02-23 15:13:46 -08:00
Lasha Efremidze 87ca7a8558 Add testing quality benchmarks and validators
Introduce a testing-quality benchmark suite and validators: add quality/benchmarks (cases, manifest, SOURCES) and a testing-quality-contract.json; add scripts/run-testing-benchmark-suite.py and scripts/validate-testing-quality.py to run cases and validate playbooks; update CI (.github/workflows/validate-skill.yml) with validate-testing-quality and validate-testing-benchmarks jobs; update docs (README.md, AGENTS.md, CONTRIBUTING.md) to document the new checks; tweak scripts/validate-testing-snippets.sh to accept an optional playbook dir and verify it exists; and update several playbook references to emphasize cancellation handling and deterministic tests. These changes enable automated evaluation of snippet syntax and guidance quality against curated benchmark cases.
2026-02-23 15:06:24 -08:00