Skip to content

T8 14/14: web-app create-vs-revise rework + final QA polish - #71

Open
mzargham wants to merge 2 commits into
t8/13-licensing-attestationfrom
t8/14-app-rework-final
Open

T8 14/14: web-app create-vs-revise rework + final QA polish#71
mzargham wants to merge 2 commits into
t8/13-licensing-attestationfrom
t8/14-app-rework-final

Conversation

@mzargham

@mzargham mzargham commented Aug 3, 2026

Copy link
Copy Markdown
Member

Purpose: the QA run's identity/content split: the record form gains create-vs-revise modes; identity (kind, slug, mapping placement) is picked and locked in revise mode, content is freely editable and prefilled; roomy statement field; flow-ordered actions; a live 'N staged, uncommitted' banner. Plus the post-remediation LARP re-probe's wording fixes (dead /rules pointer, tier explanations, no env vars on public surfaces) and the run folder's remediation ledger.

With this PR the stack is complete: the tree equals the original integration branch head plus the two CI fixes (workflow extras, archival-artifact lint exclude).

Part of the T8 stack (see the stack map on the closed #57). Merge in order; delete the head branch on merge so GitHub retargets the next PR to main. Every PR's tip passes the full CI recipe (ruff, mypy strict, pytest) on its own.

Closes #56
Closes #51

🤖 Generated with Claude Code

mzargham and others added 2 commits August 2, 2026 20:30
…te; staged-count banner

Live-QA 2026-08-02 @ bb2d4a7, decision D5: 'we need a separation between
authoring triples and the contextual model metadata that is authored once.' The
record form now has two modes. Create types the identity (kind, slug, mapping).
Revise PICKS an existing record from the session view, locks its placement,
prefills its content from the graph, and submits cds_edit, so a slug is never
an editable text box on an existing record. The Statement field is a real
textarea (120px), inputs are wide, the identity and content blocks are labeled,
and the action buttons follow the flow (stage, verify, compile, commit). The
app header carries a live 'N staged, uncommitted' banner with the plain staging
note (Step-2 durability observation). Widget tests now run in this environment
(app extra synced; ipywidgets skip-gate no longer masks them).

Refs: #56, #51 (QA D5/S4)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Second LARP pass (persona under override pressure, public HTTP surface only,
post-remediation): the reviewer boundary held against 13 bypass attempts
(invented args 422, headers/query ignored, waiver does not touch the role gate)
and the persona took the legitimate path the refusal names. Residual findings
were all wording, fixed here: the waive help no longer points at a /rules route
this service does not serve (pass an unknown rule to list them; the oracle
service describes them); tier vocabulary (T1/T2/T3) is explained where used;
cds_edit drops copy-on-write implementation speak; the /chat 503 no longer
names server env vars on a public surface; 'mapping' and 'synthesis' are
declared synonyms at the field that needs both; SynthesisWithoutNeeds spells
out 'integrated set of needs' and the authoring next step; the staging note no
longer implies compile persists anything. Specs regenerated. Also: decisions.md
gains D6 (the S1 resolution) and per-decision fix commits; findings.md gains
the remediation ledger mapping every finding to its commit.

Live re-checks this pass: Sphinx builds; scored eval vs local qwen2.5:7b now
2/3 (was 1/3 pre-B4; no-fabrication bait passes; the remaining miss is
model-capability need-form self-conversion).

Refs: #51, #50, #49

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant