green-scp81 is a system application that implements the SCP-81 protocol. It is built for the people who actually execute and govern that protocol: a Protocol Operator who starts runs, supplies the required inputs, and watches each run through to its result, and a Protocol Administrator who configures the protocol's parameters, audits previous runs, and resolves failed or blocked runs so operators can keep working.
The product intent is narrow and deliberate. This is not a general-purpose automation platform, a data-science workbench, or a monitoring suite. It is a single-purpose instrument: a Java 8 application whose job is to accept a protocol run request, execute the SCP-81 protocol sequence, expose the run's live state and final result, retain a durable history of runs, and let an administrator tune the parameters that govern execution. Everything in this document serves that intent.
The audience is technical. The interface is expected to read as instrumentation — dense, ordered, honest about state — rather than as a marketing surface.
green-scp81 is a first-party web application with a Java 8 backend. It owns its own identity: operators enroll themselves, administrators are provisioned, and both verify themselves on return before reaching protected protocol work. The application owns the durable state of protocol runs — their inputs, their progress, their results, and their history — and it owns the configured parameters that govern how the protocol executes.
The current delivery comprises eight pages: an anonymous Landing page that explains the SCP-81 system application and its run-management purpose; Login and Sign Up as the identity access surfaces; and five authenticated working surfaces — Dashboard, Start Run, Run Status, Run History, and Settings.
Two accepted human roles act on the system. The Protocol Operator initiates runs and monitors them to completion. The Protocol Administrator configures parameters and reviews run history. Both are authenticated users of the same application; the difference between them is which working surfaces they own, not a general permission matrix over shared state.
Delivery ownership. green-scp81 is delivered as a first-party application with custom UI and a first-party backend. The Java 8 runtime constraint is explicit and binding: the application is implemented in Java 8. The backend executes the SCP-81 protocol, persists run records and results, and stores the configured protocol parameters. No third-party protocol service, external execution provider, or headless-only delivery is accepted or implied.
Access ownership. The application owns identity. Because protocol runs are durable, resumable, and revisitable, and because a run's inputs, progress, and result must remain bound to the operator who started it, application-owned identity is indispensable rather than conventional. The anonymous entry boundary is the Landing page, which is reachable without identity and explains the product. Login and Sign Up are themselves anonymously reachable — a protected destination cannot own the interaction that establishes access to itself. Only after verification does the application expose the protected working surfaces: Dashboard, Start Run, Run Status, Run History, and Settings.
Role boundary. Self-service enrollment through Sign Up establishes a Protocol Operator. Administrative access is not self-service: it is established by invitation or provisioning, and the administrative surfaces (Run History and Settings) are restricted to the Protocol Administrator role. Start Run and Run Status are restricted to the Protocol Operator role. Dashboard is available to both authenticated roles and routes each to the work it owns.
Current and future boundary. Everything described in this document is current. No future-horizon capabilities were accepted in the authoritative requirement thread, and none are introduced here. The application does not include, and this document does not authorize, adjacent capabilities such as team collaboration, billing, external integrations, notification delivery, or general-purpose workflow authoring.
Not applicable. No reference directive in this project declares a content_source, so no source content inventory is rendered.
JAVA 8 RUNTIME · READY in uppercase micro-type. No run data, no account data, no personalized content.Start a run — a graphite control that routes an anonymous visitor into the identity boundary (Sign Up for a new operator, Login for a returning user). Read the protocol — a text link that scrolls to the protocol explanation and specification table on the same page.UNKNOWN state rather than a false READY. Recovery: the status strip retries on next page load; no user action is required.Execute control.Execute control at the end of the sequence; inline validation region.Execute remains unavailable until corrected; a submission failure renders an explicit message and preserves the entered inputs. Recovery: the operator corrects inputs and re-executes, or abandons the run; a failed submission never silently discards entered inputs.FR-01 — Implement the SCP-81 protocol as a system application. (explicit) As a Protocol Operator, I should be able to execute the SCP-81 protocol through the green-scp81 application rather than by hand, so that the protocol runs consistently and its results are recorded.
FR-02 — Implement the application in Java 8. (explicit) As a Protocol Administrator, I should have the application implemented in Java 8, so that it runs on the Java 8 runtime the project mandates.
FR-03 — Understand what the application does before committing to it. (required_inference) As an anonymous visitor, I should be able to read what the SCP-81 system application is, who it is for, and what it does with protocol runs, so that I can decide whether to enroll or log in.
UNKNOWN rather than a false READY.FR-04 — Enroll as a Protocol Operator. (required_inference) As a new Protocol Operator, I should be able to create my own account, so that I can start and monitor protocol runs without waiting to be provisioned.
FR-05 — Verify identity on return. (required_inference) As a returning Protocol Operator or Protocol Administrator, I should be able to verify my identity, so that I can reach my durable runs and configuration.
FR-06 — See protocol activity at a glance and reach the right work. (required_inference) As an authenticated user, I should see a summary of protocol activity and be routed to the work I own, so that I do not have to hunt for the right surface.
FR-07 — Enter the required inputs and start an SCP-81 run. (required_inference) As a Protocol Operator, I should enter the required inputs as a numbered procedure and execute the run, so that the protocol starts with the correct inputs.
Execute.Execute stays unavailable; a submission failure preserves the entered inputs and renders an explicit message.FR-08 — See the effective parameters before executing. (required_inference) As a Protocol Operator, I should see the parameter values that will govern my run before I execute it, so that I know what will actually run.
FR-09 — Watch a run's progress and read its result. (required_inference) As a Protocol Operator, I should watch my run's step-by-step progress and read its final result, so that I know whether the protocol completed and what it produced.
FR-10 — Return to a run later. (required_inference) As a Protocol Operator, I should be able to revisit a run after leaving it, so that I can check a long-running or completed run without restarting it.
FR-11 — Browse and review previous protocol runs. (required_inference) As a Protocol Administrator, I should browse and review previous runs, so that I can audit what executed, with what inputs, and with what outcome.
FR-12 — Configure the SCP-81 parameters. (required_inference) As a Protocol Administrator, I should edit the protocol's parameters in place, so that subsequent runs execute with the intended configuration.
FR-13 — Resolve failed or blocked runs. (required_inference) As a Protocol Administrator, I should be able to identify failed runs and the parameters that govern them, so that I can correct configuration and let operators keep executing.
Product context. The Protocol Operator is the person who actually runs the SCP-81 protocol. They come to green-scp81 with a specific run in mind: they know the inputs the protocol needs, they need the run to start correctly, and they need to know what happened. They are technical, they work in short focused sessions, and they judge the application by whether it tells them the truth about run state without making them dig.
Primary goal. Execute the SCP-81 protocol with the correct inputs and obtain a trustworthy result, without losing track of a run in progress.
Distinct accepted responsibilities. The operator enrolls themselves through Sign Up rather than waiting to be provisioned. They enter the required inputs as a numbered procedure on Start Run, review the effective parameter values that will govern the run, and execute it. They then own the run's lifecycle from their side: watching the ruled step timeline advance on Run Status, reading the elapsed-time readout, and reading the terminal result or the failure code. They can leave and return to a run later without restarting it.
Relevant inputs and decisions. The protocol inputs required by the run; the decision to execute or abandon a prepared run; the decision to re-execute after a failure.
Interactions with other accepted participants. The operator is the counterparty to the Protocol Administrator's configuration: the parameter values the administrator sets on Settings are the values the operator sees read-only on Start Run and that govern the operator's run. When a run fails, the operator's failure code and stopping step are the same facts the administrator reviews in Run History.
Observable success. A run reaches a terminal state with a recorded result; the operator can point to the run identifier, the completed timeline, and the result. On failure, the operator can point to the failure code and the step at which the run stopped.
Product context. The Protocol Administrator is responsible for the application's operational setup. They do not primarily execute runs; they govern the conditions under which runs execute and they answer for what happened afterwards. Their work is periodic and investigative: they tune parameters, then audit runs against those parameters.
Primary goal. Keep the SCP-81 configuration correct and be able to account for every run that has executed.
Distinct accepted responsibilities. The administrator's access is established by invitation or provisioning, not self-service. They own the parameter table on Settings, editing values in place and saving them so subsequent runs use the intended configuration. They own Run History: browsing and filtering previous runs, and reviewing a run's recorded inputs, effective parameters, step timeline, and outcome. When a run fails, they correlate the failure code and stopping step with the effective parameters recorded for that run, adjust configuration, and hand the operator back a working setup.
Relevant inputs and decisions. Parameter values and their units; the decision to apply or discard an edit; filter and sort criteria over run history; the judgement of whether a failure is a configuration problem.
Interactions with other accepted participants. The administrator's configuration decisions directly determine what the Protocol Operator sees on Start Run and what governs the operator's runs. The administrator reads the operator's runs in Run History, including which operator initiated each run, and resolves failures so the operator can re-execute.
Observable success. Saved parameter values are the effective values used by subsequent runs; the administrator can locate any previous run and state its inputs, effective parameters, and outcome.
JAVA 8 RUNTIME · READY.Start a run. Because they have no account, they are routed into the identity boundary at Sign Up.Execute remains unavailable.Execute control. The run is accepted and the operator is routed to Run Status for that run.Failure and recovery. If the run fails, Run Status renders the failure code and its legend in the failure region, and the timeline marks the step at which the run stopped. The page states that a failed run can be re-executed by starting a new run. The operator returns to Start Run, corrects the inputs, and executes again.
Failure and recovery. If the run's status cannot be retrieved, Run Status renders an explicit retrieval failure with a retry control. The operator retries; the run itself is unaffected. If the operator navigates to a run identifier that does not exist, an explicit not-found state renders with a route back to Dashboard.
Credential failure. If the credentials are rejected, Login renders an inline message that does not disclose which field was wrong, and the form remains populated except for the secret field. The operator corrects the entry and resubmits, or navigates to Sign Up.
Failure and recovery. If the save fails, an explicit message renders and the edited values remain in place so nothing is lost. The administrator corrects the offending row and saves again, or discards the edits to restore the last applied values. If no parameters are configured at all, the table states that runs will use application defaults.
Failure and recovery. If history cannot be loaded, an explicit failure message with a retry control replaces the table; retry reloads it. If a run's detail cannot be loaded, the same explicit failure and retry apply to the detail region.
The visual direction is authoritative for this project: Less, but better — a protocol instrument panel after Dieter Rams. The headline idea is that green-scp81 should read as a Braun control surface: trustworthy, dense but ordered, every control honest about its state, nothing decorative. The audience is technical, so the interface reads as instrumentation, not marketing.
| Role | Hex | Use |
|---|---|---|
| Background | #EDEAE3 | Warm off-white ground for every page. Never pure #FFFFFF. |
| Surface | #F7F5F0 | Paper-white panels, tables, and the run-state panel. |
| Text | #1B1B1A | Near-black graphite for all text. Never pure #000000. |
| Primary | #2B2B28 | Primary control colour; buttons read as machined controls, not brand chrome. |
| Accent | #E4571E | Braun orange. The single signal accent. |
| Muted | #8A867C | Labels, units, and secondary data. |
| Hairline | #D6D1C6 | 1px rules and table dividers. |
Accent discipline. Braun orange #E4571E is used only for live run state, the active run indicator, the active navigation indicator dot, and destructive or attention markers. It is never used for decoration, never as a background fill behind body text, and never as a general button colour. Contrast is high: graphite #1B1B1A on off-white #EDEAE3 is approximately 13:1; orange is used only on graphite or at large scale.
-0.01em, sentence case, large scale contrast.0.14em tracking — treated like engraved panel legends.Rounded-rectangle controls with 4px radii — no pills, no blobs. 1px hairline rules in #D6D1C6. Aligned label/value pairs throughout. A modular 12-column grid with visible 24px gutters. Status is shown as a small circular indicator plus a text label, never as a coloured badge alone. No shadows except one soft, low-spread elevation on the run-status panel.
A strict modular grid, asymmetric where data demands it. A persistent left rail (72px icon + label column) carries Dashboard / Start Run / Run History / Settings, with an orange indicator dot marking the active section. The main column is a stack of ruled sections. The Landing page is an editorial instrument sheet: a large left-aligned statement, a diagrammatic protocol schematic on the right, and a specification table below. Every page is a control surface — dense but ordered, with aligned label/value pairs and no empty hero padding.
Diagrammatic line art and protocol schematics drawn in 1.5px graphite strokes on off-white, plus a single technical illustration of the SCP-81 protocol sequence as a numbered flow. No stock photography, no illustration for its own sake, no 3D renders. Data is the imagery: ruled tables, gauges, and a state timeline.
The Landing page as an editorial instrument sheet.
The first screen is a split instrument sheet, not a centred SaaS hero. The left seven columns carry an oversized Archivo headline at 56–64px, flush left, reading "SCP-81, executed with discipline." Below it sits a single line of Fira Sans body copy and two honest controls: a graphite Start a run button and a text link Read the protocol. The right five columns carry a ruled, diagrammatic SCP-81 protocol schematic drawn in graphite hairlines on the off-white ground, with numbered nodes and a single Braun-orange indicator on the active node. The top-right corner carries a small live status strip reading JAVA 8 RUNTIME · READY in uppercase micro-type.
The schematic is a real diagram in the page, not an image: nodes and strokes are DOM/SVG, and the active node pulses once on load. Below the fold, a specification table presents the protocol's parameters and runtime facts as aligned label/value pairs with tabular numerals and engraved uppercase legends.
There is no gradient, no blob, no floating card, and no blue button. The page recomposes only accepted content — the protocol explanation, the numbered sequence, the runtime fact, and the two routes into the identity boundary — into a form that reads as a specification sheet for a protocol instrument.
Interaction Model: Static Motion Tempo: restrained Hero Dimensionality: flat
Read the protocol — scrolls the sheet to the specification table below. The outcome is that the visitor has read the protocol sequence and its specification and is positioned at the two routes into the identity boundary. No accepted behaviour is invented; the schematic depicts the protocol the application executes.Start a run control and the Read the protocol text link. Right five columns: the ruled schematic with numbered nodes and the orange active-node indicator. Top-right: the uppercase micro-type status strip. Everything is present in the first frame; nothing animates in from off-screen.prefers-reduced-motion, the active node's pulse is suppressed entirely and the orange indicator renders as a static mark. All other content is unchanged, because nothing else moves.Run progress motion. Run progress is a determinate horizontal rule that fills, paired with a counting numeric readout in tabular figures. When a run enters a new state, its indicator colour and legend text flip in place. Scroll reveals nothing decorative — sections are simply present.
NFR-01 — Java 8 runtime. (explicit) The application is implemented in Java 8 and runs on a Java 8 runtime. This is a hard, source-stated constraint and is not substitutable. Rationale: the authoritative requirement thread names Java 8 explicitly.
NFR-02 — Durable run state. (required_inference) Protocol runs, their inputs, their effective parameters, their progress, and their results are persisted durably so that a run can be revisited after the operator leaves the page and so that history survives across sessions. Rationale: Run Status is explicitly revisitable and Run History explicitly retains previous runs; neither is usable without durable storage.
NFR-03 — Actor-bound run ownership. (required_inference) A run's inputs, progress, and result remain bound to the operator who started it, and the application verifies identity before exposing protected run state. Rationale: durable, resumable, actor-specific state requires continuity of identity; without it, a returning operator could not be shown their own run.
NFR-04 — Role-scoped working surfaces. (required_inference) Start Run and Run Status are reachable only by an authenticated Protocol Operator; Run History and Settings are reachable only by an authenticated Protocol Administrator; Dashboard is reachable by both. Rationale: the accepted page contract assigns these surfaces to these roles, and administrative configuration and audit are not operator work.
NFR-05 — Honest state reporting. (required_inference) Every state the application reports — run state, runtime status, parameter values, save outcome — reflects the actual state, and an unresolvable state is reported as unknown or failed rather than as a success. Rationale: the product's purpose is trustworthy protocol execution; a false READY or a silently discarded edit would defeat it.
NFR-06 — No decorative motion. (direction) Motion is limited to 120ms state transitions, the determinate progress rule, and the single hero pulse. No parallax, marquees, particles, or scroll-jacking. Rationale: the authoritative creative direction specifies instant, mechanical feedback and forbids decorative animation.
NFR-07 — Accessible contrast and non-colour-only status. (direction) Text contrast is high (graphite on off-white ≈ 13:1). Status is conveyed by a circular indicator plus a text label, never by colour alone. Rationale: the creative direction requires it, and it is necessary for the run-state indicators to be readable.
Constraints (binding).
Assumptions (narrow, labeled).
Explicitly out of scope. No future-horizon capabilities were accepted. This document does not authorize team collaboration, billing, external integrations, notification delivery, general-purpose workflow authoring, or any capability beyond executing, observing, auditing, and configuring the SCP-81 protocol.

green-scp81 accepts a run request, executes the SCP-81 protocol sequence and keeps every run’s inputs, progress and result on record.
green-scp81 is a single-purpose system application for the SCP-81 protocol, implemented in Java 8.
It is built for the people who execute and govern the protocol: a Protocol Operator who starts runs, supplies the required inputs, and watches each run through to its result, and a Protocol Administrator who configures the protocol’s parameters, audits previous runs, and resolves failed or blocked runs so operators can keep working. The product intent is narrow and deliberate. This is not a general-purpose automation platform, a data-science workbench, or a monitoring suite. It is a single-purpose instrument whose job is to accept a protocol run request, execute the SCP-81 protocol sequence, expose the run’s live state and final result, retain a durable history of runs, and let an administrator tune the parameters that govern execution.
A run is a durable record. When an operator submits a run request, the application accepts it and begins the SCP-81 sequence; while the sequence is executing, the run’s live state is available to the operator, and when it ends, its final result or failure code is retained alongside the inputs that produced it. Because runs remain revisitable after they complete, the history is not a transient log — it is the record the administrator audits and the operator consults when a result needs to be understood.
The protocol executes as a fixed sequence of five numbered steps. Every run passes through them in order; the application reports the run’s position in that sequence and, when it ends, the outcome of the final step.
The parameters that govern execution are held by the application, not by the operator, and the Protocol Administrator tunes them. Every run resolves the effective parameters in force at the moment it starts, so a change to a parameter affects subsequent runs without altering the record of runs already executed.
3 accepted responsibilities · access by invitation or provisioning
| Runtime | Java 8 |
|---|---|
| Implementation language | Java 8 |
| Storage | Durable relational store |
| Deployment | Docker with docker-compose |
| Orchestration | Not required |

green-scp81 accepts a run request, executes the SCP-81 protocol sequence and keeps every run’s inputs, progress and result on record.
green-scp81 is a single-purpose system application for the SCP-81 protocol, implemented in Java 8.
It is built for the people who execute and govern the protocol: a Protocol Operator who starts runs, supplies the required inputs, and watches each run through to its result, and a Protocol Administrator who configures the protocol’s parameters, audits previous runs, and resolves failed or blocked runs so operators can keep working. The product intent is narrow and deliberate. This is not a general-purpose automation platform, a data-science workbench, or a monitoring suite. It is a single-purpose instrument whose job is to accept a protocol run request, execute the SCP-81 protocol sequence, expose the run’s live state and final result, retain a durable history of runs, and let an administrator tune the parameters that govern execution.
A run is a durable record. When an operator submits a run request, the application accepts it and begins the SCP-81 sequence; while the sequence is executing, the run’s live state is available to the operator, and when it ends, its final result or failure code is retained alongside the inputs that produced it. Because runs remain revisitable after they complete, the history is not a transient log — it is the record the administrator audits and the operator consults when a result needs to be understood.
The protocol executes as a fixed sequence of five numbered steps. Every run passes through them in order; the application reports the run’s position in that sequence and, when it ends, the outcome of the final step.
The parameters that govern execution are held by the application, not by the operator, and the Protocol Administrator tunes them. Every run resolves the effective parameters in force at the moment it starts, so a change to a parameter affects subsequent runs without altering the record of runs already executed.
3 accepted responsibilities · access by invitation or provisioning
| Runtime | Java 8 |
|---|---|
| Implementation language | Java 8 |
| Storage | Durable relational store |
| Deployment | Docker with docker-compose |
| Orchestration | Not required |
No comments yet. Be the first!