mirror of
https://github.com/azaion/gps-denied-onboard.git
synced 2026-06-21 07:01:14 +00:00
6044a33197
Bundled hygiene commit before cycle-3 /implement (AZ-776, AZ-777). Mixes two concerns by user choice (autodev option B): - Cycle-3 autodev artifacts not yet committed by Step 9 (new-task): task specs for AZ-776 / AZ-777 under _docs/02_tasks/todo/ and the updated _docs/02_tasks/_dependencies_table.md. - Accumulated skill / rule tooling maintenance under .cursor/ (skills: autodev, code-review, decompose, deploy, implement, new-task, plan, refactor, retrospective, test-spec; rules: coderule, cursor-meta, meta-rule, testing; new release skill scaffolding). - Autodev bootstrap state: _docs/_autodev_state.md (step 10 in_progress) and _docs/_process_leftovers/2026-05-11_d_cross_cve_1_opencv_pin_deferred.md (replay timestamp refreshed; gtsam 4.2 still numpy<2-only). Co-authored-by: Cursor <cursoragent@cursor.com>
40 lines
3.3 KiB
Markdown
40 lines
3.3 KiB
Markdown
# Step 1.5: Module Layout (default mode only)
|
|
|
|
**Role**: Professional software architect
|
|
**Goal**: Produce `_docs/02_document/module-layout.md` — the authoritative file-ownership map used by the implement skill. Separates **behavioral** task specs (no file paths) from **structural** file mapping (no behavior).
|
|
**Constraints**: Follow the target language's standard project-layout conventions. Do not invent non-standard directory structures.
|
|
|
|
## Steps
|
|
|
|
1. Detect the target language from `DOCUMENT_DIR/architecture.md` and the bootstrap structure plan produced in Step 1.
|
|
2. Apply the language's conventional layout (see table in `templates/module-layout.md`):
|
|
- Python → `src/<pkg>/<component>/`
|
|
- C# → `src/<Component>/`
|
|
- Rust → `crates/<component>/`
|
|
- TypeScript / React → `src/<component>/` with `index.ts` barrel
|
|
- Go → `internal/<component>/` or `pkg/<component>/`
|
|
3. Each component owns ONE top-level directory. Shared code goes under `<root>/shared/` (or language equivalent).
|
|
4. Public API surface = files in the layout's `public:` list for each component; everything else is internal and MUST NOT be imported from other components.
|
|
5. Cross-cutting concerns (logging, error handling, config, telemetry, auth middleware, feature flags, i18n) each get ONE entry under Shared / Cross-Cutting; per-component tasks consume them (see Step 2 cross-cutting rule).
|
|
6. **ADR cross-check**: if `_docs/02_document/adr/` exists, read every `Status: Accepted` ADR. For each, confirm the proposed module layout does not contradict the ADR's `Decision` (e.g., an ADR mandating an event-bus boundary between two components must show up as a `Imports from` exclusion in the layout; an ADR locking a layering style must show up in the Layering table). If an ADR conflicts with the language-conventional layout from step 2, the ADR wins — record the conflict in a `## ADR-driven exceptions to the conventional layout` section of `module-layout.md` with `See ADR NNN_<slug>` references. If the ADR conflict is irreconcilable (the ADR demands something the language genuinely cannot express), STOP and ask the user A/B/C: (A) update the ADR via plan Step 4.5 supersede flow, (B) accept a layered exception with documented rationale, (C) re-open architecture.
|
|
7. Write `_docs/02_document/module-layout.md` using `templates/module-layout.md` format. Each Per-Component Mapping entry that is governed by an ADR includes a trailing `> See ADR NNN_<slug>` line.
|
|
|
|
## Self-verification
|
|
|
|
- [ ] Every component in `DOCUMENT_DIR/components/` has a Per-Component Mapping entry
|
|
- [ ] Every shared / cross-cutting concern has a Shared section entry
|
|
- [ ] Layering table covers every component (shared at the bottom)
|
|
- [ ] No component's `Imports from` list points at a higher layer
|
|
- [ ] Paths follow the detected language's convention
|
|
- [ ] No two components own overlapping paths
|
|
- [ ] If `_docs/02_document/adr/` exists with Accepted ADRs, every layout decision that an ADR governs has a trailing `> See ADR NNN_<slug>` reference
|
|
- [ ] No Accepted ADR is contradicted by the layout without a documented exception
|
|
|
|
## Save action
|
|
|
|
Write `_docs/02_document/module-layout.md`.
|
|
|
|
## Blocking
|
|
|
|
**BLOCKING**: Present layout summary to user. Do NOT proceed to Step 2 until user confirms. The implement skill depends on this file; inconsistencies here cause file-ownership conflicts at batch time.
|