Conversation
…status - Create domain_spec.md with 8 bounded contexts modeling the beehave domain - Update status_command_spec.md with finalized tree-based output format and plain-text labels - Add Feature Stage, Scenario Status, Status Report terms to glossary - Add interview notes from status command discovery session
10 walkthroughs covering full stage decision tree.
PP-1: parse_feature() returns {} for both empty features and
rules-without-scenarios — needs scenarios stage requires parser change
PP-1: Add detect_empty_rules() to Feature Parsing context
— distinguishes no_scenarios from needs_scenarios stages
PP-2: Add explicit feature stage derivation invariant
Add 6 missed scenario categories:
- Exit codes (0/1/2)
- Orphaned test directories with --include-orphaned
- Cross-feature function name collisions
- JSON output format
- Test discovery syntax error handling
- Fatal config error (features_dir missing)
Feature file: 16 rules (was 12)
Domain spec: Full rewrite with all pain points addressed
19 walkthroughs total (9 new for iteration 2) - PP-1: detect_empty_rules() correctly disambiguates no_scenarios vs needs_scenarios - M1-M6: Exit codes, orphaned dirs, collisions, JSON, test discovery failure, config errors - 16/16 rules traced, 0 new pain points, all quality attributes stressed
PP-1 and PP-2 structurally resolved and verified. All 16 rules BDD-testable with walkthrough provenance. All 6 missed scenario categories (M1-M6) covered. All quality attributes stressed. Four adversarial probes performed — zero blocking issues found.
…raints - Replace simulation-era placeholder with proper Feature description: what it provides, which context it serves, why it exists, key entities - Add quality attribute Constraints from product_definition.md: Correctness, Reliability, Simplicity, Composability - Preserve existing technology constraints from domain_spec.md - All 16 Rule titles validated: 2-6 words, unique, no special characters - Feature title "Status Command" is 2 words, slug matches filename - INVEST validation: all criteria pass (zero DISAGREEs) - Context coverage: Status Reporting bounded context covered
- Add validate_all_titles() external contract to Feature Parsing - Add 6 new Violation error types (invalid-*, duplicate-*) - Add Feature Parsing -> Consistency Checking title validation integration - Add Feature Parsing -> Code Generation title validation pre-flight integration - Update check_all and generate_stubs contracts - Update error handling and invariants for all affected contexts
All 3 pain points resolved by stakeholder. 6/6 reviewer criteria met. 2 non-blocking observations for fix-spec attention.
…d accurate charset description - Fix description: 'Unicode letters' -> 'word characters' (matches \w in Python) - Replace underscore scenario (valid in \w) with forward slash (truly invalid per [\w\s]+) - INVEST self-declaration: all 6 Rules PASS - Constraints: 3 Technology + 3 Quality = 6 total - Context coverage: Feature Parsing covered; 5 contexts remain as expected gaps - 6 Rules, 20 Scenarios stable
…ation.feature - Convert inline sub-item syntax to And step chains - Shorten all Example titles to 2-6 words - beehave check parse: zero errors, 20 unmapped scenarios (expected)
…e-valid scenario - glossary.md: Rule and Scenario titles now globally unique across all types - title_validation.feature: add underscore scenario confirming \w includes _
validate_all_titles() validates Feature, Rule, and Scenario titles across all .feature files for charset ([\w\s]+), word count (2-6), and case- insensitive global uniqueness. Integrated into check_all() and as a pre-flight gate in generate_stubs(). Produces 6 violation types: invalid-feature-title, invalid-rule-title, invalid-scenario-title, duplicate-feature-title, duplicate-rule-title, duplicate-scenario-title. Spec: title_validation.feature (6 Rules, 19 Scenarios) Tests: 18 pass, 3 deferred (test_maximum_word_count_title, test_rule_title_has_seven_words, test_scenario_title_is_empty_string)
Feature Parsing: _extract_placeholders and _extract_literals contracts with rules for placeholder extraction, numeric/string literal extraction, and notation filtering (<...> inside quotes is skipped). Test Discovery: Body constant extraction now includes UnaryOp folding for negative literals (USub + Constant → -n exposed). Consistency Checking: check_pair comparison rules updated to case- insensitive placeholder matching (lowercase) and string-normalized case-insensitive literal matching (str().lower()).
PP-M1 (CRITICAL): Change _extract_literals regex from ^-?\d+$ to
^-?\d+(\.\d+)?$ to support bare float extraction. Integer tokens
use int(token), float tokens use float(token).
PP-M2: Document empty quoted string '' behavior in _extract_literals.
PP-M3: Document single-quote placeholder handling (both '...' and "..."
quote styles supported identically).
PP-M4: Document leading zeros behavior (007 -> int('007') -> 7,
str(7)->'7' does NOT match body Constant('007')).
PP-M5: Document underscore vs camelCase non-match in Test Discovery
body node extraction (phone_number != <PhoneNumber>).
PP-M6: Document UAdd folding in Test Discovery (+5 exposes 5).
PP-M7: Document True/'True' string normalization collision as
intentional type-erasing trade-off in check_pair contract.
All pain points resolved. Cross-context consistency restored between
_extract_literals contract and case_insensitive_matching.feature.
Make beehave check tolerate case differences and type-normalized comparisons in test body analysis: R3: Skip <...> inside quotes from literal extraction (gherkin.py) R4: Fold UnaryOp nodes so -2010 visible in body constants (discover.py) R5: Placeholder comparison case-insensitive: <Dog> matches dog (check.py) R6: Literal comparison string-normalized and case-insensitive (check.py) Fixes 4 bugs: #18 negative numbers invisible, #19 quoted placeholder double-capture, #20 bracket notation preserved as literal, #22 type mismatch between Gherkin int and AST str from Decimal wrapper. Spec: case_insensitive_matching.feature (7 Rules, 15 Scenarios) Tests: 15 pass, 0 fail (feature), 167 pass full suite
- B1: Fix consecutive Then keyword → And (feature:218) - 4a: Add status reporter to product_definition IS list, remove bulk-processing contradiction - 2a: Defer --stage flag to v2 (removed from domain_spec) - 1a: Add OrphanedDir and Collision glossary entries - 2e: Add comma-joined multi-status aggregation format and mixed-status scenario
Computes and displays development stage for every feature in a beehave project using a 7-priority stage decision tree (broken, no scenarios, needs scenarios, needs tests, needs bodies, needs fixes, ok). Tree output: Feature → Rule → Scenario hierarchy with status labels. --json flag for machine-readable output. --include-orphaned flag. Exit codes: 0 (all ok), 1 (work to do), 2 (fatal error). CLI integration: beehave status [feature] [--json] [--include-orphaned] 37 BDD scenarios, 204 tests pass, beehave check clean.
Replace OrphanedDir with UnmappedDir, --include-orphaned with --include-unmapped, orphaned_directories with unmapped_directories, orphan tests with unmapped tests across all files. Remove unnecessary boilerplate language from README.md. 74 occurrences across 12 files renamed.
- status_command_spec.md: remove --summary-only, --stage, --color/--no-color flags (deferred to v2) - beehave_v3_spec.md: add status reporter to IS list, add beehave status CLI command section, fix IS-NOT to remove stale --dry-run - domain_spec.md: remove --no-color from status command flags list
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
New Features
beehave status
Tree-based BDD development status command with 6-stage taxonomy. 16 BDD rules, 37 scenarios. --json for machine-readable output.
Title validation
validates Feature, Rule, and Scenario titles across all .feature files for charset, word count (2-6), and case-insensitive global uniqueness. 6 new Violation types.
Case-insensitive matching
Placeholder and literal comparison now case-insensitive. String-normalized comparison fixes type mismatches. Both single and double quote styles supported.