Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
233 commits
Select commit Hold shift + click to select a range
591feba
stub out doman model
Dec 19, 2025
64b3074
create first-draft c4 module
Dec 19, 2025
1083e6b
fix: format code with black and fix ruff warnings
Dec 19, 2025
565b48d
add tool annotations to HCD and C4 MCP servers
Dec 19, 2025
846aa9c
add pagination and response format to MCP list/get operations
Dec 19, 2025
ea7dcfa
MCP servers: add response models and enhanced error handling
Dec 19, 2025
88e6650
Add MCP server CLI entry points and fix missing module exports
Dec 19, 2025
e9b0b75
fix rst serialisation
Dec 19, 2025
93aaa1c
lint
Dec 19, 2025
f3f8549
lint that one thing, grr
Dec 19, 2025
83eef99
Add missing mcp dependency to fix CI test collection
Dec 20, 2025
87c950c
Add RST repository backend with docutils parsing and Jinja2 templates
Dec 20, 2025
a844a50
Add story migration script for Gherkin to RST conversion
Dec 20, 2025
f70e5c3
lint (sigh)
Dec 20, 2025
74bc7b0
and the other lint (deeper sigh)
Dec 20, 2025
a148bf0
Refine ADR 003: story lifecycle, document-first vs code-first entities
Dec 20, 2025
ad39911
Add personas, reorganize docs/users with glob-based discovery
Dec 20, 2025
4df5153
Add epics and accelerators, organize docs/domain
Dec 20, 2025
f5e2506
Add applications documentation and enable sphinx_hcd self-documentation
Dec 20, 2025
e6a7ddb
Add C4 architecture self-documentation for julee
Dec 20, 2025
62899a6
Add define-persona and persona-index directives
Dec 20, 2025
5eb5f1b
Add enhancement proposal: C4 inference from clean architecture
Dec 20, 2025
64cc254
Revise C4 inference proposal: unify HCD and C4 concepts
Dec 20, 2025
9662d00
Add literate architecture idioms section to C4 proposal
Dec 20, 2025
a9d791a
Revise literate architecture: introspect existing types, no duplicati…
Dec 20, 2025
5a798f2
Refine literate architecture: decorators on implementations, not prot…
Dec 20, 2025
0c90876
jiggle docs slightly more into domain-alignment
Dec 21, 2025
c17bf6c
add dynamic system context diagram with HCD persona integration
Dec 21, 2025
7df9da6
start the screaming refactor
Dec 21, 2025
8e06783
scream c4 too
Dec 21, 2025
9cff6af
refactor CEAP accelerator
Dec 21, 2025
b924e07
push through the refactor
Dec 21, 2025
69cb32a
lint (again)
Dec 21, 2025
d203cb0
make c4 container diagram and page dynamic
Dec 21, 2025
d5db64a
fix doc build errors
Dec 22, 2025
dd7eb8c
lint after fixing build errors
Dec 22, 2025
b56f322
Enable parallel Sphinx builds with env-backed HCD repositories
Dec 22, 2025
c0f4361
hearty refactoring, flatten the CEAP layer a bit, separate tests
Dec 23, 2025
41e15a5
horrendus monster commit
Dec 23, 2025
ff8739f
HACK HACK HACKETY HACK
Dec 24, 2025
345c7ae
...and lint
Dec 24, 2025
8b09ac3
... and lint
Dec 24, 2025
b39e637
centralise architecture conventions to contstants
Dec 24, 2025
22522a0
LINT FFS
Dec 24, 2025
a5589c8
add initial doctrine for Pipelines
Dec 24, 2025
478f888
improve entity docstrings to improve julee-admin doctrine output
Dec 24, 2025
ea8fd51
contrib.polling: refactor requests and responses into usecase package
Dec 24, 2025
9866f33
refactor pipeline chaining to use a router mechanism
Dec 24, 2025
b085ddf
rename PipelineRoute* to avoid ambiguity (with other router types)
Dec 24, 2025
f09ede1
lint
Dec 24, 2025
58a95cb
fix pesky DTO language
Dec 24, 2025
b3e51f8
create REDME for contrib/polling
Dec 24, 2025
91c7965
aaaaaand lint
Dec 24, 2025
6dcdbe7
frob
Dec 24, 2025
af483b5
accelerate test execution
Dec 24, 2025
7ab4e11
prepair for moving all the file around
Dec 24, 2025
1a3205d
move hcd/domain/models -> hcd/entities
Dec 24, 2025
cb3b2d3
restructure c4 like we did for hcd
Dec 24, 2025
80b7d3c
continue restructuring to the new pattern, and attack duplication
Dec 24, 2025
57242f9
restructure julee/shared/ with new pattern
Dec 24, 2025
9c09a28
rename shared -> core
Dec 24, 2025
d3b2d39
clean up and fix mess of recent refactors
Dec 24, 2025
659e890
refactor to consolidated memory repository mixin
Dec 24, 2025
137b55a
fix broken __all__ re-exports
Dec 24, 2025
ecea0f6
'finish' removing legacy/backwards-compatability cruft, start realign…
Dec 24, 2025
68772ed
'finish' refactoring tests to align with the new layout
Dec 24, 2025
ff79a1d
fix import bug in julee-admin cli
Dec 24, 2025
67b03e8
test the admin cli
Dec 24, 2025
0aef68a
move CEAP to contrib/
Dec 24, 2025
fc23e17
Move workers and workflows to contrib apps with proper DI
Dec 26, 2025
215e502
Move CEAP services and temporal repos to contrib infrastructure
Dec 26, 2025
3128308
Update CEAP use case imports for service relocation
Dec 26, 2025
fb1be75
Refine doctrine: contrib is nested solution, not reserved word
Dec 26, 2025
d626e83
Move CEAP API routers to contrib apps
Dec 26, 2025
fe75be5
Add generic CRUD use case base classes
Dec 26, 2025
2484a1b
Update CEAP API test imports
Dec 26, 2025
d3bea87
Consolidate src/julee/api into contrib/ceap/apps/api following BC pat…
Dec 26, 2025
ad95321
Rename CEAP workflows to pipelines with doctrine compliance
Dec 26, 2025
c3b7b34
ensure all service protocols strictly adhere to domain semantics
Dec 26, 2025
c28f6d4
enforce service protocols bind 2+ entity types for transformation
Dec 26, 2025
6ab67a1
update julee.core.entities docstrings to clarify doctrine
Dec 26, 2025
4738b3d
Eliminate SuggestionContextService by moving single-entity methods to…
Dec 26, 2025
737a865
Rename SystemInitializationService to SystemInitializer to avoid doct…
Dec 26, 2025
7d21675
consolidate C4 CRUD use cases using generic_crud pattern
Dec 26, 2025
8221d01
fix ParameterInfo construction in pipeline AST parser
Dec 26, 2025
624d62d
Add Application entity with discovery repository and doctrine tests
Dec 26, 2025
6ecb1f7
apply formatting cleanup
Dec 26, 2025
0ab0ae2
Fix REST-API doctrine test to detect DI pattern for UseCase injection
Dec 26, 2025
9e8f37c
Add Solution entity with discovery repository and doctrine tests
Dec 26, 2025
6472b32
Add Deployment entity as outermost Clean Architecture layer
Dec 26, 2025
1a060eb
derive reserved words from doctrine constants
Dec 26, 2025
e6902e1
Add app doctrine hierarchy: type doctrine and instance doctrine
Dec 26, 2025
8512879
Add scope support to doctrine CLI for app instance doctrine
Dec 26, 2025
e6845ae
Add Documentation entity and doctrine requiring docs/ with Sphinx config
Dec 26, 2025
e941934
Fix ceap use case tests with missing import and request arguments
Dec 26, 2025
314c5bd
Add @use_case decorator and delete unused util/ directory
Dec 26, 2025
2fe1c75
Integrate request parameter type validation into @use_case decorator
Dec 26, 2025
2201fb9
Add documentation to SUPPORTING_MODELS for doctrine coverage
Dec 26, 2025
e41d7de
Add test organization doctrine with BC test requirements
Dec 26, 2025
4b9c566
Apply linter formatting to decorator and test files
Dec 26, 2025
e92eb59
Fix execute() call sites and apply formatting
Dec 26, 2025
3617e26
Suppress pytest collection warnings for test fixture classes
Dec 26, 2025
d61614f
Fix CI workflow to run all tests and include apps/ path
Dec 26, 2025
4f43e0b
Remove dead code and fix unused imports
Dec 26, 2025
83d6820
Refactor MCP apps into reusable framework with auto-discovery
Dec 26, 2025
5cb6785
Add core-mcp service for bounded context introspection
Dec 26, 2025
2b35b21
Rename MCP app directories to use underscores for valid Python modules
Dec 26, 2025
09140f3
Apply linter formatting and remove unused imports
Dec 26, 2025
8f5efe5
Add MCP doctrine tests and update app detection for framework
Dec 26, 2025
2f30b7c
Experience the structure, don't hide it
Dec 26, 2025
f527bb7
Import AST parser from core directly in sphinx
Dec 26, 2025
3351522
Add solution, apps, and deployments commands to admin CLI
Dec 26, 2025
48d96fe
Add GetBoundedContextCodeUseCase for composite BC introspection
Dec 26, 2025
8273ea2
Enforce MUST requirement for use case Response classes
Dec 26, 2025
6b8a083
Fix C4 and HCD API imports to use direct submodules
Dec 26, 2025
c1e34e9
Use execute_sync() for CLI use case calls
Dec 26, 2025
550f95d
Refactor sphinx definition directives to use domain Create*UseCase wi…
Dec 26, 2025
5752c26
Update API docs autosummary to use correct module paths
Dec 26, 2025
bfe9f7c
Fix test failures in list filters and doctrine exclusions
Dec 26, 2025
2d02fcb
Fix test warnings and add missing app filter/grouping methods
Dec 26, 2025
a284646
git ignore _generated
Dec 26, 2025
addf48d
Add FilterableListUseCase for repository-driven list filtering
Dec 26, 2025
fcc73bf
Add use case factories to Sphinx HCDContext and update directives to …
Dec 26, 2025
38b050f
Consolidate HCD CRUD use cases into single crud.py module
Dec 26, 2025
4e09d43
Remove stale plan files and update HCD use_cases docstring
Dec 26, 2025
7616d58
Remove empty C4 use_cases subdirs and dead code from suggestions.py
Dec 27, 2025
c13c292
Add generic_crud.generate() and convert HCD/C4 to use it
Dec 27, 2025
d618600
Add ADR 003 for workflow orchestration via handler services
Dec 27, 2025
1a6f163
Add handler service pattern for workflow orchestration (ADR 003)
Dec 28, 2025
2b43af0
Implement HCD story handlers with null implementations
Dec 28, 2025
115e52d
Add NewDataHandler to polling for workflow orchestration
Dec 28, 2025
780f07e
Add Polling-to-CEAP bridge handler for cross-BC orchestration
Dec 28, 2025
7fe0298
Update ADR 003 with implementation learnings
Dec 28, 2025
32a6caf
Wire story orchestration handler into HCD CRUD operations
Dec 28, 2025
f2749a2
Add ADR 004: Execution-Agnostic Use Cases
Dec 28, 2025
556c31f
Add Epic and Journey orchestration handlers
Dec 28, 2025
eb93665
Wire Epic and Journey orchestration handlers into dependencies
Dec 28, 2025
08f80b3
Add ClockService and ExecutionService protocols
Dec 28, 2025
147f362
Add Temporal adapters for ClockService and ExecutionService
Dec 28, 2025
6b67d22
Refactor CEAP use cases for execution-agnostic design
Dec 28, 2025
41f6370
Wire Temporal adapters into CEAP application layer
Dec 28, 2025
3a5a1f6
Extract common node builders for sphinx HCD directives
Dec 28, 2025
02c23b7
Add repository factory and simplify SphinxEnv repos
Dec 28, 2025
4dd641d
Add Pydantic schema validation for sphinx_hcd config
Dec 28, 2025
8ee76fc
Move service implementations from services/ to infrastructure/services/
Dec 28, 2025
2c506e8
Add handler pattern for placeholder resolution
Dec 28, 2025
86e2ab3
Add generic placeholder base class and registry
Dec 28, 2025
8f49046
Add use case factories for directive integration
Dec 28, 2025
d7398b3
Refactor C4 bridge to use use case and renderer pattern
Dec 28, 2025
8353690
Add handler support to RST repositories
Dec 28, 2025
945887e
Add SphinxEnv repositories and context for C4
Dec 28, 2025
5f89211
Separate doctrine from policy (ADR 005)
Dec 28, 2025
96ff46f
Refactor doctrine CLI to use proper use cases with repository/service…
Dec 28, 2025
8733561
Add reflexive documentation directives (apps.sphinx.core)
Dec 28, 2025
1d6188a
Refactor sphinx core catalog directives to use proper DI pattern
Dec 28, 2025
dafe279
Add policy protocols and SolutionPolicyConfig entity
Dec 28, 2025
1983bce
Add policy infrastructure implementations
Dec 28, 2025
3df4c97
Move policy compliance tests to infrastructure
Dec 28, 2025
e9f2780
Organize use cases into domain-specific packages
Dec 28, 2025
9bfb7a2
Update admin CLI to use domain-organized use cases
Dec 28, 2025
96a66a7
Configure julee as a julee solution with policy skipping
Dec 28, 2025
7086648
Remove jinja2 re-exports from hcd/templates/__init__.py
Dec 28, 2025
4079088
Fix no-reexports test to only check module-level imports
Dec 28, 2025
62c339e
Remove KnowledgeService re-exports from ceap infrastructure __init__.py
Dec 28, 2025
8bdecb3
Remove jinja2 re-exports from core/templates/__init__.py
Dec 28, 2025
a60ec36
Remove fastmcp/types re-exports from core/infrastructure/mcp/__init__.py
Dec 28, 2025
ac14205
Apply formatter changes to satisfy linter
Dec 28, 2025
ba5d8b1
Fix placeholder node attribute names for integration and contrib
Dec 28, 2025
d0af8d4
Refactor CodeIntrospectionService to JuleeCodeRepository
Dec 28, 2025
d979238
hide the gratuitous world domination plans in plain sight
Dec 28, 2025
3b82928
git ignore _generated docs
Dec 28, 2025
31ff7d2
Migrate clean_architecture docs to code-outward documentation
Dec 28, 2025
021e985
Make sphinx extension modules self-documenting
Dec 28, 2025
8ce034b
Add code of conduct
Dec 28, 2025
ee274b2
Migrate framework.rst to julee module docstring
Dec 28, 2025
7260694
Migrate applications docs to Application entity docstring
Dec 28, 2025
e4f20fa
Migrate solutions docs to entity docstrings
Dec 28, 2025
d07bc50
Add HCD entity commands to julee-admin CLI
Dec 28, 2025
844722e
Update contributing guide to reflect current project structure
Dec 28, 2025
6cf4fae
Remove redundant contrib.rst, update solutions index
Dec 28, 2025
638765b
Add C4 index directives for listing architecture elements
Dec 28, 2025
093e99d
Update docs/index.rst to link into API documentation
Dec 28, 2025
bbd220b
Remove __all__ exports, update C4 docstring with index directives
Dec 28, 2025
f257abd
Add documentation doctrine test for redundant RST detection
Dec 28, 2025
2c7cec6
Add Solution entity hub page with directives calling use cases
Dec 28, 2025
2942346
Add solution_slug scoping to HCD entities and directives
Dec 28, 2025
7b4cb9f
Add BC hub directive and enhance catalog directives for all-BCs mode
Dec 28, 2025
3a56878
Replace direct repo access with use cases in accelerator and persona …
Dec 28, 2025
ede5225
Replace direct repo access with use cases in remaining HCD directives
Dec 28, 2025
5ccf3b1
Replace direct repo access in initialization and placeholder_resolution
Dec 28, 2025
7f3e7bf
Complete clean architecture rectification for apps layer
Dec 28, 2025
b758c05
Refactor catalog and BC hub directives to template-driven pattern
Dec 28, 2025
8465c11
Fix render_entity import path in migrate_stories.py
Dec 28, 2025
1067ba7
Remove stale test for MODELS_DIR constant
Dec 28, 2025
c78423b
Add service-protocol-catalog directive and refactor directive_factory
Dec 28, 2025
032c2a7
Improve sphinx extension docstrings
Dec 28, 2025
a48829f
Add generated directives framework with DocumentationRenderingService
Dec 28, 2025
96e60bb
Fix class body name shadowing in directive factory
Dec 28, 2025
8f25025
Enhance autosummary templates with hub page sections
Dec 28, 2025
af9ea7b
Update HCD generated directives with module-level placeholders
Dec 28, 2025
747b80c
Remove dead index directive code after factory refactor
Dec 28, 2025
8b5e782
Fix Sphinx documentation build warnings
Dec 28, 2025
43d6d5f
Add SPHINX-EXTENSION app type doctrine tests
Dec 28, 2025
8549895
Refactor C4 Sphinx extension to use use cases
Dec 28, 2025
c56e3fa
Add app layer dependency rules to doctrine
Dec 28, 2025
6882411
Add documentation link integrity doctrine tests
Dec 28, 2025
3a92e24
Exclude slow doctrine tests by default, add --include-slow option
Dec 28, 2025
6c8733e
Add HCD entity templates and refactor directives to use templates
Dec 28, 2025
d87cf95
Remove dead process_*_placeholders functions from directive files
Dec 28, 2025
d77720e
Consolidate _build_relative_uri to shared module
Dec 28, 2025
45d4624
lint the doctrine refactor
Dec 28, 2025
e69fd84
Add Sphinx cross-reference roles and template improvements
Dec 28, 2025
732165c
Add configurable search_root and docs_root for foreign solutions
Dec 28, 2025
ceb21bf
Add SemanticRelation entity for declaring cross-layer relationships
Dec 29, 2025
707f65d
BC discovery: detect nested solutions dynamically
Dec 29, 2025
ef7edc0
Doctrine tests: use dynamic search_root fixture
Dec 29, 2025
8fb1df5
Fix BC doctrine tests: use local constant for synthetic tests
Dec 29, 2025
5e718eb
Add compositional semantic relations for HCD entities
Dec 29, 2025
c44cbe1
Handle skipped tests in doctrine verification
Dec 29, 2025
c3395e2
Add RelationTraversal service for semantic relation infrastructure
Dec 29, 2025
9da3471
Add entity-graph directive for visualizing semantic relations
Dec 29, 2025
dbd0c22
Add more semantic relations, use string type references
Dec 30, 2025
32e96d3
Add unified-links directive for automatic bidirectional documentation
Dec 31, 2025
48d72fa
Move Accelerator to supply_chain bounded context
Dec 31, 2025
c71d0f9
Remove Accelerator from HCD bounded context
Dec 31, 2025
5d5e459
Group semantic links by bounded context, document Entity as ontologic…
Dec 31, 2025
6efca00
Fix lint errors and docs build issue
Dec 31, 2025
494b471
Add contrib/untp projection layer for UNTP vocabulary mapping
Dec 31, 2025
a9672bc
Add Party entity to supply_chain and complete UNTP semantic relations
Dec 31, 2025
5723189
Update admin CLI imports for Accelerator move to supply_chain
Jan 7, 2026
0068685
fix: use string annotations for Pipeline return types
Jan 7, 2026
d5959a3
Use model_validate() instead of model_copy() in UpdateUseCase
Feb 12, 2026
b2af257
Add architecture overview synthesising all ADRs and design docs
Feb 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions .github/workflows/python.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,15 @@ on:
pull_request:
paths:
- "src/julee/**"
- "apps/**"
- "pyproject.toml"
- "requirements*.txt"
- ".github/workflows/python.yml"
push:
branches: [master]
paths:
- "src/julee/**"
- "apps/**"
- "pyproject.toml"
- "requirements*.txt"
- ".github/workflows/python.yml"
Expand Down
13 changes: 13 additions & 0 deletions .mcp.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"mcpServers": {
"hcd": {
"command": "hcd-mcp"
},
"c4": {
"command": "c4-mcp"
},
"core": {
"command": "core-mcp"
}
}
}
136 changes: 121 additions & 15 deletions ADRs/003-sphinx-hcd.rst
Original file line number Diff line number Diff line change
Expand Up @@ -57,11 +57,11 @@ Decision

Create a Sphinx extension package ``julee.docs.sphinx_hcd`` that:

1. **Extracts documentation from code artefacts**:
- User stories from Gherkin feature files (acceptance tests)
- Application metadata from YAML manifests
- Accelerator structure from bounded context directories
- Integration dependencies from manifest files
1. **Supports both document-first and code-first entities**:
- Document-first: Personas, journeys, epics, stories via ``define-*`` directives
- Code-first: Applications from YAML manifests, accelerators from directory
structure, integrations from manifest files
- Stories can optionally link to Gherkin feature files for testability

2. **Cross-references automatically**:
- Stories to personas, apps, epics, and journeys
Expand All @@ -87,7 +87,7 @@ Documentation is organised by HCD concepts rather than code structure:
- **Personas**: Who uses the system
- **Journeys**: Paths through the system to achieve goals
- **Epics**: Capabilities delivered by groups of stories
- **Stories**: Individual user needs (from Gherkin features)
- **Stories**: Individual user needs
- **Applications**: Entry points that expose features
- **Accelerators**: Bounded contexts that implement capabilities

Expand All @@ -98,22 +98,124 @@ This organisation serves multiple audiences:
- Engineers trace stories to accelerators and code


Story, Feature, Pipeline
~~~~~~~~~~~~~~~~~~~~~~~~

A capability is viewed from three perspectives:

.. list-table::
:header-rows: 1
:widths: 20 20 60

* - Concept
- Perspective
- Question Answered
* - **Story**
- Need
- What does the user want to accomplish?
* - **Feature**
- Access
- How does the user access this capability?
* - **Pipeline**
- Execution
- How is this capability implemented?

All three ultimately implement a **UseCase** operating on **Entities**.

An **Epic** collects stories that together deliver a **Feature**. The sum of an
Epic's stories equals the Feature's scope.


Story Lifecycle
~~~~~~~~~~~~~~~

Stories progress through maturity states:

1. **Referenced** — Named in a journey or epic via ``step-story::``. The need
is identified but not yet elaborated.

2. **Defined** — Documented with ``define-story::`` directive. The story has
acceptance criteria and belongs to an application.

3. **Testable** — Linked to a ``.feature`` file. Acceptance tests exist.

4. **Implemented** — A pipeline satisfies the story. The capability is live.

This lifecycle supports design-first workflows: journeys can reference stories
that don't exist yet. Implementation follows design.

::

.. define-story:: upload-scheme-documentation
:app: staff-portal
:persona: Knowledge Curator
:feature-file: tests/e2e/staff-portal/features/upload.feature

As a Knowledge Curator
I want to upload scheme documentation
So that I can build the vocabulary knowledge base

The ``:feature-file:`` option is optional. When present, story content can be
extracted from the Gherkin file. When absent, the story is document-first.


Document-First vs Code-First
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Entities fall into two categories based on their source of truth:

**Document-first** (defined in RST, may link to code):

- Personas — who uses the system
- Journeys — paths to achieve goals
- Epics — capability groupings
- Stories — user needs (optionally linked to Gherkin)

**Code-first** (discovered from artefacts, elaborated in RST):

- Applications — from ``app.yaml`` manifests
- Accelerators — from bounded context directories
- Integrations — from manifest files

Document-first entities use ``define-*`` directives. Code-first entities are
discovered automatically; RST provides additional context and cross-references.


Why Literate Documentation
~~~~~~~~~~~~~~~~~~~~~~~~~~

By deriving documentation from artefacts that affect build and test outcomes,
documentation stays current:

- Stories come from ``.feature`` files that drive acceptance tests
- App metadata comes from ``app.yaml`` that configures applications
- use custom HCD directives for capturing structured data re: document-first entities,
(i.e. entities that are not directly expressed or discoverable from the code).
- Cross-references are computed, not written manually or maintained.
- Accelerators discovered from bounded context directory structure
- Stories optionally link to ``.feature`` files that drive acceptance tests
- Document-first entities use custom HCD directives for structured capture
- Cross-references are computed, not written manually

Refactoring becomes safe: rename a feature file and documentation updates
automatically. Delete an accelerator and warnings appear during doc build.


Validation
~~~~~~~~~~

The extension validates documentation completeness at build time:

**Warnings** (non-fatal):

- Story referenced in journey/epic but not defined
- Defined story without ``:feature-file:`` link (testability gap)
- Application without associated stories
- Accelerator without documentation

**Errors** (fatal):

- Story references unknown persona
- Story references unknown application
- Circular journey dependencies


Alternatives Considered
~~~~~~~~~~~~~~~~~~~~~~~

Expand Down Expand Up @@ -145,11 +247,13 @@ Consequences
Positive
~~~~~~~~

1. **Single source of truth**: Documentation derives from test files and manifests
2. **Refactoring safety**: Rename or restructure; docs update automatically
3. **Build-time validation**: Missing documentation produces warnings
4. **Shared vocabulary**: Business and engineering speak the same HCD language
5. **Clean Architecture alignment**: Accelerators map to bounded contexts
1. **Single source of truth**: Each entity has one authoritative definition
2. **Design-first workflow**: Journeys can reference stories before implementation
3. **Refactoring safety**: Rename or restructure; docs update automatically
4. **Build-time validation**: Missing documentation produces warnings
5. **Shared vocabulary**: Business and engineering speak the same HCD language
6. **Clean Architecture alignment**: Accelerators map to bounded contexts
7. **Gradual testability**: Stories can exist without Gherkin, then gain tests later


Negative
Expand All @@ -158,6 +262,8 @@ Negative
1. **Upfront structure**: Solutions must adopt standard directory layout or
configure overrides
2. **Learning curve**: Teams must understand the directive vocabulary
3. **Incomplete validation**: Some cross-references only validated when both
entities are defined


Neutral
Expand Down
7 changes: 7 additions & 0 deletions CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Code of Conduct

Wheaton's Law applies. Contributions are evaluated on the value they bring to users through the codebase.

Discussions focus on technical merit. If you need more elaborate guidance on professional conduct, this project may not be for you.

Maintainers have final authority on all project decisions.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ lint-python:
# Python unit tests
test-python-unit:
@echo "Running Python unit tests..."
pytest -m unit
pytest --no-cov -m "not integration"

# Fast Python quality checks (for pre-commit)
quality-fast-python: lint-python
Expand Down
7 changes: 7 additions & 0 deletions apps/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
"""Julee applications.

Consolidated application layer for all accelerators:
- sphinx: Sphinx documentation extension
- api: FastAPI REST API
- mcp: Model Context Protocol server
"""
6 changes: 6 additions & 0 deletions apps/admin/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
"""Julee Admin CLI.

Command-line interface for administering Julee solutions.
Provides commands for introspecting bounded contexts and
managing solution structure.
"""
77 changes: 77 additions & 0 deletions apps/admin/cli.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
"""Julee Admin CLI.

Main entry point for the julee-admin command-line interface.
"""

import click

from apps.admin.commands.artifacts import (
entities_group,
repositories_group,
requests_group,
responses_group,
services_group,
use_cases_group,
)
from apps.admin.commands.contexts import contexts_group
from apps.admin.commands.doctrine import doctrine_group
from apps.admin.commands.hcd import (
accelerators_group,
epics_group,
hcd_apps_group,
integrations_group,
journeys_group,
personas_group,
stories_group,
)
from apps.admin.commands.policy import policy_group
from apps.admin.commands.routes import routes_group
from apps.admin.commands.solution import (
apps_group,
deployments_group,
solution_group,
)


@click.group()
@click.version_option(package_name="julee")
def cli() -> None:
"""Julee administration CLI.

Tools for managing and introspecting Julee solutions.
"""
pass


# Register command groups
cli.add_command(solution_group)
cli.add_command(apps_group)
cli.add_command(deployments_group)
cli.add_command(contexts_group)
cli.add_command(entities_group)
cli.add_command(use_cases_group)
cli.add_command(repositories_group)
cli.add_command(services_group)
cli.add_command(requests_group)
cli.add_command(responses_group)
cli.add_command(routes_group)
cli.add_command(doctrine_group)
cli.add_command(policy_group)

# HCD command groups (RST-backed entities)
cli.add_command(personas_group)
cli.add_command(journeys_group)
cli.add_command(epics_group)
cli.add_command(stories_group)
cli.add_command(hcd_apps_group)
cli.add_command(accelerators_group)
cli.add_command(integrations_group)


def main() -> None:
"""Entry point for the CLI."""
cli()


if __name__ == "__main__":
main()
5 changes: 5 additions & 0 deletions apps/admin/commands/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
"""CLI command groups.

Each module in this package provides a command group that is
registered with the main CLI.
"""
Loading
Loading