docs: align editor graph, Markdown transition and archive with PRD d6

This commit is contained in:
jason.woltje committed 2026-10-22 21:06:29 -05:00
1 parent ee5f7b9ef8
commit 6345aae3d8
4 files changed
+40 -21

No files matched your search

+2
View File
@@ -5372,3 +5372,5 @@ Gander: after Duckworth-0100 design approval with C1-C5, prepared the two host-s
2026-10-23T01:37:07Z | Gyro Vikunja571 final impact-map / mos-1372/1375 fold | Prepared parent/W4 rewrite against brain-redux d183246 impact map at stack 062646487. P1-P6/B1-B4 and engineering Q1-Q16 are mapped to eleven briefs. D9 replaces the earlier private O2-only context/per-document/share model: normal Case 2 access in any authorized thread/room, supporting writes intact, changed policy awaits PRD 1.17 approval. New DOCX story creation has the same opening gate as human per-story import. Host-only push to human-set off-host remote replaces the no-remote ban; remoteURL defaults unset and same-host bare is disallowed. W7 gates on Hermes #423 step5, W4b, PRD approval, post-10-27 and first-real-book go; owns conversion events COUNTED/--events/pre-conversion restore reconciliation, manifest order/next_chapter, creative role cite wording, archive/old-path edits and format/link/citation routing. Store+off-host acknowledgment precedes archive commit/push, then catalogue publication; post-push failures remain resumable pending with pinned source. Current checks pass: complete brief fields, policy/map coverage, exact Q234 CSP, locator/projection mechanics byte-equivalent except explicit authority wording, A01-A35 IDs, immutable map pin, four-doc scope and append-only logs. W4 authority/remote/recovery sections reopened for Fenton; older APPROVE not reused. No product/build/browser/worker/private-book/queue/live action. Earlier entry describing preserved shares/fence applies only to the pre-D9 intermediate draft; D9 now withdraws those unimplemented structures.
2026-10-23T01:37:55Z | Gyro 571 push guard | identity gyro/purpose push: exit 0 documented degraded-pass CANNOT_ASSERT credential-unresolvable, scratch audit gyro-q195-ci-queue-audit.jsonl; no credential fallback or CI-green claim.
2026-10-23T01:41:59Z | Gyro sage-3121 A1-A3 PRD alignment | Before: 8d209016b adds a current Connections graph, excludes new Markdown stories in converted books and defaults archiveFolder. After: parent/W4 align with PRD1.17 d6 sha256 886b93c571f87bfbb2f27ee3113b6800a32d8f89196d95ace33566031bee380a: clickable editor links only; graph/tests later pending J-b; new different-path Markdown in a converted book remains canon until import, only recreated converted old paths are unmapped; archive folder is human-set in library mapping with no default, missing folder refuses conversion. Static A1-A3/11-brief checks pass; W4 locator/extractor/access/remote/recovery blocks unchanged. Local commit only, push held for Sage's named gap while Gizmoduck holds 270+271 run5. No product/build/browser/worker/queue/live action. Fenton gets local SHA through shared object store.
+1
View File
@@ -1561,3 +1561,4 @@ are never rewritten or removed; corrections are new entries.
2026-10-23T00:05:06Z | Filbert (Opus 5.5, sage-3059/3064) | Q195 O2 S0 (#1798) static review of Fenton's fenton/q195-s0 85ae2be77 (security + CSP reports, receipts in s0-20261022) | CONCUR CONDITIONAL PASS, c30914; A1 M1 needs WOFF2 and summed-size tests, A2 F2/D7 misstate the ctrl+click gate, M2 retargets to DOCX save; N1-N4 non-blocking; D8 hash question stays with Mos; no queue row (mos-1361), no slot, harness not rerun
2026-10-23T00:52:58Z | Gyro (Codex gpt-6.1-sol, mos-1366/1367) | Vikunja571 Q235-Q237 O2 parent/W4 format-policy rewrite on gyro/editor-o2 | Canonical queue next gyro: nothing. Prepared P1-P6 and B1-B4 docs, baseline W4 import 1ac76a417; no product/build/browser/worker/private-file/queue/live action. Mos impact map fold precedes review/push handoff.
2026-10-23T01:37:07Z | Gyro (Codex gpt-6.1-sol, mos-1368/1372/1375) | Vikunja571 O2 parent/W4 revision complete for review | P1-P6/B1-B4 and A17-A41/Q1-Q16 folded; same-thread Case 2 lookups/support writes, human-set host-pushed off-host remote, Hermes/restore/counting/order/role gates. Static docs checks pass; old locator/projection mechanics retained, authority/access review reopened. No code, build/browser/worker run, private conversion, queue or live action. Direct Fenton/Mos/Sage handoff after push.
2026-10-23T01:41:59Z | Gyro (Codex gpt-6.1-sol, sage-3121) | 571 PRD d6 A1-A3 alignment | Both designs corrected and statically checked; local commit for Fenton in shared repo object store. HTTPS push held for Sage gap, independent review pending. No product, test-slot, queue or live change.
+29 -19
View File
@@ -181,10 +181,10 @@ atomically in one commit. They are not two editable masters.
D10's book manifest also owns chapter order. Seed from row216's existing path-order rule,
then keep stable chapter IDs in order across conversions; human reordering commits the
manifest. library_manuscript and next_chapter use this order, never archived paths. Each
answer/page names format, owned location/ID and captured commit. A visible Console Connections
view shows current authorized Markdown/DOCX links and backlinks with canon/playground/archive
labels. Obsidian's archive graph is historical, not the live chapter graph. No hidden scope's
titles/counts leak through the view. New Story chooses universe/book or playground and gets
answer/page names format, owned location/ID and captured commit. DOCX wikilinks stay clickable
in the Console editor; no graph shows their current links yet. A Console Connections view
and its tests are later work, waiting for Jason's J-b answer in PRD 1.17. Obsidian's archive
graph is historical, not a live DOCX graph. No graph implementation is in these W rows. New Story chooses universe/book or playground and gets
its place in that manifest from its first DOCX commit, without an MD copy.
D11. Human-started, one-way import converts a Markdown chapter into canonical DOCX. The
@@ -202,7 +202,9 @@ manifest and DOCX conversion commit for each. Its source-repository archive comm
covers only that file; the operation receipt binds both commits without pretending they
are one git transaction. First import UI selects one file per operation. A future batch
picker may queue independent confirmations, never imply a reversible book-wide transaction.
`editor.archiveFolder` is human-only, default `archive/converted`, scoped to source project.
`editor.archiveFolder` is the human-only editor/CLI view of the archive folder in the source
project's library mapping. It has no default. Conversion stays closed until a human sets a
valid folder; no editor setting supplies a separate fallback or second source of truth.
Validate a nonempty relative directory (at most 1024 characters), no absolute path, dot/dotdot,
.git, symlink/hardlink escape, current-file or supporting-write-target collision or destination
collision. Changing it never reclassifies older archives. Record the resolved owned archive
@@ -229,9 +231,10 @@ link. Supporting-document cross-links keep their Markdown source bytes; resolver
follow stable identities without an agent rewriting story links.
Obsidian's old Markdown graph is historical after conversion. It does not track later DOCX
edits, and it is not a parallel writing surface. The Console's authorized book/format map
shows current DOCX chapter relationships and Markdown support links. No Obsidian graph
parity or Markdown export is promised. `.doc`/`.qxd` imports remain separate D23 work.
edits, and it is not a parallel writing surface. The format map names current files and
clickable editor links resolve across formats; it is not a graph view. No graph shows DOCX
links yet. The later Connections view waits for Jason's J-b answer; it and its tests are
outside the current W3/W7 scope. No Markdown export or Obsidian graph parity is promised. `.doc`/`.qxd` imports remain separate D23 work.
D12. Q235–Q237 withdraw the superseded-notice proposal and its open-Q36 boundary. Current
Case 2 chapter reads after conversion use W4b's committed DOCX reader/citations. Agent
@@ -259,7 +262,7 @@ live scopes allow, no title/path leak from denied documents. Agents get this map
reviewed library/universe lookup results and normal authorized Case 2 context so they know formats
and locations. The checked Case 2 query adapters reuse W4's exact committed-reader/locator primitives;
there is no native-engine or raw-store access. General current catalogue,
find/get/search/manuscript, graph and chat selection exclude archived Markdown chapters.
find/get/search/manuscript and chat selection exclude archived Markdown chapters.
mos-1367 B4 adds an explicit `archived` read scope. It returns only requested archive records,
subject to the caller's live authorized source/archive scope, always marked archived/historical
and `canon:false`. It cannot supply canon quotations, satisfy a current-chapter citation,
@@ -330,10 +333,12 @@ flag on either API. Before that gate, only isolated fixtures can create/import s
Import requires the human to push and close Obsidian before confirming the exact source tip;
no seat surveys/reads the private working tree. The UI makes that precondition explicit.
A user may still push edits with her own tools later. Sync flags changed archive blobs and
Markdown recreated at a converted old path; neither becomes canon/current, syncs to DOCX or
triggers conversion. Console Markdown save refuses every archive path. Newly created .md
story files in converted manuscript locations are flagged awaiting import and excluded as a
second current chapter; no auto-conversion. Preserve unexpected bytes for human resolution.
Markdown recreated at a converted old path. That old-path file is unmapped: neither canon
nor playground; lookups leave it out, the format map flags it and the human is told. Archive
edits never become current or sync to DOCX. Neither case triggers automatic conversion. Console Markdown save refuses every archive path. A new Markdown story at a different path
in a book folder containing converted files stays canon until its import; the Console flags
it and offers the import. A new file is not excluded merely because its book has converted
chapters. Existing playground scope rules still apply. No automatic conversion. Preserve unexpected bytes for human resolution.
A new problem-state version records these states while keeping R1–R7 meanings fixed; W7
owns the migration and tests, not a silent new code in the v1 state parser.
@@ -777,7 +782,7 @@ Reuse verb-sensitive ownership/grant checks. Stale grant/path/thread redacts con
counts but permits owned-pin deletion. Store saved-context envelopes on the bus, deny their
publication to an agent until W4/W4b. Human-only settings with version checks/defaults include
`editor.commitCadenceMs` 0, `editor.saveGroupPauseMs` 2000 and `editor.saveGroupMaxMs` 15000,
`editor.archiveFolder` archive/converted, `editor.conversionHumans` owner-only,
`editor.archiveFolder` unset/no default (library mapping), `editor.conversionHumans` owner-only,
`editor.markdownImportMaxBytes` 1048576 (1..16777216 integer),
`editor.remoteURL` unset/off-host-only, `editor.remoteRetryDeadlineMs` 30000 (1000–300000 integer), sharing visible-chip-per-send and require-citation off. UI/CLI use the same backend validation.
The archive-folder key uses D11's path/collision checks and one canonical library-mapping
@@ -899,12 +904,12 @@ A restricted engine and writer are not yet an all-day writing workspace beside p
`packages/webui/src/public/{index.html,bus.js,bus.css,chat.js,chat.css,writing-pane.js,writing-pane.css}`,
`packages/webui/src/{serve.mjs,chat.mjs,chat-http.mjs}`,
`packages/webui/tests/{writing-pane.test.mjs,writing-browser.test.mjs,chat-browser.test.mjs,writing-connections.test.mjs}`,
`packages/webui/tests/{writing-pane.test.mjs,writing-browser.test.mjs,chat-browser.test.mjs}`,
`packages/webui/README.md`.
### What ships
D10/D16-D22's navigation and Connections view, familiar full WordCraft surface, splitter, settings controls, save/sync
D10/D16-D22's navigation and clickable editor links, familiar full WordCraft surface, splitter, settings controls, save/sync
status and local right-click/ribbon thesaurus. Two distinct DOCX chapters keep their separately pinned ordinary chat drafts
and cursors; background unread metadata never wakes a run. No remount on chat polls. Test
keyboard divider/tabs, dirty navigation, credential expiry, stale pins, disabled sharing before
@@ -1150,10 +1155,10 @@ only inside their supporting scope. mos-1372 D9 replaces M1's dedicated-session/
read-story then write-character-sheet workflow works under existing Case 2 authority.
Never allow that writer to target DOCX or archive files.
Tests prove all P1–P6, per-story-file reports/confirmations/manifests/commits, human-set archive folder,
Tests prove all P1–P6, per-story-file reports/confirmations/manifests/commits, human-set archive folder with no default, missing-folder refusal,
archive blob equality/history retention, human loss-report confirmation,
wiki tokens/front matter/metadata and draft/canon-status preservation, converted-marker discovery, map scope filtering,
link graph routing, no sync back/current Markdown editor, source CAS conflicts, in-flight/cached pre-conversion query invalidation and idempotent
clickable-link routing, no sync back/current Markdown editor, source CAS conflicts, in-flight/cached pre-conversion query invalidation and idempotent
request readback. Kill at every stage/publication boundary: before switch serve the captured
old Markdown; after switch serve committed DOCX only; crash recovery never presents two/zero
current masters. No production fixture bypass, request-based go flag or agent-started import.
@@ -1225,7 +1230,7 @@ Later mos-1372/1375 override A32/A33's per-document/dedicated-session assumption
| Q7 / A32/A33 | mos-1372 D9: ordinary Case 2 access in any thread/room, no per-document grant/share/dedicated session; existing supporting writes continue; marked for PRD 1.17 approval |
| Q8 / A36 | W4b/W7: preserve Case 2 find/get/search/manuscript/universe tools via host committed-reader adapters, not fewer tools or raw ZIP access |
| Q9 / A73 / C2 | W7: D10 manifest order, typed next_chapter, paragraph cursors bound to snapshot/access; both W4 byte cap and harness REPLY_CAP apply, never cut paragraphs or invent line equivalents |
| Q10 / A22 | W3/W7: Console Connections view, current cross-format links/backlinks with scope/format labels; Obsidian graph explicitly historical after conversion |
| Q10 / A22 | W3/W7 keep clickable cross-format editor links; no DOCX graph yet. Connections view/tests are later work, waiting on Jason's J-b answer; Obsidian archive graph is historical |
| Q11 / A37 | W7: Console archive saves refuse; sync flags later archive edits or recreated old paths and excludes them from current canon; no remote-push refusal/protected-pattern guarantee |
| Q12 / A21 | W7: reviewed markdown-it AST + first-party DOCX adapter; no new runtime converter; input cap 1 MiB default, W4 ZIP/XML validation, construct/token/extractor fidelity before archiving |
| Q13 | W7 survey: synthetic construct corpus and aggregate-only count capability; no seat reads real text or claims a corpus census happened |
@@ -1258,6 +1263,11 @@ renderer does not enable it. No change is imposed on the October27 release.
| B3 human-only conversion boundary | D12, W7 | vocabulary snapshot has no conversion grant/tool |
| B4 explicit archived read scope | D12, W7 | requested/authorized/marked/non-canon only; excluded from current canon |
Alignment note: sage-3121 checks this revision against PRD 1.17 d6,
SHA-256 `886b93c571f87bfbb2f27ee3113b6800a32d8f89196d95ace33566031bee380a`.
Connections graph/tests wait for J-b; new non-old-path Markdown stays canon until import;
archive folder is human-set in the library mapping with no default.
## Current verification and remaining gates
This is a docs-only policy rewrite for Vikunja 571. S0's conditional baseline PASS, Q234's
+8 -2
View File
@@ -45,13 +45,19 @@ it, only the current DOCX is a chapter. Pre-push failure leaves source Markdown
after archive push, failure is a visible resumable pending operation, never an assertion
that nothing moved, a rollback push or Markdown revival. Old bytes/history remain.
The archive is in the human-set source-repository folder, default archive/converted, with
The archive is in the source-repository folder set by a human in the library mapping.
There is no default; missing/invalid folder keeps conversion closed. It is recorded with
converted date, source commit/blob/path and replacement ID in the operation record. It is
read-only in the Console. Explicit `archived` scope returns only requested authorized
records, always marked and non-canon; default/current queries never opt into it. An old
source lookup returns a typed conversion record and routes an authorized DOCX read, never
stale Markdown or fake DOCX lines. Historical line cites still verify at commit/blob and
show converted/historical state; archive access alone is not current story authorization.
A Markdown file recreated at a converted old path is unmapped, neither canon nor playground,
excluded from lookups and flagged to the human. A new Markdown story at a different path in
a converted book stays canon until import, flagged and offered for human import; no automatic
conversion. Existing playground scope rules remain. Clickable DOCX editor links stay; no
DOCX graph exists yet. A Connections graph and its tests wait for Jason's J-b answer.
Every conversion runs the pinned extractor before archiving and refuses unsupported output.
An independently reviewed importer preserves every wiki token and front-matter key; metadata
@@ -622,7 +628,7 @@ These are required future fixture gates, not implementation results.
| A32 | Existing grant/restore controls and conversion metadata COUNTED | restore cannot revive grant, current Markdown or uncounted conversion event |
| A33 | Staging/archive/publish journal and operation readback | crash/sync at every boundary; pinned source until publish; post-push failure pending, not undone |
| A34 | Manifest order, typed index/links and format map | next_chapter never archive; draft scope retained; cross-universe/hybrid exclusions and R4/R5/R6 |
| A35 | Per-file fidelity, source history, human controls | all constructs/wiki/front matter preserved; no agent conversion; new DOCX has no Markdown precursor |
| A35 | Per-file fidelity, source history, human controls and missing-folder refusal | all constructs/wiki/front matter preserved; no agent conversion; new DOCX has no Markdown precursor |
Implementation acceptance includes exact schemas/parser fixtures, live project/universe
revocation probes, same-thread supporting writes, remote denial/failure, counted-event restore