implements PLN-0019
This commit is contained in:
parent
91ca49a074
commit
2b7aafaa5c
@ -11,4 +11,4 @@
|
|||||||
{"type":"discussion","id":"DSC-0010","status":"done","ticket":"studio-code-editor-workspace-foundations","title":"Establish Code Editor workspace foundations in Studio without LSP","created_at":"2026-03-30","updated_at":"2026-03-31","tags":["studio","editor","workspace","multi-frontend","lsp-deferred"],"agendas":[],"decisions":[],"plans":[],"lessons":[{"id":"LSN-0026","file":"discussion/lessons/DSC-0010-studio-code-editor-workspace-foundations/LSN-0026-read-only-editor-foundations-and-semantic-deferral.md","status":"done","created_at":"2026-03-31","updated_at":"2026-03-31"}]}
|
{"type":"discussion","id":"DSC-0010","status":"done","ticket":"studio-code-editor-workspace-foundations","title":"Establish Code Editor workspace foundations in Studio without LSP","created_at":"2026-03-30","updated_at":"2026-03-31","tags":["studio","editor","workspace","multi-frontend","lsp-deferred"],"agendas":[],"decisions":[],"plans":[],"lessons":[{"id":"LSN-0026","file":"discussion/lessons/DSC-0010-studio-code-editor-workspace-foundations/LSN-0026-read-only-editor-foundations-and-semantic-deferral.md","status":"done","created_at":"2026-03-31","updated_at":"2026-03-31"}]}
|
||||||
{"type":"discussion","id":"DSC-0011","status":"done","ticket":"compiler-analyze-compile-build-pipeline-split","title":"Split compiler pipeline into analyze, compile, and build entrypoints","created_at":"2026-03-30","updated_at":"2026-03-30","tags":["compiler","pipeline","artifacts","build","analysis"],"agendas":[],"decisions":[],"plans":[],"lessons":[{"id":"LSN-0025","file":"discussion/lessons/DSC-0011-compiler-analyze-compile-build-pipeline-split/LSN-0025-compiler-pipeline-entrypoints-and-result-boundaries.md","status":"done","created_at":"2026-03-30","updated_at":"2026-03-30"}]}
|
{"type":"discussion","id":"DSC-0011","status":"done","ticket":"compiler-analyze-compile-build-pipeline-split","title":"Split compiler pipeline into analyze, compile, and build entrypoints","created_at":"2026-03-30","updated_at":"2026-03-30","tags":["compiler","pipeline","artifacts","build","analysis"],"agendas":[],"decisions":[],"plans":[],"lessons":[{"id":"LSN-0025","file":"discussion/lessons/DSC-0011-compiler-analyze-compile-build-pipeline-split/LSN-0025-compiler-pipeline-entrypoints-and-result-boundaries.md","status":"done","created_at":"2026-03-30","updated_at":"2026-03-30"}]}
|
||||||
{"type":"discussion","id":"DSC-0012","status":"done","ticket":"studio-editor-document-vfs-boundary","title":"Definir um boundary de VFS documental para tree/view/open files no Code Editor do Studio","created_at":"2026-03-31","updated_at":"2026-03-31","tags":["studio","editor","workspace","vfs","filesystem","boundary"],"agendas":[],"decisions":[],"plans":[],"lessons":[{"id":"LSN-0027","file":"discussion/lessons/DSC-0012-studio-editor-document-vfs-boundary/LSN-0027-project-document-vfs-and-session-owned-editor-boundary.md","status":"done","created_at":"2026-03-31","updated_at":"2026-03-31"}]}
|
{"type":"discussion","id":"DSC-0012","status":"done","ticket":"studio-editor-document-vfs-boundary","title":"Definir um boundary de VFS documental para tree/view/open files no Code Editor do Studio","created_at":"2026-03-31","updated_at":"2026-03-31","tags":["studio","editor","workspace","vfs","filesystem","boundary"],"agendas":[],"decisions":[],"plans":[],"lessons":[{"id":"LSN-0027","file":"discussion/lessons/DSC-0012-studio-editor-document-vfs-boundary/LSN-0027-project-document-vfs-and-session-owned-editor-boundary.md","status":"done","created_at":"2026-03-31","updated_at":"2026-03-31"}]}
|
||||||
{"type":"discussion","id":"DSC-0013","status":"open","ticket":"studio-editor-write-wave-supported-non-frontend-files","title":"Definir a wave inicial de edicao no Code Editor apenas para arquivos aceitos e nao relacionados ao FE","created_at":"2026-03-31","updated_at":"2026-03-31","tags":["studio","editor","workspace","write","read-only","vfs","frontend-boundary"],"agendas":[{"id":"AGD-0013","file":"AGD-0013-studio-editor-write-wave-supported-non-frontend-files.md","status":"accepted","created_at":"2026-03-31","updated_at":"2026-03-31"},{"id":"AGD-0014","file":"AGD-0014-studio-editor-frontend-edit-rights.md","status":"accepted","created_at":"2026-03-31","updated_at":"2026-03-31"}],"decisions":[{"id":"DEC-0010","file":"DEC-0010-studio-controlled-non-frontend-editor-write-wave.md","status":"accepted","created_at":"2026-03-31","updated_at":"2026-03-31","ref_agenda":"AGD-0013"},{"id":"DEC-0011","file":"DEC-0011-studio-frontend-read-only-minimum-lsp-phase.md","status":"accepted","created_at":"2026-03-31","updated_at":"2026-03-31","ref_agenda":"AGD-0014"}],"plans":[{"id":"PLN-0019","file":"PLN-0019-propagate-dec-0010-into-studio-and-vfs-specs.md","status":"review","created_at":"2026-03-31","updated_at":"2026-03-31","ref_decisions":["DEC-0010"]},{"id":"PLN-0020","file":"PLN-0020-build-dec-0010-vfs-access-policy-and-save-core.md","status":"review","created_at":"2026-03-31","updated_at":"2026-03-31","ref_decisions":["DEC-0010"]},{"id":"PLN-0021","file":"PLN-0021-integrate-dec-0010-editor-write-ui-and-workflow.md","status":"review","created_at":"2026-03-31","updated_at":"2026-03-31","ref_decisions":["DEC-0010"]},{"id":"PLN-0022","file":"PLN-0022-propagate-dec-0011-into-studio-vfs-and-lsp-specs.md","status":"review","created_at":"2026-03-31","updated_at":"2026-03-31","ref_decisions":["DEC-0011"]},{"id":"PLN-0023","file":"PLN-0023-scaffold-flat-packed-prometeu-lsp-api-and-session-seams.md","status":"review","created_at":"2026-03-31","updated_at":"2026-03-31","ref_decisions":["DEC-0011"]},{"id":"PLN-0024","file":"PLN-0024-implement-read-only-fe-diagnostics-symbols-and-definition.md","status":"review","created_at":"2026-03-31","updated_at":"2026-03-31","ref_decisions":["DEC-0011"]},{"id":"PLN-0025","file":"PLN-0025-implement-fe-semantic-highlight-consumption.md","status":"review","created_at":"2026-03-31","updated_at":"2026-03-31","ref_decisions":["DEC-0011"]}],"lessons":[]}
|
{"type":"discussion","id":"DSC-0013","status":"open","ticket":"studio-editor-write-wave-supported-non-frontend-files","title":"Definir a wave inicial de edicao no Code Editor apenas para arquivos aceitos e nao relacionados ao FE","created_at":"2026-03-31","updated_at":"2026-03-31","tags":["studio","editor","workspace","write","read-only","vfs","frontend-boundary"],"agendas":[{"id":"AGD-0013","file":"AGD-0013-studio-editor-write-wave-supported-non-frontend-files.md","status":"accepted","created_at":"2026-03-31","updated_at":"2026-03-31"},{"id":"AGD-0014","file":"AGD-0014-studio-editor-frontend-edit-rights.md","status":"accepted","created_at":"2026-03-31","updated_at":"2026-03-31"}],"decisions":[{"id":"DEC-0010","file":"DEC-0010-studio-controlled-non-frontend-editor-write-wave.md","status":"accepted","created_at":"2026-03-31","updated_at":"2026-03-31","ref_agenda":"AGD-0013"},{"id":"DEC-0011","file":"DEC-0011-studio-frontend-read-only-minimum-lsp-phase.md","status":"accepted","created_at":"2026-03-31","updated_at":"2026-03-31","ref_agenda":"AGD-0014"}],"plans":[{"id":"PLN-0019","file":"PLN-0019-propagate-dec-0010-into-studio-and-vfs-specs.md","status":"done","created_at":"2026-03-31","updated_at":"2026-03-31","ref_decisions":["DEC-0010"]},{"id":"PLN-0020","file":"PLN-0020-build-dec-0010-vfs-access-policy-and-save-core.md","status":"review","created_at":"2026-03-31","updated_at":"2026-03-31","ref_decisions":["DEC-0010"]},{"id":"PLN-0021","file":"PLN-0021-integrate-dec-0010-editor-write-ui-and-workflow.md","status":"review","created_at":"2026-03-31","updated_at":"2026-03-31","ref_decisions":["DEC-0010"]},{"id":"PLN-0022","file":"PLN-0022-propagate-dec-0011-into-studio-vfs-and-lsp-specs.md","status":"review","created_at":"2026-03-31","updated_at":"2026-03-31","ref_decisions":["DEC-0011"]},{"id":"PLN-0023","file":"PLN-0023-scaffold-flat-packed-prometeu-lsp-api-and-session-seams.md","status":"review","created_at":"2026-03-31","updated_at":"2026-03-31","ref_decisions":["DEC-0011"]},{"id":"PLN-0024","file":"PLN-0024-implement-read-only-fe-diagnostics-symbols-and-definition.md","status":"review","created_at":"2026-03-31","updated_at":"2026-03-31","ref_decisions":["DEC-0011"]},{"id":"PLN-0025","file":"PLN-0025-implement-fe-semantic-highlight-consumption.md","status":"review","created_at":"2026-03-31","updated_at":"2026-03-31","ref_decisions":["DEC-0011"]}],"lessons":[]}
|
||||||
|
|||||||
@ -2,9 +2,9 @@
|
|||||||
id: PLN-0019
|
id: PLN-0019
|
||||||
ticket: studio-editor-write-wave-supported-non-frontend-files
|
ticket: studio-editor-write-wave-supported-non-frontend-files
|
||||||
title: Propagate DEC-0010 into Studio editor and VFS specs
|
title: Propagate DEC-0010 into Studio editor and VFS specs
|
||||||
status: review
|
status: done
|
||||||
created: 2026-03-31
|
created: 2026-03-31
|
||||||
completed:
|
completed: 2026-03-31
|
||||||
tags: [studio, editor, vfs, specs, write-wave]
|
tags: [studio, editor, vfs, specs, write-wave]
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@ -70,7 +70,7 @@ Baseline workspace architecture rules are:
|
|||||||
The shell must not encourage a workspace model where every interaction falls back to whole-workspace refresh.
|
The shell must not encourage a workspace model where every interaction falls back to whole-workspace refresh.
|
||||||
|
|
||||||
Detailed local workspace composition remains workspace-owned.
|
Detailed local workspace composition remains workspace-owned.
|
||||||
For example, `Code Editor`-local layout, navigator behavior, tab rules, passive placeholder surfaces, and read-only file behavior are not shell-global rules and must be defined by the workspace-local editor specification.
|
For example, `Code Editor`-local layout, navigator behavior, tab rules, passive placeholder surfaces, document access-mode behavior, and editor-local save surfaces are not shell-global rules and must be defined by the workspace-local editor specification.
|
||||||
|
|
||||||
Project-session boundaries may still exist above a workspace when the state must remain alive while the project window stays open.
|
Project-session boundaries may still exist above a workspace when the state must remain alive while the project window stays open.
|
||||||
|
|
||||||
|
|||||||
@ -8,7 +8,7 @@ Active
|
|||||||
|
|
||||||
- `prometeu-studio`
|
- `prometeu-studio`
|
||||||
- the Studio `Code Editor` workspace
|
- the Studio `Code Editor` workspace
|
||||||
- the first read-only editor workspace wave
|
- the first controlled editor write wave for supported non-frontend documents
|
||||||
|
|
||||||
## Purpose
|
## Purpose
|
||||||
|
|
||||||
@ -18,10 +18,11 @@ This specification stabilizes:
|
|||||||
|
|
||||||
- the baseline visual composition of the workspace,
|
- the baseline visual composition of the workspace,
|
||||||
- the `Project Navigator` role and scope,
|
- the `Project Navigator` role and scope,
|
||||||
- the read-only file-opening model,
|
- the mixed editable and hard `read-only` file-opening model,
|
||||||
- the responsive tab baseline,
|
- the responsive tab baseline,
|
||||||
- the passive `Outline`, helper, and status-bar surfaces,
|
- the passive `Outline`, helper, and status-bar surfaces,
|
||||||
- and the explicit deferral of write and semantic/LSP behavior.
|
- the editor-local save surfaces,
|
||||||
|
- and the explicit deferral of semantic/LSP behavior.
|
||||||
|
|
||||||
## Authority and Precedence
|
## Authority and Precedence
|
||||||
|
|
||||||
@ -39,14 +40,16 @@ If this document conflicts with the global Studio shell specifications, the shel
|
|||||||
The `Code Editor` workspace must assume:
|
The `Code Editor` workspace must assume:
|
||||||
|
|
||||||
- the Studio shell already mounts `Code Editor` as a baseline workspace,
|
- the Studio shell already mounts `Code Editor` as a baseline workspace,
|
||||||
- the current wave is read-only,
|
- the current wave allows editing only for the supported non-frontend document classes classified by `prometeu-vfs` as editable,
|
||||||
|
- frontend-scoped supported documents remain hard `read-only`,
|
||||||
- all project files remain visible in the editor workspace even when only some are frontend-relevant,
|
- all project files remain visible in the editor workspace even when only some are frontend-relevant,
|
||||||
- `prometeu.json` plus the selected frontend may identify source roots worth tagging,
|
- `prometeu.json` plus the selected frontend may identify source roots worth tagging,
|
||||||
- future semantic providers such as LSP may arrive later,
|
- future semantic providers such as LSP may arrive later,
|
||||||
- and the current wave must not depend on write/save or semantic behavior to remain coherent.
|
- and the current wave must not depend on semantic behavior to remain coherent.
|
||||||
|
|
||||||
This workspace may consume Studio project metadata and Studio-owned workspace framework primitives, but it must not infer a semantic-provider contract beyond keeping the path open for later integration.
|
This workspace may consume Studio project metadata and Studio-owned workspace framework primitives, but it must not infer a semantic-provider contract beyond keeping the path open for later integration.
|
||||||
This workspace must consume project tree and document data through `prometeu-vfs` rather than through editor-owned direct filesystem readers.
|
This workspace must consume project tree and document data through `prometeu-vfs` rather than through editor-owned direct filesystem readers.
|
||||||
|
This workspace must consume document access policy and save capability from `prometeu-vfs` rather than rederiving editability locally.
|
||||||
|
|
||||||
## Workspace Model
|
## Workspace Model
|
||||||
|
|
||||||
@ -54,7 +57,7 @@ The `Code Editor` workspace is:
|
|||||||
|
|
||||||
- project-aware,
|
- project-aware,
|
||||||
- file-oriented,
|
- file-oriented,
|
||||||
- read-only in this first wave,
|
- mixed-mode in this wave, with editable supported non-frontend documents and hard `read-only` frontend documents,
|
||||||
- and explicitly not a semantic IDE surface yet.
|
- and explicitly not a semantic IDE surface yet.
|
||||||
|
|
||||||
The workspace must help the user:
|
The workspace must help the user:
|
||||||
@ -62,13 +65,12 @@ The workspace must help the user:
|
|||||||
- see the full project tree,
|
- see the full project tree,
|
||||||
- identify frontend-relevant source roots visually,
|
- identify frontend-relevant source roots visually,
|
||||||
- open supported files into editor tabs,
|
- open supported files into editor tabs,
|
||||||
|
- save editable non-frontend documents through editor-local commands,
|
||||||
- understand the active file context,
|
- understand the active file context,
|
||||||
- and understand that semantic/editor-automation features are not part of this wave.
|
- and understand that semantic/editor-automation features are not part of this wave.
|
||||||
|
|
||||||
The workspace must not pretend to offer:
|
The workspace must not pretend to offer:
|
||||||
|
|
||||||
- save/write behavior,
|
|
||||||
- dirty state,
|
|
||||||
- merge behavior,
|
- merge behavior,
|
||||||
- active outline semantics,
|
- active outline semantics,
|
||||||
- or LSP-backed coding assistance.
|
- or LSP-backed coding assistance.
|
||||||
@ -89,8 +91,9 @@ The left editor column must be a vertical stack containing:
|
|||||||
|
|
||||||
The central editor work area must contain:
|
The central editor work area must contain:
|
||||||
|
|
||||||
|
- a top command bar containing at least `Save` and `Save All`,
|
||||||
- a tab strip at the top,
|
- a tab strip at the top,
|
||||||
- and the read-only editor body below it.
|
- and the editor body below it.
|
||||||
|
|
||||||
The lower helper region is present in this wave only as a passive placeholder.
|
The lower helper region is present in this wave only as a passive placeholder.
|
||||||
|
|
||||||
@ -153,6 +156,7 @@ Rules:
|
|||||||
- Selecting a supported file that is not already open must open it in a new tab.
|
- Selecting a supported file that is not already open must open it in a new tab.
|
||||||
- File opening must resolve document content through `prometeu-vfs`.
|
- File opening must resolve document content through `prometeu-vfs`.
|
||||||
- The editor must maintain opened-file content in memory for the active Studio session only.
|
- The editor must maintain opened-file content in memory for the active Studio session only.
|
||||||
|
- Frontend-scoped supported documents may coexist in tabs with editable non-frontend documents.
|
||||||
- The tab strip must be responsive rather than fixed to one hardcoded tab count.
|
- The tab strip must be responsive rather than fixed to one hardcoded tab count.
|
||||||
- Overflow tabs must remain accessible through an IntelliJ-style overflow control.
|
- Overflow tabs must remain accessible through an IntelliJ-style overflow control.
|
||||||
- The active tab must remain visible.
|
- The active tab must remain visible.
|
||||||
@ -166,16 +170,21 @@ The first wave must not define:
|
|||||||
- split editors,
|
- split editors,
|
||||||
- or cross-session tab restoration.
|
- or cross-session tab restoration.
|
||||||
|
|
||||||
## Read-only File Model
|
## Access-Mode and Save Model
|
||||||
|
|
||||||
The first `Code Editor` wave is read-only.
|
The first `Code Editor` write wave is controlled rather than universally editable.
|
||||||
|
|
||||||
Rules:
|
Rules:
|
||||||
|
|
||||||
- supported files may be opened into read-only in-memory buffers,
|
- the workspace must treat `prometeu-vfs` as the canonical source of document access mode for supported files;
|
||||||
- the workspace must not write files,
|
- the workspace must not infer frontend scope from path heuristics, local UI state, or ad hoc extension checks;
|
||||||
- the workspace must not expose save behavior,
|
- supported frontend-scoped documents must remain hard `read-only`;
|
||||||
- the workspace must not define dirty tracking,
|
- editable scope is limited to the supported non-frontend textual classes exposed by `prometeu-vfs` for this wave;
|
||||||
|
- the workspace must not allow local editorial mutation for hard `read-only` frontend documents;
|
||||||
|
- the workspace must expose save behavior only through an editor-local command bar containing at least `Save` and `Save All`;
|
||||||
|
- the global shell `Save` menu item must not be the save surface for this wave;
|
||||||
|
- save intent must route through `prometeu-vfs`, which remains the owner of persistence policy;
|
||||||
|
- a frontend hard `read-only` tab must show a top warning that the file cannot be edited or saved in this wave;
|
||||||
- and the workspace must not define local merge/conflict behavior against disk changes.
|
- and the workspace must not define local merge/conflict behavior against disk changes.
|
||||||
|
|
||||||
## Outline Rules
|
## Outline Rules
|
||||||
@ -194,7 +203,7 @@ Rules:
|
|||||||
|
|
||||||
## Status Bar Rules
|
## Status Bar Rules
|
||||||
|
|
||||||
The status bar must remain passive in this wave.
|
The status bar must remain mostly passive in this wave.
|
||||||
|
|
||||||
Its left side must show the breadcrumb path of the active file, such as `proj > src > file.pbs`.
|
Its left side must show the breadcrumb path of the active file, such as `proj > src > file.pbs`.
|
||||||
|
|
||||||
@ -204,12 +213,14 @@ Its right side must show:
|
|||||||
- line separator,
|
- line separator,
|
||||||
- tabs/spaces mode,
|
- tabs/spaces mode,
|
||||||
- file extension or language,
|
- file extension or language,
|
||||||
- and a read-only lock icon.
|
- and access-mode state.
|
||||||
|
|
||||||
For this wave:
|
For this wave:
|
||||||
|
|
||||||
- `L:C` may remain a visual placeholder,
|
- `L:C` may remain a visual placeholder,
|
||||||
- and the read-only lock icon is visual only and does not imply file-permission enforcement.
|
- editable non-frontend documents may show their current file-type state without implying build participation,
|
||||||
|
- hard `read-only` frontend documents must show an explicit `read-only` state,
|
||||||
|
- and the status-bar `read-only` surface should be shaped so it can evolve into a per-file toggle later without requiring a model rewrite.
|
||||||
|
|
||||||
## Session State Rules
|
## Session State Rules
|
||||||
|
|
||||||
@ -227,14 +238,17 @@ The following remain outside editor-owned session state:
|
|||||||
- project-session ownership of `prometeu-vfs`,
|
- project-session ownership of `prometeu-vfs`,
|
||||||
- structural project-tree data returned by `prometeu-vfs`,
|
- structural project-tree data returned by `prometeu-vfs`,
|
||||||
- support classification rules,
|
- support classification rules,
|
||||||
- and document loading responsibilities.
|
- document loading responsibilities,
|
||||||
|
- save persistence policy,
|
||||||
|
- and build-facing document ownership.
|
||||||
|
|
||||||
|
Editable documents may have session-local editorial snapshots while the project session remains open.
|
||||||
|
Those snapshots are editorial only and must not be treated as canonical build input by implication.
|
||||||
|
|
||||||
Persisting that state across Studio executions is deferred.
|
Persisting that state across Studio executions is deferred.
|
||||||
|
|
||||||
## Non-Goals
|
## Non-Goals
|
||||||
|
|
||||||
- write/save behavior
|
|
||||||
- dirty tracking
|
|
||||||
- merge/conflict resolution
|
- merge/conflict resolution
|
||||||
- watcher-driven automatic refresh
|
- watcher-driven automatic refresh
|
||||||
- public `prometeu-vfs` event APIs
|
- public `prometeu-vfs` event APIs
|
||||||
@ -244,12 +258,16 @@ Persisting that state across Studio executions is deferred.
|
|||||||
- LSP integration details
|
- LSP integration details
|
||||||
- autocomplete, go-to-definition, symbols, rename, code actions, or semantic diagnostics while typing
|
- autocomplete, go-to-definition, symbols, rename, code actions, or semantic diagnostics while typing
|
||||||
- a normative editor event contract in this wave
|
- a normative editor event contract in this wave
|
||||||
|
- frontend editing
|
||||||
|
- any implication that editor-owned in-memory snapshots participate in the build
|
||||||
|
|
||||||
## Exit Criteria
|
## Exit Criteria
|
||||||
|
|
||||||
This specification is complete enough when:
|
This specification is complete enough when:
|
||||||
|
|
||||||
- the read-only first-wave scope is unambiguous,
|
- the controlled write-wave scope is unambiguous,
|
||||||
- the `Project Navigator` and tab responsibilities are explicit,
|
- the `Project Navigator` and tab responsibilities are explicit,
|
||||||
|
- editor-local `Save` and `Save All` are part of the normative workspace contract,
|
||||||
|
- hard frontend `read-only` behavior is explicit in both warning and status-bar surfaces,
|
||||||
- placeholder versus functional regions are clearly separated,
|
- placeholder versus functional regions are clearly separated,
|
||||||
- and deferred write/semantic/LSP behavior is clearly outside the first-wave contract.
|
- and deferred semantic/LSP behavior is clearly outside the current contract.
|
||||||
|
|||||||
@ -8,7 +8,7 @@ Active
|
|||||||
|
|
||||||
- `prometeu-vfs`
|
- `prometeu-vfs`
|
||||||
- `prometeu-studio`
|
- `prometeu-studio`
|
||||||
- the Studio project-document boundary for the first Code Editor migration wave
|
- the Studio project-document boundary for the first controlled Code Editor write wave
|
||||||
|
|
||||||
## Purpose
|
## Purpose
|
||||||
|
|
||||||
@ -20,6 +20,8 @@ This specification stabilizes:
|
|||||||
- project-session ownership,
|
- project-session ownership,
|
||||||
- the filesystem-backed first-wave contract,
|
- the filesystem-backed first-wave contract,
|
||||||
- structural tree and document access responsibilities,
|
- structural tree and document access responsibilities,
|
||||||
|
- canonical frontend scope and access policy ownership,
|
||||||
|
- editorial snapshot and save ownership for editable non-frontend documents,
|
||||||
- the RPC-first public API baseline,
|
- the RPC-first public API baseline,
|
||||||
- and explicit first-wave exclusions such as public event publication and watchers.
|
- and explicit first-wave exclusions such as public event publication and watchers.
|
||||||
|
|
||||||
@ -47,7 +49,7 @@ If this document conflicts with shell-wide Studio rules, the shell specification
|
|||||||
|
|
||||||
- watcher-driven refresh in this wave,
|
- watcher-driven refresh in this wave,
|
||||||
- public event API exposure in this wave,
|
- public event API exposure in this wave,
|
||||||
- write or save semantics,
|
- build participation for editorial snapshots by implication,
|
||||||
- or ownership over non-Studio domains such as packer assets.
|
- or ownership over non-Studio domains such as packer assets.
|
||||||
|
|
||||||
## Module Role
|
## Module Role
|
||||||
@ -58,6 +60,8 @@ If this document conflicts with shell-wide Studio rules, the shell specification
|
|||||||
- the owner of project structural tree data for the covered scope,
|
- the owner of project structural tree data for the covered scope,
|
||||||
- the owner of project document resolution for the covered scope,
|
- the owner of project document resolution for the covered scope,
|
||||||
- the owner of file support and unsupported-file classification for the covered scope,
|
- the owner of file support and unsupported-file classification for the covered scope,
|
||||||
|
- the owner of document access policy for the covered scope,
|
||||||
|
- the owner of save persistence for editable documents in this wave,
|
||||||
- and the required path through which Studio accesses project-document filesystem state in this wave.
|
- and the required path through which Studio accesses project-document filesystem state in this wave.
|
||||||
|
|
||||||
`prometeu-vfs` is not:
|
`prometeu-vfs` is not:
|
||||||
@ -119,8 +123,36 @@ Rules:
|
|||||||
|
|
||||||
- opening a supported file in the Code Editor must go through `prometeu-vfs`;
|
- opening a supported file in the Code Editor must go through `prometeu-vfs`;
|
||||||
- the returned document content must describe only project-session document state for the opened project;
|
- the returned document content must describe only project-session document state for the opened project;
|
||||||
- this wave must not add save, dirty tracking, merge, or conflict semantics by implication;
|
- `prometeu-vfs` must classify each supported document as at least editable or hard `read-only`;
|
||||||
- future in-memory overlays may be added only by later explicit decision.
|
- unsupported documents must remain distinguishable from supported `read-only` and supported editable documents;
|
||||||
|
- `prometeu-vfs` must own editable in-memory editorial snapshots for the current Studio session;
|
||||||
|
- save operations for editable documents in this wave must persist those editorial snapshots to disk through `prometeu-vfs`;
|
||||||
|
- Studio consumers must treat `prometeu-vfs` access policy as canonical rather than rederiving editability locally;
|
||||||
|
- and editorial snapshots must remain outside build-facing document state.
|
||||||
|
|
||||||
|
## Frontend Scope Contract
|
||||||
|
|
||||||
|
Frontend scope must be decided canonically inside `prometeu-vfs`.
|
||||||
|
|
||||||
|
Rules:
|
||||||
|
|
||||||
|
- `FrontendSpec.allowedExtensions` is the source of truth for frontend scope in this wave;
|
||||||
|
- the VFS document contract must expose a canonical frontend-compatible `typeId` or equivalent scope marker derived from that source of truth;
|
||||||
|
- consumers must not infer frontend scope from raw dynamic language identifiers, path heuristics, or local UI extension checks;
|
||||||
|
- frontend-scoped supported documents must remain hard `read-only` in this wave;
|
||||||
|
- the initial editable non-frontend set is limited to the currently supported textual classes represented as `text`, `json`, `ndjson`, and `bash`;
|
||||||
|
- and no additional editable class may be inferred by implementation convenience during this wave.
|
||||||
|
|
||||||
|
## Document Access Context
|
||||||
|
|
||||||
|
`prometeu-vfs` must reserve a single access-context entity for document-access-related values.
|
||||||
|
|
||||||
|
Rules:
|
||||||
|
|
||||||
|
- the access-context entity may remain session-local in this wave;
|
||||||
|
- it must already support lookup and mutation under current demand;
|
||||||
|
- future persistence may be added later without redesigning the access model;
|
||||||
|
- and the current reservation must not be treated as authorization for build participation or broader product-wide state ownership.
|
||||||
|
|
||||||
## Support and Plugin Rules
|
## Support and Plugin Rules
|
||||||
|
|
||||||
@ -169,11 +201,12 @@ Rules:
|
|||||||
|
|
||||||
- public event publication
|
- public event publication
|
||||||
- watcher-driven refresh
|
- watcher-driven refresh
|
||||||
- write or save behavior
|
|
||||||
- dirty tracking
|
- dirty tracking
|
||||||
- merge or conflict handling
|
- merge or conflict handling
|
||||||
- non-project content snapshots
|
- non-project content snapshots
|
||||||
- a generic product-wide filesystem abstraction
|
- a generic product-wide filesystem abstraction
|
||||||
|
- frontend editing
|
||||||
|
- treating editorial snapshots as canonical build input
|
||||||
|
|
||||||
## Exit Criteria
|
## Exit Criteria
|
||||||
|
|
||||||
@ -182,5 +215,7 @@ This specification is complete enough when:
|
|||||||
- `prometeu-vfs` ownership is clearly separated from shell and workspace UI ownership,
|
- `prometeu-vfs` ownership is clearly separated from shell and workspace UI ownership,
|
||||||
- the project-session lifecycle rule is unambiguous,
|
- the project-session lifecycle rule is unambiguous,
|
||||||
- the structural tree contract is explicitly non-visual,
|
- the structural tree contract is explicitly non-visual,
|
||||||
|
- frontend scope and access policy ownership are explicit,
|
||||||
|
- editable non-frontend snapshot and save ownership are explicit,
|
||||||
- the RPC-first public API rule is explicit,
|
- the RPC-first public API rule is explicit,
|
||||||
- and deferred public events and watchers are clearly out of scope.
|
- and deferred public events and watchers are clearly out of scope.
|
||||||
|
|||||||
@ -41,7 +41,7 @@ Specs should normally be fed by:
|
|||||||
|
|
||||||
1. agendas that frame the open Studio topic,
|
1. agendas that frame the open Studio topic,
|
||||||
2. decisions that close the product or interaction choice,
|
2. decisions that close the product or interaction choice,
|
||||||
3. pull-request plans that define propagation,
|
3. plans that define propagation,
|
||||||
4. then spec integration.
|
4. then spec integration.
|
||||||
|
|
||||||
If a spec edit would require guessing unresolved UI behavior, stop and surface the missing decision first.
|
If a spec edit would require guessing unresolved UI behavior, stop and surface the missing decision first.
|
||||||
@ -64,6 +64,17 @@ Recommended order:
|
|||||||
1. shell and workspace layout;
|
1. shell and workspace layout;
|
||||||
2. shared UI foundations;
|
2. shared UI foundations;
|
||||||
3. components module policy;
|
3. components module policy;
|
||||||
4. project document VFS boundary;
|
4. assets workspace behavior;
|
||||||
5. assets workspace behavior;
|
5. project document VFS boundary;
|
||||||
6. code editor workspace behavior.
|
6. code editor workspace behavior.
|
||||||
|
|
||||||
|
## Current Wave Notes
|
||||||
|
|
||||||
|
The current `Code Editor` wave is not globally read-only anymore.
|
||||||
|
|
||||||
|
Normative reminders:
|
||||||
|
|
||||||
|
- editable scope is limited to supported non-frontend textual documents classified by `prometeu-vfs`;
|
||||||
|
- frontend-scoped supported documents remain hard `read-only`;
|
||||||
|
- the editor-local `Save` and `Save All` surfaces belong to the `Code Editor` workspace rather than the shell;
|
||||||
|
- editorial in-memory snapshots remain outside build-facing state.
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user