Feat/add dogfooding demo - #26
Merged
Merged
Conversation
- Introduced a new `_RulesetEntry` dataclass to encapsulate ruleset path and short name. - Added `_resolve_ruleset_entries` function to validate and resolve ruleset configurations from `pickled.ruleset.yaml`. - Updated `run_all` function to handle multiple rulesets, returning results for each entry with appropriate verdicts. - Implemented comprehensive tests for multi-ruleset scenarios, including validation for exclusive keys, duplicate short names, and missing ruleset files.
- Enhanced `mcp.md` to document the new `rulesets:` list feature in `pickled.ruleset.yaml`, allowing multiple rule sets to be enforced in parallel. - Added a new decision document `0004-multi-ruleset-workspace.md` outlining the rationale and implications of supporting multi-ruleset configurations. - Updated `README.md` in `packages/pickled-rules` to reflect the new workspace configuration options for single and multiple rulesets, including examples and usage details.
- Added a new mining pipeline in `pickled-core` with stages for inventory introspection and report generation. - Introduced `run_inventory` function to introspect target projects and generate `inventory.json`. - Created `run_report` function to render a markdown report from mining outputs. - Implemented CLI commands for inventory and report stages, enhancing usability for mining operations. - Established shared types for inventory results and mining paths to streamline data handling.
- Added the `mine` command to the CLI for enhanced mining functionality. - Updated `pyproject.toml` to include dependencies for `pickled-bdd` and `pickled-rules`, ensuring necessary components are available for mining operations.
- Introduced tests for the `mine` command in the CLI, verifying help output and inventory generation. - Added tests for the inventory stage, ensuring correct handling of target projects and command outputs. - Implemented tests for the report stage, confirming the presence of CLI commands in generated reports.
- Introduced a new `tiny-target` package as a fixture for mine inventory tests. - Added a minimal Click-based CLI with `greet` and `ping` commands for testing purposes. - Created `pyproject.toml` to define package metadata and dependencies.
- Introduced a new script `inventory_functionality.py` to handle inventory generation for pickled-spec CLI commands, MCP tools, gates, ADRs, and workspaces. - Implemented command-line argument parsing for output formats (JSON and Markdown) and sections to include. - Added functions to render inventory data in Markdown format and to write output to specified directories or stdout. - Integrated logging for error handling and information during execution.
- Introduced multiple new YAML rulesets for different domains including BDD, best practices, core, data, diff, IaC, OSS hygiene, internal invariants, rules, and schema. - Each ruleset includes metadata and specific rules with enforcement levels, aimed at standardizing practices across the pickled-spec ecosystem. - Rules cover aspects such as observable outcomes, feature requirements, validation, and hygiene checks, enhancing the overall framework for development and compliance.
- Introduced multiple BDD stories in the `dogfood/bdd/stories/` directory, covering key functionalities of the pickled-spec framework, including ambiguity checks, Gherkin drafting, rules coverage, schema validation, and data migration drift. - Each story outlines the context, current implementation, verification criteria, and open questions, serving as a comprehensive specification for future development and testing. - The stories aim to enhance understanding and facilitate testing of the various components within the pickled-spec ecosystem.
- Introduced a new feature file `bdd_drafter.feature` containing multiple scenarios for drafting Gherkin features from well-formed user stories via CLI and MCP. - Scenarios cover various cases including handling empty stories, identical submissions, and ensuring consistent output between CLI and MCP. - Added specifications for LLM call behavior and output structure, enhancing the BDD workflow for developers and agents.
- Created the `dogfood` directory to facilitate the development and testing of the pickled-spec framework. - Added `FRICTION.md` to log observations from dogfood sessions, capturing insights and issues encountered. - Introduced `inventory_schema.json` to define the structure and requirements for the inventory functionality. - Established `pickled.ruleset.yaml` to outline various rulesets for different domains. - Included a symlink for `features` to support BDD feature drafting. - Updated `README.md` to provide an overview of the directory's purpose and contents.
…inventory management - Added `.pickled-cache` directory to `.gitignore` for cache management. - Updated `pickled.config.yaml` to include cache directory settings and budget constraints for cost management. - Enhanced `uv.lock` to include new dependencies for `pickled-bdd` and `pickled-rules`, improving the mining command functionality.
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.
Summary
This branch adds the first dogfood workspace and the foundations for mining any Python repo with pickled-spec. You can inventory a target project, generate a mining report, and run multi-ruleset coverage in workspaces that do not keep features under a flat
features/tree. The dogfood area holds hand-written stories, seed rulesets, and the first end-to-end loop output (bdd-drafter).What’s in the branch
New top-level command group with six subcommands. Implemented today:
mine inventory— introspects a target repo (CLI via Click, optional MCP tools, gates via AST, ADRs, workspaces) and writesinventory.jsonunder--outputmine report— rendersmining-report.mdfrom whatever stage outputs existmine all— runs inventory → report (full pipeline wiring comes in follow-up PRs)Stubbed (exit 2 with a clear message):
stories,features,tag,evaluate(Phases 8b/8c).pickled_core.mine(inventory_lib,inventory_stage,report_stage,io,types)scripts/inventory_functionality.pynow delegates to the same library (same JSON shape as before)pickled-core[mine]→pickled-bdd,pickled-rulespackages/pickled-core/tests/fixtures/tiny_target/(minimal Click CLI for pipeline tests)Multi-ruleset workspaces (
pickled-rules)pickled.ruleset.yamlacceptsrulesets:(list) in addition to singularruleset:rules.coverage.<short_name>(single ruleset keepsrules.coverage)test_gates_runner_multi.py; README +docs/mcp.mdupdatedDogfood workspace
.story.mdfiles underdogfood/bdd/stories/describing pickled-spec surfaces (drafter, ambiguity, coverage, check-all, etc.)dogfood/rulesets/+dogfood/pickled.ruleset.yamldogfood/inventory_schema.json, generatedinventory.json/inventory.md(gitignored where appropriate)dogfood/bdd/features/bdd_drafter.feature(tagged),dogfood/FRICTION.mdsession log,dogfood/runs/for session logsdogfood/README.mdexplains layout and how to regenerate inventoryOther
.gitignoreentries for generated dogfood inventory and mining outputspickled.config.yaml/ lockfile tweaks aligned with local dev setupWhat’s intentionally not in this PR
pickled-bdd ambiguityCLI alias andfeature_glob:inpickled.ruleset.yaml— tracked from dogfood friction; separate small PRHow to review
Note: Dogfood expects features under
dogfood/features/(symlinkfeatures→bdd/featuresmay exist locally). Untilfeature_glob:lands,check-allondogfood/may WARN on coverage if onlybdd/features/is populated.Follow-ups
stories,features,tagstages +story_from_inventory.mdpromptevaluate, fullmine all,docs/mining.md, ADR, friction fixes (ambiguityalias,feature_glob:)