Activities and workflows distilled from novaWaste2
On this page
Sweep: activities, workflows, derived-not-asked values. Entities/vocabulary and indicators/methods are covered by sibling sweeps.
Sources (all read-only). nw2: = ~/novaWaste2/. ref: = ~/novaWasteStandard/reference/surveycto/ (live SurveyCTO definitions of the 27 non-fixture forms, questions.csv / choices.csv).
Towns: mf = Mfidikwe (unsorted, weekday service groups), ik = Ikemeleng, sb = Smashblock (norplats_*); both sorted with QR service groups (nw2:arch/design/surveycto/nova_towns.csv, nw2:arch/adr/0031-generic-town-agnostic-surveycto-forms.md).
Classification: - generic: any waste-service project needs it; belongs in the standard as an activity type. - project-level: a project chooses it or its parameters (design choice the standard should allow, not prescribe). - operational: runs the service or the books; novaOS / platform concern, not a standard activity.
1. Activity table
| novaWaste2 form family / process | form IDs | source paths | what happens | who (role) | what it observes / creates | proposed generic activity type | classification |
|---|---|---|---|---|---|---|---|
stand_enumeration |
aap_mfidikwe_waste_imp_stand_enumeration_active, aap_waste_imp_stand_enumeration_ACTIVE, aap_waste_imp_stand_enumeration_PILOT, norplats_waste_imp_stand_enumeration_PILOT |
nw2:dbt/seeds/form_family.csv; nw2:dbt/models/staging/stg_stand_enumeration.sql; nw2:db/migrations/20260707000001_stand_promotion_fn.sql; ref:questions.csv |
Door-to-door census of every plot in the project area, before recruitment. GPS fix, photo, visible stand / stand-card number, fenced, inhabited / uninhabited structure counts, households and people (ik/mf), owner (mf), occupancy status, proximity of the fieldworker to the plot. | Enumerator (field staff) | Creates the service point (Stand, operational.stand) and its enumeration block; observes occupancy class (stand_status), headcounts, location |
Service point enumeration (census of potential service points) | generic |
enrollment (recruit and enrol) |
aap_mfidikwe_waste_imp_recruit_and_enroll_active, aap_ikemeleng_waste_imp_recruit_and_enrollment_TRAINING, norplats_Waste_Imp_Recruit_and_Enrollment_Survey_ACTIVE |
stg_enrollment.sql; nw2:dbt/models/intermediate/int_enrollment_latest.sql; nw2:arch/history/legacy-views/ikemeleng/stand_status_view.sql |
Visit to an enumerated stand: confirm the stand, consent gates (willing, sober, adult or oldest), study info, participation, sign or defer, photo of signed contract, household QR tag, households and people on stand, baseline disposal practices (organic, recyclable, residual). | Recruiter (field staff); respondent = household head / owner | Creates the service agreement (signed contract evidence), attaches the household identifier tag (qr_code_household), baseline practice observation |
Household enrolment (consent + service agreement) plus baseline practice survey | generic (consent gates and agreement); baseline survey project-level |
bin_placement |
aap_mfidikwe_waste_imp_bin_placement_active, aap_ikemeleng_waste_imp_bin_placement_survey_ACTIVE, norplats_Waste_Imp_Bin_Placement_Survey_ACTIVE |
stg_bin_placement.sql; nw2:dbt/models/marts/mart_stand_status.sql; mart_bin_placements.sql |
Deliver the container set (3 bins: recyclable, non-recyclable, organic; ik big/small set; mf bags), scan bin QR, photo, give bags, give separation training, record owner confirmation. sb distinguishes first deployment vs re-deployment. | Placement team (field staff); respondent | Creates the container (Bin) and its QR assignment; observes bags given, training given; placed rung |
Container deployment (incl. redeployment) and separation-at-source training | generic (deployment); training generic but bundled here (see inferred row) |
qrcode_replacement |
aap_mfidikwe_waste_imp_qrcode_replacement_active, aap_ikemeleng_waste_imp_qrcode_replacement_ACTIVE, norplats_Waste_Imp_QRcode_replacement_ACTIVE |
stg_qrcode_replacement.sql; nw2:db/migrations/20260802000002_create_qr_registry.sql |
Replace a lost/damaged stand or bin QR tag: scan old, place new, photo. | Field staff | Supersedes an identifier assignment window (operational.qr_code) |
Identifier (tag) maintenance | generic (any project using physical tags) |
wp_enrollment |
aap_mfidikwe_waste_imp_wp_enrollment_active, aap_ikemeleng_waste_imp_wp_enrolment_survey_ACTIVE, norplats_waste_imp_wp_enrolment_survey_active |
stg_wp_enrollment.sql; nw2:db/migrations/20261007000500_promote_wp_enrollment.sql |
Register a waste picker: name, QR lanyard, home sorting facility. | Supervisor | Creates the collector (Person with role waste_picker) and their QR tag; site assignment | Collector enrolment (service-provider workforce registration) | generic |
| Location-tracker rounds (no SurveyCTO form) | tbl_waste_picker_route, tbl_waste_picker_log, tbl_waste_picker_route_qrcode (tracker table names act as form IDs) |
nw2:services/location-tracker-ingest/API.md; stg_picker_route.sql, stg_picker_log.sql, stg_picker_qr.sql; nw2:dbt/models/intermediate/int_qr_scan_resolution.sql, int_stand_scan_daily.sql |
Picker’s phone app logs GPS track, free-text log entries and a QR scan per stand/bin collected, with a description (collection / collection no qr / no collection / no waste / no stand access). | Waste picker (collector) | Service event per stand-day (scan resolved to stand or bin); route trace | Kerbside collection round (service event at a service point) | generic (the event); tracker app is project-level instrument |
collection sorted mode (weigh + sort) |
aap_ikemeleng_waste_imp_hws_wp_waste_records_sort_facility_ACTIVE, norplats_Waste_Imp_HWS_WP_Waste_Records_Sort_Facility_ACTIVE; pilot nova_waste_collection |
stg_collection.sql, stg_collection_weight.sql; nw2:arch/design/surveycto/nova_waste_collection.xlsx; nw2:db/migrations/20261007000300_create_waste_category.sql |
At the waste sorting facility (WSF) a picker’s load is sorted into 27 material groups and each weighed; scan picker QR and service-group QR; rate separation quality; note contamination issues. | Facility operator / fieldworker; collector present | Mass by material category per collector per service group per day; separation-compliance rating | Material recovery: sort and weigh (MRF / buy-back intake) | generic (weighed material by category); category granularity project-level |
collection unsorted mode |
aap_mfidikwe_waste_imp_waste_facility_weighing_survey_active; pilot nova_waste_collection (collection_mode = unsorted) |
same; ref:questions.csv (Waste_weight_repeat) |
Repeat of scale batches (≤50 kg) after a zero/kg scale check; service group picked by weekday. | Facility operator | Mass per batch, uncategorised (unsorted) |
Weighing at receiving facility (unsorted intake) | generic |
sorting_evaluation |
norplats_wsf_sorting_evaluation_active, wsf_sorting_evaluation_active1 |
stg_sorting_evaluation.sql; mart_sorting_evaluations.sql |
Audit of bags at the facility: per bag, does it contain recyclable / organic / none; photo. | Evaluator (field staff) | Bag-level contamination observation (contaminated derived) |
Stream contamination audit (residual-stream quality check) | generic |
collection_follow_up |
aap_mfidikwe_service_followup_active, aap_ikemeleng_waste_imp_follow_up_active, norplats_waste_imp_follow_up_active |
stg_collection_follow_up.sql; mart_collection_follow_ups.sql; nw2:arch/history/legacy-views/mfidikwe/collection_followup_view.sql |
Visit a stand whose week was missed / never collected: confirm stand and tags, reason for missed or never collected, bins still there, bin condition and use, what the household does with streams lacking a bin, picker conduct, complaints. | Fieldworker; household respondent | Service-failure reason; container status; complaint | Service exception follow-up (missed-service investigation) | generic |
stand_evaluation |
aap_mfidikwe_stand_evaluation_active, aap_ikemeleng_waste_imp_fw_stand_evaluation_ACTIVE, norplats_Waste_Imp_FW_stand_evaluation_ACTIVE |
stg_stand_evaluation.sql; mart_stand_evaluations.sql; nw2:db/migrations/20260805000003_create_evaluation_scheduler.sql; mart_evaluation_schedule_status.sql |
Scheduled sample visit to an eligible stand: container presence/condition/use, per-bin separation quality (ik/sb), leakage to other pickers, organic and residual disposal outside the service, service received, bags received, burning, satisfaction (0/1–10), three perceived-change scales, complaints. mf adds put-out, uncollected waste fate, bag use, participation of all households, evaluator comments. | Evaluator (field staff); household respondent | Monitoring observation of a service point; attempt outcome | Service point monitoring visit (sampled evaluation) | generic (visit); question set split: separation quality, leakage, burning = generic; satisfaction/QoL = project-level (social indicators) |
| Evaluation scheduling (scheduler) | none (operational tables) | nw2:db/migrations/20260805000003_create_evaluation_scheduler.sql; nw2:arch/history/legacy-workflow-map.md; mart_evaluation_schedule_status*.sql; mart_stand_eligibility.sql |
Per (town, waste site) config of start date and evaluations per day; each run issues scheduled visits for eligible stands with a snapshot of block version, service group, site, service day (ADR-0022). Issued rows only change status (issued → cancelled / superseded). | System (scheduler) under project manager config | Sample frame and visit plan | Monitoring plan / sample draw | project-level (sampling design); the issuance is operational |
| Stand termination | none (app: app.record_stand_termination) |
nw2:db/migrations/20261006000002_create_stand_termination_event.sql, 20261010000300_create_stand_termination_api.sql; nw2:db/legacy/import_terminations.sql |
Record that service to a stand ends (termination) or that a termination was in error (reversal); comment required. Restart = new signed enrolment. |
Project manager / supervisor (app user) | Termination event | Service exit (agreement termination) | generic |
| Block / service group assignment | none (operational) | nw2:arch/adr/0022-canonical-blocks-and-service-assignment-snapshots.md; nw2:db/migrations/20260805000002_create_block_foundation.sql; int_stand_collection_meta.sql |
Stands grouped into blocks; a block is assigned a service group (collector + weekday + waste site). | Project manager | Service route and service day per stand | Service route planning | operational (route), project-level (service frequency) |
| Collector pay statement | none (app) | nw2:arch/adr/0027-waste-picker-payment-statements.md, 0029-flat-rate-holiday-recycler-bonus.md; nw2:db/migrations/20261010000100_create_payment_statement_tables.sql; mart_picker_pay_weekly.sql |
Weekly statement per town: payable kg × project rate (holiday ×2), recycler bonus shares; draft → signed_off (four-eyes) → paid, or rejected/canceled. | Finance preparer, approver | Payment to collectors | Collector remuneration | operational (payment); “collectors are paid per kg” is a project-level benefit-sharing design |
| Recycler offtake recording | none (app) | nw2:arch/erd/operational.recycler_payment.md, operational.recycler_payment_line.md; mart_site_recycling_balance.sql; mart_recycler_bonus_shares.sql |
Record a recycler’s invoice for a site’s recyclables: recycler, invoice no., date, lines (material text, kg, price), mapped to waste category when known. | Finance / site manager | Offtake of material from site (kg, money); bonus to site’s pickers | Material offtake to recycler (chain of custody out of the facility) | generic (offtake evidence); bonus split project-level |
| Weight flag review / submission correction | none (app) | mart_weight_flags.sql; nw2:arch/erd/operational.weight_flag_review.md; nw2:db/migrations/20260821000001_create_submission_correction.sql, 20261010000200_create_correction_functions.sql |
Data QA: flags (slide, transposition, swapped_qr, wrong_picker, missing_usual_day, tracker_no_weight); reviewer corrects a value, voids a field or submission, or marks “no change”. | Data reviewer | Correction / void records over submissions | Record correction / restatement | operational (maps to greening ADR-0018/0025/0027 restatement, a platform concern) |
| Household waste sample collection (2022) | norplats_aq_waste_hhcollection |
~/smashWaste/data/Vraelyste/norplats_aq_Waste_HH-Collection.xlsx |
Collect a household’s dry and wet waste sample (QR-tagged bags), GPS, special events since last visit, photo. | Fieldworker | Sample with household link | Waste generation sampling | generic (baseline / generation-rate method) |
| Household waste sample analysis (2022) | norplats_aq_waste_hh_analysis |
~/smashWaste/data/Vraelyste/norplats_aq_Waste_HH_Analysis.xlsx |
Weigh and estimate volume (fill level) of dry/wet samples; characterise into 13 waste types with weights; split recyclable vs non-recyclable with weights and volume. | Lab / field analyst | Composition by mass and volume; recyclable share | Waste characterisation (composition analysis) | generic |
| Waste site registration | none seen as a form; operational.waste_site seeded by migration |
nw2:arch/erd/operational.waste_site.md; nw2:db/legacy/dispositions.sql (tbl_waste_site) |
— | Project manager | Facility entity | Facility registration | generic — inferred (no capture activity seen) |
| Separation training / awareness | only as a field (training_seperation) in ik/sb placement |
ref:questions.csv; stg_bin_placement.sql |
— | Trainer | Training session evidence | Awareness / separation-at-source education | generic — inferred as its own activity |
| Residual disposal to landfill | none | — (compare ~/ii-test-standard/glossary/ccts-glossary.ttl ccts-cs:landfilled) |
Non-recyclable and sanitary streams are weighed at the WSF (weight_non_recyclable, weight_sanitary_waste) but their onward route is not recorded. |
Facility operator / municipality | Delivery to landfill with receipt | Residual delivery to disposal site | generic — inferred |
| Organic processing | none | — | Organic waste is weighed (weight_organic_waste) but its fate (compost, feed, landfill) is not recorded. |
Facility / composter | Compost batch, offtake | Composting / organic treatment | generic — inferred |
| Community clean-up | none | — (compare ccts-cs:DisposalRoutes) |
— | Volunteers, organiser | Litter collected, mass, route | Clean-up event | generic — inferred |
| Container retrieval | none (termination records no bin retrieval; placement re_deployement covers re-issue only) |
stg_bin_placement.sql |
— | Field staff | Container returned / written off | Container retrieval / write-off | generic — inferred |
| Scale verification | only the per-batch waste_weight_scale_check (mf) |
ref:questions.csv |
— | Facility operator | Calibration record | Measuring instrument check | generic — inferred (as a QA activity) |
| Complaint / grievance | only as fields (HH_comments, HH_comments_explain) in follow-up and evaluation |
ref:questions.csv |
— | Household; project manager responds | Grievance and resolution | Grievance handling | generic — inferred (safeguard) |
2. Workflow sketch
Step state below is what novaWaste2 derives in dbt marts; novaOS would derive the same from process graphs over the ledger (~/novaOS/README.md). Tags: [S] schedule- or calendar-derived (novaOS: depends on as_of, plans, windows); [N] standard-normative (what counts as done or allowed); [P] project parameter.
W1. Service point lifecycle (subject: Stand)
| order | step | readiness condition (cite) | completion condition (cite) | tag |
|---|---|---|---|---|
| 1 | Enumerate | Stand lies in a project enumeration block (enumeration_block, stg_stand_enumeration.sql) |
Enumeration submission with stand_status; promoted to operational.stand (operational.promote_stand_enumeration(), nw2:db/migrations/20260707000001_stand_promotion_fn.sql); ladder rung enumerated (mart_stand_status.sql:124-130) |
N |
| 2 | Recruit and enrol | Stand exists and the visit resolves to it by Stand Reference (nw2:arch/adr/0026-submission-links-stand-by-stand-reference.md); consent gates: willing = Yes, sober = Yes, age in {Yes, Not_18_but_oldest_in_hh}, study_info = Yes (legacy stand_status_view.sql:30-37) |
discuss_family_or_sign = 'Sign' with an enrolled_on (mart_stand_status.sql rung enrolled; int_enrollment_latest.sql). Legacy: signed contract document uploaded (uploaded / outstanding, stand_status_view.sql:43-46). Legacy Unreachable after ≥5 failed and 0 successful attempts (stand_status_view.sql:29) |
N (gates, signature); P (5-attempt rule) |
| 3 | Deploy containers | Signed enrolment and no successful placement (mart_actions.sql enrolled_not_placed) |
Latest placement succeeded: mf provide_bags = 'Yes', ik/sb suitable_respondent_available = 'Yes' → rung placed (mart_stand_status.sql:127-128); bin QR captured (qr_code_bin) |
N (container in place + tag); P (town-specific success test, owner question #418 in mart_stand_eligibility.sql:11) |
| 4 | Assign service route | Placed and signed (mart_actions.sql block_unassigned) |
Block not retired and has a Service Group (leg_serviced_block, mart_stand_eligibility.sql:16-17) → nominal service day (int_stand_collection_meta.sql) |
P |
| — | Eligible Stand gate | — | is_eligible = leg_placed ∧ leg_signed_enrolment ∧ leg_occupied ∧ leg_serviced_block (mart_stand_eligibility.sql:6-17,180-182); occupancy from enumeration status, overridden to occupied when enrolment and placement post-date the enumeration (mart_stand_eligibility.sql:19-29) |
N |
| 5 | Collect (recurring, per ISO service week) | Eligible; the week’s service day has arrived (last_service_date <= as_of, mart_collection_status_asof.sql) |
Scan in the week → collected / no-waste / no-bin-access / no-stand-access from tracker description (mart_collection_status.sql:212-218); otherwise pending-service (service day = today), carried status if last collection < 8 days ago, recent-placement (placed < 8 days, never collected), else un-scanned (mart_collection_status_asof.sql, “statused”) |
S (week, day, 8-day window); N (what counts as a collection: a scan resolved to the stand or its bin, int_qr_scan_resolution.sql, int_stand_scan_daily.sql) |
| 6 | Follow up exceptions | Week status in {un-scanned, no-waste, pending-service} and placement before service date (legacy collection_followup_view.sql); v2 action lists unscanned_latest_week, no_access_latest_week, qr_gap (mart_actions.sql:5-17) |
Follow-up submission with confirm_stand and a reason (stg_collection_follow_up.sql); the action drops when the next week’s status changes |
S (trigger is week status); N (a missed service must be investigated — candidate) |
| 7 | Monitor (sampled evaluation) | Eligible; scheduler config exists for the site and start_date reached (evaluation_schedule_config); row issued with scheduled_date (20260805000003_create_evaluation_scheduler.sql) |
Schedule status completed = any evaluation of the stand in the visit window with attempt_outcome = 'completed' (respondent available); attempted = only attempts (no_respondent / wrong_stand); missed = no visit and scheduled_date < as_of; window = the day, or the frame week for legacy_sample runs (mart_evaluation_schedule_status.sql:9-17, mart_evaluation_schedule_status_current.sql:3-15); attempts feed evaluation_follow_up (mart_actions.sql:16) |
S (scheduled date, window, missed); N (completion = respondent interviewed at the right stand); P (evaluations per day, frame) |
| 8 | Maintain tags | Placed stand with a lost/damaged tag (qr_gap, mart_qr_coverage_gap.sql) |
New QR assignment window opened, old superseded (operational.qr_code, 20260802000003_create_qr_promotion_fn.sql) |
N |
| 9 | Exit | Any time; app row needs recorded_by and non-empty comment (stand_termination_event_supplier_shape_chk) |
Latest event termination and no later signed enrolment → contract_terminated; a later signed enrolment restarts service; reversal cancels (mart_stand_status.sql:14-17) |
N |
W2. Collector and material flow (subject: Waste Picker / Waste Site)
| order | step | readiness | completion | tag |
|---|---|---|---|---|
| 1 | Enrol collector | — | wp_enrollment with wp_qr_code and wsf_site → Person + QR (20261007000500_promote_wp_enrollment.sql) |
N |
| 2 | Collect round | Collector has active QR; block assigned to collector’s service group | Tracker scans per stand (W1 step 5) | S |
| 3 | Weigh at facility | WP_id resolves to a person QR at started_at, WP_house_group to a service group (int_collection_payee.sql:35-39) |
Collection with ≥1 weight (pilot note_no_waste blocks empty unsorted submissions, nova_waste_collection.xlsx); payee exception NULL |
N (weighed, attributed) |
| 4 | Quality-check weights | Collection on/after first_payable_on |
No open flag in mart_weight_flags (or reviewed “no change”) |
operational |
| 5 | Pay collectors | Week closed (ISO Mon–Sun); rows payable | Statement signed_off by a user other than the preparer, then paid (payment_statement_four_eyes_ck, nw2:arch/erd/operational.payment_statement.md) |
S (week); operational |
| 6 | Offtake to recycler | Recyclables accumulated at site | Recycler payment recorded with lines; site balance collected vs invoiced kg per month (mart_site_recycling_balance.sql) |
N (offtake evidence) |
W3. Facility stream audit (subject: Waste Site)
sorting_evaluation has no scheduler or readiness test in code; completion = bag repeat with material_inside_bag per bag (stg_sorting_evaluation.sql). Tag: P (frequency), N (contamination definition: any recyclable or organic found in a residual bag).
Notes on conditions
- novaWaste2 stores no step state: ladders and schedule statuses are views over facts evaluated at
as_of(mart_collection_status.sql:1-11,mart_evaluation_schedule_status_current.sql). Same posture as novaOS. - Scheduled vs unscheduled evaluations: completion is matched by stand and window, so an evaluation outside any issued row is kept but counts toward no schedule row. Same split as greening ADR-0020.
- Town-specific rules to lift into project parameters: placement success test, 7 vs 8-day carry window (
mart_collection_status.sql:25), sorted vs unsorted collection mode, scan vs weekday service group (nova_towns.csv). - Candidate
ncgs:appliesWhenstyle conditions: SaS bin rating only where containers are separated streams (ik/sb,stg_stand_evaluation.sqlsas_versions); weighing by category only whencollection_mode = sorted.
3. Derived, not asked
Values novaWaste2 computes. Per greening ADR-0028 these stay off forms.
| value | derived from | where |
|---|---|---|
Business date of every event (enumerated_on, enrolled_on, placed_on, collected_on, evaluated_on, …) |
form starttime, SA-local |
nw2:dbt/macros/family_staging.sql business_date |
Position (geom, lat, lon) |
geopoint string | family_staging.sql gps_lat_lon, make_point_4326 |
| Stand of a submission | Stand Reference (id) |
stg_* join to stg_stand_reference |
| Waste site of a follow-up / evaluation / collection | site code or service group QR | stg_collection.sql, stg_collection_follow_up.sql |
| Collector (payee) of a weighing | WP_id QR resolved at started_at; payee exception |
int_qr_scan_resolution.sql, int_collection_payee.sql |
| Collector’s period site per ISO week | modal site of week’s weighings | int_picker_week_site.sql |
Waste category of a weight row; unsorted when none; reporting bucket |
weight_* field name |
stg_collection_weight.sql; operational.waste_category |
Stand status ladder (enumerated < enrolled < placed; contract_terminated) |
enumeration, enrolment, placement, termination | mart_stand_status.sql |
| Occupancy class (occupied / vacant / non_residential / unknown) | enumeration stand_status + later enrolment/placement |
mart_stand_eligibility.sql |
| Eligible Stand and its four legs | ladder, enrolment, occupancy, block | mart_stand_eligibility.sql |
| Nominal service date; observed service date; modal collector; block missed | service group weekday; tracker scans | int_stand_collection_meta.sql, int_weekly_picker_analysis.sql |
Collection status per stand-week, n_days_placed, n_days_outstanding, last_collection_date |
scans, placement, as_of | mart_collection_status.sql, mart_collection_status_asof.sql |
Evaluation attempt_outcome (completed / no_respondent / wrong_stand / unknown) |
confirm_stand, suitable_respondent_available |
stg_stand_evaluation.sql |
SaS rating per stream incl. Empty, Misused_bin, Missing_bin |
bins_still_available, SaS_*_waste, SaS_*_quality |
stg_stand_evaluation.sql:83-93 |
| Schedule status (completed / attempted / missed / scheduled) | schedule row, evaluations, as_of | mart_evaluation_schedule_status_current.sql |
Bag contaminated |
material_inside_bag <> 'Non_of_above_in_bag' |
stg_sorting_evaluation.sql |
| Weight flags and suggested corrections | 90-day collector statistics | mart_weight_flags.sql |
| Pay, holiday multiplier, statement totals, recycler bonus shares, site recycling balance | rate eras, holidays, recycler payments | ADR-0029; mart_picker_pay_*, mart_recycler_bonus_shares.sql, mart_site_recycling_balance.sql |
| Action lists | eligibility, ladder, latest week status, QR gaps | mart_actions.sql |
| QoL level (0–4) and consolidated SaS level | answer codes | nw2:services/dashboard/email_weekly_charts.go |
Legacy: Unreachable; contract upload status |
attempt counts; document table | legacy-views/ikemeleng/stand_status_view.sql |
In-form calculates: collection_mode, service_group_mode, warning thresholds, WP_house_group (pilot); enrolment_outcome, calculate_success, calculate_revisit_required, gps_difference, calculate_bin_size, *_pl preloads |
server dataset nova_towns, prior records |
nova_waste_collection.xlsx; ref:questions.csv |
Still asked although the ledger knows it (ADR-0028 candidates for the generic forms): - sorting_facility / site_name, enumeration_block / block_number: follow from the stand’s block and service group. - Follow-up collection_status (Missed / Never collected): follows from the collection-status mart (nw2:arch/erd/staging.stg_collection_follow_up.md already calls it “prefilled”). - hh_count_stand at placement: repeats the enrolment hh_on_stand. - deployment_type: follows from earlier placements of the stand. - mf follow-up week_day: follows from the service group. - WP_house_group service-group scan: follows from the collector’s assignment, except when the collector covers several groups. - town on generic forms (ADR-0031): follows from the scanned stand or collector QR. ADR-0031 itself flags wrong-town picks as a new failure mode. - enumerator: comes from the login.