# Community workflow — local learner rehearsal

21 September 2026. Followed the community course in the existing isolated learner organization, using Studio on port 3101 and AppEngine on port 3311. Member actions used the course’s developer lab with three fictional customers. No production deployment or real-member messaging occurred.

## Passed in the running application

- Created and reopened Tutorial Cedar & Form Studio Circle; public, open joining, members posting, flagged-only moderation.
- Registered Zara, Kofi and Sam once. A page post before joining returned 403. All three joined; Studio showed three members.
- Zara posted the question and uploaded the actual lesson sketch. Kofi replied; the insightful reaction toggled added/removed/added. Studio showed the image and one comment/reaction.
- Meeting creation before connection returned 403. Kofi requested the connection, Zara accepted, and a proposed meeting then saved. Zara’s direct message saved.
- Reporting Sam blocked his message to Zara. A duplicate pending report was rejected.
- Feed Flag left the post readable. Remove produced a member 404 and removed it from the feed. Restore made it readable again.
- The poll accepted Timber once and rejected a second choice with Already voted. Kofi followed Zara.
- The corrected announcement picker selected the actual page ID. A draft saved and reopened with its title, page, Normal priority, All audience and Draft status. Publication and push delivery are not claimed.

## Application repairs verified locally

**Report removal:** previously Remove Content saved only an action label. Studio now loads the referenced post, checks it belongs to the reported member, removes it, then resolves the report. Missing context, an unrelated author, or a failed content save leaves the report unresolved. Retrying after the post was already removed can finish the report save. These remain two application saves, not a database transaction.

**Review consistency:** Studio writes both report representations; the API also recognizes older nested Studio review statuses. A new report after an earlier reviewed report succeeded. After the repaired Remove Content action, the member direct request returned 404 and the page feed excluded the post.

**Decision labels:** Record Warning and Record Ban Decision accurately describe recorded decisions. They do not claim an actual warning was sent or an account suspended. The application now states this beside the controls.

**Multiple pages:** membership names include page and email instead of just email. A member already in Studio Circle joined a second page without the reproduced unique-name error. Existing memberships remain readable; no migration or deletion was performed. The separate approval-policy problem below remains open.

**Announcement selector:** corrected the nested title display and converted the selected record to its ID; missing selection is rejected. New records explicitly default to Draft. The saved draft’s ID and readable page title survived reopening.

## Evidence

![Saved member conversation](assets/community-post-detail.png)

![Report action after the repair](assets/community-report-fixed.png)

![Announcement draft persisted with its page](assets/community-announcement-saved.png)

[44 recorded live checks and observations](assets/community-live-proof.json). Seven frontend regression tests and three backend regression tests passed. Full backend compilation passed. The UI package typecheck reports existing errors elsewhere, including notifications-list and stories-list; it reports none in the modified report/announcement files. The initial command used the workspace compiler and failed parsing installed type definitions; the package compiler completed its diagnostic run. This is not a clean whole-UI typecheck. Browser verification used the running source.

## Still open

Private page details and their posts are anonymously readable. After selecting and saving the exact UI values Approval Required, Admins Only and Pre-Approve, a fresh page membership for Sam became active immediately, his post succeeded, and its anonymous direct read returned 200. The public exercise must not be promoted as a confidential community.

One early diagnostic request used unsupported approval/admins strings. Its evidence is explicitly marked invalid for the policy conclusion. The later UI-selected values, saved readback and separate Sam request establish the actual failure.

Hashtags display a generated record name instead of materials. Warning delivery, actual account suspension, story expiry, badge awards, group chat, push delivery and a deployed member UI have not been verified. The course’s public workflow now has substantial live evidence; these findings are not being erased to inflate completion.
