317 lines
18 KiB
Markdown
317 lines
18 KiB
Markdown
---
|
|
schema_version: 1
|
|
open_count: 14
|
|
waived_count: 0
|
|
fixed_count: 7
|
|
total_count: 21
|
|
last_updated: 2026-10-10T14:17:06.621Z
|
|
---
|
|
|
|
# Broken Windows Ledger
|
|
|
|
> Cross-phase defect register. With `workflow.windows_enforce` enabled, `/msd-ship` blocks while `open_count > 0`.
|
|
> Waive with `msd-tools windows waive <id> "<reason>"` (reason required).
|
|
> Mark fixed with `msd-tools windows fixed <id>`.
|
|
|
|
| id | phase | kind | file | line | description | status | reason | recorded_at | resolved_at |
|
|
|----|-------|------|------|------|-------------|--------|--------|-------------|-------------|
|
|
| 1 | 09 | deviation | plugins/golem15/fonoteka/routes_cors_test.go | | Admin test secret also set on bootConfigWithHTTP and testConfigCORS so router assembly keeps failing closed | fixed | | 2026-09-24T15:22:55.173Z | 2026-09-24T15:23:23.945Z |
|
|
| 2 | 10 | stub | admin/src/app/i18n.ts | | t() returns backend::lang keys until the bundle is served (10-02) and loaded (10-03); SPA copy renders raw keys | fixed | | 2026-09-27T13:36:35.976Z | 2026-09-27T15:01:16.955Z |
|
|
| 3 | 10 | stub | admin/src/views/ListView.vue | | read-only tracer list without search, sort, paging or row links; full list screens in 10-03 | fixed | | 2026-09-27T13:36:36.179Z | 2026-09-27T15:01:17.178Z |
|
|
| 4 | 10 | stub | admin/src/components/form/registry.ts | | relation-manager is not registered; the Collections editors tab renders the unsupported-field box until the relation manager lands in 10-04 | fixed | | 2026-09-27T15:01:12.833Z | 2026-09-27T15:27:25.933Z |
|
|
| 5 | 10 | deviation | scripts/check-phase10.sh | | check-phase10.sh --go allow-lists exactly the two pre-existing fonoteka parity failures (TestMigrateSeedsCanonicalGenres, TestSchemaMatchesPHPSnapshot; deferred-items.md) and refuses once they pass; fix belongs to a Phase 9 follow-up | open | | 2026-09-27T16:22:23.140Z | |
|
|
| 6 | 10.1 | stub | plugins/golem15/fonoteka/controllers/albums_admin_controller.go | 71 | fonoteka.go: discogsLookup widget action is a D-02 stub answering fixed fill {year: 1977, format: LP}; Phase 14 replaces it with the Discogs client | open | | 2026-09-29T00:27:32.945Z | |
|
|
| 7 | 10.1 | stub | plugins/golem15/fonoteka/controllers/albums_admin_controller.go | 82 | fonoteka.go: discogsSync toolbar action is a D-02 stub answering stub_not_implemented and changing nothing; Phase 14 replaces it with the Discogs sync | open | | 2026-09-29T00:27:33.153Z | |
|
|
| 8 | 11 | skipped-test | parity/broadcast_goldens_test.go | | fonoteka.go: TestBroadcastGoldens/created and /updated t.Skip as pending; Phase 12 turns the recorded PHP created/updated goldens into assertions (album subtree, literal created_at/updated_at and artist id handling) | open | | 2026-09-30T11:32:37.302Z | |
|
|
| 9 | 12.1 | stub | admin/src/components/form/RecordActions.vue | | RecordActions.vue is built and tested but not mounted; plan 12.1-02 mounts it in the preview footer, until then meta.actions is served and no screen shows the buttons | fixed | | 2026-10-04T21:55:30.405Z | 2026-10-05T10:41:16.319Z |
|
|
| 10 | 12.1 | unmet-truth | .planning/phases/12.1-user-plugin-admin-screens/deferred-items.md | | fonoteka.go: four application tests pin lists the user plugin's admin work changes (TestAdminMetadataFiltering nav list, TestHiddenNeverMarshals user model count, parity TestMigrateSeedsCanonicalGenres and TestRollbackLastIsolatesFonoteka migration ids); with the two from plan 12.1-02 they keep plan 12.1-03's application verify red until plan 12.1-04 updates them | fixed | | 2026-10-05T11:31:36.781Z | 2026-10-05T12:07:04.853Z |
|
|
| 11 | 16.1 | unrun-verify | modules/cabana/query_relation_test.go | | TestListRelationSearchPostgres not run here (no Docker); run go test -count=1 ./modules/cabana on a Docker host before /msd-verify-work | open | | 2026-10-09T20:51:22.934Z | |
|
|
| 12 | 16.1 | unrun-verify | .planning/phases/16.1-journal-admin-urgent-fixes-relation-search-list-state-post-f/16.1-VALIDATION.md | | sm-journal-plugin TestPostsAdminResaveKeepsHTML (posts_admin_smoke_test.go) not run here (no Docker); run go -C ../sm-journal-plugin test -count=1 ./... on a Docker host before /msd-verify-work | open | | 2026-10-09T20:51:27.671Z | |
|
|
| 13 | 16.2 | deviation | tests/blogeditor/fixtures/imported-post.html | | sm-journal-plugin: 16.2-02 imported-post fixture is synthetic (same structure as the export post) because reading the journal export was refused by the environment's PII classifier; swap in the real export content if wanted | open | | 2026-10-10T09:54:57.288Z | |
|
|
| 14 | 16.2 | unrun-verify | plugin_test.go | | sm-journal-plugin: TestJournalSVGEmbed now asserts AdminFS embeds assets/dist/blogeditor.js and .css; the root package TestMain needs Docker, so it was not run here; run go -C ../sm-journal-plugin test -count=1 . on a Docker host (plan 06) | open | | 2026-10-10T09:54:57.583Z | |
|
|
| 15 | 16.2 | unrun-verify | .planning/phases/16.2-plugin-provided-field-types-and-the-blog-editor-formwidget/16.2-03-PLAN.md | | sm-journal-plugin posts_admin_smoke_test.go: TestPostsFormCompiles, TestPostsAdminCreateSmoke, TestPostsAdminResaveKeepsHTML, TestPostsAdminSaveSanitizesHTML compile under go vet but need a Docker host (plan 06) | open | | 2026-10-10T10:12:10.725Z | |
|
|
| 16 | 16.2 | unrun-verify | .planning/phases/16.2-plugin-provided-field-types-and-the-blog-editor-formwidget/16.2-03-PLAN.md | | sm-journal-plugin journal_api_categories_test.go TestCategoriesAdminContent (strip assertions) and journal_api_task3_test.go media upload route tests after the StoreMedia refactor need a Docker host (plan 06) | open | | 2026-10-10T10:12:10.986Z | |
|
|
| 17 | 16.2 | unmet-truth | .planning/phases/16.2-plugin-provided-field-types-and-the-blog-editor-formwidget/16.2-05-SUMMARY.md | | 16.2-05 D-03 on an HTML post unproven on UAT: post 1 (HTML_POST) was not written after RESTART_TS (updated_at still 2026-10-09), so posts-unchanged passed vacuously for it; a human must re-save post 1 untouched and the SELECT be re-run | fixed | | 2026-10-10T11:35:56.721Z | 2026-10-10T12:04:50.783Z |
|
|
| 18 | 16.2 | unmet-truth | .planning/phases/16.2-plugin-provided-field-types-and-the-blog-editor-formwidget/16.2-05-SUMMARY.md | | 16.2-05 D-19 human check pending: a one-word category edit in the Blog Editor saves without a removal notice and shows on the site; post 1 source tab shows the stored HTML unchanged | open | | 2026-10-10T11:35:56.955Z | |
|
|
| 19 | 16.2 | todo | .planning/phases/16.2-plugin-provided-field-types-and-the-blog-editor-formwidget/16.2-05-SUMMARY.md | | 16.2-05 UAT root step: install the staging vhost with frame-src https://www.youtube-nocookie.com, nginx -t and reload; unpublish or delete test post uat-16-2-blog-editor (id 105) | open | | 2026-10-10T11:35:57.234Z | |
|
|
| 20 | 16.2 | unrun-verify | modules/cabana/field_type_postgres_test.go | | 16.2-06 TestFieldTypeSavePostgres (real-database save, show, untouched and refused update, upload in and out of scope) compiles under go vet but needs a Docker host; run bash scripts/check-phase16.2.sh postgres | open | | 2026-10-10T14:17:06.378Z | |
|
|
| 21 | 16.2 | unrun-verify | .planning/phases/16.2-plugin-provided-field-types-and-the-blog-editor-formwidget/16.2-06-PLAN.md | | sm-journal-plugin: 16.2-06 TestCategoriesAdminBlogEditor (categories_admin_editor_test.go) and the rewritten three-stage TestPostsAdminResaveKeepsHTML compile under go vet but need a Docker host; run bash scripts/check-phase16.2.sh postgres | open | | 2026-10-10T14:17:06.621Z | |
|
|
|
|
````json
|
|
[
|
|
{
|
|
"id": 1,
|
|
"kind": "deviation",
|
|
"phase": "09",
|
|
"file": "plugins/golem15/fonoteka/routes_cors_test.go",
|
|
"line": null,
|
|
"description": "Admin test secret also set on bootConfigWithHTTP and testConfigCORS so router assembly keeps failing closed",
|
|
"status": "fixed",
|
|
"reason": "",
|
|
"recorded_at": "2026-09-24T15:22:55.173Z",
|
|
"resolved_at": "2026-09-24T15:23:23.945Z",
|
|
"milestone": "v1.0"
|
|
},
|
|
{
|
|
"id": 2,
|
|
"kind": "stub",
|
|
"phase": "10",
|
|
"file": "admin/src/app/i18n.ts",
|
|
"line": null,
|
|
"description": "t() returns backend::lang keys until the bundle is served (10-02) and loaded (10-03); SPA copy renders raw keys",
|
|
"status": "fixed",
|
|
"reason": "",
|
|
"recorded_at": "2026-09-27T13:36:35.976Z",
|
|
"resolved_at": "2026-09-27T15:01:16.955Z",
|
|
"milestone": "v1.0"
|
|
},
|
|
{
|
|
"id": 3,
|
|
"kind": "stub",
|
|
"phase": "10",
|
|
"file": "admin/src/views/ListView.vue",
|
|
"line": null,
|
|
"description": "read-only tracer list without search, sort, paging or row links; full list screens in 10-03",
|
|
"status": "fixed",
|
|
"reason": "",
|
|
"recorded_at": "2026-09-27T13:36:36.179Z",
|
|
"resolved_at": "2026-09-27T15:01:17.178Z",
|
|
"milestone": "v1.0"
|
|
},
|
|
{
|
|
"id": 4,
|
|
"kind": "stub",
|
|
"phase": "10",
|
|
"file": "admin/src/components/form/registry.ts",
|
|
"line": null,
|
|
"description": "relation-manager is not registered; the Collections editors tab renders the unsupported-field box until the relation manager lands in 10-04",
|
|
"status": "fixed",
|
|
"reason": "",
|
|
"recorded_at": "2026-09-27T15:01:12.833Z",
|
|
"resolved_at": "2026-09-27T15:27:25.933Z",
|
|
"milestone": "v1.0"
|
|
},
|
|
{
|
|
"id": 5,
|
|
"kind": "deviation",
|
|
"phase": "10",
|
|
"file": "scripts/check-phase10.sh",
|
|
"line": null,
|
|
"description": "check-phase10.sh --go allow-lists exactly the two pre-existing fonoteka parity failures (TestMigrateSeedsCanonicalGenres, TestSchemaMatchesPHPSnapshot; deferred-items.md) and refuses once they pass; fix belongs to a Phase 9 follow-up",
|
|
"status": "open",
|
|
"reason": "",
|
|
"recorded_at": "2026-09-27T16:22:23.140Z",
|
|
"resolved_at": null,
|
|
"milestone": "v1.0"
|
|
},
|
|
{
|
|
"id": 6,
|
|
"kind": "stub",
|
|
"phase": "10.1",
|
|
"file": "plugins/golem15/fonoteka/controllers/albums_admin_controller.go",
|
|
"line": 71,
|
|
"description": "fonoteka.go: discogsLookup widget action is a D-02 stub answering fixed fill {year: 1977, format: LP}; Phase 14 replaces it with the Discogs client",
|
|
"status": "open",
|
|
"reason": "",
|
|
"recorded_at": "2026-09-29T00:27:32.945Z",
|
|
"resolved_at": null,
|
|
"milestone": "v1.0"
|
|
},
|
|
{
|
|
"id": 7,
|
|
"kind": "stub",
|
|
"phase": "10.1",
|
|
"file": "plugins/golem15/fonoteka/controllers/albums_admin_controller.go",
|
|
"line": 82,
|
|
"description": "fonoteka.go: discogsSync toolbar action is a D-02 stub answering stub_not_implemented and changing nothing; Phase 14 replaces it with the Discogs sync",
|
|
"status": "open",
|
|
"reason": "",
|
|
"recorded_at": "2026-09-29T00:27:33.153Z",
|
|
"resolved_at": null,
|
|
"milestone": "v1.0"
|
|
},
|
|
{
|
|
"id": 8,
|
|
"kind": "skipped-test",
|
|
"phase": "11",
|
|
"file": "parity/broadcast_goldens_test.go",
|
|
"line": null,
|
|
"description": "fonoteka.go: TestBroadcastGoldens/created and /updated t.Skip as pending; Phase 12 turns the recorded PHP created/updated goldens into assertions (album subtree, literal created_at/updated_at and artist id handling)",
|
|
"status": "open",
|
|
"reason": "",
|
|
"recorded_at": "2026-09-30T11:32:37.302Z",
|
|
"resolved_at": null,
|
|
"milestone": "v1.0"
|
|
},
|
|
{
|
|
"id": 9,
|
|
"kind": "stub",
|
|
"phase": "12.1",
|
|
"file": "admin/src/components/form/RecordActions.vue",
|
|
"line": null,
|
|
"description": "RecordActions.vue is built and tested but not mounted; plan 12.1-02 mounts it in the preview footer, until then meta.actions is served and no screen shows the buttons",
|
|
"status": "fixed",
|
|
"reason": "",
|
|
"recorded_at": "2026-10-04T21:55:30.405Z",
|
|
"resolved_at": "2026-10-05T10:41:16.319Z",
|
|
"milestone": "v1.0"
|
|
},
|
|
{
|
|
"id": 10,
|
|
"kind": "unmet-truth",
|
|
"phase": "12.1",
|
|
"file": ".planning/phases/12.1-user-plugin-admin-screens/deferred-items.md",
|
|
"line": null,
|
|
"description": "fonoteka.go: four application tests pin lists the user plugin's admin work changes (TestAdminMetadataFiltering nav list, TestHiddenNeverMarshals user model count, parity TestMigrateSeedsCanonicalGenres and TestRollbackLastIsolatesFonoteka migration ids); with the two from plan 12.1-02 they keep plan 12.1-03's application verify red until plan 12.1-04 updates them",
|
|
"status": "fixed",
|
|
"reason": "",
|
|
"recorded_at": "2026-10-05T11:31:36.781Z",
|
|
"resolved_at": "2026-10-05T12:07:04.853Z",
|
|
"milestone": "v1.0"
|
|
},
|
|
{
|
|
"id": 11,
|
|
"kind": "unrun-verify",
|
|
"phase": "16.1",
|
|
"file": "modules/cabana/query_relation_test.go",
|
|
"line": null,
|
|
"description": "TestListRelationSearchPostgres not run here (no Docker); run go test -count=1 ./modules/cabana on a Docker host before /msd-verify-work",
|
|
"status": "open",
|
|
"reason": "",
|
|
"recorded_at": "2026-10-09T20:51:22.934Z",
|
|
"resolved_at": null,
|
|
"milestone": "v1.0"
|
|
},
|
|
{
|
|
"id": 12,
|
|
"kind": "unrun-verify",
|
|
"phase": "16.1",
|
|
"file": ".planning/phases/16.1-journal-admin-urgent-fixes-relation-search-list-state-post-f/16.1-VALIDATION.md",
|
|
"line": null,
|
|
"description": "sm-journal-plugin TestPostsAdminResaveKeepsHTML (posts_admin_smoke_test.go) not run here (no Docker); run go -C ../sm-journal-plugin test -count=1 ./... on a Docker host before /msd-verify-work",
|
|
"status": "open",
|
|
"reason": "",
|
|
"recorded_at": "2026-10-09T20:51:27.671Z",
|
|
"resolved_at": null,
|
|
"milestone": "v1.0"
|
|
},
|
|
{
|
|
"id": 13,
|
|
"kind": "deviation",
|
|
"phase": "16.2",
|
|
"file": "tests/blogeditor/fixtures/imported-post.html",
|
|
"line": null,
|
|
"description": "sm-journal-plugin: 16.2-02 imported-post fixture is synthetic (same structure as the export post) because reading the journal export was refused by the environment's PII classifier; swap in the real export content if wanted",
|
|
"status": "open",
|
|
"reason": "",
|
|
"recorded_at": "2026-10-10T09:54:57.288Z",
|
|
"resolved_at": null,
|
|
"milestone": "v1.0"
|
|
},
|
|
{
|
|
"id": 14,
|
|
"kind": "unrun-verify",
|
|
"phase": "16.2",
|
|
"file": "plugin_test.go",
|
|
"line": null,
|
|
"description": "sm-journal-plugin: TestJournalSVGEmbed now asserts AdminFS embeds assets/dist/blogeditor.js and .css; the root package TestMain needs Docker, so it was not run here; run go -C ../sm-journal-plugin test -count=1 . on a Docker host (plan 06)",
|
|
"status": "open",
|
|
"reason": "",
|
|
"recorded_at": "2026-10-10T09:54:57.583Z",
|
|
"resolved_at": null,
|
|
"milestone": "v1.0"
|
|
},
|
|
{
|
|
"id": 15,
|
|
"kind": "unrun-verify",
|
|
"phase": "16.2",
|
|
"file": ".planning/phases/16.2-plugin-provided-field-types-and-the-blog-editor-formwidget/16.2-03-PLAN.md",
|
|
"line": null,
|
|
"description": "sm-journal-plugin posts_admin_smoke_test.go: TestPostsFormCompiles, TestPostsAdminCreateSmoke, TestPostsAdminResaveKeepsHTML, TestPostsAdminSaveSanitizesHTML compile under go vet but need a Docker host (plan 06)",
|
|
"status": "open",
|
|
"reason": "",
|
|
"recorded_at": "2026-10-10T10:12:10.725Z",
|
|
"resolved_at": null,
|
|
"milestone": "v1.0"
|
|
},
|
|
{
|
|
"id": 16,
|
|
"kind": "unrun-verify",
|
|
"phase": "16.2",
|
|
"file": ".planning/phases/16.2-plugin-provided-field-types-and-the-blog-editor-formwidget/16.2-03-PLAN.md",
|
|
"line": null,
|
|
"description": "sm-journal-plugin journal_api_categories_test.go TestCategoriesAdminContent (strip assertions) and journal_api_task3_test.go media upload route tests after the StoreMedia refactor need a Docker host (plan 06)",
|
|
"status": "open",
|
|
"reason": "",
|
|
"recorded_at": "2026-10-10T10:12:10.986Z",
|
|
"resolved_at": null,
|
|
"milestone": "v1.0"
|
|
},
|
|
{
|
|
"id": 17,
|
|
"kind": "unmet-truth",
|
|
"phase": "16.2",
|
|
"file": ".planning/phases/16.2-plugin-provided-field-types-and-the-blog-editor-formwidget/16.2-05-SUMMARY.md",
|
|
"line": null,
|
|
"description": "16.2-05 D-03 on an HTML post unproven on UAT: post 1 (HTML_POST) was not written after RESTART_TS (updated_at still 2026-10-09), so posts-unchanged passed vacuously for it; a human must re-save post 1 untouched and the SELECT be re-run",
|
|
"status": "fixed",
|
|
"reason": "",
|
|
"recorded_at": "2026-10-10T11:35:56.721Z",
|
|
"resolved_at": "2026-10-10T12:04:50.783Z",
|
|
"milestone": "v1.0"
|
|
},
|
|
{
|
|
"id": 18,
|
|
"kind": "unmet-truth",
|
|
"phase": "16.2",
|
|
"file": ".planning/phases/16.2-plugin-provided-field-types-and-the-blog-editor-formwidget/16.2-05-SUMMARY.md",
|
|
"line": null,
|
|
"description": "16.2-05 D-19 human check pending: a one-word category edit in the Blog Editor saves without a removal notice and shows on the site; post 1 source tab shows the stored HTML unchanged",
|
|
"status": "open",
|
|
"reason": "",
|
|
"recorded_at": "2026-10-10T11:35:56.955Z",
|
|
"resolved_at": null,
|
|
"milestone": "v1.0"
|
|
},
|
|
{
|
|
"id": 19,
|
|
"kind": "todo",
|
|
"phase": "16.2",
|
|
"file": ".planning/phases/16.2-plugin-provided-field-types-and-the-blog-editor-formwidget/16.2-05-SUMMARY.md",
|
|
"line": null,
|
|
"description": "16.2-05 UAT root step: install the staging vhost with frame-src https://www.youtube-nocookie.com, nginx -t and reload; unpublish or delete test post uat-16-2-blog-editor (id 105)",
|
|
"status": "open",
|
|
"reason": "",
|
|
"recorded_at": "2026-10-10T11:35:57.234Z",
|
|
"resolved_at": null,
|
|
"milestone": "v1.0"
|
|
},
|
|
{
|
|
"id": 20,
|
|
"kind": "unrun-verify",
|
|
"phase": "16.2",
|
|
"file": "modules/cabana/field_type_postgres_test.go",
|
|
"line": null,
|
|
"description": "16.2-06 TestFieldTypeSavePostgres (real-database save, show, untouched and refused update, upload in and out of scope) compiles under go vet but needs a Docker host; run bash scripts/check-phase16.2.sh postgres",
|
|
"status": "open",
|
|
"reason": "",
|
|
"recorded_at": "2026-10-10T14:17:06.378Z",
|
|
"resolved_at": null,
|
|
"milestone": "v1.0"
|
|
},
|
|
{
|
|
"id": 21,
|
|
"kind": "unrun-verify",
|
|
"phase": "16.2",
|
|
"file": ".planning/phases/16.2-plugin-provided-field-types-and-the-blog-editor-formwidget/16.2-06-PLAN.md",
|
|
"line": null,
|
|
"description": "sm-journal-plugin: 16.2-06 TestCategoriesAdminBlogEditor (categories_admin_editor_test.go) and the rewritten three-stage TestPostsAdminResaveKeepsHTML compile under go vet but need a Docker host; run bash scripts/check-phase16.2.sh postgres",
|
|
"status": "open",
|
|
"reason": "",
|
|
"recorded_at": "2026-10-10T14:17:06.621Z",
|
|
"resolved_at": null,
|
|
"milestone": "v1.0"
|
|
}
|
|
]
|
|
````
|