devmethod-ai 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/.agents/skills/devmethod-architecture/SKILL.md +14 -0
  2. package/.agents/skills/devmethod-correct-course/SKILL.md +12 -0
  3. package/.agents/skills/devmethod-design/SKILL.md +14 -0
  4. package/.agents/skills/devmethod-explore/SKILL.md +12 -0
  5. package/.agents/skills/devmethod-frame/SKILL.md +12 -0
  6. package/.agents/skills/devmethod-handoff/SKILL.md +14 -0
  7. package/.agents/skills/devmethod-implement/SKILL.md +14 -0
  8. package/.agents/skills/devmethod-integrate/SKILL.md +14 -0
  9. package/.agents/skills/devmethod-next/SKILL.md +14 -0
  10. package/.agents/skills/devmethod-plan/SKILL.md +14 -0
  11. package/.agents/skills/devmethod-ready/SKILL.md +14 -0
  12. package/.agents/skills/devmethod-review/SKILL.md +18 -0
  13. package/.agents/skills/devmethod-status/SKILL.md +12 -0
  14. package/.agents/skills/devmethod-verify/SKILL.md +14 -0
  15. package/.agents/skills/project-foundation/SKILL.md +1 -1
  16. package/.agents/skills/project-foundation/assets/START_HERE.md +1 -1
  17. package/.agents/skills/project-foundation/references/operating-commands.md +19 -15
  18. package/.agents/skills/scoped-delivery/assets/REVIEW.md +2 -2
  19. package/.agents/skills/scoped-delivery/references/review-format.md +26 -0
  20. package/COMPATIBILITY.md +5 -3
  21. package/README.md +41 -28
  22. package/START_HERE.md +1 -1
  23. package/dist/cli.js +3 -1
  24. package/dist/commands.js +20 -0
  25. package/dist/doctor.js +4 -2
  26. package/dist/init.js +3 -2
  27. package/dist/review-browser.js +1 -1
  28. package/dist/review-model.js +1 -1
  29. package/docs/ADR-009-visible-workflow-commands.md +11 -0
  30. package/docs/COMMANDS-VALIDATION.md +13 -0
  31. package/docs/COMMANDS.md +36 -0
  32. package/docs/RELEASE-0.3.1.md +15 -0
  33. package/docs/RELEASE-0.4.0.md +15 -0
  34. package/docs/REVIEW-GUIDE.md +70 -0
  35. package/docs/REVIEWS.md +4 -22
  36. package/docs/images/devmethod-delivery.svg +1 -1
  37. package/docs/images/devmethod-flow.svg +1 -1
  38. package/docs/images/review-correction.jpg +0 -0
  39. package/docs/images/review-coverage.jpg +0 -0
  40. package/docs/media/review-extension/README.md +21 -0
  41. package/docs/media/review-extension/scenes.json +70 -0
  42. package/docs/media/visual-chain/README.md +8 -2
  43. package/docs/media/visual-chain/devmethod-du-besoin-au-produit.fr.srt +65 -1
  44. package/docs/media/visual-chain/video-preview.jpg +0 -0
  45. package/docs/missions/review-media-0.3.1.md +11 -0
  46. package/docs/missions/workflow-0.3.md +3 -1
  47. package/examples/review/README.md +14 -0
  48. package/examples/review/REVIEW.md +98 -0
  49. package/examples/review/review-demo.html +1351 -0
  50. package/package.json +1 -1
  51. package/scripts/media/review-extension/extend.py +100 -0
  52. package/scripts/package-smoke.mjs +12 -4
package/dist/init.js CHANGED
@@ -2,6 +2,7 @@ import * as fs from 'node:fs';
2
2
  import path from 'node:path';
3
3
  import { createHash } from 'node:crypto';
4
4
  import { fileURLToPath } from 'node:url';
5
+ import { commandSkills } from './commands.js';
5
6
  import { parseJson, checkPath, stat } from './filesystem.js';
6
7
  export const tools = { codex: '.agents/skills', claude: '.claude/skills', cursor: '.cursor/skills' };
7
8
  export const modules = ['project-foundation', 'decision-architecture', 'design-to-code', 'react-feature-engineering', 'reliable-ai-integration', 'scoped-delivery'];
@@ -35,7 +36,7 @@ export function initialize(options) {
35
36
  throw new Error('Install outside the distribution directory');
36
37
  if (stat(destination) && !stat(destination)?.isDirectory())
37
38
  throw new Error('Destination must be a directory');
38
- for (const name of selected) {
39
+ for (const name of [...selected, ...commandSkills(selected)]) {
39
40
  for (const otherRoot of Object.values(tools)) {
40
41
  if (otherRoot !== tools[options.tool] && stat(path.join(destination, otherRoot, name)))
41
42
  throw new Error(`Duplicate skill in another host directory: ${otherRoot}/${name}`);
@@ -104,7 +105,7 @@ export function initialize(options) {
104
105
  /** The exact host-profiled payload shipped with this CLI. */
105
106
  export function bundledFiles(tool, selected) {
106
107
  const files = new Map();
107
- for (const name of selected) {
108
+ for (const name of [...selected, ...commandSkills(selected)]) {
108
109
  const source = path.join(packageRoot, '.agents/skills', name);
109
110
  checkPath(source);
110
111
  for (const relative of walk(source)) {
@@ -86,7 +86,7 @@ function reviewFreshness(r, currentRevision, changedTargets) {
86
86
  const affected = (targets) => targets.some(t => changedTargets.includes(t));
87
87
  return { state: different || changedTargets.length ? 'different' : currentRevision === null ? 'unknown' : 'same', affectedChecks: r.checks.filter(c => affected(c.targets)).map(c => c.id), affectedFindings: r.findings.filter(f => affected(f.targets)).map(f => f.id) };
88
88
  }
89
- const md = (s) => s.replace(/[\\`*_{}\[\]<>|#]/g, c => `\\${c}`).replace(/\n/g, ' \n');
89
+ const md = (s) => s.replace(/[\\`*_{}\[\]<>|#]/g, c => `\\${c}`).replace(/\n/g, '\\' + '\n');
90
90
  function reviewMarkdown(r) {
91
91
  const s = summarizeReview(r);
92
92
  const lines = [`# ${md(r.title)}`, '', `${md(r.project)} · ${md(r.mission)} · ${md(r.date)}`, `Revision: ${md(r.revision.commit)}; uncommitted changes: ${r.revision.dirty.map(md).join(', ') || 'none recorded'}`, '', `Conclusion: **${conclusionLabels[s.conclusion]}**`, md(r.summary), `Policy: ${md(r.policy.rationale)}`, '', '## Scope', ...r.scope.map(v => `- ${md(v)}`), '', '## Exclusions and limits', ...[...r.exclusions, ...r.limits].map(v => `- ${md(v)}`), '', '## Counts (whole review)', ...Object.entries(s.severities).map(([severity, count]) => `- ${severityLabels[severity]}: ${count}`), `- À vérifier: ${s.suspected}`, ...Object.entries(s.checks).map(([status, count]) => `- ${checkLabels[status]}: ${count}`), '', '## Coverage', ...r.checks.map(c => `- **${md(c.id)} — ${md(c.title)}** (${md(c.domain)}, ${c.kind}): ${checkLabels[c.status]}. ${md(c.result)}${c.reason ? ` Reason: ${md(c.reason)}` : ''} Revision: ${md(c.revision)}. Evidence: ${c.evidenceIds.map(md).join(', ') || 'none'}`), '', '## Findings'];
@@ -84,7 +84,7 @@ export function reviewFreshness(r, currentRevision, changedTargets) {
84
84
  const affected = (targets) => targets.some(t => changedTargets.includes(t));
85
85
  return { state: different || changedTargets.length ? 'different' : currentRevision === null ? 'unknown' : 'same', affectedChecks: r.checks.filter(c => affected(c.targets)).map(c => c.id), affectedFindings: r.findings.filter(f => affected(f.targets)).map(f => f.id) };
86
86
  }
87
- const md = (s) => s.replace(/[\\`*_{}\[\]<>|#]/g, c => `\\${c}`).replace(/\n/g, ' \n');
87
+ const md = (s) => s.replace(/[\\`*_{}\[\]<>|#]/g, c => `\\${c}`).replace(/\n/g, '\\' + '\n');
88
88
  export function reviewMarkdown(r) {
89
89
  const s = summarizeReview(r);
90
90
  const lines = [`# ${md(r.title)}`, '', `${md(r.project)} · ${md(r.mission)} · ${md(r.date)}`, `Revision: ${md(r.revision.commit)}; uncommitted changes: ${r.revision.dirty.map(md).join(', ') || 'none recorded'}`, '', `Conclusion: **${conclusionLabels[s.conclusion]}**`, md(r.summary), `Policy: ${md(r.policy.rationale)}`, '', '## Scope', ...r.scope.map(v => `- ${md(v)}`), '', '## Exclusions and limits', ...[...r.exclusions, ...r.limits].map(v => `- ${md(v)}`), '', '## Counts (whole review)', ...Object.entries(s.severities).map(([severity, count]) => `- ${severityLabels[severity]}: ${count}`), `- À vérifier: ${s.suspected}`, ...Object.entries(s.checks).map(([status, count]) => `- ${checkLabels[status]}: ${count}`), '', '## Coverage', ...r.checks.map(c => `- **${md(c.id)} — ${md(c.title)}** (${md(c.domain)}, ${c.kind}): ${checkLabels[c.status]}. ${md(c.result)}${c.reason ? ` Reason: ${md(c.reason)}` : ''} Revision: ${md(c.revision)}. Evidence: ${c.evidenceIds.map(md).join(', ') || 'none'}`), '', '## Findings'];
@@ -0,0 +1,11 @@
1
+ # ADR 009: Discoverable workflow commands
2
+
3
+ Status: accepted for implementation under the user's explicit request, 2026-09-13.
4
+
5
+ The user requested that documented workflow commands, especially review, be exposed and execute in the agent without npx. Keeping only stage arguments meets neither discoverability nor the selected interaction. Registering bare review/plan commands could collide with host commands. Expose fourteen namespaced devmethod-* skills as short adapters to the existing stage contract and procedure modules. Preserve project-foundation invocations and the six-module selection contract. This amends ADR 001's entry-point restriction without changing its filesystem or permission boundaries.
6
+
7
+ A full installation ships all entry points; subsets include only entries backed by selected procedures. Manifest file hashes include adapters, while skills continues to identify selected procedure modules. Validation permits only the known applicable adapter paths and continues to accept old manifests without them. Initialization checks cross-host duplicates and preflights conflicts before writing. Update preview reports additions without overwriting existing installations.
8
+
9
+ The agent performs a review with installed instructions and resources; the optional presentation CLI does not perform checks. Install the structured format reference to remove the former dependence on package documentation. This release does not change the design workflow, browser UI, mission schemas or permission model.
10
+
11
+ Revisit if native-host testing shows ambiguous automatic routing, discovery limits or real demand for a different grouping. More commands do not establish superiority over another method. Automated packaging/integrity tests and manual instruction inspection are not native model execution evidence.
@@ -0,0 +1,13 @@
1
+ # Command validation
2
+
3
+ Candidate: 0.4.0, based on main 18e003f. Date: 2026-09-13.
4
+
5
+ Local checks on the candidate worktree: `npm ci --ignore-scripts`, `npm test` (95 passed), `npm run test:greenfield` (24 passed), `npm run check:docs`, skill-creator quick validation (14 adapters), `npm pack --dry-run`, and packed smoke tests passed. HTTP fixture tests required permission to bind localhost outside the filesystem/network sandbox; no assertion was bypassed.
6
+
7
+ Packed smoke used the actual npm 0.3.1 archive as its migration baseline. Full Codex/Claude/Cursor installations include all 14 adapters and the review format reference; hashes, subset installation, read-only diagnostics and local-customization conflicts passed. The legacy profile and customized foundation bytes remained intact. The public CLI still presents results rather than performing review.
8
+
9
+ Release CI and registry results are attached to the corresponding PR/GitHub release after execution. This file records local candidate evidence, not a prior assertion of remote success.
10
+
11
+ Manual instruction inspection: each adapter executes its named stage using the existing contract, preserves arguments and authorization, and does not automatically run the suggested next stage. Review points to the installed procedure and format; it distinguishes actual inspection from optional CLI rendering. Existing architecture dialogue, conditional plans, exploration and design rules remain in their owners.
12
+
13
+ Limits: no fresh authenticated Codex, Claude Code or Cursor invocation or menu-discovery check has been run for these adapters. File links, frontmatter and install checks alone do not establish conversational behavior. Existing comparative studies do not measure this release.
@@ -0,0 +1,36 @@
1
+ # Run DevMethod in your agent
2
+
3
+ Version 0.4.0 exposes every documented workflow stage as a discoverable skill. Install the skills once using the existing installer. Afterwards select a command in the agent and supply its target; no npx invocation or running DevMethod service is needed.
4
+
5
+ | Workflow | Codex | Claude Code / Cursor |
6
+ |---|---|---|
7
+ | Explore | `$devmethod-explore` | `/devmethod-explore` |
8
+ | Frame | `$devmethod-frame` | `/devmethod-frame` |
9
+ | Design | `$devmethod-design` | `/devmethod-design` |
10
+ | Architecture | `$devmethod-architecture` | `/devmethod-architecture` |
11
+ | Plan | `$devmethod-plan` | `/devmethod-plan` |
12
+ | Ready | `$devmethod-ready TASK-1` | `/devmethod-ready TASK-1` |
13
+ | Implement | `$devmethod-implement TASK-1` | `/devmethod-implement TASK-1` |
14
+ | Review | `$devmethod-review TASK-1` | `/devmethod-review TASK-1` |
15
+ | Verify | `$devmethod-verify TASK-1` | `/devmethod-verify TASK-1` |
16
+ | Integrate | `$devmethod-integrate TASK-1` | `/devmethod-integrate TASK-1` |
17
+ | Correct course | `$devmethod-correct-course` | `/devmethod-correct-course` |
18
+ | Next | `$devmethod-next` | `/devmethod-next` |
19
+ | Status | `$devmethod-status` | `/devmethod-status` |
20
+ | Handoff | `$devmethod-handoff` | `/devmethod-handoff` |
21
+
22
+ The entry points load the existing [stage contract](../.agents/skills/project-foundation/references/operating-commands.md) and relevant procedure. They are not separate copies of the method. The old `project-foundation <stage>` syntax remains supported. No bare `/review` is registered over the host's own command.
23
+
24
+ A full installation exposes all fourteen commands. Foundation-only installs expose explore, frame, correct-course and status. Design requires design-to-code; architecture requires decision-architecture; plan, ready, implement, review, verify, integrate, next and handoff require scoped-delivery. Module selection and the manifest's six module names are unchanged. Other technical modules remain available when selected.
25
+
26
+ ## Review actual work
27
+
28
+ For example, select `$devmethod-review` and add `the current uncommitted diff against HEAD`. The agent reads actual changes and relevant contracts, executes applicable checks and reports located findings, evidence and limits. A clear ticket, PR, revision or path selection can replace that target. An ambiguous scope is clarified only when it affects the review.
29
+
30
+ A review does not silently fix product code. Small reviews can stay in the conversation; substantial reviews use the existing tracker or the installed structured review format. Checks that were not run remain explicitly unverified. A browser viewer is optional: the shell command `devmethod review --review ...` validates and displays recorded results, but cannot conduct the review. The agent must not ask you to run npx as a prerequisite to inspection or launch fictional demo results instead of reviewing your code.
31
+
32
+ ## Adopt into an existing project
33
+
34
+ Install the candidate into a fresh staging directory with the same host and selected modules. Compare it with your existing installation. Copy the new `devmethod-*` folders and merge the relevant foundation/delivery resources, preserving local customizations. Do not overwrite the filled project profile, instructions, mission records or a divergent skill. Keep the previous manifest until you have intentionally reconciled all adopted baseline files; never replace hashes merely to hide modifications. `update-preview` can classify changes read-only; it does not apply them.
35
+
36
+ Do not run `init` over a customized installation expecting it to upgrade: conflicts block all writes. Both legacy single-file missions and PLAN/tickets missions remain readable, with no automatic migration. If the host does not discover the added skills, reload/reopen its session and inspect its configured skill directory. As a fallback ask it to read the installed `devmethod-review/SKILL.md` directly. Discovery and model behavior need host-specific verification; file installation tests alone do not prove autocomplete behavior.
@@ -0,0 +1,15 @@
1
+ # DevMethod 0.3.1 — review documentation and film
2
+
3
+ This patch makes the 0.3 review capability visible in the GitHub/npm README, provides a step-by-step guide with actual interface captures, and distributes the fictional example as JSON, generated Markdown and standalone HTML. CLI behavior and the format-1 contract are unchanged.
4
+
5
+ The existing Lisière 4K film is extended to approximately **4 min 03 s**. Its original footage, narration and ending are retained; six narrated review-interface scenes are inserted before the ending. The added example is clearly fictional and separate from the Lisière pilot. French subtitles, the preview image and montage provenance are updated. The video is linked from npm and hosted on GitHub, rather than included in the npm tarball.
6
+
7
+ ```sh
8
+ npx --yes devmethod-ai@0.3.1 review --demo --output review-demo.html --open
9
+ ```
10
+
11
+ [Review guide](REVIEW-GUIDE.md) · [Example](../examples/review/README.md) · [Extended film](media/visual-chain/README.md) · [0.3 functional changes](RELEASE-0.3.0.md)
12
+
13
+ Validation covers the unchanged CLI test suite, document links, derivation of the example Markdown/HTML, archive resources and preserved installation behavior. Media checks inspect the encoded frames, subtitle timing, duration and audio/video streams. The new chapter is a narrated screenshot montage, not a continuous browser recording or an independently executed review of Lisière. Direct offline browser reopening remains unverified under the tool policy described in the 0.3 review evidence.
14
+
15
+ GitHub release and npm registry metadata are the publication evidence; see the associated PR for the exact revision, archive integrity and final check results.
@@ -0,0 +1,15 @@
1
+ # DevMethod 0.4.0
2
+
3
+ ## Direct workflow commands
4
+
5
+ All fourteen documented stages now have discoverable devmethod-* skill entries. Select `$devmethod-review` in Codex or `/devmethod-review` in Claude Code/Cursor and add the review target. The agent inspects the work and executes relevant checks without requiring the user to launch npx. The optional CLI remains a renderer/validator for recorded review results.
6
+
7
+ This additive pre-1.0 minor release preserves project-foundation invocations, the six procedure modules, approved design behavior, legacy missions and installation conflict protection. Module subsets install only entry points backed by available procedures. Manifest integrity and read-only update previews cover the added files. Review record documentation is installed with scoped-delivery.
8
+
9
+ ## Migration
10
+
11
+ Follow [command adoption](COMMANDS.md#adopt-into-an-existing-project): stage a fresh installation and intentionally merge adapters/resources. Do not overwrite divergent skills or filled project context. No mission or instruction migration runs automatically. Old manifests remain readable by the new CLI; older CLI versions may reject manifests containing new adapter paths, so use the matching or newer CLI for diagnostics.
12
+
13
+ ## Verification
14
+
15
+ Candidate checks and publication evidence are recorded in [command validation](COMMANDS-VALIDATION.md). Automated checks cover installation, hashes, links, module subsets, conflicts, legacy preview and the packed CLI. Manual instruction inspection is distinct from a native model run. Host autocomplete and fresh native execution remain unverified unless explicitly recorded there. No new BMAD superiority claim is made.
@@ -0,0 +1,70 @@
1
+ # From a review record to the browser
2
+
3
+ DevMethod 0.3 adds a review workflow and an offline browser interface. Version 0.3.1 expands the documentation and the existing narrated film with this journey. The CLI presents recorded results; it does not inspect code or run tests on your behalf.
4
+
5
+ After skills installation, invoke `$devmethod-review <target>` in Codex or `/devmethod-review <target>` in Claude Code/Cursor to perform the review without npx. The terminal commands below are optional presentation utilities for recorded results.
6
+
7
+ ## Try the packaged example
8
+
9
+ Use Node.js 22+ from a normal project directory, with a fresh output filename:
10
+
11
+ ```sh
12
+ npx --yes devmethod-ai@0.3.1 review --demo --output review-demo.html --open
13
+ ```
14
+
15
+ The OS opens the generated standalone HTML in your browser. No local server, account or source checkout is required. npx may download the package first. On a headless system, omit `--open` and transfer the HTML to your desktop. If automatic opening fails, the output is preserved for manual opening. Paths containing symlink components are rejected; on macOS use the canonical `/private/tmp/...` instead of `/tmp/...` for a temporary `--dest`.
16
+
17
+ The **Atelier de lecture** record is deliberately fictional. It contains two illustrative findings: a confirmed moderate accessibility problem and an unverified minor performance risk. Its three checks have separate outcomes: one passed, one failed, one not executed. They are not findings from the Lisière pilot or evidence that this fictional product was tested.
18
+
19
+ ![Actual desktop review interface, displaying fictional example data](images/review-interface-desktop.jpg)
20
+
21
+ 1. In **Constats**, search for `silencieux`. One finding remains; the severity and coverage cards still describe the whole review.
22
+ 2. Select **R-01**. **Preuve** explains its trigger, expected and observed behavior, and labels its explanatory diagram.
23
+ 3. Open **Correction** for the proposed change, trade-offs and required verification. A ticket link is shown only when supplied; the demo's link is explicitly illustrative.
24
+ 4. Open **Couverture** to distinguish check outcomes and reasons for missing verification. Counts of tests and findings are independent.
25
+ 5. Open **Sources** to inspect version, provenance, consultation and limits. The example's reference is marked **non vérifiée**, not presented as research actually performed.
26
+ 6. Use **Exporter le rapport** for HTML, Markdown or JSON. The HTML snapshot retains selection, filters and detail section. Open your exported file again to resume; a different inspected revision still requires reassessment of affected evidence.
27
+ 7. On mobile, return from the detail to the list without losing your filters. Keyboard focus and text labels complement the severity colors.
28
+
29
+ ![Coverage is independent of findings](images/review-coverage.jpg)
30
+
31
+ ![Correction includes the expected verification](images/review-correction.jpg)
32
+
33
+ ## Produce a real review
34
+
35
+ Within the coding agent, ask the workflow to review the authorized ticket. This is an illustrative skill request, not a CLI command or a claimed recorded agent run:
36
+
37
+ ```text
38
+ $project-foundation review TASK-1
39
+ Inspect the actual stack and versions, the diff, accepted decisions and ticket criteria.
40
+ Consult applicable official sources and verify the provenance of any suggested skill.
41
+ Record checks, findings, evidence, limitations and the inspected revision in review.json.
42
+ Fix confirmed issues within the authorized scope, then record their new verification.
43
+ ```
44
+
45
+ For a substantial review, use one results owner:
46
+
47
+ ```text
48
+ docs/missions/first-save/reviews/review-01/
49
+ review.json # validated, versioned results
50
+ REVIEW.md # generated from those results
51
+ preuves/ # only necessary, reviewed evidence
52
+ ```
53
+
54
+ The [format contract](REVIEWS.md) defines required fields and path/link/privacy boundaries. Start from the [complete fictional JSON](../examples/review/review.json) to understand the shape, replacing **all** illustrative facts with actual observations. Do not label a suspect risk confirmed or a known source consulted without evidence. A failed check and a finding are different objects. Tickets reference finding IDs rather than copying their content.
55
+
56
+ ```sh
57
+ npx --yes devmethod-ai@0.3.1 review \
58
+ --review docs/missions/first-save/reviews/review-01/review.json \
59
+ --output review-first-save.html \
60
+ --markdown docs/missions/first-save/reviews/review-01/REVIEW.md \
61
+ --open
62
+ ```
63
+
64
+ Output files must be new; select another name if a report exists. The [packaged example](../examples/review/README.md) also contains generated HTML and Markdown for comparison. Existing Markdown can be opened with `--legacy path/to/REVIEW.md`; missing structured fields remain unknown.
65
+
66
+ ## Watch the journey
67
+
68
+ The [extended existing 4K film](media/visual-chain/README.md) retains the Lisière footage and narration, then inserts a review-interface chapter before the original conclusion. The added chapter is a narrated montage of actual browser screenshots, not a continuous screen recording or a fresh review of Lisière. [Montage sources and provenance](media/review-extension/README.md).
69
+
70
+ The [verification record](REVIEW-VALIDATION.md) distinguishes automated tests, real browser observations and illustrative workflows. Export bytes and state were inspected; direct `file://` reopening was blocked by the browser tool, so that end-to-end check is not claimed as passed. Automatic redaction is heuristic: inspect evidence before distributing it.
package/docs/REVIEWS.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # Review results, reports and browser consultation
2
2
 
3
- The agent's `project-foundation review` stage performs project-aware inspection under [the review workflow](../.agents/skills/scoped-delivery/references/review-workflow.md). The CLI `devmethod review` only validates and presents recorded results. It never runs repository commands, discovers evidence on disk, or performs the review itself.
3
+ The agent's `devmethod-review` command (also `project-foundation review`) performs project-aware inspection under [the review workflow](../.agents/skills/scoped-delivery/references/review-workflow.md). The CLI `devmethod review` only validates and presents recorded results. It never runs repository commands, discovers evidence on disk, or performs the review itself.
4
+
5
+ After skills installation, invoke `$devmethod-review <target>` in Codex or `/devmethod-review <target>` in Claude Code/Cursor to perform the review without npx. The terminal commands below are optional presentation utilities for recorded results.
4
6
 
5
7
  ## Use the installed package
6
8
 
@@ -26,27 +28,7 @@ Existing outputs are never overwritten. Choose a fresh path for a newer snapshot
26
28
 
27
29
  ## One versioned source
28
30
 
29
- Use existing conventions, or `docs/missions/<mission-id>/reviews/<review-id>/review.json`, with generated `REVIEW.md` and deliberately included `preuves/`. Tickets link stable finding IDs; the report and UI derive results from the JSON. Do not maintain another independent score or status table.
30
-
31
- Format 1 is validated by the same pure model in the CLI and browser. See the [complete fictional example](../examples/review/review.json) and [compiled validator](../dist/review-model.js). Unknown formats, unknown/missing fields, duplicate IDs, invalid destinations and dangling references are rejected with errors that omit source contents. Arrays are bounded to 256 items, text fields to 16,384 characters, and input to 4 MiB. Image data has a separate limit of approximately 1 MiB per PNG/JPEG.
32
-
33
- | Object | Required fields and ownership |
34
- |---|---|
35
- | Review | format, id, title, project, mission, tickets, date, scope, exclusions, revision, technologies, sources, checks, findings, evidence, limits, policy, summary |
36
- | revision | commit (recorded revision label), dirty (explicit uncommitted changes); no automatic Git execution |
37
- | technologies | name, version, detectedFrom (actual manifest/lockfile/source evidence) |
38
- | ticket | id, title, url (HTTPS or null; local/unpublished destinations remain unavailable) |
39
- | source | id, title, kind (documentation/skill/project), publisher, technology, version, url, consultedAt, access (consulted/unavailable/unverified), usage, compatibility, provenance; consulted requires a date |
40
- | check | id, title, domain, kind (automated/manual), status (passed/failed/not-run/blocked/out-of-scope), result, reason, evidenceIds, revision, targets; unexecuted/excluded checks need a reason |
41
- | finding | id, title, domain, severity (critical/major/moderate/minor), severityReason, confidence (confirmed/suspected), resolution (open/in-progress/resolved/accepted-risk), location, trigger, expected, observed, impact, reproduction, evidenceIds, correction, tradeoffs, sourceIds, ticketIds, verification, resolutionEvidenceIds, targets |
42
- | location | path or component description, line (positive integer or null), component (text or null); display metadata, never arbitrary file access |
43
- | evidence | id, title, kind (text/log/screenshot/diagram), content (text alternative or excerpt), url (HTTPS or null), image (null or explicit PNG/JPEG object) |
44
- | image | mime=image/png or image/jpeg, base64, alt, origin=captured/explanatory, privacyReviewed=true; only deliberately included reviewed images, not filesystem paths or remote images |
45
- | policy | blockingSeverities, requireAllChecks, rationale; project-owned explicit policy, no numeric risk score |
46
-
47
- A confirmed finding still needs evidence or reproduction. A resolved finding requires resolution evidence IDs; schema validation checks the references, **not the truth of execution or whether the fix really works**. Authors must retain the original evidence and supply fresh verification. Closing a panel never changes resolution. Finding counts include all resolution states and stay independent from filtered results; uncertain unresolved findings have a separate count. Failed-check counts are separate from finding counts.
48
-
49
- A blocking confirmed open finding or a failed check requires corrections. Otherwise a blocked check yields blocked; no passed checks, an unresolved suspected finding, or required unrun checks yields incomplete. Otherwise the conclusion is ready **on the verified scope**, with exclusions and limits still visible. This conclusion does not authorize integration/deployment or replace repository policy.
31
+ The [installed review format reference](../.agents/skills/scoped-delivery/references/review-format.md) owns fields, statuses and conclusion rules. It is shipped with scoped-delivery so authoring does not require a package download. The [complete fictional example](../examples/review/review.json) and [compiled validator](../dist/review-model.js) support optional browser export. Use one result owner and derive reports from it.
50
32
 
51
33
  ## Browser journey
52
34
 
@@ -3,7 +3,7 @@
3
3
  <defs><marker id="arrow" markerWidth="8" markerHeight="8" refX="6" refY="3" orient="auto"><path d="M0 0L6 3L0 6" fill="#ddac86"/></marker></defs>
4
4
  <rect width="1200" height="650" rx="28" fill="#10272b"/><g font-family="Arial, sans-serif">
5
5
  <text x="52" y="65" fill="#eeb88e" font-size="16" letter-spacing="3">DEVMETHOD / THE DELIVERY LOOP</text><text x="52" y="117" fill="#fff9ef" font-size="36" font-weight="700">A finished slice needs evidence</text>
6
- <text x="52" y="154" fill="#b9ccc4" font-size="20">Design approval guides the work. Tests and browser checks verify the result.</text>
6
+ <text x="52" y="154" fill="#b9ccc4" font-size="20">Accepted decisions guide the work. Structured review connects checks, findings and evidence.</text>
7
7
  <rect x="52" y="203" width="320" height="157" rx="16" fill="#1a363a" stroke="#49615e"/><text x="74" y="250" fill="#fff9ef" font-size="24" font-weight="700">Accepted references</text><text x="74" y="293" fill="#c6d7ce" font-size="18">Scope · design · architecture</text><text x="74" y="325" fill="#c6d7ce" font-size="18">Plan and readiness</text><rect x="440" y="203" width="320" height="157" rx="16" fill="#1a363a" stroke="#49615e"/><text x="462" y="250" fill="#fff9ef" font-size="24" font-weight="700">Implement and review</text><text x="462" y="293" fill="#c6d7ce" font-size="18">Build the real interactions</text><text x="462" y="325" fill="#c6d7ce" font-size="18">Review code, risks and tests</text><rect x="828" y="203" width="320" height="157" rx="16" fill="#1a363a" stroke="#49615e"/><text x="850" y="250" fill="#fff9ef" font-size="24" font-weight="700">Verify the result</text><text x="850" y="293" fill="#c6d7ce" font-size="18">Run the agreed checks</text><text x="850" y="325" fill="#c6d7ce" font-size="18">Compare UI with the design</text><g stroke="#ddac86" stroke-width="3" fill="none" marker-end="url(#arrow)"><path d="M378 281h54"/><path d="M766 281h54"/><path d="M988 365v75"/><path d="M600 450v-78"/><path d="M930 365v40H210v35"/></g>
8
8
  <rect x="828" y="452" width="320" height="117" rx="16" fill="#24483f" stroke="#74b49a"/><text x="850" y="490" fill="#fff9ef" font-size="23" font-weight="700">Checks pass → deliver</text><text x="850" y="526" fill="#c6d7ce" font-size="18">Integrate within permissions</text><text x="850" y="552" fill="#c6d7ce" font-size="18">Record evidence and handoff</text>
9
9
  <rect x="52" y="452" width="708" height="117" rx="16" fill="#3b3531" stroke="#ddac86"/><text x="74" y="491" fill="#fff9ef" font-size="23" font-weight="700">Failed check or changed constraint → correct</text><text x="74" y="526" fill="#decbbb" font-size="18">Fix the slice or revisit the affected design / architecture decision.</text><text x="74" y="552" fill="#decbbb" font-size="18">If blocked, preserve a checkpoint; do not mark the slice delivered.</text>
@@ -8,6 +8,6 @@
8
8
  <rect x="424" y="202" width="352" height="183" rx="16" fill="#1a363a" stroke="#49615e"/><text x="448" y="237" fill="#eeb88e" font-size="17" font-weight="700">02</text><text x="448" y="278" fill="#fff9ef" font-size="23" font-weight="700">Design the experience</text><text x="448" y="316" fill="#eeb88e" font-size="18">Design</text><text x="448" y="350" fill="#c6d7ce" font-size="17">Directions → master → screens</text>
9
9
  <rect x="796" y="202" width="352" height="183" rx="16" fill="#1a363a" stroke="#49615e"/><text x="820" y="237" fill="#eeb88e" font-size="17" font-weight="700">03</text><text x="820" y="278" fill="#fff9ef" font-size="23" font-weight="700">Choose the architecture</text><text x="820" y="316" fill="#eeb88e" font-size="18">Architecture</text><text x="820" y="350" fill="#c6d7ce" font-size="17">Technologies, boundaries, trade-offs</text>
10
10
  <rect x="52" y="409" width="352" height="183" rx="16" fill="#1a363a" stroke="#49615e"/><text x="76" y="444" fill="#eeb88e" font-size="17" font-weight="700">04</text><text x="76" y="485" fill="#fff9ef" font-size="23" font-weight="700">Prepare a useful slice</text><text x="76" y="523" fill="#eeb88e" font-size="18">Plan · ready</text><text x="76" y="557" fill="#c6d7ce" font-size="17">Dependencies and acceptance checks</text>
11
- <rect x="424" y="409" width="352" height="183" rx="16" fill="#1a363a" stroke="#49615e"/><text x="448" y="444" fill="#eeb88e" font-size="17" font-weight="700">05</text><text x="448" y="485" fill="#fff9ef" font-size="23" font-weight="700">Build and improve</text><text x="448" y="523" fill="#eeb88e" font-size="18">Implement · review</text><text x="448" y="557" fill="#c6d7ce" font-size="17">Working behavior, tests and fixes</text>
11
+ <rect x="424" y="409" width="352" height="183" rx="16" fill="#1a363a" stroke="#49615e"/><text x="448" y="444" fill="#eeb88e" font-size="17" font-weight="700">05</text><text x="448" y="485" fill="#fff9ef" font-size="23" font-weight="700">Build and improve</text><text x="448" y="523" fill="#eeb88e" font-size="18">Implement · review</text><text x="448" y="557" fill="#c6d7ce" font-size="17">Findings · evidence · corrections</text>
12
12
  <rect x="796" y="409" width="352" height="183" rx="16" fill="#1a363a" stroke="#49615e"/><text x="820" y="444" fill="#eeb88e" font-size="17" font-weight="700">06</text><text x="820" y="485" fill="#fff9ef" font-size="23" font-weight="700">Verify and deliver</text><text x="820" y="523" fill="#eeb88e" font-size="18">Verify · integrate · handoff</text><text x="820" y="557" fill="#c6d7ce" font-size="17">Evidence, delivery and resumption</text>
13
13
  <path d="M52 630h1096" stroke="#49615e"/><text x="52" y="664" fill="#c6d7ce" font-size="18">Adapt the depth to the project. Revisit decisions when constraints or checks change.</text><text x="52" y="694" fill="#9fb8af" font-size="16">Skill guidance for your coding agent · Image generation requires an available host tool.</text></g></svg>
Binary file
@@ -0,0 +1,21 @@
1
+ # Ajout de la review au film existant
2
+
3
+ Le film principal conserve les séquences et la narration de Lisière provenant du tag `v0.3.0`. Six séquences de review sont insérées à 171,52 secondes, avant la conclusion originale. Aucun cadrage, choix artistique ni parcours de Lisière n'a été recréé.
4
+
5
+ Les captures proviennent de l'interface réelle, inspectée dans le navigateur à 1586 × 992 : constats, recherche « silencieux », correction, couverture, sources et menu d'export. Elles affichent la fixture **Atelier de lecture**, dont les résultats sont fictifs et explicitement signalés. Ce chapitre n'affirme pas qu'une review structurée de Lisière a été exécutée.
6
+
7
+ Le complément est un montage de captures avec transitions et narration française macOS Thomas, comme le film existant ; ce n'est pas une capture vidéo continue des interactions. Les plans conservent le contenu des captures, avec un redimensionnement proportionnel et un habillage explicatif. La commande d'ouverture affichée est documentée et testée séparément ; la limite de vérification `file://` reste dans le [guide](../../REVIEW-GUIDE.md).
8
+
9
+ [Film et sous-titres](../visual-chain/README.md) · [Scènes ajoutées et empreinte de l'original](scenes.json) · [Script de montage](../../../scripts/media/review-extension/extend.py)
10
+
11
+ Le script extrait le film original depuis le tag immuable `v0.3.0`, génère seulement les nouveaux plans, décale les sous-titres et déplace la conclusion après le chapitre. Il nécessite Python avec Pillow, ffmpeg/ffprobe et la voix macOS Thomas. Exécuter depuis la racine : `python3 scripts/media/review-extension/extend.py`. Le cache de travail est `/private/tmp/devmethod-review-film`. Les empreintes des images, des voix et des paramètres d’encodage déclenchent la régénération des plans modifiés. Le script de montage se lance depuis un clone Git comprenant les médias ; le paquet npm suffit uniquement pour utiliser la review.
12
+
13
+ La vidéo 4K est hébergée sur GitHub et liée depuis npm ; elle n'alourdit pas l'archive npm. Les captures explicatives, le guide et l'exemple de review sont distribués. Les captures sont des observations du navigateur ; la synthèse vocale n'est pas un enregistrement humain.
14
+
15
+ ## Vérifications du montage final
16
+
17
+ - Durée mesurée : **243,216 secondes** ; 3840 × 2160, 25 images/s, H.264, audio AAC mono 48 kHz et sous-titres français intégrés.
18
+ - Décodage complet du MP4 terminé sans erreur. Les six nouveaux plans, un plan original et la conclusion déplacée ont été extraits du fichier encodé et inspectés visuellement.
19
+ - Les nouvelles captures montrent réellement les onglets et le filtre annoncé ; leur cadrage a été corrigé avant montage.
20
+ - Les sous-titres d’origine sont conservés, la conclusion est décalée et les nouvelles phrases sont synchronisées aux durées des voix générées.
21
+ - Pas de revendication d’écoute humaine intégrale ni de nouvel enregistrement continu de l’application.
@@ -0,0 +1,70 @@
1
+ {
2
+ "baseTag": "v0.3.0",
3
+ "baseSHA256": "6d803f75ec4a0fcef70f188216977ac878846d7ffb84000fb281d8001dc092c0",
4
+ "insertionSeconds": 171.52,
5
+ "baseDuration": 177.509,
6
+ "duration": 243.216,
7
+ "method": "Original footage and narration retained; review screenshot chapter inserted before original ending. Re-encoded splice tracks; no original scene regenerated.",
8
+ "scenes": [
9
+ {
10
+ "title": "La review devient consultable",
11
+ "capture": "findings.jpg",
12
+ "command": "npx devmethod-ai@0.3.1 \\\n review --demo \\\n --output review.html --open",
13
+ "explanation": "Une interface locale pour relier constats, preuves et corrections.",
14
+ "note": "HTML autonome hors ligne. La commande présente des résultats enregistrés ; elle ne réalise pas la review.",
15
+ "voice": "Dev Method ajoute maintenant une interface de review. Voici sa démonstration fictive, distincte des résultats réels du pilote Lisière. Cette commande ouvre un rapport local.",
16
+ "duration": 11.36,
17
+ "start": 171.52
18
+ },
19
+ {
20
+ "title": "Retrouver le constat utile",
21
+ "capture": "filtered.jpg",
22
+ "command": "Constats → Rechercher\n« silencieux »",
23
+ "explanation": "Rechercher, filtrer et sélectionner sans confondre gravité et confiance.",
24
+ "note": "Un constat confirmé et un risque à vérifier restent distincts. Les compteurs décrivent toute la review.",
25
+ "voice": "La recherche isole un constat. Les filtres distinguent domaine, gravité, confiance et résolution. Un risque à vérifier reste une hypothèse, pas un défaut confirmé.",
26
+ "duration": 11.32,
27
+ "start": 182.88
28
+ },
29
+ {
30
+ "title": "Comprendre, puis corriger",
31
+ "capture": "correction.jpg",
32
+ "command": "Preuve → Correction\n→ Vérification attendue",
33
+ "explanation": "Du scénario observé à la correction et à sa nouvelle vérification.",
34
+ "note": "Le ticket complète le constat. Fermer le panneau ne résout jamais le problème.",
35
+ "voice": "Chaque constat relie scénario, preuve, impact et correction. La vérification attendue et le ticket restent accessibles. Masquer un résultat ne le marque pas comme résolu.",
36
+ "duration": 11.04,
37
+ "start": 194.2
38
+ },
39
+ {
40
+ "title": "Voir la couverture réelle",
41
+ "capture": "coverage.jpg",
42
+ "command": "Couverture\nRéussi · Échec · Non exécuté",
43
+ "explanation": "Les contrôles ont leur propre statut, indépendant du nombre de constats.",
44
+ "note": "Une zone non inspectée ne devient pas verte. La révision et les limites restent visibles.",
45
+ "voice": "La couverture sépare les contrôles réussis, en échec et non exécutés. L’absence de constat ne prouve pas que tout a été vérifié.",
46
+ "duration": 8.6,
47
+ "start": 205.23999999999998
48
+ },
49
+ {
50
+ "title": "Vérifier les références",
51
+ "capture": "sources.jpg",
52
+ "command": "Sources\nVersion → Provenance → Usage",
53
+ "explanation": "Une référence connue n’est pas automatiquement une source consultée.",
54
+ "note": "La démonstration signale sa référence non vérifiée. Une vraie review consigne sa consultation et ses limites.",
55
+ "voice": "Les sources indiquent technologie, version, provenance et usage. Ici, la référence est clairement non vérifiée : cette démonstration ne prétend pas l’avoir consultée.",
56
+ "duration": 11.44,
57
+ "start": 213.83999999999997
58
+ },
59
+ {
60
+ "title": "Exporter et reprendre",
61
+ "capture": "export.jpg",
62
+ "command": "Exporter le rapport\nHTML · Markdown · JSON",
63
+ "explanation": "Une source structurée commune pour l’interface et les rapports.",
64
+ "note": "Conserver la révision, les preuves et les limites. Le HTML exporté conserve aussi l’état de consultation.",
65
+ "voice": "Exportez la même review en HTML, Markdown ou JSON. Les résultats partagent une source commune. Le rapport conserve la révision, les preuves et les limites pour la reprise.",
66
+ "duration": 11.92,
67
+ "start": 225.27999999999997
68
+ }
69
+ ]
70
+ }
@@ -2,7 +2,9 @@
2
2
 
3
3
  [Voir le film 4K](https://github.com/montassarkhalloufi/DevMethod/raw/refs/heads/main/docs/media/visual-chain/devmethod-du-besoin-au-produit-4k.fr.mp4) · [Sous-titres](devmethod-du-besoin-au-produit.fr.srt) · [Prototype source](https://github.com/montassarkhalloufi/DevMethod/raw/refs/heads/main/docs/media/visual-chain/lisiere-visual-source.zip)
4
4
 
5
- **2 min 58 s · 3840 × 2160 · 23 séquences · voix française.**
5
+ **4 min 03 s · 3840 × 2160 · 23 séquences originales + 6 séquences review · voix française.**
6
+
7
+ La version 0.3.1 enrichit le film existant : les séquences et la voix de Lisière restent présentes. Un chapitre sur l’interface de review est inséré à **2 min 51 s**, avant la conclusion originale. [Détails, captures et provenance du complément](../review-extension/README.md).
6
8
 
7
9
  Le film remplace le long documentaire comme démonstration principale : un seul projet, Lisière, une commande et son résultat visuel, puis l'étape suivante. Narration française courte, commandes tapées, apparitions successives, mouvements doux et interaction réelle. Le cadrage, les choix techniques, les responsabilités du code, la préparation, la revue et la reprise complètent le parcours des maquettes. GitHub garde la prononciation « guit-hub » demandée.
8
10
 
@@ -41,4 +43,8 @@ Les scripts sont dans [scripts/media/visual-short](../../../scripts/media/visual
41
43
 
42
44
  Le montage est en 4K ; les images source générées sont en 1536×1024. Le texte et les transitions sont rendus dans Chrome à 3840×2160.
43
45
 
44
- Vérifications du média : MP4 H.264, AAC, sous-titres français mov_text ; 177.509 secondes. Plans explicatifs de 6 à 10 secondes environ, transitions et apparitions animées ; séquence navigateur de 20 secondes avec plusieurs actions. Images du master, des déclinaisons, de la comparaison et de la persistance encodée inspectées. Les sous-titres ont un timing proportionnel par phrase. Pas de revendication d’écoute humaine complète.
46
+ Vérifications du média original : MP4 H.264, AAC, sous-titres français mov_text ; 177.509 secondes. Le montage enrichi mesure environ 243 secondes ; sa durée exacte et ses points de montage sont consignés dans [le manifeste du complément](../review-extension/scenes.json). Plans explicatifs de 6 à 10 secondes environ, transitions et apparitions animées ; séquence navigateur de 20 secondes avec plusieurs actions. Images du master, des déclinaisons, de la comparaison et de la persistance encodée inspectées. Les sous-titres ont un timing proportionnel par phrase. Pas de revendication d’écoute humaine complète.
47
+
48
+ ## Chapitre review ajouté
49
+
50
+ Le [guide de review](../../REVIEW-GUIDE.md) accompagne les six nouveaux plans : ouvrir, filtrer, comprendre/corriger, couverture, sources, exporter/reprendre. Il utilise **Atelier de lecture**, une fixture fictive distincte de Lisière. Les captures sont réelles ; les constats ne sont pas des résultats de test du pilote. La nouvelle vignette montre cette interface et le lien du film demeure identique pour les lecteurs de GitHub et npm.
@@ -143,5 +143,69 @@ Handoff conserve les décisions, les preuves et les limites.
143
143
  Next retrouve ensuite la suite pertinente, ou constate que le périmètre est terminé.
144
144
 
145
145
  37
146
- 00:02:51,507 --> 00:02:55,280
146
+ 00:02:51,520 --> 00:02:54,787
147
+ Dev Method ajoute maintenant une interface de review.
148
+
149
+ 38
150
+ 00:02:54,787 --> 00:02:59,719
151
+ Voici sa démonstration fictive, distincte des résultats réels du pilote Lisière.
152
+
153
+ 39
154
+ 00:02:59,719 --> 00:03:02,062
155
+ Cette commande ouvre un rapport local.
156
+
157
+ 40
158
+ 00:03:02,880 --> 00:03:04,840
159
+ La recherche isole un constat.
160
+
161
+ 41
162
+ 00:03:04,840 --> 00:03:09,152
163
+ Les filtres distinguent domaine, gravité, confiance et résolution.
164
+
165
+ 42
166
+ 00:03:09,152 --> 00:03:13,399
167
+ Un risque à vérifier reste une hypothèse, pas un défaut confirmé.
168
+
169
+ 43
170
+ 00:03:14,200 --> 00:03:17,849
171
+ Chaque constat relie scénario, preuve, impact et correction.
172
+
173
+ 44
174
+ 00:03:17,849 --> 00:03:21,376
175
+ La vérification attendue et le ticket restent accessibles.
176
+
177
+ 45
178
+ 00:03:21,376 --> 00:03:24,417
179
+ Masquer un résultat ne le marque pas comme résolu.
180
+
181
+ 46
182
+ 00:03:25,240 --> 00:03:29,460
183
+ La couverture sépare les contrôles réussis, en échec et non exécutés.
184
+
185
+ 47
186
+ 00:03:29,460 --> 00:03:33,007
187
+ L’absence de constat ne prouve pas que tout a été vérifié.
188
+
189
+ 48
190
+ 00:03:33,840 --> 00:03:37,956
191
+ Les sources indiquent technologie, version, provenance et usage.
192
+
193
+ 49
194
+ 00:03:37,956 --> 00:03:44,452
195
+ Ici, la référence est clairement non vérifiée : cette démonstration ne prétend pas l’avoir consultée.
196
+
197
+ 50
198
+ 00:03:45,280 --> 00:03:48,564
199
+ Exportez la même review en HTML, Markdown ou JSON.
200
+
201
+ 51
202
+ 00:03:48,564 --> 00:03:51,388
203
+ Les résultats partagent une source commune.
204
+
205
+ 52
206
+ 00:03:51,388 --> 00:03:56,379
207
+ Le rapport conserve la révision, les preuves et les limites pour la reprise.
208
+
209
+ 53
210
+ 00:03:57,187 --> 00:04:00,960
147
211
  Découvrez Dev Method sur GitHub et essayez cette chaîne sur votre projet.
@@ -0,0 +1,11 @@
1
+ # Review documentation and media — 0.3.1
2
+
3
+ Scope authorized in conversation on 2026-09-13: update GitHub/npm documentation, images and the existing video to demonstrate review and its interface; extend the existing film rather than starting over. Version 0.3.0 was already published and verified, so this is a new patch release.
4
+
5
+ Outputs: the README, review walkthrough, actual UI screenshots, the packaged fictional JSON/Markdown/HTML example and six review scenes inserted before the existing film's conclusion. CLI runtime behavior and the accepted offline HTML decision are unchanged. The video remains on GitHub; the package distributes the guide, screenshots and example.
6
+
7
+ Validation: 89 core tests, local Markdown links, generated example equality against its JSON source, full MP4 decode, visual inspection of all added scenes and the retained ending, and actual tarball installation/update smoke. The smoke expectation distinguishes an unchanged upstream skill in 0.3.0→0.3.1 from an upstream/local conflict in 0.2.0→0.3.1; both preserve user content. Exact archive and platform/fullstack results belong to the associated PR/release.
8
+
9
+ Limits: the added video chapter is a narrated montage of real screenshots with fictional findings, not a continuous recording or a real review of Lisière. Direct file:// reopening remains unverified under the browser tool policy. No independent human audiovisual review is claimed.
10
+
11
+ Next: await final PR checks, integrate under existing authorization, create the new tag/release, publish the exact verified npm archive and verify registry integrity/readme/resources. npm may require another maintainer authentication. Never replace v0.3.0 or its published tarball.
@@ -14,4 +14,6 @@ Exclusions: whole-project dashboard, remote hosting, automatic discovery/install
14
14
 
15
15
  Current architecture question: static self-contained HTML versus loopback server; recommended static report under the dependency-free offline contract, presented to the user before dependent implementation. Preserve their forthcoming choice/delegation in the relevant ADR.
16
16
 
17
- Next action: verify the final delegated offline-opening integration, merge and publish under current authorization. The user explicitly delegated the opening-mode choice on 2026-09-13; ADR 008 records the selected standalone HTML and optional OS opening command. Shared model, report/export, CLI presentation and browser UI are implemented. The file:// browser reopening limitation remains documented; do not bypass the browser tool policy or claim that check passed.
17
+ Delivered as v0.3.0: PR #19 merged at `2bea8ec47cbb1d085819ba05e64f9d3816e91af8`; GitHub release and npm `latest` publication verified. Registry tarball bytes matched the inspected archive and package smoke passed. The installed published package generated its review HTML and Markdown from a canonical temporary directory without this checkout. Direct file:// reopening remains unverified under browser tool policy.
18
+
19
+ The user subsequently requested expanded documentation, images and an extension of the existing film. That follow-up is owned by [review-media-0.3.1](review-media-0.3.1.md); the 0.3.0 tag and npm artifact remain immutable.
@@ -0,0 +1,14 @@
1
+ # Fictional review example
2
+
3
+ This is a demonstration of the review format and viewer, not a review of a real product. It is separate from the Lisière video pilot.
4
+
5
+ - [review.json](review.json) owns the illustrative results.
6
+ - [REVIEW.md](REVIEW.md) is generated from that JSON.
7
+ - [review-demo.html](review-demo.html) is the same standalone interactive viewer. Download it to open locally; GitHub's file page displays source.
8
+ - [Step-by-step guide](../../docs/REVIEW-GUIDE.md) explains filters, evidence, coverage, sources and exports.
9
+
10
+ ```sh
11
+ npx --yes devmethod-ai@0.3.1 review --demo --output review-demo.html --open
12
+ ```
13
+
14
+ Choose a fresh output path. This works from the distributed package without this source checkout. The packaged generated HTML is illustrative; your real results belong in your own mission's review record.