Skip to content

Commit f183871

Browse files
authored
Merge pull request #1366 from Brad-Edwards/fix/vale-docs-aws-dev-1365
docs: fix Vale prose errors in dev docs
2 parents 9bef34d + dbf1347 commit f183871

9 files changed

Lines changed: 33 additions & 33 deletions

docs/architecture/aces-catalog-package-boundary-preflight-1232.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# ACES Catalog And Scenario Package Boundary Preflight
22

33
Issue: GitHub #1232, "03 - ACES migration: design legacy-safe catalog and
4-
scenario package boundary".
4+
scenario package boundary."
55

66
Status: pre-implementation guidance.
77

docs/architecture/aces-catalog-readonly-presentation-preflight-1254.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# ACES Catalog Read-Only Presentation Preflight
22

33
Issue: GitHub #1254, "13 - ACES migration: expose read-only ACES catalog
4-
fields in CMS API and scenario editor".
4+
fields in CMS API and scenario editor."
55

66
Status: pre-implementation architecture guidance. This note does not implement
77
API endpoints, template changes, serializers, editor actions, ACES authoring,

docs/architecture/aces-operation-api-projections-preflight-1275.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# ACES Operation API Projections Preflight
22

33
Issue: GitHub #1275, "16 - ACES migration: expose read-only operation
4-
status and snapshot APIs".
4+
status and snapshot APIs."
55

66
Status: pre-implementation architecture guidance. This note does not implement
77
API routes, serializers, services, models, migrations, UI, or cleanup jobs, and
@@ -106,7 +106,7 @@ persistence/projection design:
106106
`shared.schemas.aces_operation` for record kind, contract kind/version,
107107
contract profile, digest, payload size, diagnostic key allowlists, and
108108
secret-pattern rejection. API code must still apply a response allowlist
109-
because "safe to persist internally" is not the same as "safe to return".
109+
because "safe to persist internally" is not the same as "safe to return."
110110
- Response redaction: responses exclude secrets, credential values, private
111111
keys, bearer tokens, token-bearing or presigned URLs, prompt bodies,
112112
generated scripts, command strings, terminal output, raw package bodies, CTF
@@ -115,7 +115,7 @@ persistence/projection design:
115115
- Error envelopes: canonical `/api/v1` errors use `shared.api.errors`.
116116
Legacy Mission Control compatibility, if touched, uses existing
117117
`MissionControlAPIView` legacy handling. Raw ACES/provider exceptions are
118-
sanitized into fixed messages such as "Operation status unavailable".
118+
sanitized into fixed messages such as "Operation status unavailable."
119119
- Observability: logs use `safe_log_value` for external-ish ids and include
120120
counts/statuses only. No payload dumps in application logs, request logs,
121121
test failure snapshots, OpenAPI examples, or audit records.

docs/architecture/aces-operation-sidecar-persistence-preflight-1273.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# ACES Operation Sidecar Persistence Preflight
22

33
Issue: GitHub #1273, "14 - ACES migration: implement operation
4-
receipt/status/snapshot persistence sidecar".
4+
receipt/status/snapshot persistence sidecar."
55

66
Status: pre-implementation architecture guidance. This note does not implement
77
models, migrations, APIs, event handlers, jobs, or UI projections, and it is

docs/architecture/aces-operation-status-range-event-preflight-1274.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# ACES Operation Status Range Event Projection Preflight
22

33
Issue: GitHub #1274, "15 - ACES migration: project operation status through
4-
range event handling".
4+
range event handling."
55

66
Status: pre-implementation architecture guidance. This note does not implement
77
models, migrations, adapters, event handlers, workers, APIs, or UI behavior.

docs/architecture/aces-operation-status-snapshot-projection-preflight-1234.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# ACES Operation Persistence And Range Projection Preflight
22

33
Issue: GitHub #1234, "05 - ACES migration: design operation, status,
4-
snapshot, and range projection persistence".
4+
snapshot, and range projection persistence."
55

66
Status: pre-implementation architecture guidance. This note does not implement
77
models, migrations, APIs, event handlers, or UI projections.

docs/architecture/gcp-range-cell-backend-preflight-1341.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# GCP Range-Cell Backend Preflight
22

3-
Issue: GitHub #1341, "Implement GCP range-cell provisioning backend".
3+
Issue: GitHub #1341, "Implement GCP range-cell provisioning backend."
44

55
This is requirement-free pre-implementation guidance. The GitHub issue title,
66
body, and acceptance criteria are the shipping contract. This note is not an

shifter/shifter_platform/documentation/docs/features/ctf-organizer-guide.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,12 @@ the plaintext flag is never persisted after creation.
4040

4141
Additional controls:
4242

43-
- **Release time** schedule a challenge to appear partway through the event.
44-
- **Prerequisite** lock a challenge until another is solved.
45-
- **Visibility** hide a challenge from the participant list until you release it.
46-
- **Target instance / port** point participants at the right host in their range.
47-
- **Files** upload challenge attachments.
48-
- **Hints** optional, point-reducing hints.
43+
- **Release time**: schedule a challenge to appear partway through the event.
44+
- **Prerequisite**: lock a challenge until another is solved.
45+
- **Visibility**: hide a challenge from the participant list until you release it.
46+
- **Target instance / port**: point participants at the right host in their range.
47+
- **Files**: upload challenge attachments.
48+
- **Hints**: optional, point-reducing hints.
4949

5050
A challenge can carry multiple flags (for multi-stage solves), each validated
5151
independently.
@@ -114,6 +114,6 @@ hour offsets you configure.
114114

115115
## See Also
116116

117-
- [CTF](ctf) the participant experience.
118-
- [CTF technical documentation](../technical/shifter_platform/ctf) models, services,
117+
- [CTF](ctf): the participant experience.
118+
- [CTF technical documentation](../technical/shifter_platform/ctf): models, services,
119119
scheduling, and range provisioning.

shifter/shifter_platform/documentation/docs/technical/shifter_platform/ctf.md

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
Capture-the-flag is a Django app (`ctf`) layered on the platform's range system. It
44
owns event/challenge/scoring data and orchestrates a dedicated range per participant
5-
by calling the existing CMS range services it does not introduce a second
5+
by calling the existing CMS range services; it does not introduce a second
66
provisioning path.
77

88
## Responsibility
@@ -53,24 +53,24 @@ challenge creation, and submission checking compares against the hash.
5353
Business logic lives under `ctf.services` (views stay thin):
5454

5555
- `event`, `challenge`, `flag`, `bracket`, `hint`, `award`, `attachment`,
56-
`email_template`, `notification` entity operations.
57-
- `participant/` `lifecycle`, `bulk_import`, `queries`.
58-
- `scoring/` materialized-leaderboard hot path with an authoritative recompute
56+
`email_template`, `notification`: entity operations.
57+
- `participant/`: `lifecycle`, `bulk_import`, `queries`.
58+
- `scoring/`: materialized-leaderboard hot path with an authoritative recompute
5959
fallback (`get_scoreboard`, `calculate_score`, ranks, stats, timeline, and the
6060
`recompute_*` maintenance helpers).
61-
- `authorization`, `audit` access checks and audit trail.
61+
- `authorization`, `audit`: access checks and audit trail.
6262

6363
### Range Provisioning
6464

6565
`ctf.services.range` provisions a range per participant from `event.scenario_id` via
66-
CMS range services the same path Mission Control uses to launch a range.
66+
CMS range services, the same path Mission Control uses to launch a range.
6767

68-
- `provision.py` `provision_participant_range(participant_id)` runs under a
68+
- `provision.py`: `provision_participant_range(participant_id)` runs under a
6969
per-participant row lock so concurrent manual and scheduled provisioning cannot
7070
double-assign a range, with an exponential-backoff retry wrapper.
71-
- `batch.py` throttled event-wide provisioning, pacing participant spin-ups.
72-
- `lifecycle.py`, `status.py`, `tasks.py` teardown, status reads, and task wiring.
73-
- `recovery.py` `recover_participant_range(participant_id, *, strategy,
71+
- `batch.py`: throttled event-wide provisioning, pacing participant spin-ups.
72+
- `lifecycle.py`, `status.py`, `tasks.py`: teardown, status reads, and task wiring.
73+
- `recovery.py`: `recover_participant_range(participant_id, *, strategy,
7474
operator, spare_range_instance_id=None)` recovers a destroyed participant range
7575
(organizer-only). `rebuild` provisions a fresh range via the CMS bridge; `reassign_spare`
7676
consumes an available `CTFSpareRange` from the participant's own event pool and
@@ -79,10 +79,10 @@ CMS range services — the same path Mission Control uses to launch a range.
7979
`cms.services.reassign_range_owner`). The intent is persisted as a `CTFRangeRecovery`
8080
row keyed on participant + old range + strategy; resumption after a partial failure is
8181
data-driven (recorded replacement id and the live old-range status), so retries never
82-
duplicate the replacement or the audit row. The old range is always destroyed there
82+
duplicate the replacement or the audit row. The old range is always destroyed; there
8383
is no disposition/forensics-retention choice. Recovery writes one `risk_register` audit
8484
row.
85-
- `spares.py` `provision_event_spares(event_id, target_count, *, operator=None)` tops up
85+
- `spares.py`: `provision_event_spares(event_id, target_count, *, operator=None)` tops up
8686
an event's prewarmed spare-range pool (`CTFEvent.spare_range_count`), each spare owned by
8787
a dedicated, auto-created managed system user (never a `CTFParticipant`) until consumed.
8888
`get_event_spare_summary(event_id)` reports pool counts for the admin surface;
@@ -97,9 +97,9 @@ does not go stale and provisioning stays responsive to shutdown.
9797

9898
Two management commands operate the event runtime:
9999

100-
- `run_ctf_scheduler` long-running scheduler that drives batch range provisioning,
100+
- `run_ctf_scheduler`: long-running scheduler that drives batch range provisioning,
101101
cleanup, reminders, and scheduled tasks, writing a liveness heartbeat.
102-
- `ctf_recompute_leaderboard` recomputes materialized leaderboard columns
102+
- `ctf_recompute_leaderboard`: recomputes materialized leaderboard columns
103103
authoritatively when reconciliation is needed.
104104

105105
## Boundaries
@@ -112,5 +112,5 @@ Two management commands operate the event runtime:
112112

113113
## See Also
114114

115-
- [CTF](../../features/ctf) participant guide.
116-
- [CTF Organizer Guide](../../features/ctf-organizer-guide) running an event.
115+
- [CTF](../../features/ctf): participant guide.
116+
- [CTF Organizer Guide](../../features/ctf-organizer-guide): running an event.

0 commit comments

Comments
 (0)